Çalışma Masası

Link to çalışma-masası

Çalışma masaları için üç tip tarif şekli bulunmaktadır:

  • Shapeless: A shapeless recipe is a recipe where the position of the input items in the crafting grid does not matter.
  • Shaped: A shaped recipe is a recipe where the position of the items must be exact.
  • Shaped Mirrored: A mirrored recipe is like shaped recipes but mirrors the recipe along the horizontal or vertical axes.

Bir tarif eklerken, tarif adının özgün olmasından emin olun!

Şekilsiz Tarif Ekleme

Link to şekilsiz-tarif-ekleme

craftingTable.addShapeless(tarifAdi, cikis, malzemeler, tarifFonksiyonu);

Bu fonksiyon, çalışma masasına şekilsiz bir tarif ekler. Şekilsiz tarifler çalışma masasına koyacağınız eşyaların pozisyonlarını göz ardı eder. Bu yüzden şekilsiz tarif oluşturduğunuzda eşyaların sırası önemli değildir.

Şekilsiz tariflerde en fazla 9 eşya olabilir. 4 eşya veya daha az giriş eşyasını da envanterdeki 2x2 boyutundaki tabloda hazırlayabilirsiniz.

Çalışma masası tariflerinde çıkış ürünü birden fazla olabilir. This can be achieved by using the IItemStack multiplication operator on the output item.

ZenScript
Copy
craftingTable.addShapeless("sekilsiz_ornek_1", <item:minecraft:grass>, [<item:minecraft:wheat_seeds>, <item:minecraft:dirt>]);

// Şekilsiz bir tarif en fazla 9 girişe sahip olabilir.
// Bu birden fazla çıktının kullanılabileceğini gösterir. Bu örnekte çıkış ürünü 8 adet çimenli toprak olacaktır. 
craftingTable.addShapeless("sekilsiz_ornek_2", <item:minecraft:grass> * 8, [<item:minecraft:wheat_seeds>, <item:minecraft:dirt>, <item:minecraft:dirt>, <item:minecraft:dirt>, <item:minecraft:dirt>, <item:minecraft:dirt>, <item:minecraft:dirt>, <item:minecraft:dirt>, <item:minecraft:dirt>]);

_Tarif fonksiyonlarının kullanımını örnekler üzerinde görmek için Tarif Fonksiyonlarının Kullanımı'na bakınız. _

Şekilli ve Yansımalı Tarifler Ekleme

Link to şekilli-ve-yansımalı-tarifler-ekleme

craftingTable.addShaped(tarifAdi, cikis, malzemeler, tarifFonksiyonu);

craftingTable.addShapedMirrored(tarifAdi, cikis, malzemeler, tarifFonksiyonu);

Bu fonksiyon, çalışma masasına şekilli (veya yansımalı) bir tarif ekler. Bir tarif oluştururken eşyaların çalışma masasındaki pozisyonlarının tek tek belirtilmesi gerekmektedir.

Yansımalı bir tarif oluşturmak, eşyaları çalışma masasına dizerken oyuncuya daha fazla esneklik sağlar.

Hem şekilli hem de yansımalı tarifler 2x2'lik tabloda(envanter) ve çalışma masasında yapılabilir.

Çalışma masası tariflerinde çıkış ürünü birden fazla olabilir. This can be achieved by using the IItemStack multiplication operator on the output item.

ZenScript
Copy
// Adding a shaped recipe
craftingTable.addShaped("shaped_example_1", <item:minecraft:arrow>, [
    [<item:minecraft:diamond>, <item:minecraft:diamond>],
    [<item:minecraft:air>, <item:minecraft:flint>],
    [<item:minecraft:air>, <item:minecraft:flint>]
]);

// Adding a shaped 2x2 recipe (this can also be done as mirrored)
craftingTable.addShaped("shaped_example_2", <item:minecraft:diamond_axe>, [
    [<item:minecraft:diamond>, <item:minecraft:diamond>],
    [<item:minecraft:diamond>, <item:minecraft:stick>]
]);

// Adding a shaped mirrored recipe

import crafttweaker.api.recipe.MirrorAxis;

