Одинаковое НБТ у тайлов

Версия Minecraft
1.7.10
1,417
44
594
Добрый день. У меня есть тайл, но он наследует не TileEntity, а мою либку, которая наследует TileEntity, в либке я создаю нбт, но когда я ставлю два тайла, то они изменяют значения нбт вместе, хотя должены по одиночке(Изменяю при пкм), но значение у них общие.
Подскажите, в чем может быть косяк?
п.с. регистрирую не либку, а класс наследующий эту либку.
GameRegistry.registerTileEntity(MyClassTile.class, "MyClassTile");
Заранее спасибо!
*Если нужны отрывки кода, то скажите какие.
 
1,417
44
594
Ну вот все что юзаю
Java:
public class Repository extends Block implements ITileEntityProvider {
    TileEntityRepository tile = new TileEntityRepository();
    public Repository() {
...
    }
    @Override
    public TileEntity createNewTileEntity(World world, int metadata) {
        return new TileEntityRepository();
    }
    @Override
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
        tile.addEnergy();
        System.out.println(tile.getEnergyStored(null));
        return false;
    }
public class TileEntityRepository extends TileEnergyConteiner
Код:
public class TileEntityRepository  extends Libka {
...
}

Код:
public class Libka extends TileEntity implements IEnergyHandler{

    protected EnergyConteiner storage = new EnergyConteiner(1000,10,10);
    ...
    @Override
    public void readFromNBT(NBTTagCompound nbt) {
        super.readFromNBT(nbt);
        storage.readFromNBT(nbt);
    }

    @Override
    public void writeToNBT(NBTTagCompound nbt) {
        super.writeToNBT(nbt);
        storage.writeToNBT(nbt);
    }
    
...
    public void addEnergy() {
        storage.receiveEnergy(100, false);
    }

Код:
public class EnergyConteiner implements IEnergyStorage{
    ...
    protected int capacity;
    protected int maxReceive;
    protected int maxExtract;
    ...
    public EnergyConteiner(int c, int receive, int extract) {
        this.capacity = c;
        this.maxReceive = receive;
        this.maxExtract = extract;
    }
    public EnergyConteiner readFromNBT(NBTTagCompound nbt) {

        this.energy = nbt.getInteger("Energy");

        if (energy > capacity) {
            energy = capacity;
        }
        return this;
    }

    public NBTTagCompound writeToNBT(NBTTagCompound nbt) {

        if (energy < 0) {
            energy = 0;
        }
        nbt.setInteger("Energy", energy);
        return nbt;
    }
    
    @Override
    public int receiveEnergy(int maxReceive, boolean simulate) {

        int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive));

        if (!simulate) {
            energy += energyReceived;
        }
        return energyReceived;
    }
...   
}
 
1,417
44
594
Да, я об этом думал, пробовал, итог тот же
Код который я получал:
class Repository
Java:
public class Repository extends Block implements ITileEntityProvider {
    TileEntityRepository tile;
    ...
        @Override
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
            if(tile==null)
            tile = (TileEntityRepository) world.getTileEntity(x, y, z);
        tile.addEnergy();
        System.out.println(tile.getEnergyStored(null));
        return false;
    }
 
5,018
47
783
Бесят такие люди, которые выкладывают куски кода вырезая половину, боясь что их говнокод якобы кому то будет нужен...
 

Sainthozier

Стрелочник
623
11
369
Я думаю, тут дело не в том, что нужен будет, а в том, укажет ли потом тот человек, который "позаимствовал" код, автора)
Тут же мастера есть выдавать чужой код за свой )
 
3,005
192
592
Код:
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
TileEntityRepository tile = (TileEntityRepository) world.getTileEntity(x, y, z);
tile.addEnergy();
System.out.println(tile.getEnergyStored(null));
return true;
}
 
3,005
192
592
1,417
44
594
Та убери блин глобальную переменную, что ты творишь?
TileEntity tile = world.getTileEntity(x, y, z);
tile.tratata();
Спасибо, доперло почему так.
Код:
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
TileEntityRepository tile = (TileEntityRepository) world.getTileEntity(x, y, z);
tile.addEnergy();
System.out.println(tile.getEnergyStored(null));
return true;
}
Спасибо, понял)
Бесят такие люди, которые выкладывают куски кода вырезая половину, боясь что их говнокод якобы кому то будет нужен...
Бесят такие люди, которые читают тему и не смотрят ответы. Тут тебе кода на 1к строк, я убрал те методы, которые не юзаются при этой проблеме вообще. (Как я писал, повторяю для одаренных дважды):
Там код, который не юзается при работе с пополнением энергии. Убрал т.к. много кода, хочется убрать лишние
Основой для своей либы брал либу CofH
 
Сверху