From fd556d14b18c99441ecc2e2d06ad30b9c3053cff Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Thu, 13 Jun 2013 17:37:30 -0400 Subject: [PATCH] v5.5.6 Beta #16 *Updated to Forge 735. *Updated GalactiCraft API. *Updated IC2 API. *Re-added Electrolytic Separator particle effects. *Minor cleanups. *Completely redesigned packet system from the ground up. --- .../client/ClientPlayerTickHandler.java | 6 +- .../mekanism/client/GuiControlPanel.java | 5 +- .../mekanism/client/GuiElectricChest.java | 12 +- .../client/GuiMetallurgicInfuser.java | 5 +- .../mekanism/client/GuiPasswordEnter.java | 8 +- .../mekanism/client/GuiPasswordModify.java | 12 +- .../client/GuiPortableTeleporter.java | 12 +- .../mekanism/client/GuiRobitCrafting.java | 15 +- .../mekanism/client/GuiRobitInventory.java | 15 +- .../mekanism/client/GuiRobitMain.java | 27 +- .../mekanism/client/GuiRobitRepair.java | 15 +- .../mekanism/client/GuiRobitSmelting.java | 15 +- .../mekanism/client/GuiStopwatch.java | 11 +- .../mekanism/client/GuiTeleporter.java | 11 +- .../mekanism/client/GuiWeatherOrb.java | 11 +- src/minecraft/mekanism/common/BlockBasic.java | 4 +- .../mekanism/common/BlockMachine.java | 8 +- .../mekanism/common/ChargeUtils.java | 4 +- .../common/CommonPlayerTickHandler.java | 12 +- .../mekanism/common/IC2EnergyHandler.java | 40 +- .../mekanism/common/ItemBlockEnergyCube.java | 5 +- .../mekanism/common/ItemBlockMachine.java | 7 +- .../mekanism/common/ItemConfigurator.java | 7 +- src/minecraft/mekanism/common/Mekanism.java | 44 +- .../mekanism/common/MekanismUtils.java | 13 +- .../mekanism/common/PacketHandler.java | 912 ++---------------- .../mekanism/common/TileEntityBasicBlock.java | 10 +- .../common/TileEntityBasicMachine.java | 5 +- .../common/TileEntityBoundingBlock.java | 8 +- .../mekanism/common/TileEntityChargepad.java | 7 +- .../common/TileEntityControlPanel.java | 7 +- .../common/TileEntityDynamicTank.java | 13 +- .../common/TileEntityElectricPump.java | 4 +- .../mekanism/common/TileEntityFactory.java | 5 +- .../common/TileEntityMechanicalPipe.java | 5 +- .../common/TileEntityMetallurgicInfuser.java | 5 +- .../mekanism/common/TileEntityTeleporter.java | 4 +- .../common/network/IMekanismPacket.java | 17 + .../network/PacketConfiguratorState.java | 48 + .../common/network/PacketControlPanel.java | 85 ++ .../common/network/PacketDataRequest.java | 60 ++ .../common/network/PacketDigitUpdate.java | 52 + .../network/PacketElectricBowState.java | 48 + .../common/network/PacketElectricChest.java | 289 ++++++ .../network/PacketPortableTeleport.java | 58 ++ .../common/network/PacketPortalFX.java | 52 + .../mekanism/common/network/PacketRobit.java | 166 ++++ .../common/network/PacketStatusUpdate.java | 46 + .../common/network/PacketTileEntity.java | 58 ++ .../mekanism/common/network/PacketTime.java | 40 + .../PacketTransmitterTransferUpdate.java | 125 +++ .../common/network/PacketWeather.java | 69 ++ .../client/GuiElectrolyticSeparator.java | 8 +- .../generators/common/MekanismGenerators.java | 5 + .../TileEntityElectrolyticSeparator.java | 5 +- .../common/TileEntityGenerator.java | 5 +- .../common/TileEntityHydrogenGenerator.java | 1 + .../common/TileEntitySolarGenerator.java | 2 +- .../PacketElectrolyticSeparatorParticle.java | 53 + .../mods/galacticraft/API/ISolarLevel.java | 2 +- 60 files changed, 1671 insertions(+), 932 deletions(-) create mode 100644 src/minecraft/mekanism/common/network/IMekanismPacket.java create mode 100644 src/minecraft/mekanism/common/network/PacketConfiguratorState.java create mode 100644 src/minecraft/mekanism/common/network/PacketControlPanel.java create mode 100644 src/minecraft/mekanism/common/network/PacketDataRequest.java create mode 100644 src/minecraft/mekanism/common/network/PacketDigitUpdate.java create mode 100644 src/minecraft/mekanism/common/network/PacketElectricBowState.java create mode 100644 src/minecraft/mekanism/common/network/PacketElectricChest.java create mode 100644 src/minecraft/mekanism/common/network/PacketPortableTeleport.java create mode 100644 src/minecraft/mekanism/common/network/PacketPortalFX.java create mode 100644 src/minecraft/mekanism/common/network/PacketRobit.java create mode 100644 src/minecraft/mekanism/common/network/PacketStatusUpdate.java create mode 100644 src/minecraft/mekanism/common/network/PacketTileEntity.java create mode 100644 src/minecraft/mekanism/common/network/PacketTime.java create mode 100644 src/minecraft/mekanism/common/network/PacketTransmitterTransferUpdate.java create mode 100644 src/minecraft/mekanism/common/network/PacketWeather.java create mode 100644 src/minecraft/mekanism/generators/common/network/PacketElectrolyticSeparatorParticle.java diff --git a/src/minecraft/mekanism/client/ClientPlayerTickHandler.java b/src/minecraft/mekanism/client/ClientPlayerTickHandler.java index 4bb4a1c84..503014e50 100644 --- a/src/minecraft/mekanism/client/ClientPlayerTickHandler.java +++ b/src/minecraft/mekanism/client/ClientPlayerTickHandler.java @@ -8,6 +8,8 @@ import mekanism.common.ItemConfigurator; import mekanism.common.ItemElectricBow; import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketConfiguratorState; +import mekanism.common.network.PacketElectricBowState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -47,7 +49,7 @@ public class ClientPlayerTickHandler implements ITickHandler if(!lastTickConfiguratorChange) { item.setState(stack, (byte)(item.getState(stack) < 3 ? item.getState(stack)+1 : 0)); - PacketHandler.sendPacketData(EnumPacketType.CONFIGURATOR_STATE, Transmission.SERVER, item.getState(stack)); + PacketHandler.sendPacket(Transmission.SERVER, new PacketConfiguratorState(item.getState(stack))); entityPlayer.sendChatToPlayer(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Configure State: " + item.getColor(item.getState(stack)) + item.getState(item.getState(stack))); lastTickConfiguratorChange = true; } @@ -65,7 +67,7 @@ public class ClientPlayerTickHandler implements ITickHandler if(!lastTickElectricBowChange) { item.setFireState(stack, !item.getFireState(stack)); - PacketHandler.sendPacketData(EnumPacketType.ELECTRIC_BOW_STATE, Transmission.SERVER, item.getFireState(stack) ? 1 : 0); + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricBowState(item.getFireState(stack))); entityPlayer.sendChatToPlayer(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Fire Mode: " + (item.getFireState(stack) ? (EnumColor.DARK_GREEN + "ON") : (EnumColor.DARK_RED + "OFF"))); lastTickElectricBowChange = true; } diff --git a/src/minecraft/mekanism/client/GuiControlPanel.java b/src/minecraft/mekanism/client/GuiControlPanel.java index d915c2a9b..18c1e7223 100644 --- a/src/minecraft/mekanism/client/GuiControlPanel.java +++ b/src/minecraft/mekanism/client/GuiControlPanel.java @@ -2,8 +2,11 @@ package mekanism.client; import mekanism.api.EnumColor; import mekanism.api.IAccessibleGui; +import mekanism.api.Object3D; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.TileEntityControlPanel; +import mekanism.common.network.PacketControlPanel; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; @@ -161,7 +164,7 @@ public class GuiControlPanel extends GuiScreen return; } - PacketHandler.sendGuiRequest(gui.getClassPath(), gui.getInstanceName(), Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText()), gui.getGuiID()); + PacketHandler.sendPacket(Transmission.SERVER, new PacketControlPanel(gui.getClassPath(), gui.getInstanceName(), new Object3D(Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText())), gui.getGuiID())); usingPlayer.openGui(instance, gui.getGuiID(), worldObj, Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText())); } catch(Exception e) { System.err.println("[Mekanism] Error while handling Control Panel GUI request."); diff --git a/src/minecraft/mekanism/client/GuiElectricChest.java b/src/minecraft/mekanism/client/GuiElectricChest.java index 530ba68e4..cddbae5f1 100644 --- a/src/minecraft/mekanism/client/GuiElectricChest.java +++ b/src/minecraft/mekanism/client/GuiElectricChest.java @@ -2,11 +2,15 @@ package mekanism.client; import mekanism.api.EnumColor; import mekanism.api.IEnergizedItem; +import mekanism.api.Object3D; import mekanism.common.ContainerElectricChest; import mekanism.common.IElectricChest; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.TileEntityElectricChest; +import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -105,10 +109,14 @@ public class GuiElectricChest extends GuiContainer if(xAxis >= 179 && xAxis <= 197 && yAxis >= 88 && yAxis <= 106) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendLockChange(tileEntity, !getLocked(), isBlock); - if(!isBlock) + if(isBlock) { + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.LOCK, !getLocked(), true, Object3D.get(tileEntity))); + } + else { + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.LOCK, !getLocked(), false)); + ItemStack stack = mc.thePlayer.getCurrentEquippedItem(); ((IElectricChest)stack.getItem()).setLocked(stack, !getLocked()); } diff --git a/src/minecraft/mekanism/client/GuiMetallurgicInfuser.java b/src/minecraft/mekanism/client/GuiMetallurgicInfuser.java index be4f174db..dcb259d68 100644 --- a/src/minecraft/mekanism/client/GuiMetallurgicInfuser.java +++ b/src/minecraft/mekanism/client/GuiMetallurgicInfuser.java @@ -3,9 +3,12 @@ package mekanism.client; import java.util.ArrayList; import mekanism.api.InfuseType; +import mekanism.api.Object3D; import mekanism.common.ContainerMetallurgicInfuser; import mekanism.common.PacketHandler; import mekanism.common.TileEntityMetallurgicInfuser; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -47,7 +50,7 @@ public class GuiMetallurgicInfuser extends GuiContainer ArrayList data = new ArrayList(); data.add(0); - PacketHandler.sendTileEntityPacketToServer(tileEntity, data); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(tileEntity), data)); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } } diff --git a/src/minecraft/mekanism/client/GuiPasswordEnter.java b/src/minecraft/mekanism/client/GuiPasswordEnter.java index 671c53da1..10804a825 100644 --- a/src/minecraft/mekanism/client/GuiPasswordEnter.java +++ b/src/minecraft/mekanism/client/GuiPasswordEnter.java @@ -2,9 +2,13 @@ package mekanism.client; import mekanism.api.EnumColor; import mekanism.api.IEnergizedItem; +import mekanism.api.Object3D; import mekanism.common.IElectricChest; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.TileEntityElectricChest; +import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; @@ -128,11 +132,11 @@ public class GuiPasswordEnter extends GuiScreen if(isBlock) { tileEntity.setEnergy(tileEntity.getEnergy() - 100); - PacketHandler.sendChestOpen(tileEntity, true, true); + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.SERVER_OPEN, true, true, Object3D.get(tileEntity))); } else { ((IEnergizedItem)itemStack.getItem()).setEnergy(itemStack, ((IEnergizedItem)itemStack.getItem()).getEnergy(itemStack) - 100); - PacketHandler.sendChestOpen(null, false, true); + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.SERVER_OPEN, true, false)); } } } diff --git a/src/minecraft/mekanism/client/GuiPasswordModify.java b/src/minecraft/mekanism/client/GuiPasswordModify.java index 563b991f8..592761b2d 100644 --- a/src/minecraft/mekanism/client/GuiPasswordModify.java +++ b/src/minecraft/mekanism/client/GuiPasswordModify.java @@ -1,10 +1,14 @@ package mekanism.client; import mekanism.api.EnumColor; +import mekanism.api.Object3D; import mekanism.common.IElectricChest; import mekanism.common.InventoryElectricChest; import mekanism.common.PacketHandler; import mekanism.common.TileEntityElectricChest; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; @@ -158,13 +162,13 @@ public class GuiPasswordModify extends GuiScreen else { if(isBlock) { - PacketHandler.sendPasswordChange(tileEntity, confirmPasswordField.getText(), true); - PacketHandler.sendChestOpen(tileEntity, true, false); + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.PASSWORD, confirmPasswordField.getText(), true, Object3D.get(tileEntity))); + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.SERVER_OPEN, false, true, Object3D.get(tileEntity))); } else { ((IElectricChest)itemStack.getItem()).setPassword(itemStack, confirmPasswordField.getText()); - PacketHandler.sendPasswordChange(null, confirmPasswordField.getText(), false); - PacketHandler.sendChestOpen(null, false, false); + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.PASSWORD, confirmPasswordField.getText(), false)); + PacketHandler.sendPacket(Transmission.SERVER, new PacketElectricChest(ElectricChestPacketType.SERVER_OPEN, false, false)); } } } diff --git a/src/minecraft/mekanism/client/GuiPortableTeleporter.java b/src/minecraft/mekanism/client/GuiPortableTeleporter.java index 56394b778..39e7cd87f 100644 --- a/src/minecraft/mekanism/client/GuiPortableTeleporter.java +++ b/src/minecraft/mekanism/client/GuiPortableTeleporter.java @@ -4,6 +4,8 @@ import mekanism.common.EnumPacketType; import mekanism.common.ItemPortableTeleporter; import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketDigitUpdate; +import mekanism.common.network.PacketPortableTeleport; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -79,7 +81,7 @@ public class GuiPortableTeleporter extends GuiScreen { if(guibutton.id == 0) { - PacketHandler.sendPacketData(EnumPacketType.PORTABLE_TELEPORT, Transmission.SERVER, 0); + PacketHandler.sendPacket(Transmission.SERVER, new PacketPortableTeleport()); mc.setIngameFocus(); } } @@ -94,25 +96,25 @@ public class GuiPortableTeleporter extends GuiScreen if(xAxis > 23 && xAxis < 37 && yAxis > 44 && yAxis < 58) { - PacketHandler.sendDigitUpdate(0, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 0))); + PacketHandler.sendPacket(Transmission.SERVER, new PacketDigitUpdate(0, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 0)))); ((ItemPortableTeleporter)itemStack.getItem()).setDigit(itemStack, 0, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 0))); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } else if(xAxis > 62 && xAxis < 76 && yAxis > 44 && yAxis < 58) { - PacketHandler.sendDigitUpdate(1, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 1))); + PacketHandler.sendPacket(Transmission.SERVER, new PacketDigitUpdate(1, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 1)))); ((ItemPortableTeleporter)itemStack.getItem()).setDigit(itemStack, 1, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 1))); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } else if(xAxis > 101 && xAxis < 115 && yAxis > 44 && yAxis < 58) { - PacketHandler.sendDigitUpdate(2, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 2))); + PacketHandler.sendPacket(Transmission.SERVER, new PacketDigitUpdate(2, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 2)))); ((ItemPortableTeleporter)itemStack.getItem()).setDigit(itemStack, 2, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 2))); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } else if(xAxis > 140 && xAxis < 154 && yAxis > 44 && yAxis < 58) { - PacketHandler.sendDigitUpdate(3, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 3))); + PacketHandler.sendPacket(Transmission.SERVER, new PacketDigitUpdate(3, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 3)))); ((ItemPortableTeleporter)itemStack.getItem()).setDigit(itemStack, 3, getIncrementedNumber(((ItemPortableTeleporter)itemStack.getItem()).getDigit(itemStack, 3))); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } diff --git a/src/minecraft/mekanism/client/GuiRobitCrafting.java b/src/minecraft/mekanism/client/GuiRobitCrafting.java index 5ac7c16f8..3c4a90d8e 100644 --- a/src/minecraft/mekanism/client/GuiRobitCrafting.java +++ b/src/minecraft/mekanism/client/GuiRobitCrafting.java @@ -4,6 +4,9 @@ import mekanism.common.ContainerRobitCrafting; import mekanism.common.EnumPacketType; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketRobit; +import mekanism.common.network.PacketRobit.RobitPacketType; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.StatCollector; @@ -99,7 +102,8 @@ public class GuiRobitCrafting extends GuiContainer if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(0, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 0, entityId)); + //PacketHandler.sendRobitGui(0, entityId); mc.thePlayer.openGui(Mekanism.instance, 21, mc.theWorld, entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48) @@ -109,19 +113,22 @@ public class GuiRobitCrafting extends GuiContainer else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(2, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 2, entityId)); + //PacketHandler.sendRobitGui(2, entityId); mc.thePlayer.openGui(Mekanism.instance, 23, mc.theWorld, entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(3, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 3, entityId)); + //PacketHandler.sendRobitGui(3, entityId); mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(4, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 4, entityId)); + //PacketHandler.sendRobitGui(4, entityId); mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, entityId, 0, 0); } } diff --git a/src/minecraft/mekanism/client/GuiRobitInventory.java b/src/minecraft/mekanism/client/GuiRobitInventory.java index db0a30c87..a6bc2521b 100644 --- a/src/minecraft/mekanism/client/GuiRobitInventory.java +++ b/src/minecraft/mekanism/client/GuiRobitInventory.java @@ -4,6 +4,9 @@ import mekanism.common.ContainerRobitInventory; import mekanism.common.EntityRobit; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketRobit; +import mekanism.common.network.PacketRobit.RobitPacketType; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.StatCollector; @@ -98,13 +101,15 @@ public class GuiRobitInventory extends GuiContainer if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(0, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 0, robit.entityId)); + //PacketHandler.sendRobitGui(0, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 21, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(1, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 1, robit.entityId)); + //PacketHandler.sendRobitGui(1, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 22, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68) @@ -114,13 +119,15 @@ public class GuiRobitInventory extends GuiContainer else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(3, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 3, robit.entityId)); + //PacketHandler.sendRobitGui(3, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(4, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 4, robit.entityId)); + //PacketHandler.sendRobitGui(4, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, robit.entityId, 0, 0); } } diff --git a/src/minecraft/mekanism/client/GuiRobitMain.java b/src/minecraft/mekanism/client/GuiRobitMain.java index 6d94bffb4..e752e2b64 100644 --- a/src/minecraft/mekanism/client/GuiRobitMain.java +++ b/src/minecraft/mekanism/client/GuiRobitMain.java @@ -5,8 +5,9 @@ import mekanism.common.EntityRobit; import mekanism.common.EnumPacketType; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; -import mekanism.common.PacketHandler.RobitPacket; import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketRobit; +import mekanism.common.network.PacketRobit.RobitPacketType; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.inventory.GuiContainer; @@ -48,7 +49,8 @@ public class GuiRobitMain extends GuiContainer { if(nameChangeField.getText() != null && !nameChangeField.getText().isEmpty()) { - PacketHandler.sendNameUpdate(nameChangeField.getText(), robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.NAME, nameChangeField.getText(), robit.entityId)); + //PacketHandler.sendNameUpdate(nameChangeField.getText(), robit.entityId); toggleNameChange(); nameChangeField.setText(""); } @@ -260,31 +262,36 @@ public class GuiRobitMain extends GuiContainer else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(1, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 1, robit.entityId)); + //PacketHandler.sendRobitGui(1, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 22, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(2, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 2, robit.entityId)); + //PacketHandler.sendRobitGui(2, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 23, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(3, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 3, robit.entityId)); + //PacketHandler.sendRobitGui(3, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(4, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 4, robit.entityId)); + //PacketHandler.sendRobitGui(4, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 152 && xAxis <= 170 && yAxis >= 54 && yAxis <= 72) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, RobitPacket.FOLLOW.ordinal(), robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.FOLLOW, robit.entityId)); + //PacketHandler.sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, RobitPacket.FOLLOW.ordinal(), robit.entityId); } else if(xAxis >= 6 && xAxis <= 24 && yAxis >= 54 && yAxis <= 72) { @@ -294,12 +301,14 @@ public class GuiRobitMain extends GuiContainer else if(xAxis >= 6 && xAxis <= 24 && yAxis >= 16 && yAxis <= 34) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, RobitPacket.GO_HOME.ordinal(), robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GO_HOME, robit.entityId)); + //PacketHandler.sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, RobitPacket.GO_HOME.ordinal(), robit.entityId); } else if(xAxis >= 6 && xAxis <= 24 && yAxis >= 35 && yAxis <= 53) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, RobitPacket.DROP_PICKUP.ordinal(), robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.DROP_PICKUP, robit.entityId)); + //PacketHandler.sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, RobitPacket.DROP_PICKUP.ordinal(), robit.entityId); } } } diff --git a/src/minecraft/mekanism/client/GuiRobitRepair.java b/src/minecraft/mekanism/client/GuiRobitRepair.java index d6782b9ff..c2b6dc25c 100644 --- a/src/minecraft/mekanism/client/GuiRobitRepair.java +++ b/src/minecraft/mekanism/client/GuiRobitRepair.java @@ -5,6 +5,9 @@ import java.util.List; import mekanism.common.ContainerRobitRepair; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketRobit; +import mekanism.common.network.PacketRobit.RobitPacketType; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.inventory.GuiContainer; @@ -141,25 +144,29 @@ public class GuiRobitRepair extends GuiContainer implements ICrafting if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(0, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 0, entityId)); + //PacketHandler.sendRobitGui(0, entityId); mc.thePlayer.openGui(Mekanism.instance, 21, mc.theWorld, entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(1, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 1, entityId)); + //PacketHandler.sendRobitGui(1, entityId); mc.thePlayer.openGui(Mekanism.instance, 22, mc.theWorld, entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(2, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 2, entityId)); + //PacketHandler.sendRobitGui(2, entityId); mc.thePlayer.openGui(Mekanism.instance, 23, mc.theWorld, entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(3, entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 3, entityId)); + //PacketHandler.sendRobitGui(3, entityId); mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108) diff --git a/src/minecraft/mekanism/client/GuiRobitSmelting.java b/src/minecraft/mekanism/client/GuiRobitSmelting.java index 59527d5b9..a2654d948 100644 --- a/src/minecraft/mekanism/client/GuiRobitSmelting.java +++ b/src/minecraft/mekanism/client/GuiRobitSmelting.java @@ -4,6 +4,9 @@ import mekanism.common.ContainerRobitSmelting; import mekanism.common.EntityRobit; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketRobit; +import mekanism.common.network.PacketRobit.RobitPacketType; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -107,19 +110,22 @@ public class GuiRobitSmelting extends GuiContainer if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(0, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 0, robit.entityId)); + //PacketHandler.sendRobitGui(0, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 21, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(1, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 1, robit.entityId)); + //PacketHandler.sendRobitGui(1, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 22, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(2, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 2, robit.entityId)); + //PacketHandler.sendRobitGui(2, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 23, mc.theWorld, robit.entityId, 0, 0); } else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88) @@ -129,7 +135,8 @@ public class GuiRobitSmelting extends GuiContainer else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108) { mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - PacketHandler.sendRobitGui(4, robit.entityId); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRobit(RobitPacketType.GUI, 4, robit.entityId)); + //PacketHandler.sendRobitGui(4, robit.entityId); mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, robit.entityId, 0, 0); } } diff --git a/src/minecraft/mekanism/client/GuiStopwatch.java b/src/minecraft/mekanism/client/GuiStopwatch.java index bbcc2944b..a513d913c 100644 --- a/src/minecraft/mekanism/client/GuiStopwatch.java +++ b/src/minecraft/mekanism/client/GuiStopwatch.java @@ -4,6 +4,7 @@ import mekanism.common.EnumPacketType; import mekanism.common.MekanismUtils; import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTime; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -54,7 +55,7 @@ public class GuiStopwatch extends GuiScreen @Override public void keyTyped(char c, int i) { - if (i == 1) + if(i == 1) { mc.displayGuiScreen(null); } @@ -72,25 +73,25 @@ public class GuiStopwatch extends GuiScreen if(guibutton.id == 0) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.TIME, Transmission.SERVER, 0); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTime(0)); mc.displayGuiScreen(null); } if(guibutton.id == 1) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.TIME, Transmission.SERVER, 6); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTime(6)); mc.displayGuiScreen(null); } if(guibutton.id == 2) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.TIME, Transmission.SERVER, 12); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTime(12)); mc.displayGuiScreen(null); } if(guibutton.id == 3) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.TIME, Transmission.SERVER, 18); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTime(18)); mc.displayGuiScreen(null); } if(guibutton.id == 4) diff --git a/src/minecraft/mekanism/client/GuiTeleporter.java b/src/minecraft/mekanism/client/GuiTeleporter.java index 82bbcd181..fffb850df 100644 --- a/src/minecraft/mekanism/client/GuiTeleporter.java +++ b/src/minecraft/mekanism/client/GuiTeleporter.java @@ -2,9 +2,12 @@ package mekanism.client; import java.util.ArrayList; +import mekanism.api.Object3D; import mekanism.common.ContainerTeleporter; import mekanism.common.PacketHandler; import mekanism.common.TileEntityTeleporter; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -58,7 +61,7 @@ public class GuiTeleporter extends GuiContainer data.add(0); data.add(getIncrementedNumber(tileEntity.code.digitOne)); - PacketHandler.sendTileEntityPacketToServer(tileEntity, data); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(tileEntity), data)); tileEntity.code.digitOne = getIncrementedNumber(tileEntity.code.digitOne); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } @@ -67,7 +70,7 @@ public class GuiTeleporter extends GuiContainer data.add(1); data.add(getIncrementedNumber(tileEntity.code.digitTwo)); - PacketHandler.sendTileEntityPacketToServer(tileEntity, data); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(tileEntity), data)); tileEntity.code.digitTwo = getIncrementedNumber(tileEntity.code.digitTwo); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } @@ -76,7 +79,7 @@ public class GuiTeleporter extends GuiContainer data.add(2); data.add(getIncrementedNumber(tileEntity.code.digitThree)); - PacketHandler.sendTileEntityPacketToServer(tileEntity, data); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(tileEntity), data)); tileEntity.code.digitThree = getIncrementedNumber(tileEntity.code.digitThree); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } @@ -85,7 +88,7 @@ public class GuiTeleporter extends GuiContainer data.add(3); data.add(getIncrementedNumber(tileEntity.code.digitFour)); - PacketHandler.sendTileEntityPacketToServer(tileEntity, data); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(tileEntity), data)); tileEntity.code.digitFour = getIncrementedNumber(tileEntity.code.digitFour); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } diff --git a/src/minecraft/mekanism/client/GuiWeatherOrb.java b/src/minecraft/mekanism/client/GuiWeatherOrb.java index 27faa4a92..a3b2bfc24 100644 --- a/src/minecraft/mekanism/client/GuiWeatherOrb.java +++ b/src/minecraft/mekanism/client/GuiWeatherOrb.java @@ -1,10 +1,11 @@ package mekanism.client; import mekanism.common.EnumPacketType; -import mekanism.common.EnumWeatherType; import mekanism.common.MekanismUtils; import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketWeather; +import mekanism.common.network.PacketWeather.WeatherType; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -73,25 +74,25 @@ public class GuiWeatherOrb extends GuiScreen if(guibutton.id == 0) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.WEATHER, Transmission.SERVER, EnumWeatherType.CLEAR.id); + PacketHandler.sendPacket(Transmission.SERVER, new PacketWeather(WeatherType.CLEAR)); mc.displayGuiScreen(null); } if(guibutton.id == 1) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.WEATHER, Transmission.SERVER, EnumWeatherType.STORM.id); + PacketHandler.sendPacket(Transmission.SERVER, new PacketWeather(WeatherType.STORM)); mc.displayGuiScreen(null); } if(guibutton.id == 2) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.WEATHER, Transmission.SERVER, EnumWeatherType.HAZE.id); + PacketHandler.sendPacket(Transmission.SERVER, new PacketWeather(WeatherType.HAZE)); mc.displayGuiScreen(null); } if(guibutton.id == 3) { MekanismUtils.doFakeEntityExplosion(player); - PacketHandler.sendPacketData(EnumPacketType.WEATHER, Transmission.SERVER, EnumWeatherType.RAIN.id); + PacketHandler.sendPacket(Transmission.SERVER, new PacketWeather(WeatherType.RAIN)); mc.displayGuiScreen(null); } if(guibutton.id == 4) diff --git a/src/minecraft/mekanism/common/BlockBasic.java b/src/minecraft/mekanism/common/BlockBasic.java index 72246e2e2..76b1676c1 100644 --- a/src/minecraft/mekanism/common/BlockBasic.java +++ b/src/minecraft/mekanism/common/BlockBasic.java @@ -7,6 +7,8 @@ import java.util.Map; import mekanism.api.Object3D; import mekanism.client.ClientProxy; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; @@ -182,7 +184,7 @@ public class BlockBasic extends Block if(!manageInventory(entityplayer, tileEntity)) { - PacketHandler.sendTileEntityPacketToClients(tileEntity, 0, tileEntity.getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(tileEntity), tileEntity.getNetworkedData(new ArrayList()))); entityplayer.openGui(Mekanism.instance, 18, world, x, y, z); } else { diff --git a/src/minecraft/mekanism/common/BlockMachine.java b/src/minecraft/mekanism/common/BlockMachine.java index 1517b2111..d7c2feb24 100644 --- a/src/minecraft/mekanism/common/BlockMachine.java +++ b/src/minecraft/mekanism/common/BlockMachine.java @@ -5,8 +5,12 @@ import java.util.Random; import mekanism.api.IEnergizedItem; import mekanism.api.IUpgradeManagement; +import mekanism.api.Object3D; import mekanism.client.ClientProxy; import mekanism.common.IFactory.RecipeType; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -591,10 +595,10 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds } else if(!electricChest.authenticated) { - PacketHandler.sendChestOpenToPlayer((EntityPlayerMP)entityplayer, electricChest, 2, 0, true); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketElectricChest(ElectricChestPacketType.CLIENT_OPEN, 2, 0, true, Object3D.get(electricChest)), entityplayer); } else { - PacketHandler.sendChestOpenToPlayer((EntityPlayerMP)entityplayer, electricChest, 1, 0, true); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketElectricChest(ElectricChestPacketType.CLIENT_OPEN, 1, 0, true, Object3D.get(electricChest)), entityplayer); } return true; diff --git a/src/minecraft/mekanism/common/ChargeUtils.java b/src/minecraft/mekanism/common/ChargeUtils.java index cfea5bab2..0b1194e18 100644 --- a/src/minecraft/mekanism/common/ChargeUtils.java +++ b/src/minecraft/mekanism/common/ChargeUtils.java @@ -35,7 +35,7 @@ public final class ChargeUtils if(item.canProvideEnergy(storer.inventory[slotID])) { - double gain = ElectricItem.discharge(storer.inventory[slotID], (int)((storer.getMaxEnergy() - storer.getEnergy())*Mekanism.TO_IC2), 3, false, false)*Mekanism.FROM_IC2; + double gain = ElectricItem.manager.discharge(storer.inventory[slotID], (int)((storer.getMaxEnergy() - storer.getEnergy())*Mekanism.TO_IC2), 3, false, false)*Mekanism.FROM_IC2; storer.setEnergy(storer.getEnergy() + gain); } } @@ -82,7 +82,7 @@ public final class ChargeUtils } else if(Mekanism.hooks.IC2Loaded && storer.inventory[slotID].getItem() instanceof IElectricItem) { - double sent = ElectricItem.charge(storer.inventory[slotID], (int)(storer.getEnergy()*Mekanism.TO_IC2), 3, false, false)*Mekanism.FROM_IC2; + double sent = ElectricItem.manager.charge(storer.inventory[slotID], (int)(storer.getEnergy()*Mekanism.TO_IC2), 3, false, false)*Mekanism.FROM_IC2; storer.setEnergy(storer.getEnergy() - sent); } else if(storer.inventory[slotID].getItem() instanceof IChargeableItem) diff --git a/src/minecraft/mekanism/common/CommonPlayerTickHandler.java b/src/minecraft/mekanism/common/CommonPlayerTickHandler.java index 7c4f7edc4..a663e7e68 100644 --- a/src/minecraft/mekanism/common/CommonPlayerTickHandler.java +++ b/src/minecraft/mekanism/common/CommonPlayerTickHandler.java @@ -2,6 +2,8 @@ package mekanism.common; import java.util.EnumSet; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketStatusUpdate; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import cpw.mods.fml.common.ITickHandler; @@ -39,14 +41,14 @@ public class CommonPlayerTickHandler implements ITickHandler if(item.getStatus(itemstack) != 2) { item.setStatus(itemstack, 2); - PacketHandler.sendStatusUpdate(player, 2); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketStatusUpdate(2), player); } } else { if(item.getStatus(itemstack) != 1) { item.setStatus(itemstack, 1); - PacketHandler.sendStatusUpdate(player, 1); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketStatusUpdate(1), player); } } return; @@ -56,7 +58,7 @@ public class CommonPlayerTickHandler implements ITickHandler if(item.getStatus(itemstack) != 3) { item.setStatus(itemstack, 3); - PacketHandler.sendStatusUpdate(player, 3); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketStatusUpdate(3), player); } return; } @@ -64,7 +66,7 @@ public class CommonPlayerTickHandler implements ITickHandler if(item.getStatus(itemstack) != 4) { item.setStatus(itemstack, 4); - PacketHandler.sendStatusUpdate(player, 4); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketStatusUpdate(4), player); } return; } @@ -73,7 +75,7 @@ public class CommonPlayerTickHandler implements ITickHandler if(item.getStatus(itemstack) != 4) { item.setStatus(itemstack, 4); - PacketHandler.sendStatusUpdate(player, 4); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketStatusUpdate(4), player); } return; } diff --git a/src/minecraft/mekanism/common/IC2EnergyHandler.java b/src/minecraft/mekanism/common/IC2EnergyHandler.java index 825e34748..158fc680e 100644 --- a/src/minecraft/mekanism/common/IC2EnergyHandler.java +++ b/src/minecraft/mekanism/common/IC2EnergyHandler.java @@ -1,15 +1,15 @@ package mekanism.common; +import ic2.api.energy.event.EnergyTileSourceEvent; +import ic2.api.energy.tile.IEnergySource; + import java.util.ArrayList; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; +import mekanism.api.IUniversalCable; +import mekanism.api.Object3D; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.event.ForgeSubscribe; -import ic2.api.energy.event.EnergyTileSourceEvent; -import ic2.api.energy.tile.IEnergyConductor; -import ic2.api.energy.tile.IEnergySource; /** * This here is the core implementation of IC2 into Universal Cable. Thanks to Player's hard work at making the EnergyNet @@ -22,24 +22,30 @@ public class IC2EnergyHandler @ForgeSubscribe public void handleEnergy(EnergyTileSourceEvent event) { - TileEntity tileEntity = (TileEntity)event.energyTile; - ArrayList ignoredTiles = new ArrayList(); - - for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS) + if(!event.world.isRemote) { - TileEntity tile = VectorHelper.getTileEntityFromSide(tileEntity.worldObj, new Vector3(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord), orientation); + TileEntity tileEntity = (TileEntity)event.energyTile; + ArrayList ignoredTiles = new ArrayList(); - if(tile != null && tileEntity instanceof IEnergySource) + for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS) { - IEnergySource source = (IEnergySource)tileEntity; + TileEntity tile = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(event.world); - if(!source.emitsEnergyTo(tile, MekanismUtils.toIC2Direction(orientation.getOpposite()))) + if(tile != null) { - ignoredTiles.add(tile); + if(tileEntity instanceof IEnergySource) + { + IEnergySource source = (IEnergySource)tileEntity; + + if(!source.emitsEnergyTo(tile, MekanismUtils.toIC2Direction(orientation.getOpposite()))) + { + ignoredTiles.add(tile); + } + } } } + + event.amount = (int)(CableUtils.emitEnergyFromAllSidesIgnore(event.amount*Mekanism.FROM_IC2, tileEntity, ignoredTiles)*Mekanism.TO_IC2); } - - event.amount = (int)(CableUtils.emitEnergyFromAllSidesIgnore(event.amount*Mekanism.FROM_IC2, tileEntity, ignoredTiles)*Mekanism.TO_IC2); } -} +} \ No newline at end of file diff --git a/src/minecraft/mekanism/common/ItemBlockEnergyCube.java b/src/minecraft/mekanism/common/ItemBlockEnergyCube.java index 4226d2da8..edbc51551 100644 --- a/src/minecraft/mekanism/common/ItemBlockEnergyCube.java +++ b/src/minecraft/mekanism/common/ItemBlockEnergyCube.java @@ -7,7 +7,10 @@ import java.util.List; import mekanism.api.EnumColor; import mekanism.api.IEnergizedItem; +import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.Tier.EnergyCubeTier; +import mekanism.common.network.PacketTileEntity; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; @@ -147,7 +150,7 @@ public class ItemBlockEnergyCube extends ItemBlock implements IEnergizedItem, II if(!world.isRemote) { - PacketHandler.sendTileEntityPacketToClients(tileEntity, 0, tileEntity.getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(tileEntity), tileEntity.getNetworkedData(new ArrayList()))); } } diff --git a/src/minecraft/mekanism/common/ItemBlockMachine.java b/src/minecraft/mekanism/common/ItemBlockMachine.java index 1fd86681c..21e7b3876 100644 --- a/src/minecraft/mekanism/common/ItemBlockMachine.java +++ b/src/minecraft/mekanism/common/ItemBlockMachine.java @@ -8,6 +8,9 @@ import mekanism.api.EnumColor; import mekanism.api.IEnergizedItem; import mekanism.api.IUpgradeManagement; import mekanism.common.BlockMachine.MachineType; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; @@ -478,11 +481,11 @@ public class ItemBlockMachine extends ItemBlock implements IEnergizedItem, IItem { if(!getAuthenticated(itemstack)) { - PacketHandler.sendChestOpenToPlayer((EntityPlayerMP)entityplayer, null, 2, 0, false); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketElectricChest(ElectricChestPacketType.CLIENT_OPEN, 2, 0, false), entityplayer); } else if(getLocked(itemstack) && getJoules(itemstack) > 0) { - PacketHandler.sendChestOpenToPlayer((EntityPlayerMP)entityplayer, null, 1, 0, false); + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketElectricChest(ElectricChestPacketType.CLIENT_OPEN, 1, 0, false), entityplayer); } else { InventoryElectricChest inventory = new InventoryElectricChest(entityplayer); diff --git a/src/minecraft/mekanism/common/ItemConfigurator.java b/src/minecraft/mekanism/common/ItemConfigurator.java index 0961a74f2..ced88e990 100644 --- a/src/minecraft/mekanism/common/ItemConfigurator.java +++ b/src/minecraft/mekanism/common/ItemConfigurator.java @@ -7,6 +7,9 @@ import java.util.Random; import mekanism.api.EnumColor; import mekanism.api.IConfigurable; import mekanism.api.IUpgradeManagement; +import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -44,7 +47,7 @@ public class ItemConfigurator extends ItemEnergized { TileEntityMechanicalPipe tileEntity = (TileEntityMechanicalPipe)world.getBlockTileEntity(x, y, z); tileEntity.isActive = !tileEntity.isActive; - PacketHandler.sendTileEntityPacketToClients(tileEntity, 0, tileEntity.getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(tileEntity), tileEntity.getNetworkedData(new ArrayList()))); return true; } else if(world.getBlockTileEntity(x, y, z) instanceof TileEntityElectricPump) @@ -79,7 +82,7 @@ public class ItemConfigurator extends ItemEnergized if(config instanceof TileEntityBasicBlock) { TileEntityBasicBlock tileEntity = (TileEntityBasicBlock)config; - PacketHandler.sendTileEntityPacketToClients(tileEntity, 50, tileEntity.getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity(Object3D.get(tileEntity), tileEntity.getNetworkedData(new ArrayList())), Object3D.get(tileEntity), 50D); } return true; } diff --git a/src/minecraft/mekanism/common/Mekanism.java b/src/minecraft/mekanism/common/Mekanism.java index d380451c6..f6b5d4c1b 100644 --- a/src/minecraft/mekanism/common/Mekanism.java +++ b/src/minecraft/mekanism/common/Mekanism.java @@ -13,15 +13,31 @@ import java.util.logging.Logger; import mekanism.api.GasTransferProtocol.GasTransferEvent; import mekanism.api.InfuseObject; import mekanism.api.InfuseRegistry; -import mekanism.api.InfusionInput; import mekanism.api.InfuseType; +import mekanism.api.InfusionInput; import mekanism.api.Object3D; import mekanism.client.SoundHandler; import mekanism.common.EnergyTransferProtocol.EnergyTransferEvent; import mekanism.common.IFactory.RecipeType; import mekanism.common.LiquidTransferProtocol.LiquidTransferEvent; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.Tier.EnergyCubeTier; import mekanism.common.Tier.FactoryTier; +import mekanism.common.network.PacketConfiguratorState; +import mekanism.common.network.PacketControlPanel; +import mekanism.common.network.PacketDataRequest; +import mekanism.common.network.PacketDigitUpdate; +import mekanism.common.network.PacketElectricBowState; +import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketPortableTeleport; +import mekanism.common.network.PacketPortalFX; +import mekanism.common.network.PacketRobit; +import mekanism.common.network.PacketStatusUpdate; +import mekanism.common.network.PacketTileEntity; +import mekanism.common.network.PacketTime; +import mekanism.common.network.PacketTransmitterTransferUpdate; +import mekanism.common.network.PacketTransmitterTransferUpdate.TransmitterTransferType; +import mekanism.common.network.PacketWeather; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -32,6 +48,8 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapelessOreRecipe; +import rebelkeithy.mods.metallurgy.api.IOreInfo; +import rebelkeithy.mods.metallurgy.api.MetallurgyAPI; import thermalexpansion.api.crafting.CraftingManagers; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; @@ -54,8 +72,6 @@ import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import rebelkeithy.mods.metallurgy.api.*; - /** * Mekanism - the mod in which no true definition fits. * @author AidanBrady @@ -1142,6 +1158,22 @@ public class Mekanism addRecipes(); addEntities(); + //Packet registrations + PacketHandler.registerPacket(PacketRobit.class); + PacketHandler.registerPacket(PacketTransmitterTransferUpdate.class); + PacketHandler.registerPacket(PacketTime.class); + PacketHandler.registerPacket(PacketWeather.class); + PacketHandler.registerPacket(PacketElectricChest.class); + PacketHandler.registerPacket(PacketElectricBowState.class); + PacketHandler.registerPacket(PacketConfiguratorState.class); + PacketHandler.registerPacket(PacketControlPanel.class); + PacketHandler.registerPacket(PacketTileEntity.class); + PacketHandler.registerPacket(PacketPortalFX.class); + PacketHandler.registerPacket(PacketDataRequest.class); + PacketHandler.registerPacket(PacketStatusUpdate.class); + PacketHandler.registerPacket(PacketDigitUpdate.class); + PacketHandler.registerPacket(PacketPortableTeleport.class); + //Load proxy proxy.registerRenderInformation(); proxy.loadUtilities(); @@ -1156,18 +1188,18 @@ public class Mekanism @ForgeSubscribe public void onGasTransferred(GasTransferEvent event) { - PacketHandler.sendGasTransferUpdate(event.transferProtocol.pointer, event.transferProtocol.transferType); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTransmitterTransferUpdate(TransmitterTransferType.GAS, event.transferProtocol.pointer, event.transferProtocol.transferType)); } @ForgeSubscribe public void onLiquidTransferred(LiquidTransferEvent event) { - PacketHandler.sendLiquidTransferUpdate(event.transferProtocol.pointer, event.liquidSent); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTransmitterTransferUpdate(TransmitterTransferType.LIQUID, event.transferProtocol.pointer, event.liquidSent)); } @ForgeSubscribe public void onEnergyTransferred(EnergyTransferEvent event) { - PacketHandler.sendEnergyTransferUpdate(event.transferProtocol.pointer); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTransmitterTransferUpdate(TransmitterTransferType.ENERGY, event.transferProtocol.pointer)); } } \ No newline at end of file diff --git a/src/minecraft/mekanism/common/MekanismUtils.java b/src/minecraft/mekanism/common/MekanismUtils.java index 34c827c0e..016fc510b 100644 --- a/src/minecraft/mekanism/common/MekanismUtils.java +++ b/src/minecraft/mekanism/common/MekanismUtils.java @@ -16,8 +16,11 @@ import mekanism.api.IConfigurable; import mekanism.api.InfuseObject; import mekanism.api.Object3D; import mekanism.common.IFactory.RecipeType; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.Tier.EnergyCubeTier; import mekanism.common.Tier.FactoryTier; +import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -734,7 +737,15 @@ public final class MekanismUtils player.incrementWindowID(); player.closeInventory(); int id = player.currentWindowId; - PacketHandler.sendChestOpenToPlayer(player, tileEntity, 0, id, isBlock); + + if(isBlock) + { + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketElectricChest(ElectricChestPacketType.CLIENT_OPEN, 0, id, true, Object3D.get(tileEntity)), player); + } + else { + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketElectricChest(ElectricChestPacketType.CLIENT_OPEN, 0, id, false), player); + } + player.openContainer = new ContainerElectricChest(player.inventory, tileEntity, inventory, isBlock); player.openContainer.windowId = id; player.openContainer.addCraftingToCrafters(player); diff --git a/src/minecraft/mekanism/common/PacketHandler.java b/src/minecraft/mekanism/common/PacketHandler.java index 3ba1c8d72..1d88b4a8e 100644 --- a/src/minecraft/mekanism/common/PacketHandler.java +++ b/src/minecraft/mekanism/common/PacketHandler.java @@ -2,28 +2,19 @@ package mekanism.common; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; -import java.io.IOException; import java.util.ArrayList; -import java.util.Random; +import java.util.List; -import mekanism.api.EnumGas; -import mekanism.api.GasTransferProtocol; -import mekanism.api.IEnergizedItem; import mekanism.api.Object3D; +import mekanism.common.network.IMekanismPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.liquids.LiquidStack; -import universalelectricity.core.electricity.ElectricityPack; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteStreams; -import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.Player; @@ -35,6 +26,8 @@ import cpw.mods.fml.common.network.Player; */ public class PacketHandler implements IPacketHandler { + public static List> packets = new ArrayList>(); + @Override public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) { @@ -44,510 +37,27 @@ public class PacketHandler implements IPacketHandler if(packet.channel.equals("Mekanism")) { try { - int packetType = dataStream.readInt(); + int packetIndex = dataStream.readInt(); - if(packetType == EnumPacketType.TIME.id) - { - System.out.println("[Mekanism] Received time update packet from " + entityplayer.username + "."); - entityplayer.getCurrentEquippedItem().damageItem(4999, entityplayer); - MekanismUtils.setHourForward(entityplayer.worldObj, dataStream.readInt()); - } - else if(packetType == EnumPacketType.WEATHER.id) - { - System.out.println("[Mekanism] Received weather update packet from " + entityplayer.username + "."); - entityplayer.getCurrentEquippedItem().damageItem(4999, entityplayer); - int weatherType = dataStream.readInt(); - - if(weatherType == EnumWeatherType.CLEAR.id) - { - entityplayer.worldObj.getWorldInfo().setRaining(false); - entityplayer.worldObj.getWorldInfo().setThundering(false); - } - if(weatherType == EnumWeatherType.HAZE.id) - { - entityplayer.worldObj.getWorldInfo().setRaining(true); - entityplayer.worldObj.getWorldInfo().setThundering(true); - } - if(weatherType == EnumWeatherType.RAIN.id) - { - entityplayer.worldObj.getWorldInfo().setRaining(true); - } - if(weatherType == EnumWeatherType.STORM.id) - { - entityplayer.worldObj.getWorldInfo().setThundering(true); - } - } - else if(packetType == EnumPacketType.TILE_ENTITY.id) - { - try { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - World world = entityplayer.worldObj; - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if(tileEntity instanceof ITileNetwork) - { - ((ITileNetwork)tileEntity).handlePacketData(dataStream); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling tile entity packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.CONTROL_PANEL.id) - { - try { - String modClass = dataStream.readUTF(); - String modInstance = dataStream.readUTF(); - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - int guiId = dataStream.readInt(); - - Class mod = Class.forName(modClass); - - if(mod == null) - { - System.err.println("[Mekanism] Incorrectly implemented IAccessibleGui -- ignoring handler packet."); - System.err.println(" ~ Unable to locate class '" + modClass + ".'"); - System.err.println(" ~ GUI Container may not function correctly."); - return; - } - - Object instance = mod.getField(modInstance).get(null); - - if(instance == null) - { - System.err.println("[Mekanism] Incorrectly implemented IAccessibleGui -- ignoring handler packet."); - System.err.println(" ~ Unable to locate instance object '" + modInstance + ".'"); - System.err.println(" ~ GUI Container may not function correctly."); - return; - } - - entityplayer.openGui(instance, guiId, entityplayer.worldObj, x, y, z); - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling control panel packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.PORTAL_FX.id) - { - try { - Random random = new Random(); - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - for(int i = 0; i < 50; i++) - { - entityplayer.worldObj.spawnParticle("portal", x + random.nextFloat(), y + random.nextFloat(), z + random.nextFloat(), 0.0F, 0.0F, 0.0F); - entityplayer.worldObj.spawnParticle("portal", x + random.nextFloat(), y + 1 + random.nextFloat(), z + random.nextFloat(), 0.0F, 0.0F, 0.0F); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling portal FX packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.DIGIT_UPDATE.id) - { - try { - int index = dataStream.readInt(); - int digit = dataStream.readInt(); - - ItemStack currentStack = entityplayer.getCurrentEquippedItem(); - - if(currentStack != null && currentStack.getItem() instanceof ItemPortableTeleporter) - { - ItemPortableTeleporter item = (ItemPortableTeleporter)currentStack.getItem(); - item.setDigit(currentStack, index, digit); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling digit update packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.STATUS_UPDATE.id) - { - try { - ItemStack currentStack = entityplayer.getCurrentEquippedItem(); - - if(currentStack != null && currentStack.getItem() instanceof ItemPortableTeleporter) - { - ItemPortableTeleporter item = (ItemPortableTeleporter)currentStack.getItem(); - item.setStatus(currentStack, dataStream.readInt()); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling status update packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.PORTABLE_TELEPORT.id) - { - try { - if(entityplayer instanceof EntityPlayerMP) - { - EntityPlayerMP entityPlayerMP = (EntityPlayerMP)entityplayer; - ItemStack itemstack = entityPlayerMP.getCurrentEquippedItem(); - - if(itemstack != null && itemstack.getItem() instanceof ItemPortableTeleporter) - { - ItemPortableTeleporter item = (ItemPortableTeleporter)itemstack.getItem(); - - if(item.getStatus(itemstack) == 1) - { - Object3D coords = MekanismUtils.getClosestCoords(new Teleporter.Code(item.getDigit(itemstack, 0), item.getDigit(itemstack, 1), item.getDigit(itemstack, 2), item.getDigit(itemstack, 3)), entityPlayerMP); - - item.onProvide(new ElectricityPack(item.calculateEnergyCost(entityPlayerMP, coords)/120, 120), itemstack); - - if(entityPlayerMP.worldObj.provider.dimensionId != coords.dimensionId) - { - entityPlayerMP.travelToDimension(coords.dimensionId); - } - - entityPlayerMP.playerNetServerHandler.setPlayerLocation(coords.xCoord+0.5, coords.yCoord+1, coords.zCoord+0.5, entityPlayerMP.rotationYaw, entityPlayerMP.rotationPitch); - - entityplayer.worldObj.playSoundAtEntity(entityplayer, "mob.endermen.portal", 1.0F, 1.0F); - sendPortalFX(coords.xCoord, coords.yCoord, coords.zCoord, coords.dimensionId); - } - } - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling portable teleport packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.DATA_REQUEST.id) - { - try { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - int id = dataStream.readInt(); - - World world = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(id); - - if(world != null && world.getBlockTileEntity(x, y, z) instanceof ITileNetwork) - { - sendTileEntityPacketToClients(world.getBlockTileEntity(x, y, z), 0, ((ITileNetwork)world.getBlockTileEntity(x, y, z)).getNetworkedData(new ArrayList())); - } - } catch (Exception e) { - System.err.println("[Mekanism] Error while handling data request packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.CONFIGURATOR_STATE.id) - { - try { - int state = dataStream.readInt(); - - EntityPlayerMP entityPlayerMP = (EntityPlayerMP)entityplayer; - ItemStack itemstack = entityPlayerMP.getCurrentEquippedItem(); - - if(itemstack != null && itemstack.getItem() instanceof ItemConfigurator) - { - ((ItemConfigurator)itemstack.getItem()).setState(itemstack, (byte)state); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling configurator state packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.ELECTRIC_BOW_STATE.id) - { - try { - boolean state = dataStream.readInt() == 1; - - EntityPlayerMP entityPlayerMP = (EntityPlayerMP)entityplayer; - ItemStack itemstack = entityPlayerMP.getCurrentEquippedItem(); - - if(itemstack != null && itemstack.getItem() instanceof ItemElectricBow) - { - ((ItemElectricBow)itemstack.getItem()).setFireState(itemstack, state); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling electric bow state packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.ELECTRIC_CHEST_SERVER_OPEN.id) - { - try { - boolean isBlock = dataStream.readBoolean(); - boolean useEnergy = dataStream.readBoolean(); - - if(isBlock) - { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - TileEntityElectricChest tileEntity = (TileEntityElectricChest)entityplayer.worldObj.getBlockTileEntity(x, y, z); - - if(useEnergy) - { - tileEntity.setEnergy(tileEntity.getEnergy() - 100); - } - - MekanismUtils.openElectricChestGui((EntityPlayerMP)entityplayer, tileEntity, null, true); - } - else { - ItemStack stack = entityplayer.getCurrentEquippedItem(); - - if(stack != null && stack.getItem() instanceof IElectricChest && ((IElectricChest)stack.getItem()).isElectricChest(stack)) - { - if(useEnergy) - { - ((IEnergizedItem)stack.getItem()).setEnergy(stack, ((IEnergizedItem)stack.getItem()).getEnergy(stack) - 100); - } - - InventoryElectricChest inventory = new InventoryElectricChest(entityplayer); - MekanismUtils.openElectricChestGui((EntityPlayerMP)entityplayer, null, inventory, false); - } - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling electric chest open packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.ELECTRIC_CHEST_CLIENT_OPEN.id) - { - try { - int id = dataStream.readInt(); - int windowId = dataStream.readInt(); - boolean isBlock = dataStream.readBoolean(); - - int x = 0; - int y = 0; - int z = 0; - - if(isBlock) - { - x = dataStream.readInt(); - y = dataStream.readInt(); - z = dataStream.readInt(); - } - - Mekanism.proxy.openElectricChest(entityplayer, id, windowId, isBlock, x, y, z); - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling electric chest open packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.ELECTRIC_CHEST_PASSWORD.id) - { - try { - boolean isBlock = dataStream.readBoolean(); - String password = dataStream.readUTF(); - - if(isBlock) - { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - TileEntityElectricChest tileEntity = (TileEntityElectricChest)entityplayer.worldObj.getBlockTileEntity(x, y, z); - tileEntity.password = password; - tileEntity.authenticated = true; - } - else { - ItemStack stack = entityplayer.getCurrentEquippedItem(); - - if(stack != null && stack.getItem() instanceof IElectricChest && ((IElectricChest)stack.getItem()).isElectricChest(stack)) - { - ((IElectricChest)stack.getItem()).setPassword(stack, password); - ((IElectricChest)stack.getItem()).setAuthenticated(stack, true); - } - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling electric chest password packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.ELECTRIC_CHEST_LOCK.id) - { - try { - boolean isBlock = dataStream.readBoolean(); - boolean locked = dataStream.readBoolean(); - - if(isBlock) - { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - TileEntityElectricChest tileEntity = (TileEntityElectricChest)entityplayer.worldObj.getBlockTileEntity(x, y, z); - tileEntity.locked = locked; - } - else { - ItemStack stack = entityplayer.getCurrentEquippedItem(); - - if(stack != null && stack.getItem() instanceof IElectricChest && ((IElectricChest)stack.getItem()).isElectricChest(stack)) - { - ((IElectricChest)stack.getItem()).setLocked(stack, locked); - } - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling electric chest password packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.LIQUID_TRANSFER_UPDATE.id) - { - try { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - TileEntity tileEntity = entityplayer.worldObj.getBlockTileEntity(x, y, z); - LiquidStack liquidStack = new LiquidStack(dataStream.readInt(), dataStream.readInt(), dataStream.readInt()); - - if(tileEntity != null) - { - new LiquidTransferProtocol(tileEntity, null, liquidStack).clientUpdate(); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling liquid transfer update packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.ENERGY_TRANSFER_UPDATE.id) - { - try { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - TileEntity tileEntity = entityplayer.worldObj.getBlockTileEntity(x, y, z); - - if(tileEntity != null) - { - new EnergyTransferProtocol(tileEntity, null, new ArrayList()).clientUpdate(); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling energy transfer update packet."); - e.printStackTrace(); - } - } - else if(packetType == EnumPacketType.GAS_TRANSFER_UPDATE.id) - { - try { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - EnumGas type = EnumGas.getFromName(dataStream.readUTF()); - - TileEntity tileEntity = entityplayer.worldObj.getBlockTileEntity(x, y, z); - - if(tileEntity != null) - { - new GasTransferProtocol(tileEntity, null, type, 0).clientUpdate(); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling gas transfer update packet."); - e.printStackTrace(); - } - } - /*else if(packetType == EnumPacketType.ELECTROLYTIC_SEPARATOR_PARTICLE.id) - { - try { - int x = dataStream.readInt(); - int y = dataStream.readInt(); - int z = dataStream.readInt(); - - TileEntityElectrolyticSeparator tileEntity = (TileEntityElectrolyticSeparator)entityplayer.worldObj.getBlockTileEntity(x, y, z); - - if(tileEntity != null) - { - tileEntity.spawnParticle(); - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling electrolytic separator particle packet."); - e.printStackTrace(); - } - }*/ - else if(packetType == EnumPacketType.ROBIT.id) - { - try { - int subType = dataStream.readInt(); - - if(subType == 0) - { - int type = dataStream.readInt(); - int id = dataStream.readInt(); - - if(type == 0) - { - entityplayer.openGui(Mekanism.instance, 21, entityplayer.worldObj, id, 0, 0); - } - else if(type == 1) - { - entityplayer.openGui(Mekanism.instance, 22, entityplayer.worldObj, id, 0, 0); - } - else if(type == 2) - { - entityplayer.openGui(Mekanism.instance, 23, entityplayer.worldObj, id, 0, 0); - } - else if(type == 3) - { - entityplayer.openGui(Mekanism.instance, 24, entityplayer.worldObj, id, 0, 0); - } - else if(type == 4) - { - entityplayer.openGui(Mekanism.instance, 25, entityplayer.worldObj, id, 0, 0); - } - } - else if(subType == 1) - { - int id = dataStream.readInt(); - - EntityRobit robit = (EntityRobit)entityplayer.worldObj.getEntityByID(id); - - if(robit != null) - { - robit.setFollowing(!robit.getFollowing()); - } - } - else if(subType == 2) - { - String name = dataStream.readUTF(); - int id = dataStream.readInt(); - - EntityRobit robit = (EntityRobit)entityplayer.worldObj.getEntityByID(id); - - if(robit != null) - { - robit.setName(name); - } - } - else if(subType == 3) - { - int id = dataStream.readInt(); - - EntityRobit robit = (EntityRobit)entityplayer.worldObj.getEntityByID(id); - - if(robit != null) - { - robit.goHome(); - } - } - else if(subType == 4) - { - int id = dataStream.readInt(); - - EntityRobit robit = (EntityRobit)entityplayer.worldObj.getEntityByID(id); - - if(robit != null) - { - robit.setDropPickup(!robit.getDropPickup()); - } - } - } catch(Exception e) { - System.err.println("[Mekanism] Error while handling robit packet."); - e.printStackTrace(); - } - } + if(packets.get(packetIndex) == null) + { + System.err.println("[Mekanism] Received unknown packet identifier '" + packetIndex + ".' Ignorning!"); + return; + } + + IMekanismPacket packetType = packets.get(packetIndex).newInstance(); + + if(packetType == null) + { + System.err.println("[Mekanism] Unable to create instance of packet type '" + packetIndex + ".' Ignoring!"); + return; + } + + try { + packetType.read(dataStream, entityplayer, entityplayer.worldObj); + } catch(Exception e) { + System.err.println("[Mekanism] Error while reading '" + packetType.getName() + "' packet."); + } } catch(Exception e) { System.err.println("[Mekanism] Error while handling packet."); e.printStackTrace(); @@ -555,296 +65,17 @@ public class PacketHandler implements IPacketHandler } } - /** - * Sends a packet from client to server with the TILE_ENTITY ID as well as an undefined amount of objects. - * While it won't give you an error, you cannot send anything other than integers or booleans. This can - * also be sent with a defined range, so players far away won't receive the packet. - * @param sender - sending tile entity - * @param distance - distance to send the packet, 0 if infinite range - * @param dataValues - data to send - */ - public static void sendTileEntityPacketToServer(TileEntity sender, ArrayList dataValues) + public static void registerPacket(Class packetClass) { - sendPacketData(EnumPacketType.TILE_ENTITY, Transmission.SERVER, sender.xCoord, sender.yCoord, sender.zCoord, dataValues); - } - - /** - * Sends a packet from server to client with the TILE_ENTITY ID as well as an undefined amount of objects. - * This can also be sent with a defined range, so players far away won't receive the packet. - * @param sender - sending tile entity - * @param distance - distance to send the packet, 0 if infinite range - * @param dataValues - data to send - */ - public static void sendTileEntityPacketToClients(TileEntity sender, double distance, ArrayList dataValues) - { - if(distance == 0) + for(Class iteration : packets) { - sendPacketData(EnumPacketType.TILE_ENTITY, Transmission.ALL_CLIENTS, sender.xCoord, sender.yCoord, sender.zCoord, dataValues); - } - else { - sendPacketData(EnumPacketType.TILE_ENTITY, Transmission.CLIENTS_RANGE, Object3D.get(sender), distance, sender.xCoord, sender.yCoord, sender.zCoord, dataValues); - } - } - - /** - * When the 'Access' button is clicked on the Control Panel's GUI, it both opens the client-side GUI, as well as - * send a packet to the server with enough data to open up the server-side object, or container. This packet does - * that function -- it sends over the data from IAccessibleGui (modClass, modInstance, guiId), and uses reflection - * to attempt and access the declared instance object from the mod's main class, which is also accessed using - * reflection. Upon being handled server-side, the data is put together, checked for NPEs, and then used inside - * EntityPlayer.openGui() along with the sent-over coords. - * @param modClass - * @param modInstance - * @param x - * @param y - * @param z - * @param guiId - */ - public static void sendGuiRequest(String modClass, String modInstance, int x, int y, int z, int guiId) - { - sendPacketData(EnumPacketType.CONTROL_PANEL, Transmission.SERVER, modClass, modInstance, x, y, z, guiId); - } - - /** - * Sends a portal effect packet to all clients in a radius around a teleporter. - * @param x - x coordinate of teleporter - * @param y - y coordinate of teleporter - * @param z - z coordinate of teleporter - * @param id - dimension ID of teleporter - */ - public static void sendPortalFX(int x, int y, int z, int id) - { - sendPacketData(EnumPacketType.PORTAL_FX, Transmission.CLIENTS_RANGE, new Object3D(x, y, z, id), 40D, x, y, z); - } - - /** - * Sends a digit update for a portable teleporter to the server as an integer. - * @param index - digit index - * @param digit - digit to send - */ - public static void sendDigitUpdate(int index, int digit) - { - sendPacketData(EnumPacketType.DIGIT_UPDATE, Transmission.SERVER, index, digit); - } - - /** - * Sends a status update for a portable teleporter to the client as a string. - * @param entityplayer - player who is using the teleporter - * @param status - status to send - */ - public static void sendStatusUpdate(EntityPlayer entityplayer, int status) - { - sendPacketData(EnumPacketType.STATUS_UPDATE, Transmission.SERVER, status); - } - - /** - * Sends a packet to a specified client requesting a certain electric chest GUI to be opened. - * @param player - the player to send the chest-opening packet to - * @param tileEntity - TileEntity of the chest, if it's not an item - * @param i - GUI type: 0 if regular electric chest, 1 if password prompt, 2 if password modify - * @param windowId - Minecraft-based container window identifier - * @param isBlock - whether or not this electric chest is in it's block form - */ - public static void sendChestOpenToPlayer(EntityPlayer player, TileEntity tileEntity, int i, int windowId, boolean isBlock) - { - ArrayList dataValues = new ArrayList(); - - dataValues.add(player); - - dataValues.add(i); - dataValues.add(windowId); - dataValues.add(isBlock); - - if(isBlock) - { - dataValues.add(tileEntity.xCoord); - dataValues.add(tileEntity.yCoord); - dataValues.add(tileEntity.zCoord); + if(iteration == packetClass) + { + return; + } } - sendPacketData(EnumPacketType.ELECTRIC_CHEST_CLIENT_OPEN, Transmission.SINGLE_CLIENT, dataValues); - } - - /** - * Sends a packet to the server requesting an electric chest to be opened. - * @param tileEntity - TileEntity of the chest, if it's not an item - * @param isBlock - whether or not this electric chest is in it's block form - * @param useEnergy - whether or not to use chest-opening energy (100 J) - */ - public static void sendChestOpen(TileEntity tileEntity, boolean isBlock, boolean useEnergy) - { - ArrayList dataValues = new ArrayList(); - - dataValues.add(isBlock); - dataValues.add(useEnergy); - - if(isBlock) - { - dataValues.add(tileEntity.xCoord); - dataValues.add(tileEntity.yCoord); - dataValues.add(tileEntity.zCoord); - } - - sendPacketData(EnumPacketType.ELECTRIC_CHEST_SERVER_OPEN, Transmission.SERVER, dataValues); - } - - /** - * Sends a packet to the server with a new 'password' value for an electric chest. - * @param tileEntity - TileEntity of the chest, if it's not an item - * @param password - new value - * @param isBlock - whether or not this electric chest is in it's block form - */ - public static void sendPasswordChange(TileEntity tileEntity, String password, boolean isBlock) - { - ArrayList dataValues = new ArrayList(); - - dataValues.add(isBlock); - dataValues.add(password); - - if(isBlock) - { - dataValues.add(tileEntity.xCoord); - dataValues.add(tileEntity.yCoord); - dataValues.add(tileEntity.zCoord); - } - - sendPacketData(EnumPacketType.ELECTRIC_CHEST_PASSWORD, Transmission.SERVER, dataValues); - } - - /** - * Sends a packet to the server with a new 'locked' value for an electric chest. - * @param tileEntity - TileEntity of the chest, if it's not an item - * @param locked - new value - * @param isBlock - whether or not this electric chest is in it's block form - */ - public static void sendLockChange(TileEntity tileEntity, boolean locked, boolean isBlock) - { - ArrayList dataValues = new ArrayList(); - - dataValues.add(isBlock); - dataValues.add(locked); - - if(isBlock) - { - dataValues.add(tileEntity.xCoord); - dataValues.add(tileEntity.yCoord); - dataValues.add(tileEntity.zCoord); - } - - sendPacketData(EnumPacketType.ELECTRIC_CHEST_LOCK, Transmission.SERVER, dataValues); - } - - /** - * Sends a packet to the client-side with a LiquidTransferProtocol's information. Used for render updates. - * @param head - head TileEntity of the calculation - * @param resource - the LiquidStack transferred by the server - */ - public static void sendLiquidTransferUpdate(TileEntity head, LiquidStack resource) - { - sendPacketData(EnumPacketType.LIQUID_TRANSFER_UPDATE, Transmission.ALL_CLIENTS, head.xCoord, head.yCoord, head.zCoord, resource.itemID, resource.amount, resource.itemMeta); - } - - /** - * Sends a packet to the client-side with an EnergyTransferProtocol's information. Used for render updates. - * @param head - head TileEntity of the calculation - */ - public static void sendEnergyTransferUpdate(TileEntity head) - { - sendPacketData(EnumPacketType.ENERGY_TRANSFER_UPDATE, Transmission.ALL_CLIENTS, head.xCoord, head.yCoord, head.zCoord); - } - - /** - * Sends a packet to the client-side with a GasTransferProtocol's information. Used for render updates. - * @param head - head TileEntity of the calculation - */ - public static void sendGasTransferUpdate(TileEntity head, EnumGas type) - { - sendPacketData(EnumPacketType.GAS_TRANSFER_UPDATE, Transmission.ALL_CLIENTS, head.xCoord, head.yCoord, head.zCoord, type.name); - } - - /** - * Sends a request to clients near an Electrolytic Separator to emit a gas dump particle. - * @param tileEntity - TileEntity who is emitting the particle - */ - /*public static void sendElectrolyticSeparatorParticle(TileEntityElectrolyticSeparator tileEntity) - { - sendPacketData(EnumPacketType.ELECTROLYTIC_SEPARATOR_PARTICLE, Transmission.CLIENTS_RANGE, Object3D.get(tileEntity), 40D, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - }*/ - - /** - * Sends a Robit GUI packet to the server. - * @param type - GUI type to open - * @param id - the robit's entity ID - */ - public static void sendRobitGui(int type, int id) - { - sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, 0, type, id); - } - - /** - * Sends a Robit name update packet to the server. - * @param value - new follow value - * @param id - the robit's entity ID - */ - public static void sendNameUpdate(String name, int id) - { - sendPacketData(EnumPacketType.ROBIT, Transmission.SERVER, 2, name, id); - } - - /** - * This method is used to request a data update from the server in order to update a client-sided tile entity. - * The server will receive this request, and then send a packet to the client with all the needed information. - * @param tileEntity - */ - public static void sendDataRequest(TileEntity tileEntity) - { - sendPacketData(EnumPacketType.DATA_REQUEST, Transmission.SERVER, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord, tileEntity.worldObj.provider.dimensionId); - } - - /** - * Sends the server the defined packet type with an undefined amount of data. - * @param type - packet type - * @param dataValues - data to send - */ - public static void sendPacketData(EnumPacketType type, Transmission trans, Object... dataValues) - { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - DataOutputStream data = new DataOutputStream(bytes); - - try { - data.writeInt(type.id); - encode(dataValues, data, trans.parameters); - } catch (IOException e) { - System.out.println("[Mekanism] An error occured while writing packet data."); - e.printStackTrace(); - } - - Packet250CustomPayload packet = new Packet250CustomPayload(); - packet.channel = "Mekanism"; - packet.data = bytes.toByteArray(); - packet.length = packet.data.length; - - switch(trans) - { - case SERVER: - PacketDispatcher.sendPacketToServer(packet); - break; - case ALL_CLIENTS: - PacketDispatcher.sendPacketToAllPlayers(packet); - break; - case CLIENTS_RANGE: - Object3D obj = (Object3D)dataValues[0]; - PacketDispatcher.sendPacketToAllAround(obj.xCoord, obj.yCoord, obj.zCoord, (Double)dataValues[1], obj.dimensionId, packet); - break; - case SINGLE_CLIENT: - ((EntityPlayerMP)dataValues[0]).playerNetServerHandler.sendPacketToPlayer(packet); - break; - } - - if(Mekanism.logPackets) - { - System.out.println("[Mekanism] Sent data int packet '" + type.id + "' to server"); - } + packets.add(packetClass); } public static void encode(Object[] dataValues, DataOutputStream output, int ignore) @@ -908,6 +139,78 @@ public class PacketHandler implements IPacketHandler } } + public static void sendPacket(Transmission trans, IMekanismPacket packetType, Object... transParams) + { + if(packetType == null) + { + System.err.println("[Mekanism] Attempted to send null packet, ignoring!"); + return; + } + + if(!packets.contains(packetType.getClass())) + { + System.err.println("[Mekanism] Attempted to send unregistered packet '" + packetType.getName() + ",' ignoring!"); + return; + } + + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + DataOutputStream data = new DataOutputStream(bytes); + + try { + data.writeInt(packets.indexOf(packetType.getClass())); + packetType.write(data); + } catch(Exception e) { + System.err.println("[Mekanism] Error while encoding packet data."); + e.printStackTrace(); + } + + Packet250CustomPayload packet = new Packet250CustomPayload(); + packet.channel = "Mekanism"; + packet.data = bytes.toByteArray(); + packet.length = packet.data.length; + + switch(trans) + { + case SERVER: + PacketDispatcher.sendPacketToServer(packet); + break; + case ALL_CLIENTS: + PacketDispatcher.sendPacketToAllPlayers(packet); + break; + case CLIENTS_RANGE: + Object3D obj = (Object3D)transParams[0]; + PacketDispatcher.sendPacketToAllAround(obj.xCoord, obj.yCoord, obj.zCoord, (Double)transParams[1], obj.dimensionId, packet); + break; + case SINGLE_CLIENT: + ((EntityPlayerMP)transParams[0]).playerNetServerHandler.sendPacketToPlayer(packet); + break; + } + + log(trans, packetType, transParams); + } + + private static void log(Transmission trans, IMekanismPacket packetType, Object[] transParams) + { + if(Mekanism.logPackets) + { + switch(trans) + { + case SERVER: + System.out.println("[Mekanism] Sent '" + packetType.getName() + "' packet to server."); + break; + case ALL_CLIENTS: + System.out.println("[Mekanism] Sent '" + packetType.getName() + "' packet to all clients."); + break; + case CLIENTS_RANGE: + System.out.println("[Mekanism] Sent '" + packetType.getName() + "' packet to clients in a " + (Double)transParams[1] + " block range."); + break; + case SINGLE_CLIENT: + System.out.println("[Mekanism] Sent '" + packetType.getName() + "' packet to " + ((EntityPlayer)transParams[0]).username); + break; + } + } + } + public static enum Transmission { /** No additional parameters. */ @@ -929,13 +232,4 @@ public class PacketHandler implements IPacketHandler parameters = params; } } - - public static enum RobitPacket - { - GUI, - FOLLOW, - NAME, - GO_HOME, - DROP_PICKUP; - } } diff --git a/src/minecraft/mekanism/common/TileEntityBasicBlock.java b/src/minecraft/mekanism/common/TileEntityBasicBlock.java index 289a9e4d9..5b07e02b3 100644 --- a/src/minecraft/mekanism/common/TileEntityBasicBlock.java +++ b/src/minecraft/mekanism/common/TileEntityBasicBlock.java @@ -6,6 +6,10 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Set; +import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketDataRequest; +import mekanism.common.network.PacketTileEntity; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -37,7 +41,7 @@ public abstract class TileEntityBasicBlock extends TileEntity implements IWrench { if(playersUsing.size() > 0) { - PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList())), Object3D.get(this), 50D); } packetTick++; @@ -64,7 +68,7 @@ public abstract class TileEntityBasicBlock extends TileEntity implements IWrench if(worldObj.isRemote) { - PacketHandler.sendDataRequest(this); + PacketHandler.sendPacket(Transmission.SERVER, new PacketDataRequest(Object3D.get(this))); } } @@ -107,7 +111,7 @@ public abstract class TileEntityBasicBlock extends TileEntity implements IWrench facing = direction; } - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } /** diff --git a/src/minecraft/mekanism/common/TileEntityBasicMachine.java b/src/minecraft/mekanism/common/TileEntityBasicMachine.java index d91e46aff..f36fd76fa 100644 --- a/src/minecraft/mekanism/common/TileEntityBasicMachine.java +++ b/src/minecraft/mekanism/common/TileEntityBasicMachine.java @@ -8,8 +8,11 @@ import java.util.ArrayList; import mekanism.api.IConfigurable; import mekanism.api.IStrictEnergyAcceptor; import mekanism.api.IUpgradeManagement; +import mekanism.api.Object3D; import mekanism.api.SideData; import mekanism.client.IHasSound; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; @@ -265,7 +268,7 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp if(prevActive != active) { - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } prevActive = active; diff --git a/src/minecraft/mekanism/common/TileEntityBoundingBlock.java b/src/minecraft/mekanism/common/TileEntityBoundingBlock.java index bdc098934..60c614548 100644 --- a/src/minecraft/mekanism/common/TileEntityBoundingBlock.java +++ b/src/minecraft/mekanism/common/TileEntityBoundingBlock.java @@ -4,6 +4,10 @@ import java.util.ArrayList; import com.google.common.io.ByteArrayDataInput; +import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketDataRequest; +import mekanism.common.network.PacketTileEntity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -21,7 +25,7 @@ public class TileEntityBoundingBlock extends TileEntity implements ITileNetwork mainY = y; mainZ = z; - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } } @@ -32,7 +36,7 @@ public class TileEntityBoundingBlock extends TileEntity implements ITileNetwork if(worldObj.isRemote) { - PacketHandler.sendDataRequest(this); + PacketHandler.sendPacket(Transmission.SERVER, new PacketDataRequest(Object3D.get(this))); } } diff --git a/src/minecraft/mekanism/common/TileEntityChargepad.java b/src/minecraft/mekanism/common/TileEntityChargepad.java index ada8f2baf..7107534ab 100644 --- a/src/minecraft/mekanism/common/TileEntityChargepad.java +++ b/src/minecraft/mekanism/common/TileEntityChargepad.java @@ -17,7 +17,10 @@ import universalelectricity.core.item.IItemElectric; import mekanism.api.EnergizedItemManager; import mekanism.api.IEnergizedItem; import mekanism.api.IStrictEnergyAcceptor; +import mekanism.api.Object3D; import mekanism.client.IHasSound; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -131,7 +134,7 @@ public class TileEntityChargepad extends TileEntityElectricBlock implements IAct } else if(Mekanism.hooks.IC2Loaded && itemstack.getItem() instanceof IElectricItem) { - double sent = ElectricItem.charge(itemstack, (int)(getEnergy()*Mekanism.TO_IC2), 3, false, false)*Mekanism.FROM_IC2; + double sent = ElectricItem.manager.charge(itemstack, (int)(getEnergy()*Mekanism.TO_IC2), 3, false, false)*Mekanism.FROM_IC2; setEnergy(getEnergy() - sent); } else if(itemstack.getItem() instanceof IChargeableItem) @@ -177,7 +180,7 @@ public class TileEntityChargepad extends TileEntityElectricBlock implements IAct if(prevActive != active) { - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } prevActive = active; diff --git a/src/minecraft/mekanism/common/TileEntityControlPanel.java b/src/minecraft/mekanism/common/TileEntityControlPanel.java index d642c8b7f..bd45fd3b0 100644 --- a/src/minecraft/mekanism/common/TileEntityControlPanel.java +++ b/src/minecraft/mekanism/common/TileEntityControlPanel.java @@ -2,6 +2,9 @@ package mekanism.common; import java.util.ArrayList; +import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -28,11 +31,11 @@ public class TileEntityControlPanel extends TileEntity implements ITileNetwork if(packetTick == 5 && !worldObj.isRemote) { - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } if(packetTick % 20 == 0 && worldObj.isRemote) { - PacketHandler.sendTileEntityPacketToServer(this, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } } diff --git a/src/minecraft/mekanism/common/TileEntityDynamicTank.java b/src/minecraft/mekanism/common/TileEntityDynamicTank.java index c0687b37c..90b6ceeb0 100644 --- a/src/minecraft/mekanism/common/TileEntityDynamicTank.java +++ b/src/minecraft/mekanism/common/TileEntityDynamicTank.java @@ -5,12 +5,13 @@ import java.util.HashMap; import java.util.Map; import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.SynchronizedTankData.ValveData; +import mekanism.common.network.PacketTileEntity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.liquids.LiquidContainerRegistry; @@ -146,7 +147,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock if(structure != null && isRendering && packetTick % 20 == 0) { sendStructure = true; - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList())), Object3D.get(this), 50D); } if(prevStructure != (structure != null)) @@ -158,7 +159,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock sendStructure = true; } - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } prevStructure = structure != null; @@ -225,7 +226,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock structure.liquidStored = null; } - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } } } @@ -284,7 +285,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock } } - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } } } @@ -422,7 +423,7 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock if(tileEntity != null && tileEntity.isRendering) { - PacketHandler.sendTileEntityPacketToClients(tileEntity, 0, tileEntity.getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(tileEntity), tileEntity.getNetworkedData(new ArrayList()))); } } } diff --git a/src/minecraft/mekanism/common/TileEntityElectricPump.java b/src/minecraft/mekanism/common/TileEntityElectricPump.java index 03e9aa132..4814e72a4 100644 --- a/src/minecraft/mekanism/common/TileEntityElectricPump.java +++ b/src/minecraft/mekanism/common/TileEntityElectricPump.java @@ -13,6 +13,8 @@ import java.util.Set; import mekanism.api.IStrictEnergyAcceptor; import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -98,7 +100,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I { if(suck(true)) { - PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList())), Object3D.get(this), 50D); } clean(true); diff --git a/src/minecraft/mekanism/common/TileEntityFactory.java b/src/minecraft/mekanism/common/TileEntityFactory.java index 7846d3c21..d1960223d 100644 --- a/src/minecraft/mekanism/common/TileEntityFactory.java +++ b/src/minecraft/mekanism/common/TileEntityFactory.java @@ -10,11 +10,14 @@ import mekanism.api.EnumColor; import mekanism.api.IConfigurable; import mekanism.api.IStrictEnergyAcceptor; import mekanism.api.IUpgradeManagement; +import mekanism.api.Object3D; import mekanism.api.SideData; import mekanism.client.IHasSound; import mekanism.common.BlockMachine.MachineType; import mekanism.common.IFactory.RecipeType; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.Tier.FactoryTier; +import mekanism.common.network.PacketTileEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -680,7 +683,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IEnerg if(prevActive != active) { - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } prevActive = active; diff --git a/src/minecraft/mekanism/common/TileEntityMechanicalPipe.java b/src/minecraft/mekanism/common/TileEntityMechanicalPipe.java index 099785d9f..d6ecaaac0 100644 --- a/src/minecraft/mekanism/common/TileEntityMechanicalPipe.java +++ b/src/minecraft/mekanism/common/TileEntityMechanicalPipe.java @@ -4,6 +4,9 @@ import java.util.ArrayList; import java.util.Arrays; import mekanism.api.IMechanicalPipe; +import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketDataRequest; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -104,7 +107,7 @@ public class TileEntityMechanicalPipe extends TileEntity implements IMechanicalP if(worldObj.isRemote) { - PacketHandler.sendDataRequest(this); + PacketHandler.sendPacket(Transmission.SERVER, new PacketDataRequest(Object3D.get(this))); } } diff --git a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java index fdf82ff85..0b78564a2 100644 --- a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java +++ b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java @@ -15,10 +15,13 @@ import mekanism.api.InfuseRegistry; import mekanism.api.InfuseType; import mekanism.api.InfusionInput; import mekanism.api.InfusionOutput; +import mekanism.api.Object3D; import mekanism.api.SideData; import mekanism.client.IHasSound; import mekanism.common.BlockMachine.MachineType; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.RecipeHandler.Recipe; +import mekanism.common.network.PacketTileEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -571,7 +574,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem if(prevActive != active) { - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } prevActive = active; diff --git a/src/minecraft/mekanism/common/TileEntityTeleporter.java b/src/minecraft/mekanism/common/TileEntityTeleporter.java index c1960da40..8bf18a9b9 100644 --- a/src/minecraft/mekanism/common/TileEntityTeleporter.java +++ b/src/minecraft/mekanism/common/TileEntityTeleporter.java @@ -10,6 +10,8 @@ import java.util.List; import mekanism.api.EnumColor; import mekanism.api.IStrictEnergyAcceptor; import mekanism.api.Object3D; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketPortalFX; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -207,7 +209,7 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements IEn for(Object3D coords : Mekanism.teleporters.get(code)) { - PacketHandler.sendPortalFX(coords.xCoord, coords.yCoord, coords.zCoord, coords.dimensionId); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketPortalFX(coords), coords, 40D); } } } diff --git a/src/minecraft/mekanism/common/network/IMekanismPacket.java b/src/minecraft/mekanism/common/network/IMekanismPacket.java new file mode 100644 index 000000000..6b28d5203 --- /dev/null +++ b/src/minecraft/mekanism/common/network/IMekanismPacket.java @@ -0,0 +1,17 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public interface IMekanismPacket +{ + public String getName(); + + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception; + + public void write(DataOutputStream dataStream) throws Exception; +} diff --git a/src/minecraft/mekanism/common/network/PacketConfiguratorState.java b/src/minecraft/mekanism/common/network/PacketConfiguratorState.java new file mode 100644 index 000000000..dd36a47a5 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketConfiguratorState.java @@ -0,0 +1,48 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.common.ItemConfigurator; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketConfiguratorState implements IMekanismPacket +{ + public byte state; + + public PacketConfiguratorState(byte b) + { + state = b; + } + + public PacketConfiguratorState() {} + + @Override + public String getName() + { + return "ConfiguratorState"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + byte state = dataStream.readByte(); + + ItemStack itemstack = player.getCurrentEquippedItem(); + + if(itemstack != null && itemstack.getItem() instanceof ItemConfigurator) + { + ((ItemConfigurator)itemstack.getItem()).setState(itemstack, (byte)state); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeByte(state); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketControlPanel.java b/src/minecraft/mekanism/common/network/PacketControlPanel.java new file mode 100644 index 000000000..b29b4aa81 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketControlPanel.java @@ -0,0 +1,85 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.api.Object3D; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketControlPanel implements IMekanismPacket +{ + public String modClass; + public String modInstance; + + public Object3D object3D; + + public int guiId; + + public PacketControlPanel(String mClass, String mInstance, Object3D obj, int id) + { + modClass = mClass; + modInstance = mInstance; + + object3D = obj; + + guiId = id; + } + + public PacketControlPanel() {} + + @Override + public String getName() + { + return "ControlPanel"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + String modClass = dataStream.readUTF(); + String modInstance = dataStream.readUTF(); + + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + int guiId = dataStream.readInt(); + + Class mod = Class.forName(modClass); + + if(mod == null) + { + System.err.println("[Mekanism] Incorrectly implemented IAccessibleGui -- ignoring handler packet."); + System.err.println(" ~ Unable to locate class '" + modClass + ".'"); + System.err.println(" ~ GUI Container may not function correctly."); + return; + } + + Object instance = mod.getField(modInstance).get(null); + + if(instance == null) + { + System.err.println("[Mekanism] Incorrectly implemented IAccessibleGui -- ignoring handler packet."); + System.err.println(" ~ Unable to locate instance object '" + modInstance + ".'"); + System.err.println(" ~ GUI Container may not function correctly."); + return; + } + + player.openGui(instance, guiId, world, x, y, z); + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeUTF(modClass); + dataStream.writeUTF(modInstance); + + dataStream.writeInt(object3D.xCoord); + dataStream.writeInt(object3D.yCoord); + dataStream.writeInt(object3D.zCoord); + + dataStream.writeInt(guiId); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketDataRequest.java b/src/minecraft/mekanism/common/network/PacketDataRequest.java new file mode 100644 index 000000000..92e4ad38c --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketDataRequest.java @@ -0,0 +1,60 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; +import java.util.ArrayList; + +import mekanism.api.Object3D; +import mekanism.common.ITileNetwork; +import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +import cpw.mods.fml.common.FMLCommonHandler; + +public class PacketDataRequest implements IMekanismPacket +{ + public Object3D object3D; + + public PacketDataRequest(Object3D obj) + { + object3D = obj; + } + + public PacketDataRequest() {} + + @Override + public String getName() + { + return "DataRequest"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + int id = dataStream.readInt(); + + World worldServer = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(id); + + if(worldServer != null && worldServer.getBlockTileEntity(x, y, z) instanceof ITileNetwork) + { + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(worldServer.getBlockTileEntity(x, y, z)), ((ITileNetwork)worldServer.getBlockTileEntity(x, y, z)).getNetworkedData(new ArrayList()))); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(object3D.xCoord); + dataStream.writeInt(object3D.yCoord); + dataStream.writeInt(object3D.zCoord); + + dataStream.writeInt(object3D.dimensionId); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketDigitUpdate.java b/src/minecraft/mekanism/common/network/PacketDigitUpdate.java new file mode 100644 index 000000000..d23e2f182 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketDigitUpdate.java @@ -0,0 +1,52 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.common.ItemPortableTeleporter; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketDigitUpdate implements IMekanismPacket +{ + public int index; + public int digit; + + public PacketDigitUpdate(int i, int j) + { + index = i; + digit = j; + } + + public PacketDigitUpdate() {} + + @Override + public String getName() + { + return "DigitUpdate"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + int index = dataStream.readInt(); + int digit = dataStream.readInt(); + + ItemStack currentStack = player.getCurrentEquippedItem(); + + if(currentStack != null && currentStack.getItem() instanceof ItemPortableTeleporter) + { + ItemPortableTeleporter item = (ItemPortableTeleporter)currentStack.getItem(); + item.setDigit(currentStack, index, digit); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(index); + dataStream.writeInt(digit); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketElectricBowState.java b/src/minecraft/mekanism/common/network/PacketElectricBowState.java new file mode 100644 index 000000000..7a02cb04d --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketElectricBowState.java @@ -0,0 +1,48 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.common.ItemElectricBow; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketElectricBowState implements IMekanismPacket +{ + public boolean fireMode; + + public PacketElectricBowState(boolean fire) + { + fireMode = fire; + } + + public PacketElectricBowState() {} + + @Override + public String getName() + { + return "ElectricBowState"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + boolean state = dataStream.readBoolean(); + + ItemStack itemstack = player.getCurrentEquippedItem(); + + if(itemstack != null && itemstack.getItem() instanceof ItemElectricBow) + { + ((ItemElectricBow)itemstack.getItem()).setFireState(itemstack, state); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeBoolean(fireMode); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketElectricChest.java b/src/minecraft/mekanism/common/network/PacketElectricChest.java new file mode 100644 index 000000000..36ea2f884 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketElectricChest.java @@ -0,0 +1,289 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.api.IEnergizedItem; +import mekanism.api.Object3D; +import mekanism.common.IElectricChest; +import mekanism.common.InventoryElectricChest; +import mekanism.common.Mekanism; +import mekanism.common.MekanismUtils; +import mekanism.common.TileEntityElectricChest; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketElectricChest implements IMekanismPacket +{ + public ElectricChestPacketType activeType; + + public boolean isBlock; + + public boolean locked; + + public String password; + + public int guiType; + public int windowId; + + public boolean useEnergy; + + public Object3D obj; + + public PacketElectricChest(ElectricChestPacketType type, Object... params) + { + activeType = type; + + switch(activeType) + { + case LOCK: + locked = (Boolean)params[0]; + isBlock = (Boolean)params[1]; + + if(isBlock) + { + obj = (Object3D)params[2]; + } + + break; + case PASSWORD: + password = (String)params[0]; + isBlock = (Boolean)params[1]; + + if(isBlock) + { + obj = (Object3D)params[2]; + } + + break; + case CLIENT_OPEN: + guiType = (Integer)params[0]; + windowId = (Integer)params[1]; + isBlock = (Boolean)params[2]; + + if(isBlock) + { + obj = (Object3D)params[3]; + } + + break; + case SERVER_OPEN: + useEnergy = (Boolean)params[0]; + isBlock = (Boolean)params[1]; + + if(isBlock) + { + obj = (Object3D)params[2]; + } + + break; + } + } + + public PacketElectricChest() {} + + @Override + public String getName() + { + return "ElectricChest"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + ElectricChestPacketType packetType = ElectricChestPacketType.values()[dataStream.readInt()]; + + if(packetType == ElectricChestPacketType.SERVER_OPEN) + { + try { + boolean energy = dataStream.readBoolean(); + boolean block = dataStream.readBoolean(); + + if(block) + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + TileEntityElectricChest tileEntity = (TileEntityElectricChest)world.getBlockTileEntity(x, y, z); + + if(energy) + { + tileEntity.setEnergy(tileEntity.getEnergy() - 100); + } + + MekanismUtils.openElectricChestGui((EntityPlayerMP)player, tileEntity, null, true); + } + else { + ItemStack stack = player.getCurrentEquippedItem(); + + if(stack != null && stack.getItem() instanceof IElectricChest && ((IElectricChest)stack.getItem()).isElectricChest(stack)) + { + if(energy) + { + ((IEnergizedItem)stack.getItem()).setEnergy(stack, ((IEnergizedItem)stack.getItem()).getEnergy(stack) - 100); + } + + InventoryElectricChest inventory = new InventoryElectricChest(player); + MekanismUtils.openElectricChestGui((EntityPlayerMP)player, null, inventory, false); + } + } + } catch(Exception e) { + System.err.println("[Mekanism] Error while handling electric chest open packet."); + e.printStackTrace(); + } + } + else if(packetType == ElectricChestPacketType.CLIENT_OPEN) + { + try { + int type = dataStream.readInt(); + int id = dataStream.readInt(); + boolean block = dataStream.readBoolean(); + + int x = 0; + int y = 0; + int z = 0; + + if(block) + { + x = dataStream.readInt(); + y = dataStream.readInt(); + z = dataStream.readInt(); + } + + Mekanism.proxy.openElectricChest(player, type, id, block, x, y, z); + } catch(Exception e) { + System.err.println("[Mekanism] Error while handling electric chest open packet."); + e.printStackTrace(); + } + } + else if(packetType == ElectricChestPacketType.PASSWORD) + { + try { + String pass = dataStream.readUTF(); + boolean block = dataStream.readBoolean(); + + if(block) + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + TileEntityElectricChest tileEntity = (TileEntityElectricChest)world.getBlockTileEntity(x, y, z); + tileEntity.password = pass; + tileEntity.authenticated = true; + } + else { + ItemStack stack = player.getCurrentEquippedItem(); + + if(stack != null && stack.getItem() instanceof IElectricChest && ((IElectricChest)stack.getItem()).isElectricChest(stack)) + { + ((IElectricChest)stack.getItem()).setPassword(stack, pass); + ((IElectricChest)stack.getItem()).setAuthenticated(stack, true); + } + } + } catch(Exception e) { + System.err.println("[Mekanism] Error while handling electric chest password packet."); + e.printStackTrace(); + } + } + else if(packetType == ElectricChestPacketType.LOCK) + { + try { + boolean lock = dataStream.readBoolean(); + boolean block = dataStream.readBoolean(); + + if(block) + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + TileEntityElectricChest tileEntity = (TileEntityElectricChest)world.getBlockTileEntity(x, y, z); + tileEntity.locked = lock; + } + else { + ItemStack stack = player.getCurrentEquippedItem(); + + if(stack != null && stack.getItem() instanceof IElectricChest && ((IElectricChest)stack.getItem()).isElectricChest(stack)) + { + ((IElectricChest)stack.getItem()).setLocked(stack, lock); + } + } + } catch(Exception e) { + System.err.println("[Mekanism] Error while handling electric chest password packet."); + e.printStackTrace(); + } + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(activeType.ordinal()); + + switch(activeType) + { + case LOCK: + dataStream.writeBoolean(locked); + dataStream.writeBoolean(isBlock); + + if(isBlock) + { + dataStream.writeInt(obj.xCoord); + dataStream.writeInt(obj.yCoord); + dataStream.writeInt(obj.zCoord); + } + + break; + case PASSWORD: + dataStream.writeUTF(password); + dataStream.writeBoolean(isBlock); + + if(isBlock) + { + dataStream.writeInt(obj.xCoord); + dataStream.writeInt(obj.yCoord); + dataStream.writeInt(obj.zCoord); + } + + break; + case CLIENT_OPEN: + dataStream.writeInt(guiType); + dataStream.writeInt(windowId); + dataStream.writeBoolean(isBlock); + + if(isBlock) + { + dataStream.writeInt(obj.xCoord); + dataStream.writeInt(obj.yCoord); + dataStream.writeInt(obj.zCoord); + } + + break; + case SERVER_OPEN: + dataStream.writeBoolean(useEnergy); + dataStream.writeBoolean(isBlock); + + if(isBlock) + { + dataStream.writeInt(obj.xCoord); + dataStream.writeInt(obj.yCoord); + dataStream.writeInt(obj.zCoord); + } + + break; + } + } + + public static enum ElectricChestPacketType + { + LOCK, + PASSWORD, + CLIENT_OPEN, + SERVER_OPEN + } +} diff --git a/src/minecraft/mekanism/common/network/PacketPortableTeleport.java b/src/minecraft/mekanism/common/network/PacketPortableTeleport.java new file mode 100644 index 000000000..5c276e3af --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketPortableTeleport.java @@ -0,0 +1,58 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import universalelectricity.core.electricity.ElectricityPack; + +import mekanism.api.Object3D; +import mekanism.common.ItemPortableTeleporter; +import mekanism.common.MekanismUtils; +import mekanism.common.PacketHandler; +import mekanism.common.Teleporter; +import mekanism.common.PacketHandler.Transmission; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketPortableTeleport implements IMekanismPacket +{ + @Override + public String getName() + { + return "PortableTeleport"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + ItemStack itemstack = player.getCurrentEquippedItem(); + + if(itemstack != null && itemstack.getItem() instanceof ItemPortableTeleporter) + { + ItemPortableTeleporter item = (ItemPortableTeleporter)itemstack.getItem(); + + if(item.getStatus(itemstack) == 1) + { + Object3D coords = MekanismUtils.getClosestCoords(new Teleporter.Code(item.getDigit(itemstack, 0), item.getDigit(itemstack, 1), item.getDigit(itemstack, 2), item.getDigit(itemstack, 3)), player); + + item.onProvide(new ElectricityPack(item.calculateEnergyCost(player, coords)/120, 120), itemstack); + + if(world.provider.dimensionId != coords.dimensionId) + { + ((EntityPlayerMP)player).travelToDimension(coords.dimensionId); + } + + ((EntityPlayerMP)player).playerNetServerHandler.setPlayerLocation(coords.xCoord+0.5, coords.yCoord+1, coords.zCoord+0.5, player.rotationYaw, player.rotationPitch); + + world.playSoundAtEntity(player, "mob.endermen.portal", 1.0F, 1.0F); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketPortalFX(coords), coords, 40D); + } + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception {} +} diff --git a/src/minecraft/mekanism/common/network/PacketPortalFX.java b/src/minecraft/mekanism/common/network/PacketPortalFX.java new file mode 100644 index 000000000..a43d1bd89 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketPortalFX.java @@ -0,0 +1,52 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; +import java.util.Random; + +import mekanism.api.Object3D; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketPortalFX implements IMekanismPacket +{ + public Object3D object3D; + + public PacketPortalFX(Object3D obj) + { + object3D = obj; + } + + public PacketPortalFX() {} + + @Override + public String getName() + { + return "PortalFX"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + Random random = new Random(); + + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + for(int i = 0; i < 50; i++) + { + world.spawnParticle("portal", x + random.nextFloat(), y + random.nextFloat(), z + random.nextFloat(), 0.0F, 0.0F, 0.0F); + world.spawnParticle("portal", x + random.nextFloat(), y + 1 + random.nextFloat(), z + random.nextFloat(), 0.0F, 0.0F, 0.0F); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(object3D.xCoord); + dataStream.writeInt(object3D.yCoord); + dataStream.writeInt(object3D.zCoord); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketRobit.java b/src/minecraft/mekanism/common/network/PacketRobit.java new file mode 100644 index 000000000..7f30a620b --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketRobit.java @@ -0,0 +1,166 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.common.EntityRobit; +import mekanism.common.Mekanism; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketRobit implements IMekanismPacket +{ + public RobitPacketType activeType; + + public int guiType; + public int entityId; + + public String name; + + public PacketRobit(RobitPacketType type, Object... params) + { + activeType = type; + + switch(activeType) + { + case GUI: + guiType = (Integer)params[0]; + entityId = (Integer)params[1]; + break; + case FOLLOW: + entityId = (Integer)params[0]; + break; + case NAME: + name = (String)params[0]; + entityId = (Integer)params[1]; + break; + case GO_HOME: + entityId = (Integer)params[0]; + break; + case DROP_PICKUP: + entityId = (Integer)params[0]; + break; + } + } + + @Override + public String getName() + { + return "Robit"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + int subType = dataStream.readInt(); + + if(subType == 0) + { + int type = dataStream.readInt(); + int id = dataStream.readInt(); + + if(type == 0) + { + player.openGui(Mekanism.instance, 21, world, id, 0, 0); + } + else if(type == 1) + { + player.openGui(Mekanism.instance, 22, world, id, 0, 0); + } + else if(type == 2) + { + player.openGui(Mekanism.instance, 23, world, id, 0, 0); + } + else if(type == 3) + { + player.openGui(Mekanism.instance, 24, world, id, 0, 0); + } + else if(type == 4) + { + player.openGui(Mekanism.instance, 25, world, id, 0, 0); + } + } + else if(subType == 1) + { + int id = dataStream.readInt(); + + EntityRobit robit = (EntityRobit)world.getEntityByID(id); + + if(robit != null) + { + robit.setFollowing(!robit.getFollowing()); + } + } + else if(subType == 2) + { + String name = dataStream.readUTF(); + int id = dataStream.readInt(); + + EntityRobit robit = (EntityRobit)world.getEntityByID(id); + + if(robit != null) + { + robit.setName(name); + } + } + else if(subType == 3) + { + int id = dataStream.readInt(); + + EntityRobit robit = (EntityRobit)world.getEntityByID(id); + + if(robit != null) + { + robit.goHome(); + } + } + else if(subType == 4) + { + int id = dataStream.readInt(); + + EntityRobit robit = (EntityRobit)world.getEntityByID(id); + + if(robit != null) + { + robit.setDropPickup(!robit.getDropPickup()); + } + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(activeType.ordinal()); + + switch(activeType) + { + case GUI: + dataStream.writeInt(guiType); + dataStream.writeInt(entityId); + break; + case FOLLOW: + dataStream.writeInt(entityId); + break; + case NAME: + dataStream.writeUTF(name); + dataStream.writeInt(entityId); + break; + case GO_HOME: + dataStream.writeInt(entityId); + break; + case DROP_PICKUP: + dataStream.writeInt(entityId); + break; + } + } + + public static enum RobitPacketType + { + GUI, + FOLLOW, + NAME, + GO_HOME, + DROP_PICKUP; + } +} diff --git a/src/minecraft/mekanism/common/network/PacketStatusUpdate.java b/src/minecraft/mekanism/common/network/PacketStatusUpdate.java new file mode 100644 index 000000000..aeafe6ff0 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketStatusUpdate.java @@ -0,0 +1,46 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.common.ItemPortableTeleporter; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketStatusUpdate implements IMekanismPacket +{ + public int status; + + public PacketStatusUpdate(int i) + { + status = i; + } + + public PacketStatusUpdate() {} + + @Override + public String getName() + { + return "StatusUpdate"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + ItemStack currentStack = player.getCurrentEquippedItem(); + + if(currentStack != null && currentStack.getItem() instanceof ItemPortableTeleporter) + { + ItemPortableTeleporter item = (ItemPortableTeleporter)currentStack.getItem(); + item.setStatus(currentStack, dataStream.readInt()); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(status); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketTileEntity.java b/src/minecraft/mekanism/common/network/PacketTileEntity.java new file mode 100644 index 000000000..8647e63dc --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketTileEntity.java @@ -0,0 +1,58 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.api.Object3D; +import mekanism.common.ITileNetwork; +import mekanism.common.PacketHandler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketTileEntity implements IMekanismPacket +{ + public Object3D object3D; + + public Object[] parameters; + + public PacketTileEntity(Object3D obj, Object... params) + { + object3D = obj; + parameters = params; + } + + public PacketTileEntity() {} + + @Override + public String getName() + { + return "TileEntity"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if(tileEntity instanceof ITileNetwork) + { + ((ITileNetwork)tileEntity).handlePacketData(dataStream); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(object3D.xCoord); + dataStream.writeInt(object3D.yCoord); + dataStream.writeInt(object3D.zCoord); + + PacketHandler.encode(parameters, dataStream, 0); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketTime.java b/src/minecraft/mekanism/common/network/PacketTime.java new file mode 100644 index 000000000..d51fdbaa9 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketTime.java @@ -0,0 +1,40 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.common.MekanismUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketTime implements IMekanismPacket +{ + public int hourToSet; + + public PacketTime(int hour) + { + hourToSet = hour; + } + + public PacketTime() {} + + @Override + public String getName() + { + return "Time"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + player.getCurrentEquippedItem().damageItem(4999, player); + MekanismUtils.setHourForward(world, dataStream.readInt()); + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(hourToSet); + } +} diff --git a/src/minecraft/mekanism/common/network/PacketTransmitterTransferUpdate.java b/src/minecraft/mekanism/common/network/PacketTransmitterTransferUpdate.java new file mode 100644 index 000000000..a4f01cbcf --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketTransmitterTransferUpdate.java @@ -0,0 +1,125 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; +import java.util.ArrayList; + +import mekanism.api.EnumGas; +import mekanism.api.GasTransferProtocol; +import mekanism.common.EnergyTransferProtocol; +import mekanism.common.LiquidTransferProtocol; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.liquids.LiquidStack; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketTransmitterTransferUpdate implements IMekanismPacket +{ + public TransmitterTransferType activeType; + + public TileEntity tileEntity; + + public String gasName; + + public LiquidStack liquidStack; + + public PacketTransmitterTransferUpdate(TransmitterTransferType type, Object... params) + { + tileEntity = (TileEntity)params[0]; + + activeType = type; + + switch(type) + { + case ENERGY: + break; + case GAS: + gasName = ((EnumGas)params[1]).name; + break; + case LIQUID: + liquidStack = (LiquidStack)params[1]; + break; + } + } + + public PacketTransmitterTransferUpdate() {} + + @Override + public String getName() + { + return "TransmitterTransferUpdate"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + int transmitterType = dataStream.readInt(); + + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + if(transmitterType == 0) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if(tileEntity != null) + { + new EnergyTransferProtocol(tileEntity, null, new ArrayList()).clientUpdate(); + } + } + else if(transmitterType == 1) + { + EnumGas type = EnumGas.getFromName(dataStream.readUTF()); + + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if(tileEntity != null) + { + new GasTransferProtocol(tileEntity, null, type, 0).clientUpdate(); + } + } + else if(transmitterType == 2) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + LiquidStack liquidStack = new LiquidStack(dataStream.readInt(), dataStream.readInt(), dataStream.readInt()); + + if(tileEntity != null) + { + new LiquidTransferProtocol(tileEntity, null, liquidStack).clientUpdate(); + } + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(activeType.ordinal()); + + dataStream.writeInt(tileEntity.xCoord); + dataStream.writeInt(tileEntity.yCoord); + dataStream.writeInt(tileEntity.zCoord); + + switch(activeType) + { + case ENERGY: + break; + case GAS: + dataStream.writeUTF(gasName); + break; + case LIQUID: + dataStream.writeInt(liquidStack.itemID); + dataStream.writeInt(liquidStack.amount); + dataStream.writeInt(liquidStack.itemMeta); + break; + } + } + + public static enum TransmitterTransferType + { + ENERGY, + GAS, + LIQUID + } +} diff --git a/src/minecraft/mekanism/common/network/PacketWeather.java b/src/minecraft/mekanism/common/network/PacketWeather.java new file mode 100644 index 000000000..81cd2e1c0 --- /dev/null +++ b/src/minecraft/mekanism/common/network/PacketWeather.java @@ -0,0 +1,69 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketWeather implements IMekanismPacket +{ + public WeatherType activeType; + + public PacketWeather(WeatherType type) + { + activeType = type; + } + + public PacketWeather() {} + + @Override + public String getName() + { + return "Weather"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + player.getCurrentEquippedItem().damageItem(4999, player); + int weatherType = dataStream.readInt(); + + switch(weatherType) + { + case 0: + world.getWorldInfo().setRaining(false); + world.getWorldInfo().setThundering(false); + break; + case 1: + world.getWorldInfo().setThundering(true); + break; + case 2: + world.getWorldInfo().setRaining(true); + world.getWorldInfo().setThundering(true); + break; + case 3: + world.getWorldInfo().setRaining(true); + break; + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(activeType.ordinal()); + } + + public static enum WeatherType + { + /** Clears the world of all weather effects, including rain, lightning, and clouds. */ + CLEAR, + /** Sets the world's weather to thunder. This may or may not include rain. */ + STORM, + /** Sets the world's weather to both thunder AND rain. */ + HAZE, + /** Sets the world's weather to rain. */ + RAIN + } +} diff --git a/src/minecraft/mekanism/generators/client/GuiElectrolyticSeparator.java b/src/minecraft/mekanism/generators/client/GuiElectrolyticSeparator.java index 3da9ead33..e692cf269 100644 --- a/src/minecraft/mekanism/generators/client/GuiElectrolyticSeparator.java +++ b/src/minecraft/mekanism/generators/client/GuiElectrolyticSeparator.java @@ -3,7 +3,10 @@ package mekanism.generators.client; import java.util.ArrayList; import mekanism.api.EnumGas; +import mekanism.api.Object3D; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import mekanism.generators.common.ContainerElectrolyticSeparator; import mekanism.generators.common.TileEntityElectrolyticSeparator; import net.minecraft.client.gui.inventory.GuiContainer; @@ -13,7 +16,6 @@ import org.lwjgl.opengl.GL11; import universalelectricity.core.electricity.ElectricityDisplay; import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -60,7 +62,7 @@ public class GuiElectrolyticSeparator extends GuiContainer data.add((byte)0); data.add(nameToSet); - PacketHandler.sendTileEntityPacketToServer(tileEntity, data); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(tileEntity), data)); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } else if(xAxis > 8 && xAxis < 17 && yAxis > 73 && yAxis < 82) @@ -84,7 +86,7 @@ public class GuiElectrolyticSeparator extends GuiContainer data.add((byte)1); data.add(nameToSet); - PacketHandler.sendTileEntityPacketToServer(tileEntity, data); + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity(Object3D.get(tileEntity), data)); mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); } } diff --git a/src/minecraft/mekanism/generators/common/MekanismGenerators.java b/src/minecraft/mekanism/generators/common/MekanismGenerators.java index 3fc59c884..df65d3532 100644 --- a/src/minecraft/mekanism/generators/common/MekanismGenerators.java +++ b/src/minecraft/mekanism/generators/common/MekanismGenerators.java @@ -7,8 +7,10 @@ import mekanism.common.IModule; import mekanism.common.ItemMekanism; import mekanism.common.Mekanism; import mekanism.common.MekanismRecipe; +import mekanism.common.PacketHandler; import mekanism.common.RecipeHandler; import mekanism.common.Version; +import mekanism.generators.common.network.PacketElectrolyticSeparatorParticle; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.item.Item; @@ -79,6 +81,9 @@ public class MekanismGenerators implements IModule addRecipes(); addEntities(); + //Packet registrations + PacketHandler.registerPacket(PacketElectrolyticSeparatorParticle.class); + //Finalization Mekanism.logger.info("[MekanismGenerators] Loaded module."); } diff --git a/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java b/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java index 271918167..7c9f79b1c 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java @@ -14,13 +14,16 @@ import mekanism.api.IGasStorage; import mekanism.api.IStorageTank; import mekanism.api.IStrictEnergyAcceptor; import mekanism.api.ITubeConnection; +import mekanism.api.Object3D; import mekanism.common.ChargeUtils; import mekanism.common.ISustainedTank; import mekanism.common.Mekanism; import mekanism.common.MekanismUtils; import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.TileEntityElectricBlock; import mekanism.generators.common.BlockGenerator.GeneratorType; +import mekanism.generators.common.network.PacketElectrolyticSeparatorParticle; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -207,7 +210,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp if(new Random().nextInt(3) == 2) { - //PacketHandler.sendElectrolyticSeparatorParticle(this); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketElectrolyticSeparatorParticle(this), Object3D.get(this), 40D); } } } diff --git a/src/minecraft/mekanism/generators/common/TileEntityGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityGenerator.java index 0ec9659bc..95e738548 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityGenerator.java @@ -12,6 +12,7 @@ import java.util.EnumSet; import mekanism.api.ICableOutputter; import mekanism.api.IUniversalCable; +import mekanism.api.Object3D; import mekanism.client.IHasSound; import mekanism.common.CableUtils; import mekanism.common.IActiveState; @@ -19,6 +20,8 @@ import mekanism.common.Mekanism; import mekanism.common.MekanismUtils; import mekanism.common.PacketHandler; import mekanism.common.TileEntityElectricBlock; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketTileEntity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -211,7 +214,7 @@ public abstract class TileEntityGenerator extends TileEntityElectricBlock implem if(prevActive != active) { - PacketHandler.sendTileEntityPacketToClients(this, 0, getNetworkedData(new ArrayList())); + PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity(Object3D.get(this), getNetworkedData(new ArrayList()))); } prevActive = active; diff --git a/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java index 69a4b4454..61035821e 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java @@ -234,6 +234,7 @@ public class TileEntityHydrogenGenerator extends TileEntityGenerator implements { boost = 4; } + return boost; } diff --git a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java index 6c06abc93..3a3798082 100644 --- a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java @@ -140,7 +140,7 @@ public class TileEntitySolarGenerator extends TileEntityGenerator @Override public int getEnvironmentBoost() { - return seesSun ? (GENERATION_RATE*(worldObj.provider instanceof ISolarLevel ? (int)((ISolarLevel)worldObj.provider).getSolorEnergyMultiplier() : 1)) : 0; + return seesSun ? (GENERATION_RATE*(worldObj.provider instanceof ISolarLevel ? (int)((ISolarLevel)worldObj.provider).getSolarEnergyMultiplier() : 1)) : 0; } @Override diff --git a/src/minecraft/mekanism/generators/common/network/PacketElectrolyticSeparatorParticle.java b/src/minecraft/mekanism/generators/common/network/PacketElectrolyticSeparatorParticle.java new file mode 100644 index 000000000..ad09737dc --- /dev/null +++ b/src/minecraft/mekanism/generators/common/network/PacketElectrolyticSeparatorParticle.java @@ -0,0 +1,53 @@ +package mekanism.generators.common.network; + +import java.io.DataOutputStream; + +import mekanism.common.network.IMekanismPacket; +import mekanism.generators.common.TileEntityElectrolyticSeparator; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketElectrolyticSeparatorParticle implements IMekanismPacket +{ + public int packetId; + + public TileEntityElectrolyticSeparator tileEntity; + + public PacketElectrolyticSeparatorParticle(TileEntityElectrolyticSeparator tile) + { + tileEntity = tile; + } + + public PacketElectrolyticSeparatorParticle() {} + + @Override + public String getName() + { + return "ElectrolyticSeparatorParticle"; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + TileEntityElectrolyticSeparator tileEntity = (TileEntityElectrolyticSeparator)world.getBlockTileEntity(x, y, z); + + if(tileEntity != null) + { + tileEntity.spawnParticle(); + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(tileEntity.xCoord); + dataStream.writeInt(tileEntity.yCoord); + dataStream.writeInt(tileEntity.zCoord); + } +} diff --git a/src/minecraft/micdoodle8/mods/galacticraft/API/ISolarLevel.java b/src/minecraft/micdoodle8/mods/galacticraft/API/ISolarLevel.java index 253152bc0..5f9f548cd 100644 --- a/src/minecraft/micdoodle8/mods/galacticraft/API/ISolarLevel.java +++ b/src/minecraft/micdoodle8/mods/galacticraft/API/ISolarLevel.java @@ -2,5 +2,5 @@ package micdoodle8.mods.galacticraft.API; public interface ISolarLevel { - public double getSolorEnergyMultiplier(); + public double getSolarEnergyMultiplier(); }