User Tools

Site Tools


zh_cn:tutorial:blocks

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
Next revisionBoth sides next revision
zh_cn:tutorial:blocks [2022/12/16 01:15] solidblockzh_cn:tutorial:blocks [2023/08/23 00:23] – [创建一个方块] wjz_p
Line 17: Line 17:
        石头的硬度为 1.5f,抗性为 6.0f,黑曜石的硬度为 50.0f,抗性为 1200.0f。        石头的硬度为 1.5f,抗性为 6.0f,黑曜石的硬度为 50.0f,抗性为 1200.0f。
                
-       可以在`Blocks`类中查找所有原版方块的统计+       可以在`Blocks`类中查找所有原版方块,你可以以此作为参考
     */     */
-    public static final Block EXAMPLE_BLOCK = new Block(FabricBlockSettings.of(Material.METAL).hardness(4.0f)); +    //public static final Block EXAMPLE_BLOCK = new Block(FabricBlockSettings.of(Material.METAL).hardness(4.0f));fabric api 版本 <= 0.77.0 
-    +    public static final Block EXAMPLE_BLOCK  = new Block(FabricBlockSettings.create().strength(4.0f));
     @Override     @Override
     public void onInitialize() {     public void onInitialize() {
Line 168: Line 168:
 ===== 创建自定义方块类 ===== ===== 创建自定义方块类 =====
  
-当创建一个简单的方块时,上述方法效果很好,但是有时您想要一个具有//独一无二//机制的方块。我们将创建一个//单独//的扩展''Block''的类来执行此操作。该类需要一个带有''AbstractBlock.Settings''参数的构造器:+当创建一个简单的方块时,上述方法效果很好,但是有时您想要一个具有//独一无二//机制的方块。我们将创建一个//单独//的扩展 ''Block'' 的类来执行此操作。该类需要一个带有 ''AbstractBlock.Settings'' 参数的构造器:
  
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
Line 179: Line 179:
 </code> </code>
  
-你可以在方块类中覆盖方法以实现特殊功能。这里是''onUse''方法的实现,右键单击方块时会调用此方法。我们检查交互是否在服务器进行,并向玩家发送消息,//"Hello, world!"//+你可以在方块类中覆盖方法以实现特殊功能。这里是 ''onUse'' 方法的实现,右键单击方块时会调用此方法。我们检查交互是否在服务器进行,并向玩家发送消息,//"Hello, world!"//
  
 <code java [enable_line_numbers="true",highlight_lines_extra="8,9,10,11,12,13,14,15"]> <code java [enable_line_numbers="true",highlight_lines_extra="8,9,10,11,12,13,14,15"]>
Line 199: Line 199:
 </code> </code>
  
-要使用自定义方块类,请在注册时将//new Block//替换为//new ExampleBlock//+要使用自定义方块类,请在注册时将 ''new Block'' 替换为 ''new ExampleBlock''
  
 <code java [enable_line_numbers="true",highlight_lines_extra="3"]> <code java [enable_line_numbers="true",highlight_lines_extra="3"]>
 public class ExampleMod implements ModInitializer { public class ExampleMod implements ModInitializer {
  
-    public static final ExampleBlock EXAMPLE_BLOCK = new ExampleBlock(Block.Settings.of(Material.STONE).hardness(4.0f));+    public static final ExampleBlock EXAMPLE_BLOCK = new ExampleBlock(FabricBlockSettings.of(Material.STONE).hardness(4.0f));
          
     @Override     @Override
     public void onInitialize() {     public void onInitialize() {
-        Registry.register(Registry.BLOCK, new Identifier("tutorial", "example_block"), EXAMPLE_BLOCK); +        Registry.register(Registries.BLOCK, new Identifier("tutorial", "example_block"), EXAMPLE_BLOCK); 
-        Registry.register(Registry.ITEM, new Identifier("tutorial", "example_block"), new BlockItem(EXAMPLE_BLOCK, new Item.Settings().group(ItemGroup.MISC)));+        Registry.register(Registries.ITEM, new Identifier("tutorial", "example_block"), new BlockItem(EXAMPLE_BLOCK, new FabricItemSettings()));
     }     }
 } }
 </code> </code>
  
-==== 自定义VoxelShape ====+==== 自定义形状 ====
  
-当使用不能''完整''填充一个方块的方块模型(例如铁砧、台阶、楼梯)时,邻近的方块隐藏面:+当使用不能完整填充一个方块的方块模型(例如铁砧、台阶、楼梯)而其形状却仍是完整的时,邻近的方块隐藏面就会暴露
  
 {{:tutorial:voxelshape_wrong.png?200|}} {{:tutorial:voxelshape_wrong.png?200|}}
  
-要解决这个问题,我们需要定义方块的''VoxelShape''+要解决这个问题,我们需要定义方块的 ''VoxelShape''
  
-<code> +<code java
- @Override +public class ExambleBlock extends Block { 
- public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { +    [...] 
-     return VoxelShapes.cuboid(0f, 0f, 0f, 1f, 1.0f, 0.5f); +    @Override 
- }+    public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { 
 +        return VoxelShapes.cuboid(0f, 0f, 0f, 1f, 1.0f, 0.5f); 
 +    } 
 +}
 </code> </code>
  
-注意方块的//collision shape//默认为其描边形状,如果未被指定。+注意方块的//碰撞形状//默认为其描边形状,如果未被指定。
  
 {{:tutorial:voxelshape_fixed.png?200|}} {{:tutorial:voxelshape_fixed.png?200|}}
zh_cn/tutorial/blocks.txt · Last modified: 2024/04/15 01:52 by solidblock