TileEntity

介绍

Kiwi 的 TileEntity 基类拥有更方便的数据管理功能。

在基类 BaseTile 中,数据同步和数据存储的方法被分开:

import net.minecraft.nbt.CompoundNBT;
import snownee.kiwi.tile.BaseTile;

public class MyTile extends BaseTile
{

    public MyTile()
    {
        super(MyModule.MY_TILE);
    }

    @Override
    protected void readPacketData(CompoundNBT data)
    {
    }

    @Override
    protected CompoundNBT writePacketData(CompoundNBT data)
    {
        return data;
    }

    @Override
    public void read(CompoundNBT data)
    {
        super.read(data);
    }

    @Override
    public CompoundNBT write(CompoundNBT data)
    {
        return super.write(data);
    }
}

不过通常你可以直接这么写:

@Override
public void read(CompoundNBT compound)
{
    readPacketData(compound);
    super.read(compound);
}

@Override
public CompoundNBT write(CompoundNBT compound)
{
    writePacketData(compound);
    return super.write(compound);
}

将服务端数据同步至客户端:

refresh();

方块破坏时保留数据

public class MyTile extends BaseTile
{

    public MyTile()
    {
        super(MyModule.MY_TILE);
        persistData = true;
    }

    ...

}