iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Software Development

成為童年的英雄,Minecraft Java 模組製作系列 第 7

Minecraft Mod 模組製作 [DAY7] 模組製作第一步:還是敲木頭

  • 分享至 

  • xImage
  •  

前言

在開始之前我們先回顧目前都做了哪些準備,首先是intelliJ、JDK17、Forge MDK 三件套,在安裝完成後我們修改了toml檔與build.gradle檔,並填入一些重要資料,現在我們可以開始了解如何製作模組了。

獲得成就:盤點庫存

在我們開始製作模組之前,我們先試試看在IntelliJ中打開Minecraft。點開右手邊的Gradle可以看到有幾個選項,我們選擇runclient,就可以打開Minecraft,像是一般遊戲一樣。

https://ithelp.ithome.com.tw/upload/images/20230922/20161797YwkJjdOChC.png

https://ithelp.ithome.com.tw/upload/images/20230922/20161797RFlWhBeqDy.png

現在我們確定測試用遊戲可以正常開啟並執行,就可以開始程式撰寫了。
https://ithelp.ithome.com.tw/upload/images/20230922/20161797eScc2KRReZ.png
恭喜獲得第一個成就,盤點庫存。

想致富,先嚕樹 創造物品註冊器

我打算製作一個跟工業相關的模組,並圍繞這個主題製作相關的物品、方塊、合成表與生物等等,我們先開一個新的class,並命名ModItem,我們生成物品的程式碼就放這邊。

https://ithelp.ithome.com.tw/upload/images/20230922/20161797Sa15GRnNfI.png

Forge提供的檔案中包含著一段程式碼,告訴你如何在Forge中註冊一個物品或方塊,我們可以照著這個格式去生成我們的第一個物品。
我們也可以在Forge官網中找到這幾段程式碼。
第一部分的程式碼可以創造出一個物品註冊器,我們之後都可以用這個註冊器去註冊各種不同的物品。

https://ithelp.ithome.com.tw/upload/images/20230922/20161797xlpLrCnAZR.png

public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID);

public static final 表示 公共、靜態的、不可變的,代表整個變數在接下來都是整個程式可以訪問,但是不能更改的。
DeferredRegister是Forge提供的註冊物品的方法,為了讓遊戲知道我們需要一個新的物品,或是方塊與其他像是聲音等等的新元素進入遊戲,我們需要向遊戲註冊他。
我們使用的Forge的register是我們向遊戲註冊物品時的註冊表,Forge 有多種不同類型的註冊表,
Block(方塊註冊):用於註冊自定義方塊。通常使用 Block 和 Block.Properties 類進行註冊。
Item(物品):用於註冊自定義物品。通常使用 Item 類進行註冊。
Biome(生態群系)註冊:用於註冊自定義生態群系,這些群系定義了地形和生物分佈。
Entity(實體)註冊:用於註冊自定義生物、實體和生物的特性。
SoundEvent(音效事件)註冊:用於註冊自定義音效事件,以便在遊戲中播放特定音效。

public static final DeferredRegister<Item> ITEMS =
        DeferredRegister.create(ForgeRegistries.ITEMS, Mymod.MOD_ID);

這邊我們使用DeferredRegister< Item > 表示我目前要註冊的項目是一個物品,我們用ITEMS作為變數名稱
DeferredRegister.create 表示我們要做的是創建一個全新的自定義內容,括號中先填入我們需要Forge創建的註冊表,並表示我們需要的是一個物品的註冊表,第二個填入我們的MOD_ID,讓他識別這個物品是哪個模組的東西。最後我們就擁有了第一個物品註冊器。

怎麼創造出物品且聽下回分解


上一篇
Minecraft Mod 模組製作 [DAY6] Forge 設定(二)
下一篇
Minecraft Mod 模組製作 [DAY8] 目標是丐版IC2
系列文
成為童年的英雄,Minecraft Java 模組製作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言