craftingTable.addShapedMirrored("shaped_mirror_example_1", MirrorAxis.DIAGONAL, <item:minecraft:arrow> * 2, [
    [<item:minecraft:diamond>, <item:minecraft:diamond>],
    [<item:minecraft:air>, <item:minecraft:flint>],
    [<item:minecraft:air>, <item:minecraft:flint>]
]);
Invalid container directive! `question`

_Tarif fonksiyonlarının kullanımını örnekler üzerinde görmek için Tarif Fonksiyonlarının Kullanımı'na bakınız. _

Tarif Fonksiyonunun Kullanımı

Link to tarif-fonksiyonunun-kullanımı

Bir tarif fonksiyonu ile programlanabilir biçimde bir çıktı oluşturabilirsiniz. Bu özellikle, giriş eşyalarının hasar bilgisi veya NBT verisi gibi bilgilere ihtiyaç duyduğunuzda kullanışlı olabilir.

Şekilli ve yansımalı tarifler birbirlerine benzediği için örneklerde sadece şekilli tarifler olacaktır. addShaped fonksiyonu kullanılan örnekleri addShapedMirrored olarak da düşünebilirsiniz.

Şekilsiz Bir Tarifde RecipeFunctionArray Kullanımı

Link to şekilsiz-bir-tarifde-recipefunctionarray-kullanımı

tarifFonksiyonu <RecipeFunctionArray>

(olaganCikis as IItemStack, girisler as IItemStack[]) => {};

  • usualOut as IItemStack
  • inputs as IItemStack[] Array of inputs ordered the same as defined in the original recipe
ZenScript
Copy
import crafttweaker.api.item.IItemStack;

craftingTable.addShapeless(sekilsiz_fonksiyon_ornek_1", <item:minecraft:diamond> * 9, [<item:minecraft:dirt>, <item:minecraft:stick>], (olaganCikis as IItemStack, girisler as IItemStack[]) => {
    // <item:minecraft:dirt> eşyasının görünen adının "gerçek bir elmas blok" olması ile ilgili kontrolü yap
    if (girisler[0].displayName == "gerçek bir elmas blok") {
        // <item:minecraft:diamond> * 9 döndürür
        return olaganCikis;
    }

    // Diğer türlü, "Elmas" ismiyle <item:minecraft:clay> eşyasını döndür
    return <item:minecraft:clay>.setDisplayName("Elmas");
});

Şekilli/Yansımalı Bir Tarifde RecipeFunctionMatrix Kullanımı

Link to şekilliyansımalı-bir-tarifde-recipefunctionmatrix-kullanımı

tarifFonksiyonu <RecipeFunctionMatrix>

(olaganCikis as IItemStack, girisler as IItemStack[][]) => {};

inputs is an array of inputs ordered the same as defined in the original recipe. Bir giriş, satır ve sütun değeri girilerek de elde edilebilir (1. satır 2. sütundaki giriş elemanını almak için inputs[0][1] kullanılabilir).

ZenScript
Copy
import crafttweaker.api.item.IItemStack;

craftingTable.addShaped("sekilli_fonksiyon_ornek_1", <item:minecraft:diamond_block>, [
        [<item:minecraft:clay_ball>, <item:minecraft:clay_ball>, <item:minecraft:clay_ball>],
        [<item:minecraft:clay_ball>, <item:minecraft:diamond>, <item:minecraft:clay_ball>],
        [<item:minecraft:clay_ball>, <item:minecraft:clay_ball>, <item:minecraft:clay_ball>]
    ], (olaganCikis as IItemStack, girisler as IItemStack[][]) => {
        var sayac = 0;
        // Bütün <item:minecraft:clay_ball> eşyalarının isimlerinin "Elmas" olması ile ilgili kontrolleri yap
        for satir in girisler{
            for tarifEsyasi in satir{
                if (<item:minecraft:clay_ball>.matches(tarifEsyasi ) && tarifEsyasi.displayName == "Elmas") {
                    // Eğer tarif eşyası <item:minecraft:clay_ball> ise ve adı "Elmas" ise sayac değişkeninin değerini arttır
                    sayac++;
                }
            }
        }

        // Eğer "Elmas" adıyla 8 tane <item:minecraft:clay_ball> eşyasına sahipsek
        if (sayac == 8) {
            if (girisler[1][1].displayName == "Özel Elmas") {
                // Eğer <item:minecraft:diamond> eşyasının adı "Özel Elmas" ise
                // 2 tane <item:minecraft:diamond_block> döndür
                return olaganCikis * 2;
            } else {
                // <item:minecraft:diamond_block> eşyasını döndür
                return olaganCikis;
            }
        }

        // Diğer türlü, "Elmas Blok" ismiyle <item:minecraft:clay> eşyasını döndür
        return <item:minecraft:clay>.setDisplayName("Elmas Blok");
    });

