標題 新增找內文!

看整串內容篇數:0 / 0

16GP-BP

#1 【教學】模組製作教學 -- 製作方塊合成方式&編譯後進入遊戲測試 -- 2

發表:2011-06-22 17:49:22看他的文開啟圖片

mac00178(這ID剛好8個字)

開始XD的見習生 LV8 / 人類 / 初心者
巴幣:2215
GP:95
經驗:

注意!本文章可以用於1.6.6!

何謂模組製作教學?
難道教學就只是一堆文字,以及枯燥乏味的程式碼嗎?
你能從這堆枯燥乏味的教學裡學到什麼?
不過,說真的,我會用盡我最大的力量,把一篇教學文變成
「有趣的教學文」
本文章感謝澤田秀吉,提供了一些本人所沒有的檔案

----------------------------------------------

一,創造屬於你自己的java檔案

嗯?JAVA檔?那是什麼?能吃嗎?

老實說Java是一種程式語言,你未來要寫MineCraft模組就一定要知道這個

不過你可以像本人一樣,一點Java基礎也沒有,

你頭腦放太多東西反而會更混淆你

-----------------------------------------------

廢話先到這裡,首先你應該照著上一章執行過"decompile.bat"

那麼現在就打開你的「C:\MCP\src\minecraft\net\minecraft\src」吧!

我想你應該會看到一堆附檔名是「.java」的檔案吧?

不難理解,我們現在慢慢來,現在小安就來教你

建立一個新的檔案,我們先把它命名為「BlockExample.java」,

當然,要是你爽,你也可以命名為「123.java」,不過今天先別動就好

然後在 BlockExample.java 裡面輸入以下的程式碼:


  1. package net.minecraft.src;

  2. import java.util.Random;

  3. public class BlockExample extends Block
  4. {
  5. public BlockExample(int i, int j)
  6. {
  7. super(i, j, Material.rock);
  8. }

  9. public int idDropped(int i, Random random)
  10. {
  11. return 0;
  12. }
  13. }

當然,我們可愛的對岸翻譯作者說了,他說原文作者沒說這一段要幹嘛

