Не работает сохранение в NBT

Не работает сохранение в NBT, сейчас объясню все подробнее.
Есть блок, у него tileentity. В tileentity строка с именем блока.
При активации блока открывается GUI с полем для ввода, я ввожу имя блока, оно должно сохраняться.

GUI:
Код:
private TileEntityBlock entityBlock;
...
public GuiBlock (InventoryPlayer inventoryPlayer, TileEntityBlock tileEntity) {
            super(new ContainerTiny(inventoryPlayer, tileEntity));
            this.entityBlock = tileEntity;
    }
Вот получил экземпляр tileentity
Теперь далее ввожу строку
Код:
public void keyTyped(char c, int i){
        if (textfield.textboxKeyTyped(c, i)) {
            entityBlock.name = textfield.getText();
        }
        else
        {
            super.keyTyped(c, i);
        }
    }
Ну а дальше рендер. Дело в том, что все работает, у каждого блока свое имя, но не сохраняется ничего.

В TileEntityBlock:
Код:
public String name = "";
....
@Override
    public void writeToNBT(NBTTagCompound nbt) {
            super.writeToNBT(nbt);
                            
            nbt.setString("name", name);
    }
    
    @Override
    public void readFromNBT(NBTTagCompound nbt) {
            super.readFromNBT(nbt);
            
            name = nbt.getString("name");
    }

Почему не работает?
 
Может потому что когда он сохранят переменная name равна null?
 
А может ты тайл не инициализировал?. Попробуй такое в головном классе записать:

Код:
GameRegistry.registerTileEntity(TileEntityMy.class, "tile_name");
 
Может быть пакет нужно отправлять?
В табличке, например, есть вот такое:
Код:
public Packet getDescriptionPacket(){
    String[] astring = new String[4];
    System.arraycopy(this.signText, 0, astring, 0, 4);
    return new S33PacketUpdateSign(this.xCoord, this.yCoord, this.zCoord, astring);
}
 
Majestic написал(а):
Может быть пакет нужно отправлять?
В табличке, например, есть вот такое:
Код:
public Packet getDescriptionPacket(){
    String[] astring = new String[4];
    System.arraycopy(this.signText, 0, astring, 0, 4);
    return new S33PacketUpdateSign(this.xCoord, this.yCoord, this.zCoord, astring);
}
Допустим, но какой пакет отправлять? И зачем?
[merge_posts_bbcode]Добавлено: 16.06.2014 19:53:05[/merge_posts_bbcode]

Taro написал(а):
А может ты тайл не инициализировал?. Попробуй такое в головном классе записать:

Код:
GameRegistry.registerTileEntity(TileEntityMy.class, "tile_name");
Проинициализировал.
 
Ну ты же на клиенте меняешь строку, да?
Надо же ее как-то серверу отправить.
 
googleman написал(а):
Допустим, но какой пакет отправлять? И зачем?

GUI работает на стороне клиента, NBT, разумеется сохраняется на стороне сервера. Нужно отправлять от клиента на сервер.
 
Majestic написал(а):
Ну ты же на клиенте меняешь строку, да?
Надо же ее как-то серверу отправить.
Какому еще серверу? Я на клиенте все выполняю. Если статичное внутри класса что-то менять, то сохраняется.
[merge_posts_bbcode]Добавлено: 16.06.2014 20:14:34[/merge_posts_bbcode]

Допустим, вот туториал форджевкий по NBT:
http://www.minecraftforge.net/wiki/How_to_use_NBT_Tag_Compound
Тут нет никаких пакетов.
 
И тут ты такой втыкаешь System.out.println и видишь, что значения только клиентские.
 
Назад
Сверху