diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index d9a17469d..3440ea517 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -154,12 +154,7 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } @Deprecated public void processGauge(int val, int id) { } - - @Deprecated public void networkPack(NBTTagCompound nbt, int range) { - nbt.setBoolean("muffled", muffled); - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - + @Deprecated public void networkUnpack(NBTTagCompound nbt) { this.muffled = nbt.getBoolean("muffled"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 12cc135b4..a1f55015b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -6,6 +6,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; @@ -44,13 +45,8 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen this.subscribeToAllAround(tanks[0].getTankType(), this); this.sendFluidToAll(tanks[1], this); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - tanks[0].writeToNBT(data, "water"); - tanks[1].writeToNBT(data, "heavyWater"); - this.networkPack(data, 50); + this.networkPackNT(50); } } @@ -68,6 +64,22 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen tanks[1].readFromNBT(data, "heavyWater"); } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + } + public boolean hasPower() { return power >= this.getMaxPower() / 20; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index db4d16a27..3934be49c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -13,6 +13,7 @@ import com.hbm.util.RTGUtil; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -72,24 +73,28 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU MachineDiFurnaceRTG.updateBlockState(isProcessing() || (canProcess() && hasPower()), getWorldObj(), xCoord, yCoord, zCoord); - NBTTagCompound data = new NBTTagCompound(); - data.setShort("progress", progress); - data.setShort("speed", processSpeed); - data.setByteArray("modes", new byte[] {(byte) sideUpper, (byte) sideLower}); - networkPack(data, 10); + networkPackNT(10); } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - progress = nbt.getShort("progress"); - processSpeed = nbt.getShort("speed"); - byte[] modes = nbt.getByteArray("modes"); - this.sideUpper = modes[0]; - this.sideLower = modes[1]; + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(progress); + buf.writeShort(processSpeed); + buf.writeBytes(new byte[] {sideUpper, sideLower}); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + progress = buf.readShort(); + processSpeed = buf.readShort(); + byte[] bytes = new byte[2]; + buf.readBytes(bytes); + this.sideUpper = bytes[0]; + this.sideLower = bytes[1]; + } + private void processItem() { if(canProcess()) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index 18cf9f14a..8ab35d24b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -39,6 +39,7 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -208,24 +209,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progressFluid", this.progressFluid); - data.setInteger("progressOre", this.progressOre); - data.setInteger("usageOre", this.usageOre); - data.setInteger("usageFluid", this.usageFluid); - data.setInteger("processFluidTime", this.getDurationFluid()); - data.setInteger("processOreTime", this.getDurationMetal()); - if(this.leftStack != null) { - data.setInteger("leftType", leftStack.material.id); - data.setInteger("leftAmount", leftStack.amount); - } - if(this.rightStack != null) { - data.setInteger("rightType", rightStack.material.id); - data.setInteger("rightAmount", rightStack.amount); - } - for(int i = 0; i < 4; i++) tanks[i].writeToNBT(data, "t" + i); - this.networkPack(data, 50); + this.networkPackNT(50); } } @@ -244,21 +228,47 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.progressFluid); + buf.writeInt(this.progressOre); + buf.writeInt(this.usageOre); + buf.writeInt(this.usageFluid); + buf.writeInt(this.getDurationFluid()); + buf.writeInt(this.getDurationMetal()); + for(int i = 0; i < 4; i++) tanks[i].serialize(buf); + buf.writeBoolean(this.leftStack != null); + buf.writeBoolean(this.rightStack != null); + if(this.leftStack != null) { + buf.writeInt(leftStack.material.id); + buf.writeInt(leftStack.amount); + } + if(this.rightStack != null) { + buf.writeInt(rightStack.material.id); + buf.writeInt(rightStack.amount); + } + } - this.power = nbt.getLong("power"); - this.progressFluid = nbt.getInteger("progressFluid"); - this.progressOre = nbt.getInteger("progressOre"); - this.usageOre = nbt.getInteger("usageOre"); - this.usageFluid = nbt.getInteger("usageFluid"); - this.processFluidTime = nbt.getInteger("processFluidTime"); - this.processOreTime = nbt.getInteger("processOreTime"); - if(nbt.hasKey("leftType")) this.leftStack = new MaterialStack(Mats.matById.get(nbt.getInteger("leftType")), nbt.getInteger("leftAmount")); - else this.leftStack = null; - if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount")); - else this.rightStack = null; - for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i); + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progressFluid = buf.readInt(); + this.progressOre = buf.readInt(); + this.usageOre = buf.readInt(); + this.usageFluid = buf.readInt(); + this.processFluidTime = buf.readInt(); + this.processOreTime = buf.readInt(); + for(int i = 0; i < 4; i++) tanks[i].deserialize(buf); + boolean left = buf.readBoolean(); + boolean right = buf.readBoolean(); + if(left) { + this.leftStack = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()); + } + if(right) { + this.rightStack = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()); + } } public boolean canProcessFluid() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index c85bb845d..42d67d723 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -17,6 +17,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -115,14 +116,8 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI } else { this.progress = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("maxBurnTime", this.maxBurnTime); - data.setInteger("burnTime", this.burnTime); - data.setInteger("progress", this.progress); - data.setInteger("processingTime", this.processingTime); - data.setBoolean("wasOn", this.wasOn); - this.networkPack(data, 50); + + this.networkPackNT(50); } else { if(this.progress > 0) { @@ -141,16 +136,25 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.burnTime = nbt.getInteger("burnTime"); - this.progress = nbt.getInteger("progress"); - this.processingTime = nbt.getInteger("processingTime"); - this.wasOn = nbt.getBoolean("wasOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.maxBurnTime); + buf.writeInt(this.burnTime); + buf.writeInt(this.progress); + buf.writeInt(this.processingTime); + buf.writeBoolean(this.wasOn); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.maxBurnTime = buf.readInt(); + this.burnTime = buf.readInt(); + this.progress = buf.readInt(); + this.processingTime = buf.readInt(); + this.wasOn = buf.readBoolean(); + } + public boolean canSmelt() { if(this.burnTime <= 0) return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java index 4d6d7cbab..c67275db0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java @@ -8,11 +8,13 @@ import com.hbm.inventory.container.ContainerFurnaceSteel; import com.hbm.inventory.gui.GUIFurnaceSteel; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -96,13 +98,9 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU } } - - NBTTagCompound data = new NBTTagCompound(); - data.setIntArray("progress", progress); - data.setIntArray("bonus", bonus); - data.setInteger("heat", heat); - data.setBoolean("wasOn", wasOn); - this.networkPack(data, 50); + + this.networkPackNT(50); + } else { if(this.wasOn) { @@ -122,13 +120,21 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.progress = nbt.getIntArray("progress"); - this.bonus = nbt.getIntArray("bonus"); - this.heat = nbt.getInteger("heat"); - this.wasOn = nbt.getBoolean("wasOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + BufferUtil.writeIntArray(buf, this.progress); + BufferUtil.writeIntArray(buf, this.bonus); + buf.writeInt(this.heat); + buf.writeBoolean(this.wasOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.progress = BufferUtil.readIntArray(buf); + this.bonus = BufferUtil.readIntArray(buf); + this.heat = buf.readInt(); + this.wasOn = buf.readBoolean(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 167f550c8..d091830b4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -25,6 +25,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.gui.GuiScreen; @@ -170,7 +171,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyRe data.setInteger("stat_x", stat_x); data.setInteger("stat_y", stat_y); data.setInteger("stat_z", stat_z); - this.networkPack(data, 50); + this.networkPackNT(50); } } @@ -212,22 +213,45 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyRe this.setStats(this.state, p.momentum, true); } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.isOn); + buf.writeLong(this.power); + buf.writeBoolean(this.analysisOnly); + buf.writeInt(this.ioMode); + buf.writeByte((byte) this.state.ordinal()); + + buf.writeBoolean(this.stat_success); + buf.writeByte((byte) this.stat_state.ordinal()); + buf.writeInt(this.stat_charge); + buf.writeInt(this.stat_x); + buf.writeInt(this.stat_y); + buf.writeInt(this.stat_z); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.isOn = buf.readBoolean(); + this.power = buf.readLong(); + this.analysisOnly = buf.readBoolean(); + this.ioMode = buf.readInt(); + this.state = EnumHadronState.values()[buf.readByte()]; + + this.stat_success = buf.readBoolean(); + this.stat_state = EnumHadronState.values()[buf.readByte()]; + this.stat_charge = buf.readInt(); + this.stat_x = buf.readInt(); + this.stat_y = buf.readInt(); + this.stat_z = buf.readInt(); + } + @Override public void networkUnpack(NBTTagCompound data) { super.networkUnpack(data); - this.isOn = data.getBoolean("isOn"); - this.power = data.getLong("power"); - this.analysisOnly = data.getBoolean("analysis"); - this.ioMode = data.getInteger("ioMode"); - this.state = EnumHadronState.values()[data.getByte("state")]; - this.stat_success = data.getBoolean("stat_success"); - this.stat_state = EnumHadronState.values()[data.getByte("stat_state")]; - this.stat_charge = data.getInteger("stat_charge"); - this.stat_x = data.getInteger("stat_x"); - this.stat_y = data.getInteger("stat_y"); - this.stat_z = data.getInteger("stat_z"); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 9b0a0ed60..39f8678ec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -26,6 +26,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.DirPos; @@ -36,6 +37,7 @@ import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -158,27 +160,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece } } - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isOn", isOn); - data.setLong("power", power); - data.setInteger("progress", progress); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - plasma.writeToNBT(data, "t2"); - - if(slots[3] == null) { - data.setInteger("blanket", 0); - } else if(slots[3].getItem() == ModItems.fusion_shield_tungsten) { - data.setInteger("blanket", 1); - } else if(slots[3].getItem() == ModItems.fusion_shield_desh) { - data.setInteger("blanket", 2); - } else if(slots[3].getItem() == ModItems.fusion_shield_chlorophyte) { - data.setInteger("blanket", 3); - } else if(slots[3].getItem() == ModItems.fusion_shield_vaporwave) { - data.setInteger("blanket", 4); - } - - this.networkPack(data, 250); + this.networkPackNT(250); /// END Notif packets /// } else { @@ -378,16 +360,37 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece } @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.isOn = data.getBoolean("isOn"); - this.power = data.getLong("power"); - this.blanket = data.getInteger("blanket"); - this.progress = data.getInteger("progress"); // - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); - plasma.readFromNBT(data, "t2"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.isOn); + buf.writeLong(this.power); + buf.writeInt(this.progress); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + plasma.serialize(buf); + if(slots[3] == null) { + buf.writeInt(0); + } else if(slots[3].getItem() == ModItems.fusion_shield_tungsten) { + buf.writeInt(1); + } else if(slots[3].getItem() == ModItems.fusion_shield_desh) { + buf.writeInt(2); + } else if(slots[3].getItem() == ModItems.fusion_shield_chlorophyte) { + buf.writeInt(3); + } else if(slots[3].getItem() == ModItems.fusion_shield_vaporwave) { + buf.writeInt(4); + } + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.isOn = buf.readBoolean(); + this.power = buf.readLong(); + this.progress = buf.readInt(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + plasma.deserialize(buf); + this.blanket = buf.readInt(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index 78292b220..da52bb30f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -23,6 +23,7 @@ import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -111,13 +112,8 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin if(power > maxPower) power = maxPower; - - data.setInteger("playersUsing", playersUsing); - data.setInteger("setting", setting); - data.setBoolean("isOn", isOn); - data.setBoolean("wasOn", wasOn); - tank.writeToNBT(data, "tank"); - this.networkPack(data, 50); + + this.networkPackNT(50); } else { this.prevDoorAngle = this.doorAngle; @@ -200,14 +196,23 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.playersUsing = nbt.getInteger("playersUsing"); - this.setting = nbt.getInteger("setting"); - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); - this.wasOn = nbt.getBoolean("wasOn"); - this.tank.readFromNBT(nbt, "tank"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.playersUsing); + buf.writeInt(this.setting); + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.wasOn); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.playersUsing = buf.readInt(); + this.setting = buf.readInt(); + this.isOn = buf.readBoolean(); + this.wasOn = buf.readBoolean(); + tank.deserialize(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java index c3e94a705..a62846ea1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -27,6 +27,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -119,16 +120,8 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement for(DirPos pos : getConPos()) { this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("progress", progress); - data.setInteger("processTime", processTime); - data.setInteger("powerRequirement", powerRequirement); - data.setLong("power", power); - tanks[0].writeToNBT(data, "0"); - tanks[1].writeToNBT(data, "1"); - data.setBoolean("isOn", isOn); - this.networkPack(data, 100); + + this.networkPackNT(100); } else { @@ -163,17 +156,29 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement } private float randSpeed = 0.1F; - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.progress = nbt.getInteger("progress"); - this.processTime = nbt.getInteger("processTime"); - this.powerRequirement = nbt.getInteger("powerRequirement"); - this.power = nbt.getLong("power"); - tanks[0].readFromNBT(nbt, "0"); - tanks[1].readFromNBT(nbt, "1"); - this.isOn = nbt.getBoolean("isOn"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.progress); + buf.writeInt(this.processTime); + buf.writeInt(this.powerRequirement); + buf.writeLong(this.power); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + buf.writeBoolean(this.isOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.progress = buf.readInt(); + this.processTime = buf.readInt(); + this.powerRequirement = buf.readInt(); + this.power = buf.readLong(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + this.isOn = buf.readBoolean(); } private void updateConnections() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index d36cb4336..3b0ea20a6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -28,6 +28,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -151,22 +152,26 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen generate(); - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("power", (int) power); - data.setInteger("powerCap", (int) powerCap); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + this.networkPackNT(50); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - power = data.getInteger("power"); - powerCap = data.getInteger("powerCap"); - tank.readFromNBT(data, "t"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt((int) power); + buf.writeInt((int) powerCap); + tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readInt(); + this.powerCap = buf.readInt(); + tank.deserialize(buf); + } + public boolean hasAcceptableFuel() { return getHEFromFuel() > 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index 081aab10a..6ed33d35c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -13,6 +13,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; @@ -20,6 +21,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -117,16 +119,7 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("press", press); - if(slots[2] != null) { - NBTTagCompound stack = new NBTTagCompound(); - slots[2].writeToNBT(stack); - data.setTag("stack", stack); - } - - this.networkPack(data, 50); + this.networkPackNT(50); } else { @@ -141,21 +134,27 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.syncPress = nbt.getInteger("press"); - - if(nbt.hasKey("stack")) { - NBTTagCompound stack = nbt.getCompoundTag("stack"); - this.syncStack = ItemStack.loadItemStackFromNBT(stack); - } else { - this.syncStack = null; - } - + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(press); + if (slots[2] == null) + buf.writeShort(-1); // indicate that the NBT doesn't actually exist to avoid null pointer errors. + else + BufferUtil.writeNBT(buf, slots[2].stackTagCompound); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.syncPress = buf.readInt(); + + NBTTagCompound stack = BufferUtil.readNBT(buf); + this.syncStack = ItemStack.loadItemStackFromNBT(stack); + this.turnProgress = 2; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index ba32528da..ce494df35 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -29,6 +29,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -102,6 +103,8 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return "container.machineLargeTurbine"; } + private boolean operational; + @Override public void updateEntity() { @@ -117,9 +120,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); power = Library.chargeItemsFromTE(slots, 4, power, maxPower); - - boolean operational = false; - + FluidType in = tanks[0].getTankType(); boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { @@ -145,13 +146,9 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme if(power > maxPower) power = maxPower; tanks[1].unloadTank(5, 6, slots); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setBoolean("operational", operational); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - this.networkPack(data, 50); + + this.networkPackNT(50); + } else { this.lastRotor = this.rotor; this.rotor += this.fanAcceleration; @@ -199,14 +196,23 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme new DirPos(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2, dir) }; } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.shouldTurn = data.getBoolean("operational"); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeBoolean(operational); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.shouldTurn = buf.readBoolean(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); } public long getPowerScaled(int i) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index e5ad38a1b..2747502cb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -31,6 +31,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; @@ -83,6 +84,8 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen return "container.miningLaser"; } + private double clientBreakProgress; + @Override public void updateEntity() { @@ -108,8 +111,6 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen lastTargetY = targetY; lastTargetZ = targetZ; - double clientBreakProgress = 0; - if(isOn) { UpgradeManager.eval(slots, 1, 8); @@ -167,43 +168,45 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen this.tryFillContainer(xCoord, yCoord, zCoord + 2); this.tryFillContainer(xCoord, yCoord, zCoord - 2); - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("lastX", lastTargetX); - data.setInteger("lastY", lastTargetY); - data.setInteger("lastZ", lastTargetZ); - data.setInteger("x", targetX); - data.setInteger("y", targetY); - data.setInteger("z", targetZ); - data.setBoolean("beam", beam); - data.setBoolean("isOn", isOn); - data.setDouble("progress", clientBreakProgress); - tank.writeToNBT(data, "t"); - - this.networkPack(data, 250); + this.networkPackNT(250); } } private void updateConnections() { this.trySubscribe(worldObj, xCoord, yCoord + 2, zCoord, ForgeDirection.UP); } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - this.power = data.getLong("power"); - this.lastTargetX = data.getInteger("lastX"); - this.lastTargetY = data.getInteger("lastY"); - this.lastTargetZ = data.getInteger("lastZ"); - this.targetX = data.getInteger("x"); - this.targetY = data.getInteger("y"); - this.targetZ = data.getInteger("z"); - this.beam = data.getBoolean("beam"); - this.isOn = data.getBoolean("isOn"); - this.breakProgress = data.getDouble("progress"); - tank.readFromNBT(data, "t"); + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(this.power); + buf.writeInt(this.lastTargetX); + buf.writeInt(this.lastTargetY); + buf.writeInt(this.lastTargetZ); + buf.writeInt(this.targetX); + buf.writeInt(this.targetY); + buf.writeInt(this.targetZ); + buf.writeBoolean(this.beam); + buf.writeBoolean(this.isOn); + buf.writeDouble(this.clientBreakProgress); + tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.lastTargetX = buf.readInt(); + this.lastTargetY = buf.readInt(); + this.lastTargetZ = buf.readInt(); + this.targetX = buf.readInt(); + this.targetY = buf.readInt(); + this.targetZ = buf.readInt(); + this.beam = buf.readBoolean(); + this.isOn = buf.readBoolean(); + this.breakProgress = buf.readDouble(); + tank.deserialize(buf); + } + private void buildDam() { if(worldObj.getBlock(targetX + 1, targetY, targetZ).getMaterial().isLiquid()) worldObj.setBlock(targetX + 1, targetY, targetZ, ModBlocks.barricade); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index 8224d6f41..0d8621759 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -19,6 +19,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -122,13 +123,7 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme /// END Loading plasma into the ITER /// /// START Notif packets /// - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - plasma.writeToNBT(data, "t2"); - this.networkPack(data, 50); + this.networkPackNT(50); /// END Notif packets /// } } @@ -148,14 +143,23 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme } } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - tanks[0].readFromNBT(nbt, "t0"); - tanks[1].readFromNBT(nbt, "t1"); - plasma.readFromNBT(nbt, "t2"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + plasma.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + plasma.deserialize(buf); } private void updateType() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index 58a31e5bd..655ce48be 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -8,8 +8,10 @@ import com.hbm.items.machine.ItemStamp; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -133,17 +135,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU this.markChanged(); } - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("speed", speed); - data.setInteger("burnTime", burnTime); - data.setInteger("press", press); - if(slots[2] != null) { - NBTTagCompound stack = new NBTTagCompound(); - slots[2].writeToNBT(stack); - data.setTag("stack", stack); - } - - this.networkPack(data, 50); + this.networkPackNT(50); } else { @@ -158,6 +150,30 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU } } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.speed); + buf.writeInt(this.burnTime); + buf.writeInt(this.press); + if (slots[2] == null) + buf.writeShort(-1); // indicate that the NBT doesn't actually exist to avoid null pointer errors. + else + BufferUtil.writeNBT(buf, slots[2].stackTagCompound); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.speed = buf.readInt(); + this.burnTime = buf.readInt(); + this.press = buf.readInt(); + NBTTagCompound stack = BufferUtil.readNBT(buf); + this.syncStack = ItemStack.loadItemStackFromNBT(stack); + + this.turnProgress = 2; + } @Override public void networkUnpack(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index 825937515..a4d1bcbec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -11,6 +11,7 @@ import com.hbm.items.special.ItemWasteLong; import com.hbm.items.special.ItemWasteShort; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.Tuple.Triplet; @@ -18,6 +19,7 @@ import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -111,26 +113,29 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IE if(this.power > maxPower) this.power = maxPower; - - NBTTagCompound data = new NBTTagCompound(); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setIntArray("production", this.production); - data.setLong("power", this.power); - data.setBoolean("isOn", this.isOn); - this.networkPack(data, 50); + + this.networkPackNT(50); } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.progress = nbt.getIntArray("progress"); - this.maxProgress = nbt.getIntArray("maxProgress"); - this.production = nbt.getIntArray("production"); - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + BufferUtil.writeIntArray(buf, this.progress); + BufferUtil.writeIntArray(buf, this.maxProgress); + BufferUtil.writeIntArray(buf, this.production); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.progress = BufferUtil.readIntArray(buf); + this.maxProgress = BufferUtil.readIntArray(buf); + this.production = BufferUtil.readIntArray(buf); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index c468441a0..107d37ba1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -23,6 +23,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -98,16 +99,6 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement tanks[2].writeToNBT(nbt, "output2"); } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.heat = data.getInteger("heat"); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); - tanks[2].readFromNBT(data, "t2"); - } - @Override public void updateEntity() { @@ -139,16 +130,30 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("heat", heat); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - tanks[2].writeToNBT(data, "t2"); - this.networkPack(data, 50); + + this.networkPackNT(50); } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.heat); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + tanks[2].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.heat = buf.readInt(); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + tanks[2].serialize(buf); + } protected DirPos[] getConPos() { return new DirPos[] { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index ceb1bef2c..b0f71f6c1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -15,6 +15,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -66,19 +67,23 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl } else { progress = 0.0F; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("flux", flux); - data.setFloat("progress", progress); - this.networkPack(data, 20); + + this.networkPackNT(20); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - flux = data.getInteger("flux"); - progress = data.getFloat("progress"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(flux); + buf.writeFloat(progress); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.flux = buf.readInt(); + this.progress = buf.readFloat(); } public void getInteractions() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index 7f9241d46..7e7784c6d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -16,6 +16,7 @@ import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -167,11 +168,8 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } else { process = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", process); - this.networkPack(data, 50); + + this.networkPackNT(50); } else { @@ -193,6 +191,20 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.process); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.process = buf.readInt(); + } @Override public AudioWrapper createAudioLoop() { @@ -224,14 +236,6 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB audio = null; } } - - @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.process = data.getInteger("progress"); - } @Override public void setPower(long i) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java index 3ccf6ef70..0b2fb6dc7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java @@ -27,6 +27,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -69,6 +70,8 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp } } + private SolderingRecipe recipe; + @Override public void updateEntity() { @@ -84,7 +87,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp } } - SolderingRecipe recipe = SolderingRecipes.getRecipe(new ItemStack[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5]}); + recipe = SolderingRecipes.getRecipe(new ItemStack[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5]}); long intendedMaxPower; UpgradeManager.eval(slots, 9, 10); @@ -133,19 +136,8 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp } this.maxPower = Math.max(intendedMaxPower, power); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setLong("maxPower", maxPower); - data.setLong("consumption", consumption); - data.setInteger("progress", progress); - data.setInteger("processTime", processTime); - if(recipe != null) { - data.setInteger("display", Item.getIdFromItem(recipe.output.getItem())); - data.setInteger("displayMeta", recipe.output.getItemDamage()); - } - this.tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + + this.networkPackNT(25); } } @@ -240,22 +232,38 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.maxPower = nbt.getLong("maxPower"); - this.consumption = nbt.getLong("consumption"); - this.progress = nbt.getInteger("progress"); - this.processTime = nbt.getInteger("processTime"); - - if(nbt.hasKey("display")) { - this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta")); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeLong(this.maxPower); + buf.writeLong(this.consumption); + buf.writeInt(this.progress); + buf.writeInt(this.processTime); + buf.writeBoolean(recipe != null); + if(recipe != null) { + buf.writeInt(Item.getIdFromItem(recipe.output.getItem())); + buf.writeInt(recipe.output.getItemDamage()); + } + this.tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.maxPower = buf.readLong(); + this.consumption = buf.readLong(); + this.progress = buf.readInt(); + this.processTime = buf.readInt(); + + if(buf.readBoolean()) { + int id = buf.readInt(); + this.display = new ItemStack(Item.getItemById(id), 1, buf.readInt()); } else { this.display = null; } - - this.tank.readFromNBT(nbt, "t"); + + this.tank.deserialize(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index f7e3349f5..7c19022ab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -28,6 +28,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -85,7 +86,9 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement tanks[2] = new FluidTank(Fluids.WATER, 16000); tanks[3] = new FluidTank(Fluids.HOTSTEAM, 160000); } - + + private long powerBeforeNet; + @Override public void updateEntity() { @@ -131,10 +134,9 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", Math.min(this.power, this.maxPower)); //set first to get an unmodified view of how much power was generated before deductions from the net - + + powerBeforeNet = Math.min(this.power, maxPower); + //do net/battery deductions first... power = Library.chargeItemsFromTE(slots, 0, power, maxPower); this.tryProvide(worldObj, xCoord - dir.offsetZ * 5, yCoord + 1, zCoord + dir.offsetX * 5, rot); //sends out power @@ -152,26 +154,8 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -4, dir); //steam this.sendFluid(tanks[3], worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); - - data.setInteger("rpm", this.rpm); - data.setInteger("temp", this.temp); - data.setInteger("state", this.state); - data.setBoolean("automode", this.autoMode); - data.setInteger("throttle", this.throttle); - data.setInteger("slidpos", this.powerSliderPos); - - if(state != 1) { - data.setInteger("counter", this.counter); //sent during startup and shutdown - } else { - data.setInteger("instantPow", this.instantPowerOutput); //sent while running - } - - tanks[0].writeToNBT(data, "fuel"); - tanks[1].writeToNBT(data, "lube"); - tanks[2].writeToNBT(data, "water"); - tanks[3].writeToNBT(data, "steam"); - this.networkPack(data, 150); + this.networkPackNT(150); } else { //client side, for sounds n shit @@ -200,6 +184,51 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.powerBeforeNet); + buf.writeInt(this.rpm); + buf.writeInt(this.temp); + buf.writeInt(this.state); + buf.writeBoolean(this.autoMode); + buf.writeInt(this.throttle); + buf.writeInt(this.powerSliderPos); + + if(state != 1) { + buf.writeInt(this.counter); //sent during startup and shutdown + } else { + buf.writeInt(this.instantPowerOutput); //sent while running + } + + tanks[0].serialize(buf); + tanks[1].serialize(buf); + tanks[2].serialize(buf); + tanks[3].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.rpm = buf.readInt(); + this.temp = buf.readInt(); + this.state = buf.readInt(); + this.autoMode = buf.readBoolean(); + this.powerSliderPos = buf.readInt(); + this.throttle = buf.readInt(); + + if(state != 1) + this.counter = buf.readInt(); + else + this.instantPowerOutput = buf.readInt(); //state 1 + + this.tanks[0].deserialize(buf); + this.tanks[1].deserialize(buf); + this.tanks[2].deserialize(buf); + this.tanks[3].deserialize(buf); + } private void stopIfNotReady() { @@ -378,30 +407,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.rpm = nbt.getInteger("rpm"); - this.temp = nbt.getInteger("temp"); - this.state = nbt.getInteger("state"); - this.autoMode = nbt.getBoolean("automode"); - this.powerSliderPos = nbt.getInteger("slidpos"); - this.throttle = nbt.getInteger("throttle"); - - if(nbt.hasKey("counter")) - this.counter = nbt.getInteger("counter"); //state 0 and -1 - else - this.instantPowerOutput = nbt.getInteger("instantPow"); //state 1 - - this.tanks[0].readFromNBT(nbt, "fuel"); - this.tanks[1].readFromNBT(nbt, "lube"); - this.tanks[2].readFromNBT(nbt, "water"); - this.tanks[3].readFromNBT(nbt, "steam"); - } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index d0e1306bc..b6cc7780d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -34,6 +34,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -284,15 +285,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem if(this.power > this.maxPower) { this.power = this.maxPower; } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setByte("after", (byte) afterburner); - data.setBoolean("wasOn", wasOn); - data.setBoolean("showBlood", showBlood); - tank.writeToNBT(data, "tank"); - blood.writeToNBT(data, "blood"); - this.networkPack(data, 150); + + this.networkPackNT(150); } else { @@ -385,16 +379,27 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem } } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.afterburner = nbt.getByte("after"); - this.wasOn = nbt.getBoolean("wasOn"); - this.showBlood = nbt.getBoolean("showBlood"); - tank.readFromNBT(nbt, "tank"); - blood.readFromNBT(nbt, "blood"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeByte((byte) afterburner); + buf.writeBoolean(wasOn); + buf.writeBoolean(showBlood); + tank.serialize(buf); + blood.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.afterburner = buf.readByte(); + this.wasOn = buf.readBoolean(); + this.showBlood = buf.readBoolean(); + tank.deserialize(buf); + blood.deserialize(buf); } public AudioWrapper createAudioLoop() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index b6e4e9d55..48c671e50 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -11,6 +11,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -75,21 +76,25 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg time += speed * 2; } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("time", time); - data.setInteger("speed", speed); - networkPack(data, 50); + + networkPackNT(50); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - power = data.getLong("power"); - time = data.getInteger("time"); - speed = data.getInteger("speed"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(time); + buf.writeInt(speed); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + time = buf.readInt(); + speed = buf.readInt(); } public void handleButtonPacket(int value, int meta) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 15fe1d786..d33ff0118 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -29,6 +29,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -270,22 +271,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.coreHeat = 0; } } - - NBTTagCompound data = new NBTTagCompound(); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - data.setInteger("rodCount", rodCount); - data.setInteger("coreHeat", coreHeat); - data.setInteger("hullHeat", hullHeat); - data.setDouble("flux", flux); - data.setDouble("processTime", processTime); - data.setDouble("progress", progress); - data.setInteger("typeLoaded", typeLoaded); - data.setInteger("amountLoaded", amountLoaded); - data.setDouble("rodLevel", rodLevel); - data.setDouble("rodTarget", rodTarget); - data.setInteger("coreHeatCapacity", coreHeatCapacity); - this.networkPack(data, 150); + + this.networkPackNT(150); } else { if(amountLoaded > 0) { @@ -383,23 +370,41 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG protected int getRodCountForCoolant() { return this.rodCount + (int) Math.ceil(this.heatsinkCount / 4D); } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - tanks[0].readFromNBT(nbt, "t0"); - tanks[1].readFromNBT(nbt, "t1"); - rodCount = nbt.getInteger("rodCount"); - coreHeat = nbt.getInteger("coreHeat"); - hullHeat = nbt.getInteger("hullHeat"); - flux = nbt.getDouble("flux"); - processTime = nbt.getDouble("processTime"); - progress = nbt.getDouble("progress"); - typeLoaded = nbt.getInteger("typeLoaded"); - amountLoaded = nbt.getInteger("amountLoaded"); - rodLevel = nbt.getDouble("rodLevel"); - rodTarget = nbt.getInteger("rodTarget"); - coreHeatCapacity = nbt.getInteger("coreHeatCapacity"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.rodCount); + buf.writeInt(this.coreHeat); + buf.writeInt(this.hullHeat); + buf.writeDouble(this.flux); + buf.writeDouble(this.processTime); + buf.writeDouble(this.progress); + buf.writeInt(this.typeLoaded); + buf.writeInt(this.amountLoaded); + buf.writeDouble(this.rodLevel); + buf.writeDouble(this.rodTarget); + buf.writeInt(this.coreHeatCapacity); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.rodCount = buf.readInt(); + this.coreHeat = buf.readInt(); + this.hullHeat = buf.readInt(); + this.flux = buf.readDouble(); + this.processTime = buf.readDouble(); + this.progress = buf.readDouble(); + this.typeLoaded = buf.readInt(); + this.amountLoaded = buf.readInt(); + this.rodLevel = buf.readDouble(); + this.rodTarget = buf.readInt(); + this.coreHeatCapacity = buf.readInt(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); } protected void setupTanks() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 0a5fad22a..a8b1be570 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -13,6 +13,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -136,33 +137,37 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I reactor.setTarget(level); } } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", heat); - data.setDouble("level", level); - data.setInteger("flux", flux); - data.setBoolean("isLinked", isLinked); - data.setDouble("levelLower", levelLower); - data.setDouble("levelUpper", levelUpper); - data.setDouble("heatLower", heatLower); - data.setDouble("heatUpper", heatUpper); - data.setInteger("function", function.ordinal()); - this.networkPack(data, 150); + + this.networkPackNT(150); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.heat = data.getInteger("heat"); - this.level = data.getDouble("level"); - this.flux = data.getInteger("flux"); - isLinked = data.getBoolean("isLinked"); - levelLower = data.getDouble("levelLower"); - levelUpper = data.getDouble("levelUpper"); - heatLower = data.getDouble("heatLower"); - heatUpper = data.getDouble("heatUpper"); - function = RodFunction.values()[data.getInteger("function")]; + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(heat); + buf.writeDouble(level); + buf.writeInt(flux); + buf.writeBoolean(isLinked); + buf.writeDouble(levelLower); + buf.writeDouble(levelUpper); + buf.writeDouble(heatLower); + buf.writeDouble(heatUpper); + buf.writeByte(function.ordinal()); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.level = buf.readDouble(); + this.flux = buf.readInt(); + isLinked = buf.readBoolean(); + levelLower = buf.readDouble(); + levelUpper = buf.readDouble(); + heatLower = buf.readDouble(); + heatUpper = buf.readDouble(); + function = RodFunction.values()[buf.readByte()]; } private boolean establishLink() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index e242b5ee2..2f35685ce 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -15,12 +15,14 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPlateFuel; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -151,27 +153,31 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements float rad = (float) heat / (float) maxHeat * 50F; ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, rad); } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", heat); - data.setByte("water", water); - data.setDouble("level", level); - data.setDouble("targetLevel", targetLevel); - data.setIntArray("slotFlux", slotFlux); - data.setInteger("totalFlux", totalFlux); - this.networkPack(data, 150); + + this.networkPackNT(150); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.heat = data.getInteger("heat"); - this.water = data.getByte("water"); - this.level = data.getDouble("level"); - this.targetLevel = data.getDouble("targetLevel"); - this.slotFlux = data.getIntArray("slotFlux"); - this.totalFlux = data.getInteger("totalFlux"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.heat); + buf.writeByte(this.water); + buf.writeDouble(this.level); + buf.writeDouble(this.targetLevel); + BufferUtil.writeIntArray(buf, this.slotFlux); + buf.writeInt(this.totalFlux); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.water = buf.readByte(); + this.level = buf.readDouble(); + this.targetLevel = buf.readDouble(); + this.slotFlux = BufferUtil.readIntArray(buf); + this.totalFlux = buf.readInt(); } public byte getWater() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index d1a46f430..ec4902930 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -33,6 +33,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -128,17 +129,6 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.heat = data.getInteger("heat"); - this.pressure = data.getInteger("pressure"); - this.isOn = data.getBoolean("isOn"); - steam.readFromNBT(data, "t0"); - carbonDioxide.readFromNBT(data, "t1"); - water.readFromNBT(data, "t2"); - } - public int getGaugeScaled(int i, int type) { switch (type) { case 0: return (steam.getFill() * i) / steam.getMaxFill(); @@ -227,18 +217,33 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC } checkIfMeltdown(); - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", heat); - data.setInteger("pressure", pressure); - data.setBoolean("isOn", isOn); - steam.writeToNBT(data, "t0"); - carbonDioxide.writeToNBT(data, "t1"); - water.writeToNBT(data, "t2"); - this.networkPack(data, 150); + + this.networkPackNT(150); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.heat); + buf.writeInt(this.pressure); + buf.writeBoolean(this.isOn); + steam.serialize(buf); + carbonDioxide.serialize(buf); + water.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.pressure = buf.readInt(); + this.isOn = buf.readBoolean(); + steam.deserialize(buf); + carbonDioxide.deserialize(buf); + water.deserialize(buf); + } + private void generateSteam() { // function of SHS produced per tick diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 346d171f5..5bcf63e9b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -23,6 +23,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -94,15 +95,8 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS } else { liftOff(); } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setByte("mode", mode); - data.setBoolean("starting", starting); - data.setByte("type", this.getType()); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - networkPack(data, 250); + + networkPackNT(250); } if(worldObj.isRemote) { @@ -189,18 +183,29 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS audio = null; } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - power = data.getLong("power"); - mode = data.getByte("mode"); - starting = data.getBoolean("starting"); - rocketType = data.getByte("type"); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeByte(mode); + buf.writeBoolean(starting); + buf.writeByte(this.getType()); + tanks[0].serialize(buf); + tanks[1].serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + mode = buf.readByte(); + starting = buf.readBoolean(); + rocketType = buf.readByte(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + } + public void startCountdown() { if(canLaunch()) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index ecdb619a0..ee498d053 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -15,6 +15,7 @@ import com.hbm.util.ArmorUtil; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityCreeper; @@ -69,17 +70,7 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyRec this.targets = zap(worldObj, dx, dy, dz, range, null); } - NBTTagCompound data = new NBTTagCompound(); - data.setShort("length", (short)targets.size()); - int i = 0; - for(double[] d : this.targets) { - data.setDouble("x" + i, d[0]); - data.setDouble("y" + i, d[1]); - data.setDouble("z" + i, d[2]); - i++; - } - - this.networkPack(data, 100); + this.networkPackNT(100); } } @@ -145,19 +136,30 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyRec return ret; } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - int s = data.getShort("length"); - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort((short)targets.size()); + for(double[] d : this.targets) { + buf.writeDouble(d[0]); + buf.writeDouble(d[1]); + buf.writeDouble(d[2]); + } + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + int s = buf.readShort(); + this.targets.clear(); - + for(int i = 0; i < s; i++) this.targets.add(new double[] { - data.getDouble("x" + i), - data.getDouble("y" + i), - data.getDouble("z" + i) + buf.readDouble(), // X + buf.readDouble(), // Y + buf.readDouble() // Z }); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 9168d4387..81957e0cd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -31,6 +31,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -120,7 +121,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand /* send sync packets (order doesn't matter) */ for(TileEntityWatz segment : segments) { segment.isOn = turnedOn; - segment.sendPacket(sharedTanks); + this.networkPackNT(25); segment.heat *= 0.99; //cool 1% per tick } @@ -277,30 +278,28 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } } } - - public void sendPacket(FluidTank[] tanks) { - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", this.heat); - data.setBoolean("isOn", isOn); - data.setBoolean("lock", isLocked); - data.setDouble("flux", this.fluxLastReaction + this.fluxLastBase); - for(int i = 0; i < tanks.length; i++) { - tanks[i].writeToNBT(data, "t" + i); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.heat); + buf.writeBoolean(isOn); + buf.writeBoolean(isLocked); + buf.writeDouble(this.fluxLastReaction + this.fluxLastBase); + for (FluidTank tank : tanks) { + tank.serialize(buf); } - this.networkPack(data, 25); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.heat = nbt.getInteger("heat"); - this.isOn = nbt.getBoolean("isOn"); - this.isLocked = nbt.getBoolean("lock"); - this.fluxDisplay = nbt.getDouble("flux"); - for(int i = 0; i < tanks.length; i++) { - tanks[i].readFromNBT(nbt, "t" + i); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.isOn = buf.readBoolean(); + this.isLocked = buf.readBoolean(); + this.fluxDisplay = buf.readDouble(); + for (FluidTank tank : tanks) { + tank.deserialize(buf); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java index 3ef9daf56..a95a94b68 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -20,6 +20,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -73,13 +74,24 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - for(int i = 0; i < 4; i++) tanks[i].writeToNBT(data, "" + i); - this.networkPack(data, 150); + + this.networkPackNT(150); } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + for(int i = 0; i < 4; i++) tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + for(int i = 0; i < 4; i++) tanks[i].deserialize(buf); + } @Override public void networkUnpack(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java index cf90645d5..dcee0bbc2 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -12,6 +12,7 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.Tuple.Triplet; import com.hbm.util.fauxpointtwelve.DirPos; @@ -19,6 +20,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -107,14 +109,8 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl for(DirPos pos : getConPos()) { if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("wasOn", this.wasOn); - data.setInteger("heat", this.heat); - data.setInteger("progress", this.progress); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - this.networkPack(data, 25); + + this.networkPackNT(25); } else { if(this.wasOn) { @@ -135,6 +131,8 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl } } } + + public DirPos[] getConPos() { @@ -172,16 +170,25 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl return true; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.wasOn = nbt.getBoolean("wasOn"); - this.heat = nbt.getInteger("heat"); - this.progress = nbt.getInteger("progress"); - tanks[0].readFromNBT(nbt, "t0"); - tanks[1].readFromNBT(nbt, "t1"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.wasOn); + buf.writeInt(this.heat); + buf.writeInt(this.progress); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.wasOn = buf.readBoolean(); + this.heat = buf.readInt(); + this.progress = buf.readInt(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); } protected void tryPullHeat() { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 1bfbfe835..ed34c417a 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -30,6 +30,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -178,13 +179,8 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } power = Library.chargeItemsFromTE(slots, 0, power, maxPower); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setBoolean("isOn", isOn); - data.setBoolean("doesBurn", doesBurn); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + + this.networkPackNT(50); } else { @@ -240,15 +236,23 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) }; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); - this.doesBurn = nbt.getBoolean("doesBurn"); - tank.readFromNBT(nbt, "t"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.doesBurn); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); + this.doesBurn = buf.readBoolean(); + tank.serialize(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index a97f9574d..201d7a409 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -24,6 +24,7 @@ import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -76,14 +77,8 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen this.progress = 0; this.sendFluid(); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progress", this.progress); - data.setInteger("usage", this.usage); - data.setInteger("processTime", this.processTime); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + + this.networkPackNT(50); } } @@ -154,14 +149,23 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.usage = nbt.getInteger("usage"); - this.processTime = nbt.getInteger("processTime"); - tank.readFromNBT(nbt, "t"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.progress); + buf.writeInt(this.usage); + buf.writeInt(this.processTime); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progress = buf.readInt(); + this.usage = buf.readInt(); + this.processTime = buf.readInt(); + tank.deserialize(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index 65bf61681..29e46ab1f 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -37,6 +37,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -193,14 +194,9 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); - data.setBoolean("exploded", hasExploded); - data.setBoolean("onFire", onFire); - data.setBoolean("isOn", this.isOn); - this.networkPack(data, 150); + + this.networkPackNT(150); + } else { if(this.isOn) audioTime = 20; @@ -253,16 +249,25 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements audio = null; } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); - this.hasExploded = nbt.getBoolean("exploded"); - this.onFire = nbt.getBoolean("onFire"); - this.isOn = nbt.getBoolean("isOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + for(int i = 0; i < 5; i++) tanks[i].serialize(buf); + buf.writeBoolean(this.hasExploded); + buf.writeBoolean(this.onFire); + buf.writeBoolean(this.isOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + for(int i = 0; i < 5; i++) tanks[i].deserialize(buf); + this.hasExploded = buf.readBoolean(); + this.onFire = buf.readBoolean(); + this.isOn = buf.readBoolean(); } private void refine() { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index 5f0545326..cb8daee0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -24,6 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -75,14 +76,8 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement this.process(); else this.progress = 0; - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progress", this.progress); - data.setInteger("usage", this.usage); - data.setInteger("processTime", this.processTime); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + + this.networkPackNT(50); } } @@ -171,14 +166,23 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.usage = nbt.getInteger("usage"); - this.processTime = nbt.getInteger("processTime"); - tank.readFromNBT(nbt, "t"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.progress); + buf.writeInt(this.usage); + buf.writeInt(this.processTime); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progress = buf.readInt(); + this.usage = buf.readInt(); + this.processTime = buf.readInt(); + tank.deserialize(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 037982ffd..c40b6dae4 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -20,6 +20,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -81,12 +82,9 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setBoolean("isOn", this.isOn); - for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); - this.networkPack(data, 150); + + this.networkPackNT(150); + } else { if(this.isOn) audioTime = 20; @@ -139,14 +137,21 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem audio = null; } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); - for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + for(int i = 0; i < 5; i++) tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); + for(int i = 0; i < 5; i++) tanks[i].deserialize(buf); } private void refine() { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index 78ea7a558..4d53c8c5d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -14,6 +14,7 @@ import com.hbm.inventory.gui.GUIRBMKConsole; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; +import com.hbm.util.BufferUtil; import com.hbm.util.Compat; import com.hbm.util.EnumUtil; import com.hbm.util.I18nUtil; @@ -21,6 +22,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -77,8 +79,8 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon this.worldObj.theProfiler.endSection(); prepareScreenInfo(); } - - prepareNetworkPack(); + + this.networkPackNT(50); } } @@ -185,66 +187,65 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon screen.display = text; } } - - private void prepareNetworkPack() { - - NBTTagCompound data = new NBTTagCompound(); - - if(this.worldObj.getTotalWorldTime() % 10 == 0) { - - data.setBoolean("full", true); - - for(int i = 0; i < columns.length; i++) { - - if(this.columns[i] != null) { - data.setTag("column_" + i, this.columns[i].data); - data.setShort("type_" + i, (short)this.columns[i].type.ordinal()); - } - } - - data.setIntArray("flux", this.fluxBuffer); - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - if(screen.display != null) { - data.setString("t" + i, screen.display); - } - } - } - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - data.setByte("s" + i, (byte) screen.type.ordinal()); - } - - this.networkPack(data, 50); - } - @Override - public void networkUnpack(NBTTagCompound data) { - - if(data.getBoolean("full")) { - this.columns = new RBMKColumn[15 * 15]; - - for(int i = 0; i < columns.length; i++) { - - if(data.hasKey("type_" + i)) { - this.columns[i] = new RBMKColumn(ColumnType.values()[data.getShort("type_" + i)], (NBTTagCompound)data.getTag("column_" + i)); + public void serialize(ByteBuf buf) { + super.serialize(buf); + + if (this.worldObj.getTotalWorldTime() % 10 == 0) { + buf.writeBoolean(true); + + for (RBMKColumn column : this.columns) { + if (column == null || column.type == null) + buf.writeByte(-1); + else { + buf.writeByte((byte) column.type.ordinal()); + BufferUtil.writeNBT(buf, column.data); } } - - this.fluxBuffer = data.getIntArray("flux"); - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - screen.display = data.getString("t" + i); + + BufferUtil.writeIntArray(buf, fluxBuffer); + + for (RBMKScreen screen : this.screens) { + BufferUtil.writeString(buf, screen.display); + } + + } else { + + buf.writeBoolean(false); + + for (RBMKScreen screen : screens) { + buf.writeByte((byte) screen.type.ordinal()); } } - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - screen.type = ScreenType.values()[data.getByte("s" + i)]; + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + if (buf.readBoolean()) { // check if it should be a full packet + + for(int i = 0; i < this.columns.length; i++) { + byte ordinal = buf.readByte(); + if (ordinal == -1) + this.columns[i] = null; + else + this.columns[i] = new RBMKColumn(ColumnType.values()[ordinal], BufferUtil.readNBT(buf)); + } + + this.fluxBuffer = BufferUtil.readIntArray(buf); + + for (RBMKScreen screen : this.screens) { + screen.display = BufferUtil.readString(buf); + } + + } else { + + for (RBMKScreen screen : this.screens) { + screen.type = ScreenType.values()[buf.readByte()]; + } + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java index a634dcc79..a50aa77b8 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java @@ -8,6 +8,7 @@ import com.hbm.inventory.gui.GUICraneBoxer; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -143,17 +144,21 @@ public class TileEntityCraneBoxer extends TileEntityCraneBase implements IGUIPro worldObj.spawnEntityInWorld(moving); } } - - NBTTagCompound data = new NBTTagCompound(); - data.setByte("mode", mode); - this.networkPack(data, 15); + + this.networkPackNT(15); } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.mode = nbt.getByte("mode"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeByte(this.mode); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.mode = buf.readByte(); } @Override diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java index 26ed150ea..ddfa5db9c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java @@ -13,6 +13,7 @@ import com.hbm.util.InventoryUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -130,21 +131,23 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP } } } - - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isWhitelist", isWhitelist); - this.matcher.writeToNBT(data); - this.networkPack(data, 15); + + this.networkPackNT(15); } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.isWhitelist = nbt.getBoolean("isWhitelist"); - this.matcher.modes = new String[this.matcher.modes.length]; - this.matcher.readFromNBT(nbt); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.isWhitelist); + this.matcher.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.isWhitelist = buf.readBoolean(); + this.matcher.deserialize(buf); } public boolean matchesFilter(ItemStack stack) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java index 6568f113b..50593e9d4 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java @@ -7,8 +7,10 @@ import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -44,26 +46,28 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI if(!worldObj.isRemote) { - NBTTagCompound data = new NBTTagCompound(); - for(int i = 0; i < patterns.length; i++) { - NBTTagCompound compound = new NBTTagCompound(); - patterns[i].writeToNBT(compound); - data.setTag("pattern" + i, compound); - } - data.setIntArray("modes", this.modes); - this.networkPack(data, 15); + this.networkPackNT(15); } } - + @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - for(int i = 0; i < patterns.length; i++) { - NBTTagCompound compound = data.getCompoundTag("pattern" + i); - patterns[i].readFromNBT(compound); + public void serialize(ByteBuf buf) { + super.serialize(buf); + for (ModulePatternMatcher pattern : patterns) { + pattern.serialize(buf); } - this.modes = data.getIntArray("modes"); + + BufferUtil.writeIntArray(buf, this.modes); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + for (ModulePatternMatcher pattern : patterns) { + pattern.deserialize(buf); + } + + this.modes = BufferUtil.readIntArray(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java index 4b4e18803..e2013512c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java @@ -3,8 +3,10 @@ package com.hbm.tileentity.network; import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.Compat; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -68,24 +70,27 @@ public class TileEntityRadioTorchCounter extends TileEntityMachineBase implement this.lastCount[i] = count; } } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("polling", polling); - data.setIntArray("last", lastCount); - this.matcher.writeToNBT(data); - for(int i = 0; i < 3; i++) if(channel[i] != null) data.setString("c" + i, channel[i]); - this.networkPack(data, 15); + + this.networkPackNT(15); } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.polling = nbt.getBoolean("polling"); - this.lastCount = nbt.getIntArray("last"); - this.matcher.modes = new String[this.matcher.modes.length]; - this.matcher.readFromNBT(nbt); - for(int i = 0; i < 3; i++) this.channel[i] = nbt.getString("c" + i); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.polling); + BufferUtil.writeIntArray(buf, this.lastCount); + this.matcher.serialize(buf); + for(int i = 0; i < 3; i++) BufferUtil.writeString(buf, this.channel[i]); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.polling = buf.readBoolean(); + this.lastCount = BufferUtil.readIntArray(buf); + this.matcher.deserialize(buf); + for(int i = 0; i < 3; i++) this.channel[i] = BufferUtil.readString(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 156472346..f741d7e4f 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -19,6 +19,7 @@ import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -317,9 +318,8 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen } this.power = Library.chargeTEFromItems(slots, 10, this.power, this.getMaxPower()); - - NBTTagCompound data = this.writePacket(); - this.networkPack(data, 250); + + this.networkPackNT(250); this.didJustShoot = false; @@ -409,20 +409,17 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen } @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - data.setShort("mode", mode); - if(didJustShoot) - data.setBoolean("didJustShoot", didJustShoot); - return data; + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(this.mode); + buf.writeBoolean(this.didJustShoot); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.mode = nbt.getShort("mode"); - if(nbt.getBoolean("didJustShoot")) - this.retracting = true; + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.mode = buf.readShort(); + this.retracting = buf.readBoolean(); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 2ec8a6b26..848356340 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -34,6 +34,7 @@ import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -228,9 +229,8 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } this.power = Library.chargeTEFromItems(slots, 10, this.power, this.getMaxPower()); - - NBTTagCompound data = this.writePacket(); - this.networkPack(data, 250); + + this.networkPackNT(250); if(usesCasings() && this.casingDelay() > 0) { if(casingDelay > 0) { @@ -252,26 +252,45 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } } } - - protected NBTTagCompound writePacket() { - - NBTTagCompound data = new NBTTagCompound(); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.tPos != null); if(this.tPos != null) { - data.setDouble("tX", this.tPos.xCoord); - data.setDouble("tY", this.tPos.yCoord); - data.setDouble("tZ", this.tPos.zCoord); + buf.writeDouble(this.tPos.xCoord); + buf.writeDouble(this.tPos.yCoord); + buf.writeDouble(this.tPos.zCoord); } - data.setDouble("pitch", this.rotationPitch); - data.setDouble("yaw", this.rotationYaw); - data.setLong("power", this.power); - data.setBoolean("isOn", this.isOn); - data.setBoolean("targetPlayers", this.targetPlayers); - data.setBoolean("targetAnimals", this.targetAnimals); - data.setBoolean("targetMobs", this.targetMobs); - data.setBoolean("targetMachines", this.targetMachines); - data.setInteger("stattrak", this.stattrak); - - return data; + buf.writeDouble(this.rotationPitch); + buf.writeDouble(this.rotationYaw); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.targetPlayers); + buf.writeBoolean(this.targetAnimals); + buf.writeBoolean(this.targetMobs); + buf.writeBoolean(this.targetMachines); + buf.writeInt(this.stattrak); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + boolean hasTPos = buf.readBoolean(); + if(hasTPos) { + this.tPos.xCoord = buf.readDouble(); + this.tPos.yCoord = buf.readDouble(); + this.tPos.zCoord = buf.readDouble(); + } + this.rotationPitch = buf.readDouble(); + this.rotationYaw = buf.readDouble(); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); + this.targetPlayers = buf.readBoolean(); + this.targetAnimals = buf.readBoolean(); + this.targetMobs = buf.readBoolean(); + this.targetMachines = buf.readBoolean(); + this.stattrak = buf.readInt(); } protected void updateConnections() { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 924ec352c..19996d6af 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -22,6 +22,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -153,18 +154,17 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl } } } - + @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - tank.writeToNBT(data, "t"); - return data; + public void serialize(ByteBuf buf) { + super.serialize(buf); + tank.serialize(buf); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - tank.readFromNBT(nbt, "t"); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + tank.deserialize(buf); } @Override //TODO: clean this shit up diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 149dc136c..714ee338f 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -17,6 +17,7 @@ import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -249,9 +250,8 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem } this.power = Library.chargeTEFromItems(slots, 10, this.power, this.getMaxPower()); - - NBTTagCompound data = this.writePacket(); - this.networkPack(data, 250); + + this.networkPackNT(250); } else { @@ -267,22 +267,21 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem } @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - data.setShort("mode", this.mode); - data.setInteger("type", this.typeLoaded); - data.setInteger("ammo", this.ammo); - data.setFloat("crane", crane); - return data; + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(this.mode); + buf.writeShort(this.typeLoaded); + buf.writeInt(this.ammo); + buf.writeFloat(this.crane); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.mode = nbt.getShort("mode"); - this.typeLoaded = nbt.getShort("type"); - this.ammo = nbt.getInteger("ammo"); - this.crane = nbt.getFloat("crane"); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.mode = buf.readShort(); + this.typeLoaded = buf.readShort(); + this.ammo = buf.readInt(); + this.crane = buf.readFloat(); } public boolean hasAmmo() { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java index 91dc3e9ab..f9f4e82c5 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java @@ -19,6 +19,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -261,20 +262,21 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I } this.power -= demand; - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("shot", true); - this.networkPack(data, 250); + + this.networkPackNT(250); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - - if(nbt.hasKey("shot")) - beam = 5; - else - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(true); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.beam = buf.readBoolean() ? 5 : 0; } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index f6c95d847..2dbe1e5bc 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -15,6 +15,7 @@ import cpw.mods.fml.relauncher.SideOnly; import com.hbm.items.ModItems; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -104,20 +105,21 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { if(this.getFirstConfigLoaded() == null) { this.loaded = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("loaded", this.loaded); - this.networkPack(data, 250); + + this.networkPackNT(250); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - - if(nbt.hasKey("loaded")) - this.loaded = nbt.getInteger("loaded"); - else - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.loaded); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.loaded = buf.readInt(); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java index 09b8d22ee..aca28eb62 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java @@ -15,6 +15,7 @@ import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -229,20 +230,19 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG } @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - if(didJustShootLeft) data.setBoolean("justShotLeft", didJustShootLeft); - if(didJustShootRight) data.setBoolean("justShotRight", didJustShootRight); + public void serialize(ByteBuf buf) { + super.serialize(buf); + if(didJustShootLeft) buf.writeBoolean(didJustShootLeft); + if(didJustShootRight) buf.writeBoolean(didJustShootRight); didJustShootLeft = false; didJustShootRight = false; - return data; } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - if(nbt.getBoolean("justShotLeft")) this.retractingLeft = true; - if(nbt.getBoolean("justShotRight")) this.retractingRight = true; + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + if(buf.readBoolean()) this.retractingLeft = true; + if(buf.readBoolean()) this.retractingRight = true; } protected void updateConnections() { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java index d25acbc74..0510a86ac 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java @@ -13,6 +13,7 @@ import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -130,10 +131,8 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { this.target.attackEntityFrom(ModDamageSource.electricity, 30F + worldObj.rand.nextInt(11)); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.tauShoot", 4.0F, 0.9F + worldObj.rand.nextFloat() * 0.3F); - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("shot", true); - this.networkPack(data, 250); + + this.networkPackNT(250); Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); @@ -149,12 +148,15 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { } @Override - public void networkUnpack(NBTTagCompound nbt) { - - if(nbt.hasKey("shot")) - beam = 3; - else - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(true); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.beam = buf.readBoolean() ? 3 : 0; } @Override diff --git a/src/main/java/com/hbm/util/BufferUtil.java b/src/main/java/com/hbm/util/BufferUtil.java index 8a8c7c8ad..e81d259ec 100644 --- a/src/main/java/com/hbm/util/BufferUtil.java +++ b/src/main/java/com/hbm/util/BufferUtil.java @@ -14,7 +14,7 @@ import net.minecraft.nbt.NBTTagCompound; public class BufferUtil { private static final Charset CHARSET = StandardCharsets.UTF_8; - + // Writes a string to a byte buffer by encoding the length and raw bytes public static void writeString(ByteBuf buf, String value) { if(value == null) { @@ -22,7 +22,7 @@ public class BufferUtil { return; } - buf.writeInt(value.length()); + buf.writeInt(value.getBytes(CHARSET).length); buf.writeBytes(value.getBytes(CHARSET)); } @@ -37,6 +37,66 @@ public class BufferUtil { return new String(bytes, CHARSET); } + /** + * Writes an integer array to a buffer. + */ + public static void writeIntArray(ByteBuf buf, int[] array) { + buf.writeInt(array.length); + for (int value : array) { + buf.writeInt(value); + } + } + + /** + * Reads an integer array from a buffer. + */ + public static int[] readIntArray(ByteBuf buf) { + int length = buf.readInt(); + + int[] array = new int[length]; + + for (int i = 0; i < length; i++) { + array[i] = buf.readInt(); + } + + return array; + } + + /** + * Writes a NBTTagCompound to a buffer. + */ + public static void writeNBT(ByteBuf buf, NBTTagCompound compound) { + if(compound != null) { + byte[] nbtData = new byte[0]; + try { + nbtData = CompressedStreamTools.compress(compound); + } catch(IOException e) { + e.printStackTrace(); + } + buf.writeShort((short) nbtData.length); + buf.writeBytes(nbtData); + } else + buf.writeShort(-1); + } + + /** + * Reads a NBTTagCompound from a buffer. + */ + public static NBTTagCompound readNBT(ByteBuf buf) { + short nbtLength = buf.readShort(); + + if (nbtLength == -1) // check if no compound was even given. + return new NBTTagCompound(); + byte[] tags = new byte[nbtLength]; + buf.readBytes(tags); + try { + return CompressedStreamTools.func_152457_a(tags, new NBTSizeTracker(2097152L)); + } catch(IOException e) { + e.printStackTrace(); + } + return new NBTTagCompound(); + } + /** * Writes the ItemStack to the buffer. */ @@ -52,23 +112,12 @@ public class BufferUtil { if (item.getItem().isDamageable() || item.getItem().getShareTag()) nbtTagCompound = item.stackTagCompound; - if(nbtTagCompound != null) { - byte[] nbtData = new byte[0]; - try { - nbtData = CompressedStreamTools.compress(nbtTagCompound); - } catch(IOException e) { - e.printStackTrace(); - } - buf.writeShort((short) nbtData.length); - buf.writeBytes(nbtData); - } else { - buf.writeShort(-1); - } + writeNBT(buf, nbtTagCompound); } } /** - * Reads an ItemStack from a buffer + * Reads an ItemStack from a buffer. */ public static ItemStack readItemStack(ByteBuf buf) { ItemStack item = null; @@ -78,16 +127,7 @@ public class BufferUtil { byte quantity = buf.readByte(); short meta = buf.readShort(); item = new ItemStack(Item.getItemById(id), quantity, meta); - - short nbtLength = buf.readByte(); - - byte[] tags = new byte[nbtLength]; - buf.readBytes(tags); - try { - item.stackTagCompound = CompressedStreamTools.func_152457_a(tags, new NBTSizeTracker(2097152L)); - } catch(IOException e) { - e.printStackTrace(); - } + item.stackTagCompound = readNBT(buf); } return item; }