TileEntity, после перезахода в мир, код на стороне сервер перестает выполняться

Версия Minecraft
1.7.10
676
20
315
block:
public class SpawnBlock extends BlockContainer   {

    public SpawnBlock(Material p_i45394_1_, String name, String texture) {
        super(p_i45394_1_);
        this.setBlockName(name);
        this.setCreativeTab(tabVPCore.Other);
        this.setBlockUnbreakable();
        this.setBlockTextureName(Main.MODID + ":" + texture);
        GameRegistry.registerBlock(this, name);
    }
    public TileEntity createNewTileEntity(World world, int var1) {
            return new EntitySpawnBlock();
    }
    
      
}
TileEntity:
public class EntitySpawnBlock extends TileEntity {
    public int time;

    @Override
    public void readFromNBT(NBTTagCompound tag) {
        if (tag.hasKey("time")) {
            time = tag.getInteger("time");
        } else {
            time = 0;
        }
    }

    @Override
    public void writeToNBT(NBTTagCompound tag) {
        tag.setInteger("time", time);
    }

    @Override
    public void updateEntity() {
    
        if (!worldObj.isRemote) {
            System.out.println("Не работает, после перезахода в мир")

        }
    
            
        }
    

}
 
21
1
1
Попробуй В TileEntity добавить
Java:
   public Packet getDescriptionPacket() {
      NBTTagCompound compound = new NBTTagCompound();
      this.write(compound);
      return new Packet132TileEntityData(super.xCoord, super.yCoord, super.zCoord, 0, compound);
   }

   public void onDataPacket(INetworkManager net, Packet132TileEntityData packet) {
      NBTTagCompound compound = packet.customParam1;
      this.read(compound);
   }
 
1,200
37
237
Код выше отвечает за синхронизацию NBT тайла клиента с сервером, к тому же без искуственных вызовов markDirty() он будет вызываться лишь в тех ситуациях, когда просходит отправка самого тайла (вроде только когда игрок заходит в зону видимости этого чанка). Однако, не уверен, что в этом случае NBT тоже отправляется.

Как вариант можно попробовать перенести регистрацию в FMLInitializationEvent, ну, по крайней мере, тайл должен регистрироваться после его блока.

И что имеется ввиду под "не работает на сервере"? Вот вывод из примера в консоль не выводит или что? Можно весь код?
 

jopi

Попрошайка
1,421
30
260
Пример(с 1.5.2, название метода должно быть как в 1.7.10 у тебя, super.названиеметоданбт(compound)) если вдруг не понял

Java:
public void readFromNBT(NBTTagCompound tagCompound) {
    super.readFromNBT(tagCompound);
    this.poid = tagCompound.getInteger("poid");
}

public void writeToNBT(NBTTagCompound tagCompound) {
    super.writeToNBT(tagCompound);
    tagCompound.setInteger("poid", this.PlayerOneID);
}
 
477
7
51
Попробуй как там
 
7,099
324
1,509
Сверху