diff --git a/resources/assets/tinker/lang/en_US.xml b/resources/assets/tinker/lang/en_US.xml
index 6527afc21a9..36ca636ef8d 100644
--- a/resources/assets/tinker/lang/en_US.xml
+++ b/resources/assets/tinker/lang/en_US.xml
@@ -464,6 +464,7 @@
Scythe Head
Broad Axe Head
Excavator Head
+ Shard
Large Sword Blade
Hammer Head
Bowstring
diff --git a/src/tconstruct/client/gui/SmelteryGui.java b/src/tconstruct/client/gui/SmelteryGui.java
index 03ac11af851..f295b7ff1ba 100644
--- a/src/tconstruct/client/gui/SmelteryGui.java
+++ b/src/tconstruct/client/gui/SmelteryGui.java
@@ -1,5 +1,7 @@
package tconstruct.client.gui;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -9,6 +11,7 @@
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.Icon;
import net.minecraft.util.ResourceLocation;
@@ -24,6 +27,7 @@
import tconstruct.blocks.logic.SmelteryLogic;
import tconstruct.inventory.ActiveContainer;
import tconstruct.inventory.SmelteryContainer;
+import cpw.mods.fml.common.network.PacketDispatcher;
public class SmelteryGui extends NewContainerGui
{
@@ -108,6 +112,7 @@ protected void drawGuiContainerForegroundLayer (int mouseX, int mouseY)
int base = 0;
int cornerX = (width - xSize) / 2 + 36;
int cornerY = (height - ySize) / 2;
+
for (FluidStack liquid : logic.moltenMetal)
{
int basePos = 54;
@@ -133,9 +138,9 @@ protected void drawGuiContainerForegroundLayer (int mouseX, int mouseY)
if (mouseX >= leftX && mouseX <= leftX + sizeX && mouseY >= topY && mouseY < topY + sizeY)
{
drawFluidStackTooltip(liquid, mouseX - cornerX + 36, mouseY - cornerY);
+
}
}
-
if (logic.fuelGague > 0)
{
int leftX = cornerX + 117;
@@ -414,4 +419,72 @@ public void drawLiquidRect (int startU, int startV, Icon par3Icon, int endU, int
tessellator.addVertexWithUV((double) (startU + 0), (double) (startV + 0), (double) this.zLevel, (double) par3Icon.getMinU(), (double) par3Icon.getMinV()); //Top left
tessellator.draw();
}
+
+ @Override
+ public void mouseClicked(int mouseX, int mouseY, int mouseButton)
+ {
+ super.mouseClicked(mouseX, mouseY, mouseButton);
+
+ int base = 0;
+ int cornerX = (width - xSize) / 2 + 36;
+ int cornerY = (height - ySize) / 2;
+ int fluidToBeBroughtUp = -1;
+
+ for (FluidStack liquid : logic.moltenMetal)
+ {
+ int basePos = 54;
+ int initialLiquidSize = 0;
+ int liquidSize = 0;//liquid.amount * 52 / liquidLayers;
+ if (logic.getCapacity() > 0)
+ {
+ int total = logic.getTotalLiquid();
+ int liquidLayers = (total / 20000 + 1) * 20000;
+ if (liquidLayers > 0)
+ {
+ liquidSize = liquid.amount * 52 / liquidLayers;
+ if (liquidSize == 0)
+ liquidSize = 1;
+ base += liquidSize;
+ }
+ }
+
+ int leftX = cornerX + basePos;
+ int topY = (cornerY + 68) - base;
+ int sizeX = 52;
+ int sizeY = liquidSize;
+ if (mouseX >= leftX && mouseX <= leftX + sizeX && mouseY >= topY && mouseY < topY + sizeY)
+ {
+ fluidToBeBroughtUp = liquid.fluidID;
+
+ Packet250CustomPayload packet = new Packet250CustomPayload();
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ DataOutputStream dos = new DataOutputStream(bos);
+
+ try
+ {
+ dos.write(11);
+
+ dos.writeInt(logic.worldObj.provider.dimensionId);
+ dos.writeInt(logic.xCoord);
+ dos.writeInt(logic.yCoord);
+ dos.writeInt(logic.zCoord);
+
+ dos.writeBoolean(this.isShiftKeyDown());
+
+ dos.writeInt(fluidToBeBroughtUp);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ packet.channel = "TConstruct";
+ packet.data = bos.toByteArray();
+ packet.length = bos.size();
+
+ PacketDispatcher.sendPacketToServer(packet);
+ }
+ }
+ }
}
diff --git a/src/tconstruct/common/TContent.java b/src/tconstruct/common/TContent.java
index 5c3365ed7d7..b26c5454f28 100644
--- a/src/tconstruct/common/TContent.java
+++ b/src/tconstruct/common/TContent.java
@@ -1178,6 +1178,7 @@ void addCraftingRecipes()
tableCasting.addCastingRecipe(new ItemStack(materials, 1, 15), new FluidStack(moltenAlumiteFluid, TConstruct.ingotLiquidValue), ingotcast, 80); //alumite
tableCasting.addCastingRecipe(new ItemStack(materials, 1, 18), new FluidStack(moltenObsidianFluid, TConstruct.ingotLiquidValue), ingotcast, 80); //obsidian
tableCasting.addCastingRecipe(new ItemStack(materials, 1, 16), new FluidStack(moltenSteelFluid, TConstruct.ingotLiquidValue), ingotcast, 80); //steel
+ tableCasting.addCastingRecipe(new ItemStack(materials, 1, 2), new FluidStack(moltenStoneFluid, TConstruct.ingotLiquidValue), ingotcast, 80); //steel
//Buckets
ItemStack bucket = new ItemStack(Item.bucketEmpty);
diff --git a/src/tconstruct/util/network/TPacketHandler.java b/src/tconstruct/util/network/TPacketHandler.java
index 954af76cab0..970332ac833 100644
--- a/src/tconstruct/util/network/TPacketHandler.java
+++ b/src/tconstruct/util/network/TPacketHandler.java
@@ -13,13 +13,16 @@
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
+import net.minecraftforge.fluids.FluidStack;
import tconstruct.TConstruct;
import tconstruct.blocks.logic.DrawbridgeLogic;
+import tconstruct.blocks.logic.SmelteryLogic;
import tconstruct.blocks.logic.ToolForgeLogic;
import tconstruct.blocks.logic.ToolStationLogic;
import tconstruct.library.blocks.InventoryLogic;
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;
import cpw.mods.fml.relauncher.Side;
@@ -137,13 +140,50 @@ else if (packetID == 5) //Drawbridge
((DrawbridgeLogic) te).setPlacementDirection(direction);
}
}
-
+
else if (packetID == 10) //Double jump
{
//String user = inputStream.readUTF();
//EntityPlayer player = TConstruct.playerTracker.getEntityPlayer(user);
player.fallDistance = 0;
}
+
+ else if (packetID == 11) //Smeltery
+ {
+ int dimension = inputStream.readInt();
+ World world = DimensionManager.getWorld(dimension);
+ int x = inputStream.readInt();
+ int y = inputStream.readInt();
+ int z = inputStream.readInt();
+
+ boolean isShiftPressed = inputStream.readBoolean();
+ int fluidID = inputStream.readInt();
+
+ TileEntity te = world.getBlockTileEntity(x, y, z);
+
+ if (te instanceof SmelteryLogic)
+ {
+ FluidStack temp = null;
+
+ for(FluidStack liquid : ((SmelteryLogic) te).moltenMetal)
+ {
+ if (liquid.fluidID == fluidID)
+ {
+ temp = liquid;
+ }
+ }
+
+ if (temp != null)
+ {
+ ((SmelteryLogic) te).moltenMetal.remove(temp);
+ if (isShiftPressed)
+ ((SmelteryLogic) te).moltenMetal.add(temp);
+ else
+ ((SmelteryLogic) te).moltenMetal.add(0, temp);
+ }
+ PacketDispatcher.sendPacketToAllInDimension(te.getDescriptionPacket(), dimension);
+ }
+ }
}
catch (IOException e)
{