diff --git a/resources/assets/tinker/lang/en_US.lang b/resources/assets/tinker/lang/en_US.lang index 88ee2502..b1647385 100644 --- a/resources/assets/tinker/lang/en_US.lang +++ b/resources/assets/tinker/lang/en_US.lang @@ -127,6 +127,8 @@ tile.cloth.black.slab.name=Black Wool Slab tile.GlueBlock.name=Glue Block tile.liquid.glue.name=Glue +tile.Frypan.name=Frying Pan + item.oreberry.iron.name=Iron Oreberry item.oreberry.gold.name=Gold Oreberry item.oreberry.copper.name=Copper Oreberry diff --git a/src/main/java/tconstruct/modifiers/tools/ModRepair.java b/src/main/java/tconstruct/modifiers/tools/ModRepair.java index 16711043..96e033d0 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModRepair.java +++ b/src/main/java/tconstruct/modifiers/tools/ModRepair.java @@ -26,20 +26,23 @@ public class ModRepair extends ItemModifier @Override protected boolean canModify (ItemStack tool, ItemStack[] input) { - if ((input[0] == null && input[1] == null)) - return false; - NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (tags.getInteger("Damage") > 0) { int headID = tags.getInteger("Head"); - if (input[0] != null && input[1] != null) - return headID == PatternBuilder.instance.getPartID(input[0]) && headID == PatternBuilder.instance.getPartID(input[1]) && calculateIfNecessary(tool, input); - else if (input[0] != null && input[1] == null) - return headID == PatternBuilder.instance.getPartID(input[0]); - else if (input[0] == null && input[1] != null) - return headID == PatternBuilder.instance.getPartID(input[1]); - + boolean areInputsValid = true; + for (ItemStack curInput : input) + { + if (curInput != null && headID != PatternBuilder.instance.getPartID(curInput)) + { + areInputsValid = false; + break; + } + } + if (areInputsValid) + { + return calculateIfNecessary(tool, input); + } } return false; } @@ -48,22 +51,31 @@ public class ModRepair extends ItemModifier { NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); int damage = tags.getInteger("Damage"); - int valueSlot1 = 0; - int valueSlot2 = 0; - if (input[0] != null) - valueSlot1 = calculateIncrease(tool, PatternBuilder.instance.getPartValue(input[0])); - if (input[1] != null) - valueSlot2 = calculateIncrease(tool, PatternBuilder.instance.getPartValue(input[1])); + int numInputs = 0; + int materialValue = 0; + for (ItemStack curInput : input) + { + if (curInput != null) + { + materialValue += PatternBuilder.instance.getPartValue(curInput); + numInputs++; + } + } + if (numInputs == 0) + return false; - return ((damage - valueSlot1) > 0) && ((damage - valueSlot2) > 0); + int totalRepairValue = calculateIncrease(tool, materialValue, numInputs); + float averageRepairValue = totalRepairValue / numInputs; + + return numInputs == 1 || (damage - totalRepairValue >= -averageRepairValue); } - private int calculateIncrease (ItemStack tool, int materialValue) + private int calculateIncrease (ItemStack tool, int materialValue, int itemsUsed) { NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); int damage = tags.getInteger("Damage"); int dur = tags.getInteger("BaseDurability"); - int increase = (int) (50 + (dur * 0.4f * materialValue)); + int increase = (int) (50 * itemsUsed + (dur * 0.4f * materialValue)); int modifiers = tags.getInteger("Modifiers"); float mods = 1.0f; @@ -95,18 +107,16 @@ public class ModRepair extends ItemModifier int itemsUsed = 0; int materialValue = 0; - if (input[0] != null) + for (ItemStack curInput : input) { - materialValue += PatternBuilder.instance.getPartValue(input[0]); - itemsUsed++; - } - if (input[1] != null) - { - materialValue += PatternBuilder.instance.getPartValue(input[1]); - itemsUsed++; + if (curInput != null) + { + materialValue += PatternBuilder.instance.getPartValue(curInput); + itemsUsed++; + } } - int increase = calculateIncrease(tool, materialValue); + int increase = calculateIncrease(tool, materialValue, itemsUsed); int repair = tags.getInteger("RepairCount"); repair += itemsUsed; tags.setInteger("RepairCount", repair); diff --git a/src/main/java/tconstruct/smeltery/blocks/SearedBlock.java b/src/main/java/tconstruct/smeltery/blocks/SearedBlock.java index a65dd1a3..684e2ac1 100644 --- a/src/main/java/tconstruct/smeltery/blocks/SearedBlock.java +++ b/src/main/java/tconstruct/smeltery/blocks/SearedBlock.java @@ -320,9 +320,10 @@ public class SearedBlock extends InventoryBlock } else { - FaucetLogic logic = (FaucetLogic) world.getTileEntity(x, y, z); - if (logic != null) + TileEntity tile = world.getTileEntity(x, y, z); + if (tile != null && tile instanceof FaucetLogic) { + FaucetLogic logic = (FaucetLogic) tile; float xMin = 0.25F; float xMax = 0.75F; float zMin = 0.25F; diff --git a/src/main/java/tconstruct/tools/gui/CraftingStationGui.java b/src/main/java/tconstruct/tools/gui/CraftingStationGui.java index 97fec541..5bc5a4cd 100644 --- a/src/main/java/tconstruct/tools/gui/CraftingStationGui.java +++ b/src/main/java/tconstruct/tools/gui/CraftingStationGui.java @@ -136,7 +136,7 @@ public class CraftingStationGui extends GuiContainer // Attack if (categories.contains("weapon")) { - int attack = (int) (tags.getInteger("Attack")); + int attack = (int) (tags.getInteger("Attack"))+1; float stoneboundDamage = (float) Math.log(durability / 72f + 1) * -2 * stonebound; attack += stoneboundDamage; attack *= tool.getDamageModifier(); @@ -152,9 +152,10 @@ public class CraftingStationGui extends GuiContainer if (stoneboundDamage != 0) { + DecimalFormat df = new DecimalFormat("##.##"); heart = stoneboundDamage == 2 ? StatCollector.translateToLocal("gui.partcrafter8") : StatCollector.translateToLocal("gui.partcrafter9"); String bloss = stoneboundDamage > 0 ? StatCollector.translateToLocal("gui.toolstation4") : StatCollector.translateToLocal("gui.toolstation5"); - this.fontRendererObj.drawString(bloss + (int) stoneboundDamage / 2 + heart, xSize + 8, base + offset * 10, 0xffffff); + this.fontRendererObj.drawString(bloss + df.format(stoneboundDamage / 2f) + heart, xSize + 8, base + offset * 10, 0xffffff); offset++; } offset++; @@ -217,11 +218,11 @@ public class CraftingStationGui extends GuiContainer { float mineSpeed = tags.getInteger("MiningSpeed") / 100f; float mineSpeed2 = tags.getInteger("MiningSpeed2") / 100f; - float stoneboundSpeed = (float) Math.log(durability / 90f + 1) * 2 * stonebound; + float stoneboundSpeed = (float) Math.log(durability / 72f + 1) * 2 * stonebound; DecimalFormat df = new DecimalFormat("##.##"); df.setRoundingMode(RoundingMode.DOWN); float trueSpeed = mineSpeed + stoneboundSpeed; - float trueSpeed2 = mineSpeed + stoneboundSpeed; + float trueSpeed2 = mineSpeed2 + stoneboundSpeed; fontRendererObj.drawString(StatCollector.translateToLocal("gui.toolstation12"), xSize + 8, base + offset * 10, 0xffffff); offset++; @@ -266,7 +267,7 @@ public class CraftingStationGui extends GuiContainer float trueSpeed = mineSpeed / (heads * 100f); - float stoneboundSpeed = (float) Math.log(durability / 90f + 1) * 2 * stonebound; + float stoneboundSpeed = (float) Math.log(durability / 72f + 1) * 2 * stonebound; DecimalFormat df = new DecimalFormat("##.##"); df.setRoundingMode(RoundingMode.DOWN); trueSpeed += stoneboundSpeed; diff --git a/src/main/java/tconstruct/tools/gui/ToolStationGui.java b/src/main/java/tconstruct/tools/gui/ToolStationGui.java index 59b0eea0..cb5c97a1 100644 --- a/src/main/java/tconstruct/tools/gui/ToolStationGui.java +++ b/src/main/java/tconstruct/tools/gui/ToolStationGui.java @@ -231,9 +231,10 @@ public class ToolStationGui extends GuiContainer if (stoneboundDamage != 0) { + DecimalFormat df = new DecimalFormat("##.##"); heart = stoneboundDamage == 2 ? StatCollector.translateToLocal("gui.partcrafter8") : StatCollector.translateToLocal("gui.partcrafter9"); String bloss = stoneboundDamage > 0 ? StatCollector.translateToLocal("gui.toolstation4") : StatCollector.translateToLocal("gui.toolstation5"); - this.fontRendererObj.drawString(bloss + (int) stoneboundDamage / 2 + heart, 294, base + offset * 10, 0xffffff); + this.fontRendererObj.drawString(bloss + df.format(stoneboundDamage / 2f) + heart, xSize + 8, base + offset * 10, 0xffffff); offset++; } offset++; @@ -300,7 +301,7 @@ public class ToolStationGui extends GuiContainer DecimalFormat df = new DecimalFormat("##.##"); df.setRoundingMode(RoundingMode.DOWN); float trueSpeed = mineSpeed + stoneboundSpeed; - float trueSpeed2 = mineSpeed + stoneboundSpeed; + float trueSpeed2 = mineSpeed2 + stoneboundSpeed; fontRendererObj.drawString(StatCollector.translateToLocal("gui.toolstation12"), 294, base + offset * 10, 0xffffff); offset++; diff --git a/src/main/java/tconstruct/tools/logic/FurnaceLogic.java b/src/main/java/tconstruct/tools/logic/FurnaceLogic.java index aef43efc..8c5c14c5 100644 --- a/src/main/java/tconstruct/tools/logic/FurnaceLogic.java +++ b/src/main/java/tconstruct/tools/logic/FurnaceLogic.java @@ -11,6 +11,7 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.Container; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemHoe; @@ -35,7 +36,7 @@ import cpw.mods.fml.common.registry.GameRegistry; * 3-16: Chest */ -public class FurnaceLogic extends InventoryLogic implements IActiveLogic, IFacingLogic +public class FurnaceLogic extends InventoryLogic implements IActiveLogic, IFacingLogic, ISidedInventory { boolean active; public int fuel; @@ -43,6 +44,9 @@ public class FurnaceLogic extends InventoryLogic implements IActiveLogic, IFacin public int progress; public int fuelScale = 200; byte direction; + private static final int[] slots_top = new int[] {0}; + private static final int[] slots_bottom = new int[] {2, 1}; + private static final int[] slots_sides = new int[] {1}; public FurnaceLogic() { @@ -373,4 +377,33 @@ public class FurnaceLogic extends InventoryLogic implements IActiveLogic, IFacin public void closeInventory () { } + + public static boolean isItemFuel(ItemStack par0ItemStack) + { + return getItemBurnTime(par0ItemStack) > 0; + } + + @Override + public boolean isItemValidForSlot(int par1, ItemStack par2ItemStack) + { + return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true); + } + + @Override + public int[] getAccessibleSlotsFromSide(int par1) + { + return par1 == 0 ? slots_bottom : (par1 == 1 ? slots_top : slots_sides); + } + + @Override + public boolean canInsertItem(int par1, ItemStack par2ItemStack, int par3) + { + return this.isItemValidForSlot(par1, par2ItemStack); + } + + @Override + public boolean canExtractItem(int par1, ItemStack par2ItemStack, int par3) + { + return par3 != 0 || par1 != 1 || par2ItemStack.getItem() == Items.bucket; + } }