Cat_Anchor 发表于 2023-6-17 12:44:12

附加包教程: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


总结



好了,方块特征的内容已经讲解完毕。
模板:





第三十四期 第三十五期 第三十六期

尘池卿 发表于 2023-6-17 12:48:53

终于[贴吧_哈哈]

千古罪人CC 发表于 2023-6-17 13:29:46

怎么没模版了?[贴吧_心碎]
页: [1]
查看完整版本: 附加包教程:35.方块(七)