# Minecraft Modding - 簡單方塊 :::info **記得使用 Minecraft 1.18.2 版本!** ::: ## Code 在模組路徑下的 `block` 資料夾下加入 `ModBlocks.java`,並加入程式碼: ```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); } } ``` 註冊方塊: ```java= 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: ```java= of(Material.<material>) - 相當於<material>的材質 strength(<sec>f) - 挖掘時間 requiresTool() - 必須使用工具 ``` 最後記得在你的主程式呼叫**初始化函數**: ```java= 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 ``` ```json= // blockstates/<blockId>.json { "variants": { "": { "model": "testmod:block/ruby_ore" } } } ``` ```json= // models/block/<blockId>.json { "parent": "block/cube_all", "textures": { "all": "testmod:block/ruby_ore" } } ``` ```json= // models/item/<blockId>.json { "parent": "testmod:block/ruby_ore" } ``` `blockstates` 主要是在描述一個方塊的六個面要用哪些 `models`;而 `models` 的檔案則是描述要從 `png` 檔取哪一個部分。 ## 補充資料 [Block Models 教學](https://www.youtube.com/watch?v=3lECPqoSNeg&ab_channel=UncleJam) [神的工具:Block Bench](https://www.blockbench.net/) [進階方塊](https://hackmd.io/@Chocomint/FabricModding-Block)