反正你不懂,照抄就對了 (就好比你數學習作不會寫,抄同學的就對了!


二,將你的java檔案加入到程式裡

我不知道怎麼下標題,偏偏選了一個聽起來會很複雜的名字作為標題

放輕鬆,一點也不複雜,心裡默念「小安萬歲,小安萬歲」看看會不會簡單點?

然後在同個目錄下,打開「block.java」檔案,然後找一找,

你會發現有一堆類似這種東西的地方:

    public static final StepSound soundClothFootstep;
    public static final StepSound soundSandFootstep;
    public static final Block blocksList[];
    public static final boolean tickOnLoad[] = new boolean[256];
    public static final boolean opaqueCubeLookup[] = new boolean[256];
    public static final boolean isBlockContainer[] = new boolean[256];

在這地方的最前面加入這一段文字:

 public static final Block example;

嗯?你說你不知道加這一段要幹什麼?

喔~這一段的用意是去宣告(不太確定)我們的..東西..

總之,加完之後就會像這樣

 public static final Block example;    
 public static final StepSound soundClothFootstep;
    public static final StepSound soundSandFootstep;
    public static final Block blocksList[];
    public static final boolean tickOnLoad[] = new boolean[256];
    public static final boolean opaqueCubeLookup[] = new boolean[256];
    public static final boolean isBlockContainer[] = new boolean[256];

嗯?簡單吧?你可能到現在什麼都還不太懂,

不過你常常操作大概就知道這些東西的用意了,

接著!先別關閉你的「block.java」檔案!繼續往下找,你會找到一堆類似:

        soundGrassFootstep = new StepSound("grass", 1.0F, 1.0F);
        soundStoneFootstep = new StepSound("stone", 1.0F, 1.0F);
        soundMetalFootstep = new StepSound("stone", 1.0F, 1.5F);
        soundGlassFootstep = new StepSoundStone("stone", 1.0F, 1.0F);
        soundClothFootstep = new StepSound("cloth", 1.0F, 1.0F);
        soundSandFootstep = new StepSoundSand("sand", 1.0F, 1.0F);

的東西,也一樣,不過在這裡請你加上這一段:

example = (new BlockExample(122, 1)).setHardness(1.5F).setResistance(10F).setStepSound(soundStoneFootstep);

這一段是什麼意思?喔?

讓我們拆開來了解一下吧:

new BlockExample(122, 1)   代表產生一個方塊,代號是122,至於後面的"1",代表著方塊的圖片(1為石頭)
(原作者使用92,但是重複了,所以本人自己改為122

setHardness(1.5F) 這個也不難理解,這個是硬度,就是你破壞他需要多久的時間

setResistance(10F) 這個是抗爆炸性的參數,不太懂明確作用

setStepSound(soundStoneFootstep) 這裡指走在方塊上的聲音,你可以參考那一大堆的程式碼
例如草的聲音:setStepSound(soundGrassFootstep)
木頭的聲音:setStepSound(soundWoodFootstep)    ...之類的

然後就好了,接著請到下一個段落www

三,建立你的方塊合成表

聽起來還是很複雜吧?總之還是在同個目錄下,打開你的「CraftingManager.java」檔案

往下找你會找到一堆類似:

addRecipe(new ItemStack(Item.book, 1), new Object[] {
            "#", "#", "#", Character.valueOf('#'), Item.paper
        });
        addRecipe(new ItemStack(Block.fence, 2), new Object[] {
            "###", "###", Character.valueOf('#'), Item.stick
        });

的東西,然後在最上面加入:

addRecipe(new ItemStack(Block.example, 1), new Object[] {"##", "##", Character.valueOf('#'), Block.dirt});

就會變成下面這樣:

addRecipe(new ItemStack(Block.example, 1), new Object[] {"##", "##", Character.valueOf('#'), Block.dirt});
addRecipe(new ItemStack(Item.book, 1), new Object[] {
            "#", "#", "#", Character.valueOf('#'), Item.paper
        });
        addRecipe(new ItemStack(Block.fence, 2), new Object[] {
            "###", "###", Character.valueOf('#'), Item.stick
        });

不難理解,我們照樣拆開來講

new ItemStack(Block.example, 1) 這個表示要生成什麼方塊,然後生成的數量,要是你爽,你可以把"1"改成"12",沒錯的話一次應該會生出12個東西來..

new Object[] {"##", "##", Character.valueOf('#'), Block.dirt}
這個是合成表,分別為第一層跟第二層,
後面的 Character.valueOf('#'), Block.dirt 表示#為Dirt(土塊)

四,產生你的模組

好了之後儲存,然後回到C:\MCP,執行"recompile.bat

等到都編譯完之後,再執行"reobfuscate.bat"開始編譯你自己製作的模組

屬於你的檔案就會在"C:\MCP\reobf\minecraft"產生

依照剛剛以上的方法,你就會發現產生了:

BlockExample.class
hi.class
un.class

你就可以把這三個檔案丟給別人一起玩了,

五,測試你的模組

作完第四段落部分之後,請執行startclient.bat

然後就會跳出MineCraft的遊戲,進去後隨便在地上挖四塊土塊

然後你就高潮了,然後按E,把四個土塊疊成這樣:


你就會產生一個沒有名字的方塊了!
    
最後編輯:2011-06-23 18:41:31 ◆ Origin: <210.68.241.xxx>

顯示稍舊的 10 則留言

快速回覆文章,請先登入

看整串內容篇數:0 / 0

板務人員
本板熱門推薦
【情報】國外超專業槍戰伺服,MCStri哈囉大家好我是豬豬!這次要介紹的是國外伺服器____MCSt...(繼續閱讀
【元元實況】更新 - 被命令的生存 EP各位好阿!!我是元元,這是一個全新的影片系列喔!!!每個星期...(繼續閱讀
【情報】0.9.X(含)以上-沛寶自製M大家好我是沛寶今天我要發表我的第二張地圖---逃離天堂圖書館...(繼續閱讀
【情報】【小奈】minecraft 1.大家安安!!我是小奈!!今天我要為大家帶來『逃離粉絲家』出生...(繼續閱讀
【魚乾影音】四柱生存--EP.END E大家好我是魚乾恩嘛就是終於又出新系列囉!!這次是一張看似難度...(繼續閱讀