- 1,976
- 68
- 220
Доброго всем!
В общем, есть такой код (кину на всякий случай весь, мало-ли что):
По идее, он должен устанавливать hasCoals на true... И он это делает. Но есть один минус - если попытаться вывести в консоль (в updateEntity) - будет чередовать "false, true, false, true..."
Подскажите, пожалуйста, в чём может быть ошибка?
В общем, есть такой код (кину на всякий случай весь, мало-ли что):
Код:
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
int damage = stack.getItemDamage();
TileEntity tile = world.getTileEntity(x, y, z);
if (tile != null && tile instanceof ArcaneChaliceTileEntity) {
ArcaneChaliceTileEntity chalice = (ArcaneChaliceTileEntity) tile;
switch (damage) {
case 0: hasCoals = true; chalice.setType(EnumCoalType.SOLAR); break;
case 1: hasCoals = true; chalice.setType(EnumCoalType.LUNAR); break;
case 2: hasCoals = true; chalice.setType(EnumCoalType.BLAZE); break;
case 3: hasCoals = true; chalice.setType(EnumCoalType.ENDER); break;
}
}
}
return true;
}
Код:
public class ArcaneChaliceTileEntity extends TileEntity {
public boolean hasCoals;
public EnumCoalType type;
public void setType(EnumCoalType ct) {
hasCoals = true;
type = ct;
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
nbt.setBoolean("Coals", hasCoals);
if (hasCoals) nbt.setString("Type", EnumCoalType.toString(type));
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
hasCoals = nbt.getBoolean("Coals");
if (hasCoals) type = EnumCoalType.fromString(nbt.getString("Type"));
}
}
Подскажите, пожалуйста, в чём может быть ошибка?