İleri Düzey Kullanım

Link to i̇leri-düzey-kullanım

Değişken Olarak Kullanılabilen Fonksiyonlar

Link to değişken-olarak-kullanılabilen-fonksiyonlar

Tarif fonksiyonlarını birden çok tarifde kullanabilmek için bir değişkene atayabilirsiniz.

Şekilsiz:

ZenScript
Copy
import crafttweaker.api.item.IItemStack;

var ornekSekilsizTarifFonksiyonDegiskeni as function(olaganCikis as IItemStack, girisler as IItemStack[]) as IItemStack = (olaganCikis, girisler) => {
    if(girisler[0].displayName == "gerçek bir elmas blok" ){
        return olaganCikis;
    }

    return <item:minecraft:clay>.setDisplayName("Elmas");
};

// ornekSekilsizTarifFonksiyonDegiskeni'ndeki girisler[0] <item:minecraft:dirt> olacak
craftingTable.addShapeless("sekilsiz_degiskenfonksiyon_ornek_1", <item:minecraft:diamond> * 9, [<item:minecraft:dirt>, <item:minecraft:stick>], ornekSekilsizTarifFonksiyonDegiskeni);

// ornekSekilsizTarifFonksiyonDegiskeni'ndeki girisler[0] <item:minecraft:cobblestone> olacak
craftingTable.addShapeless("sekilsiz_degiskenfonksiyon_ornek_2", <item:minecraft:diamond> * 9, [<item:minecraft:cobblestone>, <item:minecraft:dirt>], ornekSekilsizTarifFonksiyonDegiskeni);

Şekilli/Yansımalı:

ZenScript
Copy
import crafttweaker.api.item.IItemStack;

var ornekSekilliTarifFonksiyonDegiskeni as function(olaganCikis as IItemStack, girisler as IItemStack[][]) as IItemStack = (olaganCikis as IItemStack, girisler as IItemStack[][]) => {
    var sayac = 0;
    //Bütün <item:minecraft:clay_ball> eşyalarının isimlerinin "Elmas" olması ile ilgili kontrolü yap
    for satir in girisler {
        for tarifEsyasi in satir{
            if (<item:minecraft:clay_ball>.matches(tarifEsyasi) && tarifEsyasi.displayName == "Elmas") {
                //Eğer tarif eşyası <item:minecraft:clay_ball> ise ve adı "Elmas" ise sayac değişkeninin değerini arttır
                sayac++;
            }
        }
    }

    // Eğer "Elmas" ismiyle 8 tane <item:minecraft:clay_ball> eşyasına sahipsek
    if (sayac == 8) {
        if (girisler[1][1].displayName == "Özel Elmas") {
            // Eğer <item:minecraft:diamond> eşyasının adı "Özel Elmas" ise
            // 2 tane <item:minecraft:diamond_block> eşyasını döndür
            return olaganCikis* 2;
        } else {
            // <item:minecraft:diamond_block> eşyasını döndür
            return olaganCikis;
        }
    }

    // Diğer türlü, "Elmas Blok ismiyle" <item:minecraft:clay> eşyasını döndür
    return <item:minecraft:clay>.setDisplayName("Diamond Block");
};

