User Tools

Site Tools


zh_cn:tutorial:blockstate

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
zh_cn:tutorial:blockstate [2022/12/16 01:43] solidblockzh_cn:tutorial:blockstate [2023/11/18 08:13] (current) – [为方块状态添加模型] update wiki link solidblock
Line 4: Line 4:
 这就是 ''BlockState'' 的目的。假设我们希望一个方块仅在充能后能够召唤闪电。 这就是 ''BlockState'' 的目的。假设我们希望一个方块仅在充能后能够召唤闪电。
      
-首先,我们定义方块的布尔值属性——是否充能(小心不要导入错误的BooleanProperty+首先,我们定义方块的布尔值属性——是否充能(小心不要导入错误的 ''BooleanProperty'',并在模组初始化的地方将其注册。(如果你直接在 ''ChargeableBlock'' 类的静态字段中注册,模组初始化器可能会忽略它,如果这个类没有被初始化的话。) 
 + 
 +事实上你也可以使用原版已有的属性,可以在 ''Properties''(''net.minecraft.state.property.Properties'')中找到。如果你需要定义其他类型的属性,可以使用 ''IntProperty'' 或 ''EnumProperty''
 <code java> <code java>
 public class ChargeableBlock extends Block { public class ChargeableBlock extends Block {
     public static final BooleanProperty CHARGED = BooleanProperty.of("charged");     public static final BooleanProperty CHARGED = BooleanProperty.of("charged");
    
-    // 方块实例。可以放在任何地方。 +    // 方块实例。可以放在任何地方。确保这个类已经初始化。 
-    public static final ChargeableBlock CHARGEABLE_BLOCK = Registry.register+    public static final ChargeableBlock CHARGEABLE_BLOCK = new ChargeableBlock(FabricBlockSettings.copyOf(Blocks.STONE)); 
-        Registries.BLOCK, +
-        new Identifier("tutorial", "chargeable_block"), +</code> 
-        new ChargeableBlock( /* 在这里写合适的东西 */ ));+<code java> 
 +public class ExampleMod implements ModInitializer { 
 +    @Override 
 +    public void onInitialize() { 
 +        Registry.register(Registries.BLOCK, new Identifier("tutorial", "chargeable_block"), ChargeableBlock.CHARGEABLE_BLOCK); 
 +        Registry.register(Registries.ITEM, new Identifier("tutorial", "chargeable_block"), new BlockItem(ChargeableBlock.CHARGEABLE_BLOCK, new FabricItemSettings()); 
 +    }
 } }
 </code> </code>
Line 112: Line 120:
 变种基于添加到方块中的属性的可能排列。如果需要,可以在方块状态 JSON 中完全忽略某个属性,例如在第一个方块状态 JSON 中我们忽略了 ''charged'' 属性,但如果要在一个变种中包含属性,则必须将其包含在//所有//变种。如果 ''tutorial:chargeable_block'' 还具有一个称为 ''glowing'' 的布尔属性,并且您想根据模型是否发光以及是否经过充能来更改模型,则需要四个变种:充能发光,充能不发光,不充能但发光,不充能不发光。如果需要,可以将同一模型分配给多个变种。 变种基于添加到方块中的属性的可能排列。如果需要,可以在方块状态 JSON 中完全忽略某个属性,例如在第一个方块状态 JSON 中我们忽略了 ''charged'' 属性,但如果要在一个变种中包含属性,则必须将其包含在//所有//变种。如果 ''tutorial:chargeable_block'' 还具有一个称为 ''glowing'' 的布尔属性,并且您想根据模型是否发光以及是否经过充能来更改模型,则需要四个变种:充能发光,充能不发光,不充能但发光,不充能不发光。如果需要,可以将同一模型分配给多个变种。
  
-这只是对方块状态 JSON 的简单介绍。[[https://minecraft-zh.gamepedia.com/模型|Minecraft Wiki]]中记录了有关方块状态和模型 JSON 的所有技巧,以及在原版游戏中使用这些功能的示例。祝你好运!+这只是对方块状态 JSON 的简单介绍。[[https://zh.minecraft.wiki/模型|Minecraft Wiki]]中记录了有关方块状态和模型 JSON 的所有技巧,以及在原版游戏中使用这些功能的示例。祝你好运!
  
 ==== 关于性能的注意事项 ==== ==== 关于性能的注意事项 ====
zh_cn/tutorial/blockstate.1671155004.txt.gz · Last modified: 2022/12/16 01:43 by solidblock