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.
This commit is contained in:
Aidan Brady 2013-06-13 17:37:30 -04:00
parent 3f87aa102e
commit fd556d14b1
60 changed files with 1671 additions and 932 deletions

View file

@ -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;
}

View file

@ -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.");

View file

@ -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());
}

View file

@ -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);
}
}

View file

@ -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));
}
}
}

View file

@ -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));
}
}
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}
}

View file

@ -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)

View file

@ -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);
}
}

View file

@ -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)

View file

@ -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);
}

View file

@ -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)

View file

@ -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 {

View file

@ -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;

View file

@ -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)

View file

@ -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;
}

View file

@ -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<TileEntity> ignoredTiles = new ArrayList<TileEntity>();
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<TileEntity> ignoredTiles = new ArrayList<TileEntity>();
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);
}
}
}

View file

@ -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())));
}
}

View file

@ -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);

View file

@ -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;
}

View file

@ -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));
}
}

View file

@ -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);

View file

@ -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<Class<? extends IMekanismPacket>> packets = new ArrayList<Class<? extends IMekanismPacket>>();
@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<? extends IMekanismPacket> 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<? extends IMekanismPacket> 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;
}
}

View file

@ -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())));
}
/**

View file

@ -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;

View file

@ -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)));
}
}

View file

@ -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;

View file

@ -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())));
}
}

View file

@ -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())));
}
}
}

View file

@ -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);

View file

@ -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;

View file

@ -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)));
}
}

View file

@ -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;

View file

@ -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);
}
}
}

View file

@ -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;
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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
}
}

View file

@ -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 {}
}

View file

@ -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);
}
}

View file

@ -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;
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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);
}
}

View file

@ -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.");
}

View file

@ -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);
}
}
}

View file

@ -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;

View file

@ -234,6 +234,7 @@ public class TileEntityHydrogenGenerator extends TileEntityGenerator implements
{
boost = 4;
}
return boost;
}

View file

@ -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

View file

@ -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);
}
}

View file

@ -2,5 +2,5 @@ package micdoodle8.mods.galacticraft.API;
public interface ISolarLevel
{
public double getSolorEnergyMultiplier();
public double getSolarEnergyMultiplier();
}