为什么我的块实体变量没有被保存或加载?

问题描述

我正在尝试创建一个基本块实体,该实体具有一个整数变量,每次玩家单击该块时该变量都会增加。我还想将变量的值保存到实体的标签复合中,以便我可以再次加载它。

点击部分工作正常,但保存/加载部分似乎根本不起作用。我实现了 toTag 和 fromTag 方法,但是当我重新进入世界并使用 /data 检查值时,它是 0。我还注意到,当我进入世界而不是退出世界时,会调用 toTag,这似乎违反直觉我。任何帮助表示赞赏,这是我到目前为止的代码

主模组类:

form

块类:

public class MyMod implements ModInitializer{

    @Override
    public void onInitialize() {
        Registry.register(Registry.BLOCK,identifier("my_block"),BlockList.myBlock);
        BlockEntityTypeList.myBlockEntityType = Registry.register(Registry.BLOCK_ENTITY_TYPE,identifier("my_block_entity_type"),BlockEntityType.Builder.create(MyBlockEntityType::new,BlockList.myBlock).build(null));
    }

    public Identifier identifier(String name) {
        return new Identifier(References.modId,name);
    }

}

实体类

public class MyBlock extends Block implements BlockEntityProvider{

    private MyBlockEntity entity;

    public MyBlock() {
        super(Settings.of(Material.WOOD));
    }

    @Override
    public BlockEntity createBlockEntity(BlockView view) {
        entity = new MyBlockEntity();
        return entity;
    }

    @Override
    public ActionResult onUse(BlockState state,World world,BlockPos pos,PlayerEntity player,Hand hand,BlockHitResult hit) {

        entity.increaseCount();
        return ActionResult.SUCCESS;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...