diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index b2ddd7ecc..10be7320c 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -29,6 +29,7 @@ import mekanism.client.gui.GuiRobitInventory; import mekanism.client.gui.GuiRobitMain; import mekanism.client.gui.GuiRobitRepair; import mekanism.client.gui.GuiRobitSmelting; +import mekanism.client.gui.GuiRotaryCondensentrator; import mekanism.client.gui.GuiTeleporter; import mekanism.client.render.MekanismRenderer; import mekanism.client.render.RenderTickHandler; @@ -303,8 +304,7 @@ public class ClientProxy extends CommonProxy case 6: return new GuiCrusher(player.inventory, (TileEntityElectricMachine)tileEntity); case 7: - //return new GuiRotaryCondensentrator(player.inventory, (TileEntityRotaryCondensentrator)tileEntity); TODO - return null; + return new GuiRotaryCondensentrator(player.inventory, (TileEntityRotaryCondensentrator)tileEntity); case 8: return new GuiEnergyCube(player.inventory, (TileEntityEnergyCube)tileEntity); case 9: diff --git a/common/mekanism/client/gui/GuiElectricPump.java b/common/mekanism/client/gui/GuiElectricPump.java index 55717b8cf..f5ccf6514 100644 --- a/common/mekanism/client/gui/GuiElectricPump.java +++ b/common/mekanism/client/gui/GuiElectricPump.java @@ -1,12 +1,12 @@ package mekanism.client.gui; import mekanism.client.render.MekanismRenderer; +import mekanism.common.Mekanism; import mekanism.common.inventory.container.ContainerElectricPump; import mekanism.common.tileentity.TileEntityElectricPump; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; @@ -38,7 +38,7 @@ public class GuiElectricPump extends GuiMekanism fontRenderer.drawString("Inventory", 8, (ySize - 94) + 2, 0x404040); fontRenderer.drawString(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()), 51, 26, 0x00CD00); fontRenderer.drawString(tileEntity.fluidTank.getFluid() != null ? tileEntity.fluidTank.getFluid().getFluid().getName() + ": " + tileEntity.fluidTank.getFluid().amount : "No fluid.", 51, 35, 0x00CD00); - fontRenderer.drawString(tileEntity.getVoltage() + "v", 51, 44, 0x00CD00); + fontRenderer.drawString(tileEntity.getVoltage()*Mekanism.FROM_UE + "v", 51, 44, 0x00CD00); if(xAxis >= 7 && xAxis <= 23 && yAxis >= 14 && yAxis <= 72) { diff --git a/common/mekanism/client/gui/GuiRotaryCondensentrator.java b/common/mekanism/client/gui/GuiRotaryCondensentrator.java index e710166ce..5e8a1be76 100644 --- a/common/mekanism/client/gui/GuiRotaryCondensentrator.java +++ b/common/mekanism/client/gui/GuiRotaryCondensentrator.java @@ -1,9 +1,16 @@ package mekanism.client.gui; +import java.util.ArrayList; + +import mekanism.api.Object3D; import mekanism.api.gas.GasStack; import mekanism.client.render.MekanismRenderer; +import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.inventory.container.ContainerRotaryCondensentrator; +import mekanism.common.network.PacketTileEntity; import mekanism.common.tileentity.TileEntityRotaryCondensentrator; +import mekanism.common.util.ListUtils; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.entity.player.InventoryPlayer; @@ -34,13 +41,15 @@ public class GuiRotaryCondensentrator extends GuiMekanism int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); - fontRenderer.drawString(tileEntity.fullName, 45, 6, 0x404040); - fontRenderer.drawString("Inventory", 8, (ySize - 94) + 2, 0x404040); - fontRenderer.drawString(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()), 51, 26, 0x00CD00); - fontRenderer.drawString(tileEntity.fluidTank.getFluid() != null ? tileEntity.fluidTank.getFluid().getFluid().getName() + ": " + tileEntity.fluidTank.getFluid().amount : "No fluid.", 51, 35, 0x00CD00); - fontRenderer.drawString(tileEntity.getVoltage() + "v", 51, 44, 0x00CD00); + fontRenderer.drawString("Rotary Condensentrator", 26, 4, 0x404040); + fontRenderer.drawString(tileEntity.mode == 0 ? "Condensentrating" : "Decondensentrating", 6, (ySize - 94) + 2, 0x404040); - if(xAxis >= 7 && xAxis <= 23 && yAxis >= 14 && yAxis <= 72) + if(xAxis >= 26 && xAxis <= 42 && yAxis >= 14 && yAxis <= 72) + { + drawCreativeTabHoveringText(tileEntity.gasTank != null ? tileEntity.gasTank.getGas().getLocalizedName() + ": " + tileEntity.gasTank.amount : "Empty", xAxis, yAxis); + } + + if(xAxis >= 134 && xAxis <= 150 && yAxis >= 14 && yAxis <= 72) { drawCreativeTabHoveringText(tileEntity.fluidTank.getFluid() != null ? tileEntity.fluidTank.getFluid().getFluid().getLocalizedName() + ": " + tileEntity.fluidTank.getFluid().amount + "mB" : "Empty", xAxis, yAxis); } @@ -50,6 +59,11 @@ public class GuiRotaryCondensentrator extends GuiMekanism drawCreativeTabHoveringText(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()), xAxis, yAxis); } + if(xAxis >= 4 && xAxis <= 22 && yAxis >= 4 && yAxis <= 22) + { + drawCreativeTabHoveringText("Toggle operation", xAxis, yAxis); + } + super.drawGuiContainerForegroundLayer(mouseX, mouseY); } @@ -65,20 +79,52 @@ public class GuiRotaryCondensentrator extends GuiMekanism drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); int displayInt; + int xAxis = (mouseX - (width - xSize) / 2); + int yAxis = (mouseY - (height - ySize) / 2); + displayInt = tileEntity.getScaledEnergyLevel(52); drawTexturedModalRect(guiWidth + 116, guiHeight + 76, 176, 36, displayInt, 4); - if(tileEntity.getScaledFluidLevel(58) > 0) + if(tileEntity.getScaledGasLevel(58) > 0) { - displayGauge(26, 14, tileEntity.getScaledFluidLevel(58), tileEntity.fluidTank.getFluid(), null); + displayGauge(26, 14, tileEntity.getScaledGasLevel(58), null, tileEntity.gasTank); } - if(tileEntity.getScaledGasLevel(58) > 0) + if(tileEntity.getScaledFluidLevel(58) > 0) { - displayGauge(134, 14, tileEntity.getScaledGasLevel(58), null, tileEntity.gasTank); + displayGauge(134, 14, tileEntity.getScaledFluidLevel(58), tileEntity.fluidTank.getFluid(), null); } + + if(xAxis >= 4 && xAxis <= 22 && yAxis >= 4 && yAxis <= 22) + { + drawTexturedModalRect(guiWidth + 4, guiHeight + 4, 176, 0, 18, 18); + } + else { + drawTexturedModalRect(guiWidth + 4, guiHeight + 4, 176, 18, 18, 18); + } } + @Override + protected void mouseClicked(int mouseX, int mouseY, int button) + { + super.mouseClicked(mouseX, mouseY, button); + + if(button == 0) + { + int xAxis = (mouseX - (width - xSize) / 2); + int yAxis = (mouseY - (height - ySize) / 2); + + if(xAxis >= 4 && xAxis <= 22 && yAxis >= 4 && yAxis <= 22) + { + ArrayList data = new ArrayList(); + data.add(0); + + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Object3D.get(tileEntity), data)); + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + } + } + } + public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas) { if(fluid == null) diff --git a/common/mekanism/client/render/block/MachineRenderingHandler.java b/common/mekanism/client/render/block/MachineRenderingHandler.java index 49ec3a3e4..db206f2f5 100644 --- a/common/mekanism/client/render/block/MachineRenderingHandler.java +++ b/common/mekanism/client/render/block/MachineRenderingHandler.java @@ -86,7 +86,7 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler { GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(270F, 0.0F, -1.0F, 0.0F); - GL11.glTranslatef(0.0F, -1F, -0.05F); + GL11.glTranslatef(0.0F, -1F, -0.15F); Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "RotaryCondensentrator.png")); rotaryCondensentrator.render(0.0625F); } diff --git a/common/mekanism/common/ItemAttacher.java b/common/mekanism/common/ItemAttacher.java index 718f0432b..1ee48eca8 100644 --- a/common/mekanism/common/ItemAttacher.java +++ b/common/mekanism/common/ItemAttacher.java @@ -13,7 +13,6 @@ public final class ItemAttacher static { attachable.add(new ItemStack(Block.lever)); - attachable.add(new ItemStack(Item.redstone)); attachable.add(new ItemStack(Block.torchRedstoneIdle)); attachable.add(new ItemStack(Block.torchWood)); diff --git a/common/mekanism/common/block/BlockMachine.java b/common/mekanism/common/block/BlockMachine.java index bcf412fe6..0eb86699a 100644 --- a/common/mekanism/common/block/BlockMachine.java +++ b/common/mekanism/common/block/BlockMachine.java @@ -535,7 +535,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds for(RecipeType recipe : RecipeType.values()) { ItemStack stack = new ItemStack(i, 1, type.meta); - ((IFactory)stack.getItem()).setRecipeType(type.ordinal(), stack); + ((IFactory)stack.getItem()).setRecipeType(recipe.ordinal(), stack); list.add(stack); } } diff --git a/common/mekanism/common/tileentity/TileEntityDynamicTank.java b/common/mekanism/common/tileentity/TileEntityDynamicTank.java index 1f89b916b..be9b68dfe 100644 --- a/common/mekanism/common/tileentity/TileEntityDynamicTank.java +++ b/common/mekanism/common/tileentity/TileEntityDynamicTank.java @@ -247,19 +247,19 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock return; } - ItemStack bucket = FluidContainerRegistry.isBucket(structure.inventory[0]) ? new ItemStack(Item.bucketEmpty) : null; + ItemStack containerItem = structure.inventory[0].getItem().getContainerItemStack(structure.inventory[0]); boolean filled = false; - if(bucket != null) + if(containerItem != null) { - if(structure.inventory[1] == null || (structure.inventory[1].isItemEqual(bucket) && structure.inventory[1].stackSize+1 <= bucket.getMaxStackSize())) + if(structure.inventory[1] == null || (structure.inventory[1].isItemEqual(containerItem) && structure.inventory[1].stackSize+1 <= containerItem.getMaxStackSize())) { structure.inventory[0] = null; if(structure.inventory[1] == null) { - structure.inventory[1] = bucket; + structure.inventory[1] = containerItem; } else { structure.inventory[1].stackSize++; diff --git a/common/mekanism/common/tileentity/TileEntityGasTank.java b/common/mekanism/common/tileentity/TileEntityGasTank.java index 6e7a31e5b..fdc9f8a58 100644 --- a/common/mekanism/common/tileentity/TileEntityGasTank.java +++ b/common/mekanism/common/tileentity/TileEntityGasTank.java @@ -44,14 +44,14 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasS @Override public void onUpdate() { - if(inventory[0] != null && gasStored != null) + if(inventory[0] != null && getGas() != null) { - setGas(new GasStack(getGas().getGas(), gasStored.amount - GasUtils.addGas(inventory[0], getGas()))); + setGas(new GasStack(getGas().getGas(), getGas().amount - GasUtils.addGas(inventory[0], getGas()))); } - if(inventory[1] != null && (gasStored == null || gasStored.amount < getMaxGas())) + if(inventory[1] != null && (getGas() == null || getGas().amount < getMaxGas())) { - if(gasStored == null) + if(getGas() == null) { setGas(GasUtils.removeGas(inventory[1], null, getMaxGas())); } diff --git a/common/mekanism/common/tileentity/TileEntityRotaryCondensentrator.java b/common/mekanism/common/tileentity/TileEntityRotaryCondensentrator.java index 5a39e1a70..e07fe228a 100644 --- a/common/mekanism/common/tileentity/TileEntityRotaryCondensentrator.java +++ b/common/mekanism/common/tileentity/TileEntityRotaryCondensentrator.java @@ -7,6 +7,7 @@ import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTransmission; +import mekanism.api.gas.GasUtils; import mekanism.api.gas.IGasAcceptor; import mekanism.api.gas.IGasStorage; import mekanism.api.gas.ITubeConnection; @@ -18,11 +19,13 @@ import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.network.PacketTileEntity; import mekanism.common.util.ChargeUtils; import mekanism.common.util.MekanismUtils; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; @@ -87,20 +90,129 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp ChargeUtils.discharge(4, this); - if(mode == 1 && getGas() != null) + if(mode == 0) { - GasStack toSend = new GasStack(getGas().getGas(), Math.min(getGas().amount, gasOutput)); - setGas(new GasStack(getGas().getGas(), getGas().amount - GasTransmission.emitGasToNetwork(toSend, this, MekanismUtils.getLeft(facing)))); - - TileEntity tileEntity = Object3D.get(this).getFromSide(MekanismUtils.getLeft(facing)).getTileEntity(worldObj); - - if(tileEntity instanceof IGasAcceptor) + if(inventory[1] != null && (getGas() == null || getGas().amount < getMaxGas())) { - if(((IGasAcceptor)tileEntity).canReceiveGas(MekanismUtils.getLeft(facing).getOpposite(), getGas().getGas())) + if(getGas() == null) { - int added = ((IGasAcceptor)tileEntity).receiveGas(new GasStack(getGas().getGas(), Math.min(getGas().amount, gasOutput))); + setGas(GasUtils.removeGas(inventory[1], null, getMaxGas())); + } + else { + GasStack removed = GasUtils.removeGas(inventory[1], getGas().getGas(), getMaxGas()-getGas().amount); + setGas(new GasStack(getGas().getGas(), getGas().amount + (removed != null ? removed.amount : 0))); + } + } + + if(inventory[2] != null) + { + if(FluidContainerRegistry.isEmptyContainer(inventory[2])) + { + if(fluidTank.getFluid() != null && fluidTank.getFluid().amount >= FluidContainerRegistry.BUCKET_VOLUME) + { + ItemStack filled = FluidContainerRegistry.fillFluidContainer(fluidTank.getFluid(), inventory[2]); + + if(filled != null) + { + if(inventory[3] == null || (inventory[3].isItemEqual(filled) && inventory[3].stackSize+1 <= filled.getMaxStackSize())) + { + inventory[2].stackSize--; + + if(inventory[2].stackSize <= 0) + { + inventory[2] = null; + } + + if(inventory[3] == null) + { + inventory[3] = filled; + } + else { + inventory[3].stackSize++; + } + + fluidTank.drain(FluidContainerRegistry.getFluidForFilledItem(filled).amount, true); + } + } + } + } + } + } + else if(mode == 1) + { + if(getGas() != null) + { + if(inventory[0] != null) + { + setGas(new GasStack(getGas().getGas(), getGas().amount - GasUtils.addGas(inventory[0], getGas()))); + } + } + + if(getGas() != null) + { + GasStack toSend = new GasStack(getGas().getGas(), Math.min(getGas().amount, gasOutput)); + setGas(new GasStack(getGas().getGas(), getGas().amount - GasTransmission.emitGasToNetwork(toSend, this, MekanismUtils.getLeft(facing)))); + + TileEntity tileEntity = Object3D.get(this).getFromSide(MekanismUtils.getLeft(facing)).getTileEntity(worldObj); + + if(tileEntity instanceof IGasAcceptor) + { + if(((IGasAcceptor)tileEntity).canReceiveGas(MekanismUtils.getLeft(facing).getOpposite(), getGas().getGas())) + { + int added = ((IGasAcceptor)tileEntity).receiveGas(new GasStack(getGas().getGas(), Math.min(getGas().amount, gasOutput))); + + setGas(new GasStack(getGas().getGas(), getGas().amount - added)); + } + } + } + + if(FluidContainerRegistry.isFilledContainer(inventory[2])) + { + FluidStack itemFluid = FluidContainerRegistry.getFluidForFilledItem(inventory[2]); + + if((fluidTank.getFluid() == null && itemFluid.amount <= 10000) || fluidTank.getFluid().amount+itemFluid.amount <= 10000) + { + if(fluidTank.getFluid() != null && !fluidTank.getFluid().isFluidEqual(itemFluid)) + { + return; + } - setGas(new GasStack(getGas().getGas(), getGas().amount - added)); + ItemStack containerItem = inventory[2].getItem().getContainerItemStack(inventory[2]); + + boolean filled = false; + + if(containerItem != null) + { + if(inventory[3] == null || (inventory[3].isItemEqual(containerItem) && inventory[3].stackSize+1 <= containerItem.getMaxStackSize())) + { + inventory[2] = null; + + if(inventory[3] == null) + { + inventory[3] = containerItem; + } + else { + inventory[3].stackSize++; + } + + filled = true; + } + } + else { + inventory[2].stackSize--; + + if(inventory[2].stackSize == 0) + { + inventory[2] = null; + } + + filled = true; + } + + if(filled) + { + fluidTank.fill(itemFluid, true); + } } } } @@ -110,11 +222,28 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp @Override public void handlePacketData(ByteArrayDataInput dataStream) { + if(!worldObj.isRemote) + { + int type = dataStream.readInt(); + + if(type == 0) + { + mode = mode == 0 ? 1 : 0; + } + + for(EntityPlayer player : playersUsing) + { + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())), player); + } + + return; + } + super.handlePacketData(dataStream); mode = dataStream.readInt(); - if(dataStream.readInt() == 1) + if(dataStream.readBoolean()) { fluidTank.setFluid(new FluidStack(dataStream.readInt(), dataStream.readInt())); } @@ -143,12 +272,12 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp if(fluidTank.getFluid() != null) { - data.add(1); + data.add(true); data.add(fluidTank.getFluid().fluidID); data.add(fluidTank.getFluid().amount); } else { - data.add(0); + data.add(false); } if(gasTank != null) diff --git a/common/mekanism/generators/common/tileentity/TileEntityBioGenerator.java b/common/mekanism/generators/common/tileentity/TileEntityBioGenerator.java index 91dfbe201..c68aebbd6 100644 --- a/common/mekanism/generators/common/tileentity/TileEntityBioGenerator.java +++ b/common/mekanism/generators/common/tileentity/TileEntityBioGenerator.java @@ -61,17 +61,17 @@ public class TileEntityBioGenerator extends TileEntityGenerator implements IFlui { bioFuelSlot.setFluid(bioFuelSlot.fluidStored+fluidToAdd); - if(FluidContainerRegistry.isBucket(inventory[0])) + if(inventory[0].getItem().getContainerItemStack(inventory[0]) != null) { - inventory[0] = new ItemStack(Item.bucketEmpty); + inventory[0] = inventory[0].getItem().getContainerItemStack(inventory[0]); } else { inventory[0].stackSize--; - - if(inventory[0].stackSize == 0) - { - inventory[0] = null; - } + } + + if(inventory[0].stackSize == 0) + { + inventory[0] = null; } } } @@ -83,20 +83,23 @@ public class TileEntityBioGenerator extends TileEntityGenerator implements IFlui if(fuel > 0) { int fuelNeeded = bioFuelSlot.MAX_FLUID - bioFuelSlot.fluidStored; + if(fuel <= fuelNeeded) { bioFuelSlot.fluidStored += fuel; - inventory[0].stackSize--; - - if(prevStack.isItemEqual(new ItemStack(Item.bucketLava))) + + if(inventory[0].getItem().getContainerItemStack(inventory[0]) != null) { - inventory[0] = new ItemStack(Item.bucketEmpty); + inventory[0] = inventory[0].getItem().getContainerItemStack(inventory[0]); + } + else { + inventory[0].stackSize--; + } + + if(inventory[0].stackSize == 0) + { + inventory[0] = null; } - } - - if(inventory[0].stackSize == 0) - { - inventory[0] = null; } } } diff --git a/common/mekanism/generators/common/tileentity/TileEntityHeatGenerator.java b/common/mekanism/generators/common/tileentity/TileEntityHeatGenerator.java index 004034a8c..d02051913 100644 --- a/common/mekanism/generators/common/tileentity/TileEntityHeatGenerator.java +++ b/common/mekanism/generators/common/tileentity/TileEntityHeatGenerator.java @@ -53,7 +53,7 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements IFlu { lavaTank.fill(fluid, true); - if(inventory[0].getItem().hasContainerItem()) + if(inventory[0].getItem().getContainerItemStack(inventory[0]) != null) { inventory[0] = inventory[0].getItem().getContainerItemStack(inventory[0]); } @@ -78,7 +78,7 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements IFlu { lavaTank.fill(new FluidStack(FluidRegistry.LAVA, fuel), true); - if(inventory[0].getItem().hasContainerItem()) + if(inventory[0].getItem().getContainerItemStack(inventory[0]) != null) { inventory[0] = inventory[0].getItem().getContainerItemStack(inventory[0]); } diff --git a/resources/assets/mekanism/gui/GuiRotaryCondensentrator.png b/resources/assets/mekanism/gui/GuiRotaryCondensentrator.png index e1317a29e..3b160c3b7 100644 Binary files a/resources/assets/mekanism/gui/GuiRotaryCondensentrator.png and b/resources/assets/mekanism/gui/GuiRotaryCondensentrator.png differ