@Override public void detectAndSendChanges(){ super.detectAndSendChanges(); listeners.stream().filter(EntityPlayerMP.class::isInstance).map(EntityPlayerMP.class::cast).forEach(player -> { if (cookTime != tileEntity.cookTime) { player.connection.sendPacket(new SPacketWindowProperty(windowId, 0, tileEntity.cookTime)); } if (burnTime != tileEntity.burnTime) { player.connection.sendPacket(new SPacketWindowProperty(windowId, 1, tileEntity.burnTime)); } if (currentBurnTime != tileEntity.currentBurnTime) { player.connection.sendPacket(new SPacketWindowProperty(windowId, 2, tileEntity.currentBurnTime)); } if (totalCookTime != tileEntity.totalCookTime) { player.connection.sendPacket(new SPacketWindowProperty(windowId, 3, tileEntity.totalCookTime)); } }); cookTime = tileEntity.cookTime; burnTime = tileEntity.burnTime; currentBurnTime = tileEntity.currentBurnTime; totalCookTime = tileEntity.totalCookTime; } @Override @SideOnly(Side.CLIENT) public void updateProgressBar(int id, int data){ switch (id){ case 0: tileEntity.cookTime = data; break; case 1: tileEntity.burnTime = data; break; case 2: tileEntity.currentBurnTime = data; break; case 3: tileEntity.totalCookTime = data; break; } }