Raycoms Posted September 4, 2016 Posted September 4, 2016 I have a problem with the synchronization between tileEntities. I am getting my tileEntity with world.getTileEntity with the server side representation of the world and I will set the custom name of the inventory of the tile entity. ScarecrowTileEntity scarecrow = (ScarecrowTileEntity) world.getTileEntity(field.getID()); scarecrow.getInventoryField().setCustomName("Myname"); On the other side I try to retrieve this in the CustomGUI @Override public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { final BlockPos pos = new BlockPos(x,y,z); final ScarecrowTileEntity tileEntity = (ScarecrowTileEntity) world.getTileEntity(pos); return new GuiField(player.inventory, tileEntity, world, pos); } Where the name hasn't been set correctly. I tried to mark the tileEntity dirty but that didn't help. Anyone any idea? /** * The scarecrow tile entity to store extra data. */ public class ScarecrowTileEntity extends TileEntityChest { /** * NBTTag to store the type. */ private static final String TAG_TYPE = "type"; /** * Random generator. */ private final Random random = new Random(); /** * The inventory connected with the scarecrow. */ private InventoryField inventoryField; /** * The type of the scarecrow. */ private ScareCrowType type; /** * Creates an instance of the tileEntity. */ public ScarecrowTileEntity() { super(); this.inventoryField = new InventoryField(LanguageHandler.format("com.minecolonies.gui.scarecrow.user", LanguageHandler.format("com.minecolonies.gui.scarecrow.user.noone"))); } @Override public void onLoad() { super.onLoad(); World world = getWorld(); if(world != null) { Colony colony = ColonyManager.getColony(world, pos); if (colony != null && colony.getField(pos) == null) { Entity entity = EntityUtils.getEntityFromUUID(world, colony.getPermissions().getOwner()); if (entity instanceof EntityPlayer) { colony.addNewField(this, ((EntityPlayer) entity).inventory, pos, world); } } } } @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); type = ScareCrowType.values()[compound.getInteger(TAG_TYPE)]; getInventoryField().readFromNBT(compound); } @Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); compound.setInteger(TAG_TYPE, this.getType().ordinal()); getInventoryField().writeToNBT(compound); } /** * Returns the type of the scarecrow (Important for the rendering). * * @return the enum type. */ public ScareCrowType getType() { if (this.type == null) { this.type = ScareCrowType.values()[this.random.nextInt(2)]; } return this.type; } /** * Set the inventory connected with the scarecrow. * * @param inventoryField the field to set it to */ public final void setInventoryField(final InventoryField inventoryField) { this.inventoryField = inventoryField; } /** * Get the inventory connected with the scarecrow. * * @return the inventory field of this scarecrow */ public InventoryField getInventoryField() { return inventoryField; } /** * Enum describing the different textures the scarecrow has. */ public enum ScareCrowType { PUMPKINHEAD, NORMAL } } Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.