Çalışma Masası
Link to çalışma-masası
Recipe Types
Link to recipe-types
Ç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.
Tarif Ekleme
Link to tarif-ekleme
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);
recipeName
as stringoutput
as IItemStackingredients
as IIngredient[]recipeFunction
(Optional) as RecipeFunctionArray
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 CopycraftingTable.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);
recipeName
as stringoutput
as IItemStackingredients
as IIngredient[][]recipeFunction
(Optional) as RecipeFunctionMatrix
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 IItemStackinputs
as IItemStack[] Array of inputs ordered the same as defined in the original recipe
ZenScript Copyimport 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[][]) => {};
usualOut
as IItemStackinputs
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 Copyimport 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 Copyimport 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 Copyimport 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 CopycraftingTable.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);
output
as IItemStack
Girilen IItemStack çıktısının olduğu bütün tarifleri kaldırır.
ZenScript CopycraftingTable.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 CopycraftingTable.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 stringexclusionFilter
as RecipeFiltername
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 CopycraftingTable.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 CopycraftingTable.removeAll();