記得使用 Minecraft 1.18.2 版本!
在模組路徑下的 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();
}
}
檔案架構:
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
檔取哪一個部分。
(188){8}2h[4:7]/5h[8:1],6,5h[8:1],6,5h[8:1],6,7h[8:1],5h[8:1],6,2h[4:7]/5h[8:1],6,5h[8:1],6,5h[8:1],6,6,7,5,6,2h[4:7]/5h[8:1],6,5h[8:1],6,5h[8:1],6,7h[8:1],5h[8:1],6,2h[4:7]/5h[8:1],6,5h[8:1],6,5h[8:1],6,8-5[8:1],
Jul 7, 2023Java是一種廣泛使用的電腦程式語言,擁有跨平台、物件導向、泛型程式設計的特性,廣泛應用於企業級Web應用開發和移動應用開發。--《維基百科》 以下皆使用 IntelliJ 做示範 主函數 首先,創建一個 java 檔,IntelliJ 會自動幫你生成一個 class (必須與檔名相同) 接著打上 main,你就會看到自動完成,直接按 enter 即可。 完成後大概長這樣:
Feb 23, 2023指令的創建共分為三個部分:Mixin + DataSaver、Command、Events Mixin + Data Saver 在 mixin 資料夾中加入 ModEntityDataSaver.java: @Mixin(Entity.class) public abstract class ModEntityDataSaver implements IEntityDataSaver { private NbtCompound persistentData; @Override
Sep 19, 2022正規表達式 (Regular Expression, Regex) 使用單個字串來描述、符合一系列符合某個句法規則的字串。 基本語法 選擇 豎線 | 代表選擇(即或集),具有最低優先級。例如 gray|grey 可以符合grey或gray。 數量限定 加號 + 代表前面的字元必須至少出現一次。例如,goo+gle 可以符合 google、gooogle、goooogle 等 問號 ? 代表前面的字元最多只可以出現一次。例如,colou?r 可以符合 color 或者 colour
Aug 4, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up