From fbefd6b4ae01d9b59e33783ccd0df45960084ca4 Mon Sep 17 00:00:00 2001 From: Justin Aquadro Date: Mon, 27 Oct 2014 00:49:04 -0400 Subject: [PATCH] Prep for more efficient networking --- .../block/tile/TileEntityCompDrawers.java | 5 ++ .../block/tile/TileEntityDrawers.java | 5 ++ .../block/tile/TileEntityDrawersBase.java | 3 + .../network/CountUpdateMessage.java | 64 +++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 src/com/jaquadro/minecraft/storagedrawers/network/CountUpdateMessage.java diff --git a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityCompDrawers.java b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityCompDrawers.java index 50d0d5d..8c35744 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityCompDrawers.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityCompDrawers.java @@ -224,6 +224,11 @@ public class TileEntityCompDrawers extends TileEntityDrawersBase implements ISto tag.setTag("Slots", slots); } + @Override + public void clientUpdateCount (int slot, int count) { + pooledCount = count; + } + @Override public void markDirty () { for (int i = 0; i < 3; i++) { diff --git a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java index bcc778b..3786064 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java @@ -179,6 +179,11 @@ public class TileEntityDrawers extends TileEntityDrawersBase implements IStorage tag.setTag("Slots", slots); } + @Override + public void clientUpdateCount (int slot, int count) { + data[slot].count = count; + } + @Override public Packet getDescriptionPacket () { NBTTagCompound tag = new NBTTagCompound(); diff --git a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersBase.java b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersBase.java index 9956051..3adec8f 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersBase.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersBase.java @@ -1,5 +1,6 @@ package com.jaquadro.minecraft.storagedrawers.block.tile; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -110,4 +111,6 @@ public abstract class TileEntityDrawersBase extends TileEntity readFromNBT(pkt.func_148857_g()); getWorldObj().func_147479_m(xCoord, yCoord, zCoord); // markBlockForRenderUpdate } + + public abstract void clientUpdateCount (int slot, int count); } \ No newline at end of file diff --git a/src/com/jaquadro/minecraft/storagedrawers/network/CountUpdateMessage.java b/src/com/jaquadro/minecraft/storagedrawers/network/CountUpdateMessage.java new file mode 100644 index 0000000..fad1830 --- /dev/null +++ b/src/com/jaquadro/minecraft/storagedrawers/network/CountUpdateMessage.java @@ -0,0 +1,64 @@ +package com.jaquadro.minecraft.storagedrawers.network; + +import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawersBase; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class CountUpdateMessage implements IMessage +{ + private int x; + private int y; + private int z; + private int slot; + private int count; + + public CountUpdateMessage () { } + + public CountUpdateMessage (int x, int y, int z, int slot, int count) { + this.x = x; + this.y = y; + this.z = z; + this.slot = slot; + this.count = count; + } + + @Override + public void fromBytes (ByteBuf buf) { + x = buf.readInt(); + y = buf.readShort(); + z = buf.readInt(); + slot = buf.readByte(); + count = buf.readInt(); + } + + @Override + public void toBytes (ByteBuf buf) { + buf.writeInt(x); + buf.writeShort(y); + buf.writeInt(z); + buf.writeByte(slot); + buf.writeInt(count); + } + + public static class Handler implements IMessageHandler + { + @Override + public IMessage onMessage (CountUpdateMessage message, MessageContext ctx) { + if (ctx.side == Side.CLIENT) { + World world = Minecraft.getMinecraft().theWorld; + TileEntity tileEntity = world.getTileEntity(message.x, message.y, message.z); + if (tileEntity instanceof TileEntityDrawersBase) { + ((TileEntityDrawersBase) tileEntity).clientUpdateCount(message.slot, message.count); + } + } + + return null; + } + } +}