Добрый день всем!
Столкнулся с проблемой, что переменная в NBTTagCompound, заданная на клиенте, не синхронизируется с сервером.
Ниже приведу код.
Инкремент переменной:
Переопределение записи и чтения NBT:
Синхронизация NBT тэга:
Столкнулся с проблемой, что переменная в NBTTagCompound, заданная на клиенте, не синхронизируется с сервером.
Ниже приведу код.
Инкремент переменной:
Void Update (by ITIckable:
@Override
public void update()
{
if (!world.isRemote) return;
this.cur_progress++;
this.markDirty();
}
Write/Read NBT:
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound)
{
super.writeToNBT(compound);
compound.setInteger("cur_progress", this.cur_progress);
return compound;
}
@Override
public void readFromNBT(NBTTagCompound compound)
{
super.readFromNBT(compound);
this.cur_progress = compound.getInteger("cur_progress");
}
Синхронизация NBT тэга:
Sync NBT:
@Override
public SPacketUpdateTileEntity getUpdatePacket()
{
super.getUpdatePacket();
return new SPacketUpdateTileEntity(this.getPos(), 0, writeToNBT(new NBTTagCompound()));
}
@Override
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet)
{
super.onDataPacket(net, packet);
this.readFromNBT(packet.getNbtCompound());
IBlockState state = this.getWorld().getBlockState(this.getPos());
this.getWorld().notifyBlockUpdate(this.getPos(), state, state, 3);
}
@Override
public NBTTagCompound getUpdateTag()
{
super.getUpdateTag();
return writeToNBT(new NBTTagCompound());
}