User Tools

Site Tools


zh_cn:tutorial:blockentity

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:blockentity [2024/10/27 15:00] – 更新 solidblockzh_cn:tutorial:blockentity [2025/04/01 12:20] (current) – [方块实体刻] solidblock
Line 30: Line 30:
     [...]     [...]
          
-    public static final DemoBlock DEMO_BLOCK = register("demo_block", new DemoBlock(AbstractBlock.Settings.create()));+    // 对于 1.21.2 之前的版本 
 +    // public static final DemoBlock DEMO_BLOCK = register("demo_block", new DemoBlock(AbstractBlock.Settings.create())); 
 +     
 +    // 对于 1.21.2 及之后的版本 
 +    public static final DemoBlock DEMO_BLOCK = register("demo_block", DemoBlock::new, AbstractBlock.Settings.create());
          
     [...]     [...]
Line 44: Line 48:
   public static final BlockEntityType<DemoBlockEntity> DEMO_BLOCK = register(   public static final BlockEntityType<DemoBlockEntity> DEMO_BLOCK = register(
       "demo_block",       "demo_block",
-      // 对于 1.21.2 及以上的版本, +       
-      // 将 `BlockEntityType.Builder` 替换为 `FabricBlockEntityTypeBuilder`。 +      // 对于 1.21.2 之前的版本,请使用 BlockEntityType.Builder。 
-      BlockEntityType.Builder.create(DemoBlockEntity::new, TutorialBlocks.DEMO_BLOCK).build()+      FabricBlockEntityTypeBuilder.create(DemoBlockEntity::new, TutorialBlocks.DEMO_BLOCK).build()
   );   );
      
Line 71: Line 75:
 对于旧版本,如果无法访问 ''BlockEntityType.Builder.create'',尝试 ''FabricBlockEntityTypeBuilder.create'' 对于旧版本,如果无法访问 ''BlockEntityType.Builder.create'',尝试 ''FabricBlockEntityTypeBuilder.create''
  
-这个方块实体类型定义了只有 ''TutorialBlocks.DEMO_BLOCK'' 可以拥有这个方块实体类型。如果你想要让方块实体类型支持更多方块,只需要将其添加到 ''BlockEntityType.Builder.create'' 的参数中即可。如果方法引用 ''DemoBlockEntity::new'' 无法解析,检查 ''DemoBlockEntity'' 的构造方法的参数是否正确。+这个方块实体类型定义了只有 ''TutorialBlocks.DEMO_BLOCK'' 可以拥有这个方块实体类型。如果你想要让方块实体类型支持更多方块,只需要将其添加到 ''FabricBlockEntityTypeBuilder.create'' 的参数中即可。如果方法引用 ''DemoBlockEntity::new'' 无法解析,检查 ''DemoBlockEntity'' 的构造方法的参数是否正确。
  
 > **注意:**和其他方块一样,这个方块也需要方块模型和物品模型,可能也需要战利品表,关于如何创建请参见 [[blocks]]。对于战利品表,有[[blockentity_sync_itemstac|后续教程]]会提到如何改进战利品表表以包含方块实体数据。 > **注意:**和其他方块一样,这个方块也需要方块模型和物品模型,可能也需要战利品表,关于如何创建请参见 [[blocks]]。对于战利品表,有[[blockentity_sync_itemstac|后续教程]]会提到如何改进战利品表表以包含方块实体数据。
Line 121: Line 125:
 在你的 ''BlockEntity'' 类中: 在你的 ''BlockEntity'' 类中:
 <code java DemoBlockEntity.java> <code java DemoBlockEntity.java>
-public class DemoBlockEntity extends BlockEntity {+public class DemoBlockEntity extends BlockEntity implements BlockEntityTicker<DemoBlockEntity> {
     [...]     [...]
          
-    public static void tick(World world, BlockPos pos, BlockState state, DemoBlockEntity be) {+    @Override 
 +    public static void tick(World world, BlockPos pos, BlockState state, DemoBlockEntity blockEntity) {
         [...]         [...]
     }     }
zh_cn/tutorial/blockentity.1730041252.txt.gz · Last modified: 2024/10/27 15:00 by solidblock