Minecraft 模組製作教學 for 1.7 – Part 7 建立熔煉與合成配方!

GKB
2014 年 10 月 05 日 15:10:28 · Fetching Views...

←上一篇教學

下一篇教學→

影片

http://youtu.be/MpSR0Vejzys

由於這次教學內碼部分比較複雜,所以不得不拉出來解釋…

強烈建議各位搭配影片服用本教學。

什麼是ItemStack

不論是熔煉或者合成的配方都用的到ItemStack。ItemStack代表著把物品綑成一堆,例如 ItemStack(Items.gunpowder,16) 就是把16個火藥綑成一堆。如此一來在指定融煉或燒製時的成品時會更加方便。

ItemStack語法

ItemStack(物品,數量)

其中「,數量」可以省略不寫,如果省略就代1個東西。

在物品的部分,如果你想調用Minecraft原本就有的東西,你可以輸入「Items.物品名稱」。當你輸入「.」時eclipse一樣會列出一列可以選擇的選項。

新增熔煉配方

@EventHandler
public void preInit(FMLPreInitializationEvent e){

以下內碼請輸入在這裡面

}

GameRegistry.addSmelting(new ItemStack(燒製物名稱), new ItemStack(成品物品名稱), 經驗值);

說明:

內碼中的經驗值的形式為「數字f」,例如30f 。

新增合成配方

@EventHandler
public void preInit(FMLPreInitializationEvent e){

以下內碼請輸入在這裡面

}

GameRegistry.addRecipe(new ItemStack(成品名稱,數量), new Object[]{"第一行變數", "第二行變數","第三行變數", '變數1', new ItemStack(物品名1), '變數2', new ItemStack(物品名2), '變數3', new ItemStack(物品名3), '變數4', new ItemStack(物品名4), '變數5', new ItemStack(物品名5), '變數6', new ItemStack(物品名6), '變數7', new ItemStack(物品), '變數8', new ItemStack(物品名8), '變數9', new ItemStack(物品名9)});

上面這堆東西可能有點抽象,舉個例子:

GameRegistry.addRecipe(new ItemStack(Rocket_Fuel,16), new Object[]{"ABA", "BAB","ABA", 'A', new ItemStack(Aluminium_dust_20), 'B', new ItemStack(Items.gunpowder)});

範例內碼可以拆解成3部分

1. 合成產物

new ItemStack(Rocket_Fuel,16),

上面這段程式碼中我指定產物為16個叫做Rocket_Fuel的自訂物品。

2.指定排列方法

new Object[]{"ABA", "BAB","ABA",

我指定的排列法是:

context_index

在內碼中A和B是一個代號,能替換成任何英文字母。

如你所見“ABA”, “BAB”,”ABA”,  裡面寫在最前頭的“ABA”代表第一行,其他以此類推。

但是,如果你想像這樣擺…

context_index2

其實非常簡單,只要把不想放東西的地方改成空格,像這樣: “ABA”, “B B”,”ABA”

3.定義代號

接著要告訴程式碼A和B到底代表甚麼

'A', new ItemStack(Aluminium_dust_20), 'B', new ItemStack(Items.gunpowder)

在這個範例中,我把A定義成我自訂的物品Aluminium_dust_20,把B定義成Minecraft裡面原有的火藥(gunpowder)。

如果你像定義更多的代號,那你只要一直重複「 ‘代號’, new ItemStack(物品名),」就可以了~

本次教學結束~