From 462aa207108f8e55e7f9e20560afd9ebf71ddef7 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Mon, 20 Jul 2015 15:19:23 +0100 Subject: [PATCH] Fixed the BlastFurnace --- .../recipe/machines/BlastFurnaceRecipe.java | 2 +- .../container/ContainerBlastFurnace.java | 32 +++++++++++++++-- .../client/gui/GuiBlastFurnace.java | 23 ++++++++++-- .../techreborn/tiles/TileBlastFurnace.java | 36 +++++++++++++------ 4 files changed, 76 insertions(+), 17 deletions(-) diff --git a/src/main/java/techreborn/api/recipe/machines/BlastFurnaceRecipe.java b/src/main/java/techreborn/api/recipe/machines/BlastFurnaceRecipe.java index 16056296a..34157eec2 100644 --- a/src/main/java/techreborn/api/recipe/machines/BlastFurnaceRecipe.java +++ b/src/main/java/techreborn/api/recipe/machines/BlastFurnaceRecipe.java @@ -33,7 +33,7 @@ public class BlastFurnaceRecipe extends BaseRecipe { public boolean canCraft(TileEntity tile) { if(tile instanceof TileBlastFurnace){ TileBlastFurnace blastFurnace = (TileBlastFurnace) tile; - return blastFurnace.getHeat() >- neededHeat; + return blastFurnace.getHeat() >= neededHeat; } return false; } diff --git a/src/main/java/techreborn/client/container/ContainerBlastFurnace.java b/src/main/java/techreborn/client/container/ContainerBlastFurnace.java index b95e47bf2..529270997 100644 --- a/src/main/java/techreborn/client/container/ContainerBlastFurnace.java +++ b/src/main/java/techreborn/client/container/ContainerBlastFurnace.java @@ -1,16 +1,19 @@ package techreborn.client.container; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import techreborn.client.SlotOutput; import techreborn.tiles.TileBlastFurnace; -public class ContainerBlastFurnace extends TechRebornContainer { +public class ContainerBlastFurnace extends ContainerCrafting { EntityPlayer player; TileBlastFurnace tile; + public int heat; + @Override public boolean canInteractWith(EntityPlayer player) { @@ -22,7 +25,8 @@ public class ContainerBlastFurnace extends TechRebornContainer { public ContainerBlastFurnace(TileBlastFurnace tileblastfurnace, EntityPlayer player) { - tile = tileblastfurnace; + super(tileblastfurnace.crafter); + tile = tileblastfurnace; this.player = player; // input @@ -50,4 +54,28 @@ public class ContainerBlastFurnace extends TechRebornContainer { } } + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + for (int i = 0; i < this.crafters.size(); i++) { + ICrafting icrafting = (ICrafting)this.crafters.get(i); + if(this.heat != tile.getHeat()){ + icrafting.sendProgressBarUpdate(this, 10, tile.getHeat()); + } + } + } + + @Override + public void addCraftingToCrafters(ICrafting crafting) { + super.addCraftingToCrafters(crafting); + crafting.sendProgressBarUpdate(this, 10, tile.getHeat()); + } + + @Override + public void updateProgressBar(int id, int value) { + if(id == 10){ + this.heat = value; + } + super.updateProgressBar(id, value); + } } diff --git a/src/main/java/techreborn/client/gui/GuiBlastFurnace.java b/src/main/java/techreborn/client/gui/GuiBlastFurnace.java index 66113778b..5259fde2f 100644 --- a/src/main/java/techreborn/client/gui/GuiBlastFurnace.java +++ b/src/main/java/techreborn/client/gui/GuiBlastFurnace.java @@ -15,7 +15,9 @@ public class GuiBlastFurnace extends GuiContainer { private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/industrial_blast_furnace.png"); - TileBlastFurnace blastfurnace; + TileBlastFurnace blastfurnace; + + ContainerBlastFurnace containerBlastFurnace; public GuiBlastFurnace(EntityPlayer player, TileBlastFurnace tileblastfurnace) { @@ -23,6 +25,7 @@ public class GuiBlastFurnace extends GuiContainer { this.xSize = 176; this.ySize = 167; blastfurnace = tileblastfurnace; + this.containerBlastFurnace = (ContainerBlastFurnace) this.inventorySlots; } @Override @@ -40,12 +43,24 @@ public class GuiBlastFurnace extends GuiContainer { int l = (this.height - this.ySize) / 2; this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); - if(blastfurnace.getHeat() == 0) + if(containerBlastFurnace.heat == 0) { GuiDraw.drawTooltipBox(k + 30, l + 50 + 12 - 0, 114, 10); this.fontRendererObj.drawString(ModInfo.MISSING_MULTIBLOCK, k + 38, l + 52 + 12 - 0, -1); } + int j = 0; + this.mc.getTextureManager().bindTexture(texture); + j = blastfurnace.getProgressScaled(24); + if(j > 0) { + this.drawTexturedModalRect(k + 64, l + 37, 176, 14, j + 1, 16); + } + + j = blastfurnace.getEnergyScaled(12); + if(j > 0) { + this.drawTexturedModalRect(k + 9, l + 36 + 12 - j, 176, 12 - j, 14, j + 2); + } + } protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) @@ -53,7 +68,9 @@ public class GuiBlastFurnace extends GuiContainer { super.drawGuiContainerForegroundLayer(p_146979_1_, p_146979_2_); String name = StatCollector.translateToLocal("tile.techreborn.blastfurnace.name"); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString("Current Heat: " +blastfurnace.getHeat(), 40, 60, 4210752); + if(containerBlastFurnace.heat != 0){ + this.fontRendererObj.drawString("Current Heat: " + containerBlastFurnace.heat, 40, 60, 4210752); + } this.fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, this.ySize - 96 + 2, 4210752); } } diff --git a/src/main/java/techreborn/tiles/TileBlastFurnace.java b/src/main/java/techreborn/tiles/TileBlastFurnace.java index 7cb448b88..e53ebf658 100644 --- a/src/main/java/techreborn/tiles/TileBlastFurnace.java +++ b/src/main/java/techreborn/tiles/TileBlastFurnace.java @@ -30,7 +30,7 @@ public class TileBlastFurnace extends TileMachineBase implements IWrenchable, II public TileBlastFurnace() { //TODO configs - energy = new BasicSink(this, 1000,ConfigTechReborn.CentrifugeTier); + energy = new BasicSink(this, 10000,ConfigTechReborn.CentrifugeTier); int[] inputs = new int[2]; inputs[0] = 0; inputs[1] = 1; @@ -86,16 +86,18 @@ public class TileBlastFurnace extends TileMachineBase implements IWrenchable, II for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) { TileEntity tileEntity = worldObj.getTileEntity(xCoord + direction.offsetX, yCoord + direction.offsetY, zCoord + direction.offsetZ); if (tileEntity instanceof TileMachineCasing) { - if ((tileEntity.getBlockType() instanceof BlockMachineCasing)) { - int heat; - heat = BlockMachineCasing.getHeatFromMeta(tileEntity.getBlockMetadata()); - Location location = new Location(xCoord, yCoord, zCoord, direction); - location.modifyPositionFromSide(direction, 1); - if (worldObj.getBlock(location.getX(), location.getY(), location.getZ()).getUnlocalizedName().equals("tile.lava")) { - heat += 500; - } - return heat; - } + if(((TileMachineCasing) tileEntity).isConnected()){ + if ((tileEntity.getBlockType() instanceof BlockMachineCasing)) { + int heat; + heat = BlockMachineCasing.getHeatFromMeta(tileEntity.getBlockMetadata()); + Location location = new Location(xCoord, yCoord, zCoord, direction); + location.modifyPositionFromSide(direction, 1); + if (worldObj.getBlock(location.getX(), location.getY(), location.getZ()).getUnlocalizedName().equals("tile.lava")) { + heat += 500; + } + return heat; + } + } } } return 0; @@ -323,5 +325,17 @@ public class TileBlastFurnace extends TileMachineBase implements IWrenchable, II return slotIndex == 2 || slotIndex == 3; } + public int getProgressScaled(int scale) { + if(crafter.currentTickTime != 0) { + return crafter.currentTickTime * scale / crafter.currentNeededTicks; + } + return 0; + } + + public int getEnergyScaled(int scale) { + return (int)energy.getEnergyStored() * scale / energy.getCapacity(); + } + + }