附加包教程:35.方块(七)
本帖最后由 Cat_Anchor 于 2023-6-18 09:30 编辑前言
今天,我们不继续放出方块的例子,而是教大家1.20的新内容——方块特征(BlockTraits,以下简称“特征”)。
https://klpbbs.com/static/image/hrline/line5.png
方块特征
特征是一个管理方块状态的功能。通过特征,可以给方块添加原版方块的状态,并且自动设置这些状态。例如:橡树原木是有方向性的,在不同方向放置就会有不同的旋转角度。如果要新增一种原木,就要给这个方块添加方块状态,设置触发器组件,设置事件……但现在,使用特征可以让游戏自动完成这一切。你只需要新增一个traits字段,然后定义方块排列就可以了。注意,使用特征后,将不能使用on_placed这类触发器,因为特征已经占用了这些触发器,去自动设置方块状态。
基岩版1.20.0.20和1.20.0.23添加了两种特征,以后也许还会添加。因此,需要将方块格式版本设置到1.20.10及以上,以使用最新的特征。
特征使用traits字段,在description下出现,以下是代码示例。
{
"format_version": "1.20.10",
"minecraft:block": {
"description": {
"traits": { //方块特征
"minecraft:placement_direction": { //这里的minecraft:placement_direction是一种方块特征,意思是根据玩家方向设置方块方向。
"enabled_states": [ //设定启用的方块状态,这些方块状态会被自动添加到方块
"minecraft:cardinal_direction", //这个方块状态拥有4个值,对应东南西北。
"minecraft:facing_direction" //这个方块状态拥有6个值,对应东南西北上下。这两个可以同时出现。
],
"y_rotation_offset": 90.0 //水平旋转这个方块。如果你发现你的模型做错方向了,可以在这里让它旋转。目前只支持水平旋转,度数必须是90的倍数。
}
}, ...
},
"components": { ... },
"permutations": [ ... ]
}
}
除了minecraft:placement_direction特征以外,还有minecraft:placement_position特征。这个特征用于判断玩家放置方块的位置,例如上半砖还是下半砖,南北轴还是东西轴等。
"traits": {
"minecraft:placement_position": { //方块特征
"enabled_states": [
"minecraft:block_face", //指定方块放在了哪个面,如原木。
"minecraft:vertical_half" //指定方块放在了上半部分还是下半部分,如半砖。
]
}
}
值得注意的是,虽然特征可以自动帮你设置方块状态,但你还需要设置方块排列,以保证方块旋转的正确性。
https://klpbbs.com/static/image/hrline/line7.png
完整例子
这里有一个我制作的完整例子,其中的rotation部分可能不适用于其他模型,请慎用。部分无关代码已删除。
{
"format_version": "1.20.10",
"minecraft:block": {
"description": {
"identifier": "supplementary:hollow_block",
"traits": {
"minecraft:placement_direction": {
"enabled_states": [
"minecraft:cardinal_direction",
"minecraft:facing_direction"
],
"y_rotation_offset": 90.0
}
}
},
"components": {
"minecraft:material_instances": {
"*": {
"texture": "hollow_block",
"render_method": "alpha_test"
}
},
"minecraft:geometry": "geometry.hollow_block"
},
"permutations": [
{
"condition": "q.block_property('minecraft:cardinal_direction')=='south'||q.block_property('minecraft:facing_direction')=='south'",
"components": {
"minecraft:transformation": {
"rotation": [
90,
180,
0
]
}
}
},
{
"condition": "q.block_property('minecraft:cardinal_direction')=='north'||q.block_property('minecraft:facing_direction')=='north'",
"components": {
"minecraft:transformation": {
"rotation": [
90,
0,
0
]
}
}
},
{
"condition": "q.block_property('minecraft:cardinal_direction')=='west'||q.block_property('minecraft:facing_direction')=='west'",
"components": {
"minecraft:transformation": {
"rotation": [
90,
270,
0
]
}
}
},
{
"condition": "q.block_property('minecraft:cardinal_direction')=='east'||q.block_property('minecraft:facing_direction')=='east'",
"components": {
"minecraft:transformation": {
"rotation": [
90,
90,
0
]
}
}
},
{
"condition": "q.block_property('minecraft:facing_direction')=='up'",
"components": {
"minecraft:transformation": {
"rotation": [
0,
0,
90
]
}
}
},
{
"condition": "q.block_property('minecraft:facing_direction')=='down'",
"components": {
"minecraft:transformation": {
"rotation": [
0,
0,
270
]
}
}
}
]
}
}
https://klpbbs.com/static/image/hrline/line3.png
总结
好了,方块特征的内容已经讲解完毕。
模板:
第三十四期 第三十五期 第三十六期 终于[贴吧_哈哈] 怎么没模版了?[贴吧_心碎]
页: [1]