From 9c189116fa0cd2f4d969621448def1c5e0d299d8 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Wed, 29 May 2013 11:35:30 -0400 Subject: [PATCH] v5.5.6 Beta #11 *Fixed liquid update packets. *SideOnly checks in client classes. *Robits have nameplates and can be renamed. *Robits can now breath in outer space. --- .../mods/mekanism/gui/GuiRobitMain.png | Bin 9748 -> 10450 bytes .../mekanism/client/GuiRobitCrafting.java | 4 + .../mekanism/client/GuiRobitInventory.java | 4 + .../mekanism/client/GuiRobitMain.java | 119 ++++++++++++++++-- .../mekanism/client/GuiRobitRepair.java | 4 + .../mekanism/client/MekanismRenderer.java | 4 + .../mekanism/client/ModelChargepad.java | 3 + src/minecraft/mekanism/client/ModelRobit.java | 4 + .../mekanism/client/RenderChargepad.java | 4 + .../client/RenderConfigurableMachine.java | 3 + .../mekanism/client/RenderDynamicTank.java | 4 + .../mekanism/client/RenderRobit.java | 3 + .../mekanism/client/RenderTickHandler.java | 3 + .../mekanism/client/ThreadTankSparkle.java | 4 + .../mekanism/common/EntityRobit.java | 34 ++++- .../mekanism/common/EnumPacketType.java | 3 + .../mekanism/common/PacketHandler.java | 48 +++++++ .../mekanism/common/TileEntityChargepad.java | 4 +- .../common/TileEntityElectricPump.java | 6 +- .../TileEntityElectrolyticSeparator.java | 3 + .../common/TileEntityHeatGenerator.java | 6 + 21 files changed, 250 insertions(+), 17 deletions(-) diff --git a/bin/minecraft/mods/mekanism/gui/GuiRobitMain.png b/bin/minecraft/mods/mekanism/gui/GuiRobitMain.png index f3da94586b3e147cc6c7b3cc08e689e0f9992b7f..24bf1f95188a8239c59de90422834f236f5a6a66 100644 GIT binary patch delta 9424 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 XX>NDrdgX3__B*X_qW4_KA@sihl=EY& delta 8717 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 diff --git a/src/minecraft/mekanism/client/GuiRobitCrafting.java b/src/minecraft/mekanism/client/GuiRobitCrafting.java index 3de1a2b09..5ac7c16f8 100644 --- a/src/minecraft/mekanism/client/GuiRobitCrafting.java +++ b/src/minecraft/mekanism/client/GuiRobitCrafting.java @@ -11,6 +11,10 @@ import net.minecraft.world.World; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) public class GuiRobitCrafting extends GuiContainer { public int entityId; diff --git a/src/minecraft/mekanism/client/GuiRobitInventory.java b/src/minecraft/mekanism/client/GuiRobitInventory.java index 4addb3903..db0a30c87 100644 --- a/src/minecraft/mekanism/client/GuiRobitInventory.java +++ b/src/minecraft/mekanism/client/GuiRobitInventory.java @@ -10,6 +10,10 @@ import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) public class GuiRobitInventory extends GuiContainer { public EntityRobit robit; diff --git a/src/minecraft/mekanism/client/GuiRobitMain.java b/src/minecraft/mekanism/client/GuiRobitMain.java index af8676975..99c317275 100644 --- a/src/minecraft/mekanism/client/GuiRobitMain.java +++ b/src/minecraft/mekanism/client/GuiRobitMain.java @@ -5,17 +5,28 @@ import mekanism.common.EntityRobit; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; +import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import universalelectricity.core.electricity.ElectricityDisplay; import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; +@SideOnly(Side.CLIENT) public class GuiRobitMain extends GuiContainer { public EntityRobit robit; + + public boolean displayNameChange; + + private GuiTextField nameChangeField; + private GuiButton confirmName; public GuiRobitMain(InventoryPlayer inventory, EntityRobit entity) { @@ -23,21 +34,88 @@ public class GuiRobitMain extends GuiContainer xSize += 25; robit = entity; } + + private void toggleNameChange() + { + displayNameChange = !displayNameChange; + confirmName.drawButton = displayNameChange; + nameChangeField.setFocused(displayNameChange); + } + + private void changeName() + { + if(nameChangeField.getText() != null && !nameChangeField.getText().isEmpty()) + { + PacketHandler.sendNameUpdate(nameChangeField.getText(), robit.entityId); + toggleNameChange(); + nameChangeField.setText(""); + } + } + + @Override + protected void actionPerformed(GuiButton guibutton) + { + if(guibutton.id == 0) + { + changeName(); + } + } + + @Override + public void initGui() + { + super.initGui(); + + int guiWidth = (width - xSize) / 2; + int guiHeight = (height - ySize) / 2; + + buttonList.clear(); + buttonList.add(confirmName = new GuiButton(0, guiWidth + 58, guiHeight + 47, 60, 20, "Confirm")); + confirmName.drawButton = displayNameChange; + + nameChangeField = new GuiTextField(fontRenderer, guiWidth + 48, guiHeight + 21, 80, 12); + nameChangeField.setMaxStringLength(12); + nameChangeField.setFocused(true); + } + + @Override + public void keyTyped(char c, int i) + { + if(!displayNameChange) + { + super.keyTyped(c, i); + } + else { + if(i == Keyboard.KEY_RETURN) + { + changeName(); + } + else if(i == Keyboard.KEY_ESCAPE) + { + mc.thePlayer.closeScreen(); + } + + nameChangeField.textboxKeyTyped(c, i); + } + } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { fontRenderer.drawString("Robit", 76, 6, 0x404040); - fontRenderer.drawString("Inventory", 8, (ySize - 96) + 3, 0x404040); - fontRenderer.drawString("Hi, I'm Robit!", 29, 18, 0x00CD00); - fontRenderer.drawString("Energy: " + ElectricityDisplay.getDisplayShort(robit.getEnergy(), ElectricUnit.JOULES), 29, 36, 0x00CD00); - fontRenderer.drawString("Following: " + robit.getFollowing(), 29, 45, 0x00CD00); - fontRenderer.drawString("Owner: " + robit.getOwnerName(), 29, 54, 0x00CD00); + + if(!displayNameChange) + { + fontRenderer.drawString("Hi, I'm " + robit.getTranslatedEntityName() + "!", 29, 18, 0x00CD00); + fontRenderer.drawString("Energy: " + ElectricityDisplay.getDisplayShort(robit.getEnergy(), ElectricUnit.JOULES), 29, 36, 0x00CD00); + fontRenderer.drawString("Following: " + robit.getFollowing(), 29, 45, 0x00CD00); + fontRenderer.drawString("Owner: " + robit.getOwnerName(), 29, 54, 0x00CD00); + } int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); - if(xAxis >= 20 && xAxis <= 24 && yAxis >= 17 && yAxis <= 70) + if(xAxis >= 28 && xAxis <= 148 && yAxis >= 74 && yAxis <= 78) { drawCreativeTabHoveringText(ElectricityDisplay.getDisplayShort(robit.getEnergy(), ElectricUnit.JOULES), xAxis, yAxis); } @@ -45,6 +123,10 @@ public class GuiRobitMain extends GuiContainer { drawCreativeTabHoveringText("Toggle 'follow' mode", xAxis, yAxis); } + else if(xAxis >= 6 && xAxis <= 24 && yAxis >= 53 && yAxis <= 71) + { + drawCreativeTabHoveringText("Rename this Robit", xAxis, yAxis); + } } @Override @@ -107,10 +189,24 @@ public class GuiRobitMain extends GuiContainer drawTexturedModalRect(guiWidth + 152, guiHeight + 53, 176 + 25, 198, 18, 18); } + if(xAxis >= 6 && xAxis <= 24 && yAxis >= 53 && yAxis <= 71) + { + drawTexturedModalRect(guiWidth + 6, guiHeight + 53, 176 + 25, 216, 18, 18); + } + else { + drawTexturedModalRect(guiWidth + 6, guiHeight + 53, 176 + 25, 234, 18, 18); + } + int displayInt; - displayInt = getScaledEnergyLevel(53); - drawTexturedModalRect(guiWidth + 20, guiHeight + 17 + 53 - displayInt, 176 + 25 + 18, 36 + 53 - displayInt, 4, displayInt); + displayInt = getScaledEnergyLevel(120); + drawTexturedModalRect(guiWidth + 28, guiHeight + 74, 0, 166, displayInt, 4); + + if(displayNameChange) + { + drawTexturedModalRect(guiWidth + 28, guiHeight + 17, 0, 166 + 4, 120, 53); + nameChangeField.drawTextBox(); + } } private int getScaledEnergyLevel(int i) @@ -123,6 +219,8 @@ public class GuiRobitMain extends GuiContainer { super.mouseClicked(mouseX, mouseY, button); + nameChangeField.mouseClicked(mouseX, mouseY, button); + if(button == 0) { int xAxis = (mouseX - (width - xSize) / 2); @@ -161,6 +259,11 @@ public class GuiRobitMain extends GuiContainer mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); PacketHandler.sendFollowUpdate(!robit.getFollowing(), robit.entityId); } + else if(xAxis >= 6 && xAxis <= 24 && yAxis >= 53 && yAxis <= 71) + { + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + toggleNameChange(); + } } } } diff --git a/src/minecraft/mekanism/client/GuiRobitRepair.java b/src/minecraft/mekanism/client/GuiRobitRepair.java index c594f16ca..d6782b9ff 100644 --- a/src/minecraft/mekanism/client/GuiRobitRepair.java +++ b/src/minecraft/mekanism/client/GuiRobitRepair.java @@ -20,6 +20,10 @@ import net.minecraft.world.World; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) public class GuiRobitRepair extends GuiContainer implements ICrafting { public int entityId; diff --git a/src/minecraft/mekanism/client/MekanismRenderer.java b/src/minecraft/mekanism/client/MekanismRenderer.java index d61a7f9fa..f56bdc126 100644 --- a/src/minecraft/mekanism/client/MekanismRenderer.java +++ b/src/minecraft/mekanism/client/MekanismRenderer.java @@ -11,9 +11,13 @@ import net.minecraft.world.IBlockAccess; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + /* * Credit to BuildCraft */ +@SideOnly(Side.CLIENT) public class MekanismRenderer { private static RenderBlocks renderBlocks = new RenderBlocks(); diff --git a/src/minecraft/mekanism/client/ModelChargepad.java b/src/minecraft/mekanism/client/ModelChargepad.java index 54f42b0e6..d33590158 100644 --- a/src/minecraft/mekanism/client/ModelChargepad.java +++ b/src/minecraft/mekanism/client/ModelChargepad.java @@ -1,9 +1,12 @@ package mekanism.client; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; +@SideOnly(Side.CLIENT) public class ModelChargepad extends ModelBase { ModelRenderer Shape1; diff --git a/src/minecraft/mekanism/client/ModelRobit.java b/src/minecraft/mekanism/client/ModelRobit.java index eb70523aa..0637303da 100644 --- a/src/minecraft/mekanism/client/ModelRobit.java +++ b/src/minecraft/mekanism/client/ModelRobit.java @@ -2,10 +2,14 @@ package mekanism.client; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; +@SideOnly(Side.CLIENT) public class ModelRobit extends ModelBase { public ModelRenderer Body; diff --git a/src/minecraft/mekanism/client/RenderChargepad.java b/src/minecraft/mekanism/client/RenderChargepad.java index 4591be6c8..ed6f6a042 100644 --- a/src/minecraft/mekanism/client/RenderChargepad.java +++ b/src/minecraft/mekanism/client/RenderChargepad.java @@ -2,10 +2,14 @@ package mekanism.client; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import mekanism.common.TileEntityChargepad; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +@SideOnly(Side.CLIENT) public class RenderChargepad extends TileEntitySpecialRenderer { private ModelChargepad model = new ModelChargepad(); diff --git a/src/minecraft/mekanism/client/RenderConfigurableMachine.java b/src/minecraft/mekanism/client/RenderConfigurableMachine.java index b4ae76eba..59fe3596f 100644 --- a/src/minecraft/mekanism/client/RenderConfigurableMachine.java +++ b/src/minecraft/mekanism/client/RenderConfigurableMachine.java @@ -26,7 +26,10 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +@SideOnly(Side.CLIENT) public class RenderConfigurableMachine extends TileEntitySpecialRenderer { private static Icon[] coloredOverlays; diff --git a/src/minecraft/mekanism/client/RenderDynamicTank.java b/src/minecraft/mekanism/client/RenderDynamicTank.java index 52608b981..a6b759f60 100644 --- a/src/minecraft/mekanism/client/RenderDynamicTank.java +++ b/src/minecraft/mekanism/client/RenderDynamicTank.java @@ -20,6 +20,10 @@ import net.minecraftforge.liquids.LiquidStack; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) public class RenderDynamicTank extends TileEntitySpecialRenderer { private static Map> cachedCenterLiquids = new HashMap>(); diff --git a/src/minecraft/mekanism/client/RenderRobit.java b/src/minecraft/mekanism/client/RenderRobit.java index 89c63b5a8..cd8c73638 100644 --- a/src/minecraft/mekanism/client/RenderRobit.java +++ b/src/minecraft/mekanism/client/RenderRobit.java @@ -1,9 +1,12 @@ package mekanism.client; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import mekanism.common.EntityRobit; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; +@SideOnly(Side.CLIENT) public class RenderRobit extends RenderLiving { public RenderRobit() diff --git a/src/minecraft/mekanism/client/RenderTickHandler.java b/src/minecraft/mekanism/client/RenderTickHandler.java index d4c788015..8cf8a1342 100644 --- a/src/minecraft/mekanism/client/RenderTickHandler.java +++ b/src/minecraft/mekanism/client/RenderTickHandler.java @@ -14,7 +14,10 @@ import net.minecraft.world.World; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +@SideOnly(Side.CLIENT) public class RenderTickHandler implements ITickHandler { @Override diff --git a/src/minecraft/mekanism/client/ThreadTankSparkle.java b/src/minecraft/mekanism/client/ThreadTankSparkle.java index 58d91563b..7ce07a271 100644 --- a/src/minecraft/mekanism/client/ThreadTankSparkle.java +++ b/src/minecraft/mekanism/client/ThreadTankSparkle.java @@ -4,6 +4,9 @@ import java.util.HashSet; import java.util.Random; import java.util.Set; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import mekanism.api.Object3D; import mekanism.common.Mekanism; import mekanism.common.TileEntityDynamicTank; @@ -11,6 +14,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +@SideOnly(Side.CLIENT) public class ThreadTankSparkle extends Thread { public TileEntityDynamicTank pointer; diff --git a/src/minecraft/mekanism/common/EntityRobit.java b/src/minecraft/mekanism/common/EntityRobit.java index 01a46f9b6..85b84c63d 100644 --- a/src/minecraft/mekanism/common/EntityRobit.java +++ b/src/minecraft/mekanism/common/EntityRobit.java @@ -9,6 +9,7 @@ import java.math.RoundingMode; import mekanism.api.EnergizedItemManager; import mekanism.api.IEnergizedItem; import mekanism.api.Object3D; +import micdoodle8.mods.galacticraft.API.IEntityBreathable; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAISwimming; @@ -30,7 +31,7 @@ import universalelectricity.core.item.ElectricItemHelper; import universalelectricity.core.item.IItemElectric; import codechicken.core.alg.MathHelper; -public class EntityRobit extends EntityCreature implements IInventory, ISustainedInventory +public class EntityRobit extends EntityCreature implements IInventory, ISustainedInventory, IEntityBreathable { public double MAX_ELECTRICITY = 100000; @@ -46,7 +47,7 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine { super(world); - setSize(1, 1); + setSize(0.5F, 0.5F); moveSpeed = 0.35F; texture = "/mods/mekanism/render/Robit.png"; @@ -56,6 +57,8 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine tasks.addTask(2, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); tasks.addTask(2, new EntityAILookIdle(this)); tasks.addTask(3, new EntityAISwimming(this)); + + func_94061_f(true); } public EntityRobit(World world, double x, double y, double z) @@ -92,6 +95,7 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine dataWatcher.addObject(11, new String("")); /* Electricity */ dataWatcher.addObject(12, new String("")); /* Owner */ dataWatcher.addObject(13, new Byte((byte)0)); /* Follow */ + dataWatcher.addObject(14, new String("")); /* Name */ } public double getRoundedTravelEnergy() @@ -328,6 +332,8 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine nbtTags.setDouble("electricityStored", getEnergy()); + nbtTags.setString("name", getName()); + if(getOwnerName() != null) { nbtTags.setString("owner", getOwnerName()); @@ -360,6 +366,8 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine setEnergy(nbtTags.getDouble("electricityStored")); + setName(nbtTags.getString("name")); + if(nbtTags.hasKey("owner")) { setOwner(nbtTags.getString("owner")); @@ -450,6 +458,16 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine { dataWatcher.updateObject(13, follow ? (byte)1 : (byte)0); } + + public String getName() + { + return dataWatcher.getWatchableObjectString(14); + } + + public void setName(String name) + { + dataWatcher.updateObject(14, name); + } @Override public int getMaxHealth() @@ -603,9 +621,21 @@ public class EntityRobit extends EntityCreature implements IInventory, ISustaine return tagList; } + @Override + public String getTranslatedEntityName() + { + return getName().isEmpty() ? "Robit" : getName(); + } + @Override public float getShadowSize() { return 0.25F; } + + @Override + public boolean canBreath() + { + return true; + } } diff --git a/src/minecraft/mekanism/common/EnumPacketType.java b/src/minecraft/mekanism/common/EnumPacketType.java index 08ef5d5cd..9db1b2c52 100644 --- a/src/minecraft/mekanism/common/EnumPacketType.java +++ b/src/minecraft/mekanism/common/EnumPacketType.java @@ -72,6 +72,9 @@ public enum EnumPacketType /** Used to send a Robit follow update packet to the server. */ FOLLOW_UPDATE(20), + /** Used to send a Robit name update packet to the server. */ + NAME_UPDATE(21), + /** A custom packet type. Handled in PacketHandler. */ CUSTOM(-1); diff --git a/src/minecraft/mekanism/common/PacketHandler.java b/src/minecraft/mekanism/common/PacketHandler.java index 14a6c9ae9..002ff98b5 100644 --- a/src/minecraft/mekanism/common/PacketHandler.java +++ b/src/minecraft/mekanism/common/PacketHandler.java @@ -516,6 +516,23 @@ public class PacketHandler implements IPacketHandler e.printStackTrace(); } } + else if(packetType == EnumPacketType.NAME_UPDATE.id) + { + try { + String name = dataStream.readUTF(); + int id = dataStream.readInt(); + + EntityRobit robit = (EntityRobit)entityplayer.worldObj.getEntityByID(id); + + if(robit != null) + { + robit.setName(name); + } + } catch(Exception e) { + System.err.println("[Mekanism] Error while handling name update packet."); + e.printStackTrace(); + } + } } catch(Exception e) { System.err.println("[Mekanism] Error while handling packet."); e.printStackTrace(); @@ -1150,6 +1167,37 @@ public class PacketHandler implements IPacketHandler } } + /** + * 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) + { + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + DataOutputStream data = new DataOutputStream(bytes); + + try { + data.writeInt(EnumPacketType.NAME_UPDATE.id); + data.writeUTF(name); + data.writeInt(id); + } 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; + PacketDispatcher.sendPacketToServer(packet); + + if(Mekanism.logPackets) + { + System.out.println("[Mekanism] Sentname update packet to server."); + } + } + /** * Sends the server the defined packet data int. * @param type - packet type diff --git a/src/minecraft/mekanism/common/TileEntityChargepad.java b/src/minecraft/mekanism/common/TileEntityChargepad.java index 65f781499..ada8f2baf 100644 --- a/src/minecraft/mekanism/common/TileEntityChargepad.java +++ b/src/minecraft/mekanism/common/TileEntityChargepad.java @@ -78,7 +78,7 @@ public class TileEntityChargepad extends TileEntityElectricBlock implements IAct double prevEnergy = getEnergy(); - for(ItemStack itemstack : player.inventory.mainInventory) + for(ItemStack itemstack : player.inventory.armorInventory) { chargeItemStack(itemstack); @@ -88,7 +88,7 @@ public class TileEntityChargepad extends TileEntityElectricBlock implements IAct } } - for(ItemStack itemstack : player.inventory.armorInventory) + for(ItemStack itemstack : player.inventory.mainInventory) { chargeItemStack(itemstack); diff --git a/src/minecraft/mekanism/common/TileEntityElectricPump.java b/src/minecraft/mekanism/common/TileEntityElectricPump.java index 81c7145e5..da2393a08 100644 --- a/src/minecraft/mekanism/common/TileEntityElectricPump.java +++ b/src/minecraft/mekanism/common/TileEntityElectricPump.java @@ -281,11 +281,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I if(dataStream.readInt() == 1) { - int amount = dataStream.readInt(); - int itemID = dataStream.readInt(); - int itemMeta = dataStream.readInt(); - - liquidTank.setLiquid(new LiquidStack(itemID, amount, itemMeta)); + liquidTank.setLiquid(new LiquidStack(dataStream.readInt(), dataStream.readInt(), dataStream.readInt())); } else { liquidTank.setLiquid(null); diff --git a/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java b/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java index b22b17712..d6ca06096 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java @@ -414,6 +414,9 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp { waterTank.setLiquid(new LiquidStack(Block.waterStill.blockID, amount, 0)); } + else { + waterTank.setLiquid(null); + } oxygenStored = dataStream.readInt(); hydrogenStored = dataStream.readInt(); diff --git a/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java index 4c39d6719..998ed965b 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java @@ -72,9 +72,11 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements ITan } else { int fuel = getFuel(inventory[0]); + if(fuel > 0) { int fuelNeeded = lavaTank.getCapacity() - (lavaTank.getLiquid() != null ? lavaTank.getLiquid().amount : 0); + if(fuel <= fuelNeeded) { lavaTank.fill(new LiquidStack(Block.lavaStill.blockID, fuel), true); @@ -235,10 +237,14 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements ITan super.handlePacketData(dataStream); int amount = dataStream.readInt(); + if(amount != 0) { lavaTank.setLiquid(new LiquidStack(Block.lavaStill.blockID, amount, 0)); } + else { + lavaTank.setLiquid(null); + } } @Override