public class TileManaSomething extends TileEntity {
private int manaValue; // Условная мана
@Override
public void updateEntity() { // Метод обновления, вызывается каждый тик
if (!world.isRemote) {
// Тригеррит обновление блока в мире, заставляя отослать Description packet который в данном примере содержит нбт-данные тайла
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
}
@Override
public void writeToNBT(NBTTagCompound tag) {
super.writeToNBT(tag); // Не забываем вызвать метод записи из TileEntity, т.к. там пишутся важные данные
tag.setInteger("mana", manaValue); // Записываем нашу ману
}
@Override
public void readFromNBT(NBTTagCompound tag) {
super.readFromNBT(tag); // Здесь тоже не забываем вызвать метод из TileEntity, на этот раз чтения
manaValue = tag.getInteger("mana"); // Получаем нашу ману
}
@Override
public Packet getDescriptionPacket() { // Возвращает наш Description Packet, в который мы пишем нбт-данные тайла
NBTTagCompound tag = new NBTTagCompound();
writeToNBT(tag);
return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, getBlockMetadata(), tag);
}
@Override
public void onDataPacket(NetworkManager networkManager, S35PacketUpdateTileEntity packet) {
readFromNBT(packet.func_148857_g()); // Читаем данные которые пришли
}
}