Minecraft Tela Módulo de Desarrollo entidad (seis) cuadrados

entidad cuadro

  • Capítulo anterior informó sobre el estado de la caja. Al iniciar el juego, una caja se registrarán todos los estados posibles, lo que significa que si usted tiene 14 propiedad booleana, esta caja tendrá registro estatal 2 ^ 14 = 16384, por esta razón, la caja no debe tener demasiado cuadro de propiedad estatal. Precisa, estado cuadrados es mirar, BlockEntity(cuadrados sólidos) es para los estados más avanzados.

  • BlockEntity(cuadrados sólidos) se utiliza principalmente para almacenar datos a una caja, la caja antes de la creación de una entidad, primero debe tener una caja, este capítulo habla BlockEntityde la creación y registro.

  • Creación y registro

    • Crear una clase hereda de la caja entidad BlockEntity(esto le indicará un error, no el control)

      public class IronFurnaceBlockEntity extends BlockEntity {
      
          public IronFurnaceBlockEntity() {
          }
      }
      
    • entidad cuadro de registro (esto le indicará un error, la primera cuestión)

      //声明
      public static BlockEntityType<IronFurnaceBlockEntity> IRON_FURNACE_BLOCK_ENTITY;
      
      
      //注册, 在onInitialize()方法中
      IRON_FURNACE_BLOCK_ENTITY = Registry.register(Registry.BLOCK_ENTITY, "demo:iron_furnace", BlockEntityType.Builder.create(IronFurnaceBlockEntity::new, IRON_FURNACE_BLOCK).build(null));
      
    • entidad modificando el bloque constructor de la clase

      public IronFurnaceBlockEntity() {
          super(DemoMod.INSTANCE.IRON_FURNACE_BLOCK_ENTITY);
      }
      
      //这里传入了DemoMod类的实例,下面是实现:
      public class DemoMod implements ModInitializer {
          public static DemoMod INSTANCE;
          public DemoMod(){INSTANCE = this;}
          [...]
      }
      
    • Bloquear implementado en la clase de BlockEntityProviderlas interfaces

      public class IronFurnaceBlock extends Block implements BlockEntityProvider {
          [...]
          @Override
          public BlockEntity createBlockEntity(BlockView view) {
              return new IronFurnaceBlockEntity();
          }
      }
      
    • Ahora, la entidad sería capaz de usar la caja, pero no tiene ninguna función.

  • Los datos de secuencia

    • Reescribiendo toTagy fromTagmétodo, en donde una variable y un nuevo método para probar.

      private int num = 0;
      @Override
      public CompoundTag toTag(CompoundTag compoundTag) {
          super.toTag(compoundTag);
          compoundTag.putInt("num",num);
          return compoundTag;
      }
      
      @Override
      public void fromTag(CompoundTag compoundTag) {
          super.fromTag(compoundTag);
          num = compoundTag.getInt("num");
      }
      public void numAdd(){ //调用函数,变量+1,并打印
          num++;
          System.out.println("The Number is "+ num);
      }
      
    • En IronFurnaceBlocksustituir la clase de activatemétodo para lograr la función de la caja derecha

      @Override
      public boolean activate(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
          if (world.isClient)return true; 
          //获取方块实体
          IronFurnaceBlockEntity blockEntity = (IronFurnaceBlockEntity) world.getBlockEntity(pos);
          //数字加1
          blockEntity.numAdd();
          return true;
      }
      
    • Ejecución de juego, para lograr la validación

      [Volcar imagen no pasa la cadena, la estación de origen puede tener mecanismo de cadena de seguridad, se recomienda guardar la imagen abajo cargado directamente (IMG-dtUrtQ9s-1584884073045) (./ Recursos / imagen / 19.png)]

      Después de volver a entrar en el mundo, los datos pueden ser leídos guardan normalmente

      [Volcar imagen no pasa la cadena, la estación de origen puede tener mecanismo de cadena de seguridad, se recomienda guardar la imagen abajo subido directamente (IMG-F4yuqZQs-1584884073046) (./ Recursos / imagen / 20.png)]

Publicado 59 artículos originales · ganado elogios 45 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/m0_37771142/article/details/105036307
Recomendado
Clasificación