craftingTable.addShaped("sekilli_fonksiyon_ornek_3", <item:minecraft:diamond_block>, [
    [<item:minecraft:clay_ball>, <item:minecraft:clay_ball>, <item:minecraft:clay_ball>],
    [<item:minecraft:clay_ball>, <item:minecraft:diamond>, <item:minecraft:clay_ball>],
    [<item:minecraft:clay_ball>, <item:minecraft:clay_ball>, <item:minecraft:clay_ball>]
], ornekSekilliTarifFonksiyonDegiskeni);

craftingTable.addShaped("sekilli_fonksiyon_ornek_4", <item:minecraft:diamond_block>, [
    [<item:minecraft:clay_ball>, <item:minecraft:clay_ball>, <item:minecraft:clay_ball>],
    [<item:minecraft:clay_ball>, <item:minecraft:diamond>, <item:minecraft:clay_ball>],
    [<item:minecraft:clay_ball>, <item:minecraft:clay_ball>, <item:minecraft:clay_ball>]
], ornekSekilliTarifFonksiyonDegiskeni);

Bir Tarifi Kaldırma

Link to bir-tarifi-kaldırma

İsme Göre Tarif Kaldırma

Link to i̇sme-göre-tarif-kaldırma

craftingTable.removeByName(tarifAdi);

  • recipeName as string

Girilen adla eşleşen tarifi kaldırır.

ZenScript
Copy
craftingTable.removeByName("minecraft:sugar_from_sugar_cane");

Çıkışa göre Tarif Kaldırma

Link to çıkışa-göre-tarif-kaldırma

craftingTable.remove(output);

Girilen IItemStack çıktısının olduğu bütün tarifleri kaldırır.

ZenScript
Copy
craftingTable.remove(<item:minecraft:stick>);

Mod ID Değerine Göre Tarif Kaldırma

Link to mod-id-değerine-göre-tarif-kaldırma

craftingTable.removeByModid(modId);

  • modId as string

Girilen modun sağladığı bütün eşyaların tariflerini kaldırır.

ZenScript
Copy
craftingTable.removeByModid("minecraft");

Mod ID'ye Göre Kaldırılan Tariflerin Dahil Edilmemesi

Link to mod-idye-göre-kaldırılan-tariflerin-dahil-edilmemesi

craftingTable.removeByModid(modId, dislamaFiltresi);

  • modId as string
  • exclusionFilter as RecipeFilter
  • name as string. The name of the current recipe being checked. Mod ID değeri dahil edilmeyecek.

Girilen modun sağladığı bütün eşyaların tariflerini kaldırır. Belirlenen tarif adı için dislamaFiltresi true değerini döndürürse tarifler çıkarılır.

ZenScript
Copy
craftingTable.removeByModid("minecraft", (isim) => {
    // isim değişkeninin değerinin "minecraft:red_bed_from_white_bed" olup olmaması ile ilgili kontrolü yap
    return isim == "red_bed_from_white_bed";
});

Birden fazla tarif de çıkarılabilir. Bunun yapmanın bir yolu aşağıdaki gibi olacaktır.

ZenScript
Copy
// String olarak tarif adlarını tutan bir dizi
var minecraftCikarilacaklar as string[] = [
    "acacia_slab",
    "red_bed_from_white_bed",
    "sugar_from_sugar_cane"
];

craftingTable.removeByModid("minecraft", (isim) => {
    return isim in minecraftCikarilacaklar;
});

Düzenli İfadelere(Regex) Göre Tarif Kaldırma

Link to düzenli-i̇fadelereregex-göre-tarif-kaldırma

craftingTable.removeByRegex(regex);

  • regex as string

İsmi regex kuralına uyan bütün tarifleri kaldırır.

ZenScript
Copy
// "minecraft:green_carpet", "minecraft:lime_carpet_from_white_carpet", and "minecraft:white_carpet" gibi olan bütün tarifleri kaldırma
craftingTable.removeByRegex("minecraft:.*_carpet");

Bütün Tarifleri Kaldırma

Link to bütün-tarifleri-kaldırma

craftingTable.removeAll();

Çalışma masasındaki bütün tarifleri kaldırma.

ZenScript
Copy
craftingTable.removeAll();