關(guān)于不對稱構(gòu)圖的kubejs自定義方塊的放置朝向問題【1.18.2】粗解

根據(jù)https://wiki.latvian.dev/books/kubejs-legacy/page/custom-blocks中的基礎(chǔ)描述,我們可以獲得如下的kubejs自定義方塊的基礎(chǔ)格式:
【1.18.2】kubejs
onEvent('block.registry', event => {
? ? event.create('id', 'type')
? ? ? ? ?.material('material')
? ? ? ? ?.hardness(float,>=0.0)
? ? ? ? ?.displayName('name')
? ? ? ? ?.notSolid()
? ? ? ? ?.renderType(cutout)
})
其中type可選【basic、detector 、slab、stairs、fence、fence_gate、wall、wooden_pressure_plate、stone_pressure_plate、wooden_button、stone_button、falling、crop】,默認為basic;
為了實現(xiàn)原版熔爐放置時根據(jù)玩家視角保證正面朝向玩家,因此我們可以選擇stairs【樓梯】、fence_gate【柵欄門】、stone/wooden_button【按鈕】這三種,而選擇依據(jù)是當我們觀察原版中所放置的同名類型方塊時,可以得到【facing】這一方塊屬性來實現(xiàn)朝向設(shè)定。
按照常規(guī)套路,我們只需要在kubejs/assets/kubejs/textures/block/...以及kubejs/assets/kubejs/models/block/...分別添加紋理貼圖以及模型文件就可以完成,但只適用于type為basic時;通過研究原版的blockstates文件,以橡木材質(zhì)為例,如下所示:


type為fence_gate

我們可以發(fā)現(xiàn),這三種類型需要不同數(shù)量的額外模型文件,經(jīng)過測試,我們可以使用完全相同的模型文件,僅改變文件名后綴即可適用,如type為button時,在kubejs/assets/kubejs/models/block/...需要添加id.json跟id_pressed.json的模型文件;type為fence_gate時,在kubejs/assets/kubejs/models/block/...需要添加id.json、id_open.json、id_wall.json、id_wall_open.json的模型文件;type為stairs時,在kubejs/assets/kubejs/models/block/...需要添加id.json、id_outer.json、id_inner.json的模型文件;
同時我們發(fā)現(xiàn)選擇后兩種類型時,其blockstates中"uvlock": true代表在改變放置朝向時不改變紋理分布,這樣會造成貼圖出現(xiàn)錯落,因此為了解決這種問題,我們可以在kubejs/assets/kubejs/...中新建一個blockstates文件夾并在其中添加id.json文件,其內(nèi)容可以直接復(fù)制原版同名類型文件,但需要修改兩個部分:
①舉例:將"model": "minecraft:block/oak_stairs_outer"改為"model": "kubejs:block/id_outer"
②將"uvlock":?true修改為"uvlock": false
完成以上操作,就基本完成了,但進入游戲后,我們會發(fā)現(xiàn)kubejs自帶的物品欄貼圖變成類型貼圖,為了解決這個問題,我們只需要在kubejs/assets/kubejs/models/item/...中加入id.json,文件內(nèi)容以橡木材質(zhì)為例,如下所示:
【type為button】時
{
? "parent": "minecraft:block/oak_button_inventory"
}
我們需要將"parent":?"minecraft:block/oak_button_inventory"修改為"parent":?"kubejs:block/id_inventory"
【type為fence_gate跟stairs】時
{
? "parent": "minecraft:block/oak_fence_gate"
}
{
? "parent": "minecraft:block/oak_stairs"
}
我們需要將"parent":?"minecraft:block/oak_fence_gate"或"parent":?"minecraft:block/oak_stairs"修改為"parent":?"kubejs:block/id"
此處文件內(nèi)容所涉及的模型文件可以跟kubejs/assets/kubejs/models/block/...中的id.json完全一致
備注:①方塊注冊文件中,.displayName('name')不能取消,雖然不知道原因,但取消后將無法實現(xiàn)模型跟貼圖的應(yīng)用,只會顯示跟類型同名的類原版貼圖
②type為button時,其碰撞箱很小,因此會造成穿模,目前我未能處理此問題
③type為fence_gate時,如果對此類方塊配置右鍵操作【block.right_click】,會出現(xiàn)模型抽搐現(xiàn)象,目前沒有辦法解決,這是因為fence_gate為原版柵欄門,存在紅石屬性以及右鍵開關(guān)屬性。
另外,以上內(nèi)容均來自@無夢之心的服務(wù)器中所使用的文件