从其他方转换模型到 FurnitureCore 时
显然有经验的开发者发现了,几乎所有用来导入 Minecraft 的模型都是这种格式。这也就意味着你可以直接将其他插件、mod 的模型拿到此处来使用。
不过需要注意的是,由于不同来源模型、材质包对内容物的路径管理方式不同,model.json 文件中的材质文件路径也许需要你手动调整为与 FurnitureCore 的文件组织格式一致(确保路径正确)。
1364 字约 5 分钟
2024-12-27
以下为 FurnitureCore 所接受的一个家具模型文件的格式要求:
约束规则:
压缩包名称(mode_name.zip)
即为模型名称,会被用作游戏内的调用;a-z
、0-9
、.
、_
、-
;FurnitureCore 采用的模型格式与 Minecraft 自带模型格式一致,通常包含以下内容:
{
"textures": {
"0": "texture_1",
"1": "path/texture_2"
},
"elements": [...],
"display": {...},
"groups": [...]
}
从其他方转换模型到 FurnitureCore 时
显然有经验的开发者发现了,几乎所有用来导入 Minecraft 的模型都是这种格式。这也就意味着你可以直接将其他插件、mod 的模型拿到此处来使用。
不过需要注意的是,由于不同来源模型、材质包对内容物的路径管理方式不同,model.json 文件中的材质文件路径也许需要你手动调整为与 FurnitureCore 的文件组织格式一致(确保路径正确)。
为了丰富家具功能,FurnitureCore 模型允许配置一些家具属性,包含在 properties.json
文件中:
{
"display_name": "家具显示名称",
"can_rotate": true,
"can_hanging": false,
"function": {...}
}
display_name
:配置模型的显示名称,当没有此字段时则显示模型文件名;can_rotate
:配置模型是否可以旋转角度(默认 true
) can_hanging
:配置模型是否可以被悬挂在方块侧面(默认 false
) can_rotate
与此项均为true
时,如果模型放置在地上则同样可以旋转;function
:配置家具的功能,当没有此字段则表示家具仅用作展示,具体可用功能配置如下椅子功能,具备此功能的模型可以让玩家坐在上面。
{
"function": {
"type": "chair",
"height": 0.0
}
}
height
字段用于调整玩家坐在模型上的高度。
1.0 为模型放置位置方块的顶面,0.0 为模型放置位置方块的底面,0.5 为模型放置位置方块的中间位置。
存储功能,具备此功能的模型可以用作存储物品。
{
"function": {
"type": "storage",
"size": 27
}
}
size
字段用于配置存储模型的大小,应当为 9 的倍数,(可选: 9、18、27、36、45、54 六种大小)
如果 size 不是 9 的倍数,会自动向上取整到最接近的 9 的倍数。
照明功能,具备此功能的模型可以发光,作为光源。
{
"function": {
"type": "illumination",
"light_level": 15,
"switchable": false
}
}
light_level
字段用于配置光照等级,取值范围为 0-15。switchable
字段用于配置是否可以开关,当为 true
时,玩家可以右键开关照明。可以指定一个 Minecraft 工作台类型,具备此功能的模型可以作为对应工作台使用。
{
"function": {
"type": "work_block",
"block": "workbench"
}
}
block
字段用于指定工作台类型,目前支持的工作台类型有:
workbench
:工作台furnace
:熔炉smoker
:烟熏炉blast_furnace
:高炉brewing_stand
:酿造台loom
:织布机cartography_table
:制图台stonecutter
:切石机smith
:铁砧grindstone
:磨石机此文件是可选的,当没有此文件时表示此模型不包含一个内置的合成配方。
一个家具可以指定多种配方,包含在文件内的 recipes
JsonArray 中:
{
"recipes": []
}
合成配方分为有序配方与无序配方两种,通过配方中的 type
字段区分。配方材料只支持 Minecraft 自带物品。
{
"recipes": [
{
"type": "shaped",
"shape": [
"sss",
"sas",
"sss"
],
"ingredients": {
"s": "minecraft:stone",
"a": "minecraft:stick"
}
}
]
}
{
"recipes": [
{
"type": "shaped",
"shape": ["s", "a"],
"ingredients": {
"s": "minecraft:ditr",
"a": "minecraft:stone"
}
}
]
}
这样配置则下面两种合成方式都可以得到产物,如果希望只能在特定的位置摆放请看例子3
:
{
"recipes": [
{
"type": "shaped",
"shape": [
"bsb",
"bab",
"bbb"
],
"ingredients": {
"s": "minecraft:ditr",
"a": "minecraft:stone",
"b": "minecraft:dir"
}
}
]
}
{
"recipes": [
{
"type": "shapeless",
"ingredients": [
"minecraft:stone",
"minecraft:stone",
"minecraft:stick"
]
}
]
}
无序配方配置起来要简单的多,仅需要将合成材料填写在 ingredients
列表中即可。