Try   HackMD

Minecraft Modding - 簡單方塊

記得使用 Minecraft 1.18.2 版本!

Code

在模組路徑下的 block 資料夾下加入 ModBlocks.java,並加入程式碼:

class ModBlocks { // 註冊「方塊」本身 private static Block registerBlock(String name, Block block) { registerBlockItem(name, block); // 呼叫註冊方塊時,也註冊物品 return Registry.register(Registry.BLOCK, new Identifier(<主程式>.MOD_ID, name), block); // ^^^^^^^^^^^^^^ 代表註冊(Rigister)的是方塊(BLOCK) } // 註冊方塊的「物品型態」(可有可無) private static Item registerBlockItem(String name, Block block) { // ⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄ 代表註冊(Rigister)的是物品(ITEM) return Registry.register(Registry.ITEM, new Identifier(<主程式>.MOD_ID, name), new BlockItem(block, new FabricItemSettings().group(ItemGroup.MISC))); } // 初始化函數 public static void registerModBlocks() { System.out.println("Registering Mod Blocks for " + <主程式>.MOD_ID); } }

註冊方塊:

public static final Block RUBY_ORE = registerBlock("ruby_ore", new Block(FabricBlockSettings.of(Material.STONE).strength(4.0f) .breakByTool(FabricToolTags.PICKAXES, 2).requiresTool()));

其中,breakByTool 的第二個參數是工具等級,對照如下:

0 -> Wooden / Golden Pickaxe
1 -> Stone Pickaxe
2 -> Iron Pickaxe
3 -> Diamond Pickaxe
4 -> Netherite Pickaxe

常用 Settings:

of(Material.<material>) - 相當於<material>的材質 strength(<sec>f) - 挖掘時間 requiresTool() - 必須使用工具

最後記得在你的主程式呼叫初始化函數

class <主程式> implement ModInitializer { @Override public void onInitialize() { ModBlocks.registerModBlocks(); } }

Texture

檔案架構:

resource
└─ assets
   └─ <ModId>
      ├─ blockstates
      │  └─ <blockId>.json
      ├─ lang
      │  └─ en_us.json
      ├─ models
      │  ├─ block
      │  │  └─ <blockId>.json
      │  └─ item
      │     └─ <blockId>.json
      └─ textures
         └─ block
            └─ <blockId>.png
// blockstates/<blockId>.json { "variants": { "": { "model": "testmod:block/ruby_ore" } } }
// models/block/<blockId>.json { "parent": "block/cube_all", "textures": { "all": "testmod:block/ruby_ore" } }
// models/item/<blockId>.json { "parent": "testmod:block/ruby_ore" }

blockstates 主要是在描述一個方塊的六個面要用哪些 models;而 models 的檔案則是描述要從 png 檔取哪一個部分。

補充資料

Block Models 教學
神的工具:Block Bench
進階方塊