From d32b71aa86fc4c247430bce54c70af4b980515c3 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Wed, 7 Jan 2015 23:36:27 -0500 Subject: [PATCH] Fix AutoChisel shift clicking and add tooltips --- .../tileentity/TileEntityAutoChisel.java | 11 +++- .../chisel/client/gui/GuiAutoChisel.java | 29 ++++++++++ .../chisel/inventory/ContainerAutoChisel.java | 57 +++++++++++++------ .../cricketcraft/chisel/item/ItemUpgrade.java | 2 +- .../resources/assets/chisel/lang/en_US.lang | 1 + 5 files changed, 80 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java index ebed6e68..40016b8f 100644 --- a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java +++ b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java @@ -12,6 +12,7 @@ import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.StatCollector; import com.cricketcraft.chisel.carving.Carving; import com.cricketcraft.chisel.init.ModItems; @@ -22,7 +23,15 @@ import cpw.mods.fml.relauncher.SideOnly; public class TileEntityAutoChisel extends TileEntity implements ISidedInventory { public enum Upgrade { - SPEED, AUTOMATION, STACK + SPEED, AUTOMATION, STACK; + + public String getUnlocalizedName() { + return ModItems.upgrade.getUnlocalizedName() + "_" + this.name().toLowerCase(); + } + + public String getLocalizedName() { + return StatCollector.translateToLocal(getUnlocalizedName() + ".name"); + } } private final int BASE = 0, TARGET = 1, OUTPUT = 2, MIN_UPGRADE = 3; diff --git a/src/main/java/com/cricketcraft/chisel/client/gui/GuiAutoChisel.java b/src/main/java/com/cricketcraft/chisel/client/gui/GuiAutoChisel.java index 8097892d..9ecdcdb4 100644 --- a/src/main/java/com/cricketcraft/chisel/client/gui/GuiAutoChisel.java +++ b/src/main/java/com/cricketcraft/chisel/client/gui/GuiAutoChisel.java @@ -1,13 +1,19 @@ package com.cricketcraft.chisel.client.gui; +import java.util.List; + import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; import com.cricketcraft.chisel.inventory.ContainerAutoChisel; +import com.cricketcraft.chisel.inventory.ContainerAutoChisel.SlotUpgrade; +import com.google.common.collect.Lists; public class GuiAutoChisel extends GuiContainer { @@ -17,6 +23,29 @@ public class GuiAutoChisel extends GuiContainer { super(new ContainerAutoChisel(inventoryPlayer, tileEntityAutoChisel)); } + @SuppressWarnings("unchecked") + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + super.drawGuiContainerForegroundLayer(mouseX, mouseY); + + int x = (this.width - this.xSize) / 2; + int y = (this.height - this.ySize) / 2; + + for (Slot slot : (List) inventorySlots.inventorySlots) { + if (mouseInside(slot, mouseX - x, mouseY - y)) { + if (slot instanceof SlotUpgrade) { + this.func_146283_a(Lists.newArrayList(((SlotUpgrade) slot).upgradeType.getLocalizedName()), mouseX - x, mouseY - y); + } else if (slot.slotNumber == 1) { + this.func_146283_a(Lists.newArrayList(StatCollector.translateToLocal("autochisel.slot.target.tooltip")), mouseX - x, mouseY - y); + } + } + } + } + + private boolean mouseInside(Slot slot, int x, int y) { + return x >= slot.xDisplayPosition && x <= slot.xDisplayPosition + 16 && y >= slot.yDisplayPosition && y <= slot.yDisplayPosition + 16; + } + @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/com/cricketcraft/chisel/inventory/ContainerAutoChisel.java b/src/main/java/com/cricketcraft/chisel/inventory/ContainerAutoChisel.java index 0afdae85..98470c4a 100644 --- a/src/main/java/com/cricketcraft/chisel/inventory/ContainerAutoChisel.java +++ b/src/main/java/com/cricketcraft/chisel/inventory/ContainerAutoChisel.java @@ -7,9 +7,26 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; +import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel.Upgrade; +import com.cricketcraft.chisel.init.ModItems; public class ContainerAutoChisel extends Container { + public static class SlotUpgrade extends Slot { + + public Upgrade upgradeType; + + public SlotUpgrade(TileEntityAutoChisel inv, int id, int x, int y, Upgrade upgrade) { + super(inv, id, x, y); + this.upgradeType = upgrade; + } + + @Override + public boolean isItemValid(ItemStack stack) { + return stack.getItem() == ModItems.upgrade && stack.getItemDamage() == upgradeType.ordinal(); + } + } + public static TileEntityAutoChisel autoChisel; public static EntityPlayer player; @@ -21,9 +38,9 @@ public class ContainerAutoChisel extends Container { addSlotToContainer(new Slot(tileEntityAutoChisel, 0, 53, 15)); addSlotToContainer(new Slot(tileEntityAutoChisel, 1, 78, 51)); addSlotToContainer(new Slot(tileEntityAutoChisel, 2, 103, 15)); - addSlotToContainer(new Slot(tileEntityAutoChisel, 3, 151, 11)); - addSlotToContainer(new Slot(tileEntityAutoChisel, 4, 151, 31)); - addSlotToContainer(new Slot(tileEntityAutoChisel, 5, 151, 51)); + addSlotToContainer(new SlotUpgrade(tileEntityAutoChisel, 3, 151, 11, Upgrade.SPEED)); + addSlotToContainer(new SlotUpgrade(tileEntityAutoChisel, 4, 151, 31, Upgrade.AUTOMATION)); + addSlotToContainer(new SlotUpgrade(tileEntityAutoChisel, 5, 151, 51, Upgrade.STACK)); bindPlayerInventory(player); } @@ -49,29 +66,33 @@ public class ContainerAutoChisel extends Container { public ItemStack transferStackInSlot(EntityPlayer player, int slotNumber) { ItemStack itemStack = null; Slot slot = (Slot) this.inventorySlots.get(slotNumber); + System.out.println(slotNumber); if (slot != null && slot.getHasStack()) { ItemStack itemStack1 = slot.getStack(); itemStack = itemStack1.copy(); - if (slotNumber == 2) { - if (!this.mergeItemStack(itemStack1, 3, 39, true)) { - return null; - } - - slot.onSlotChange(itemStack1, itemStack); - } else if (slotNumber != 1 && slotNumber != 0) { - if (!this.mergeItemStack(itemStack1, 0, 1, true)) { - return null; - } else if (slotNumber >= 3 && slotNumber < 30) { - if (this.mergeItemStack(itemStack1, 30, 39, false)) { + // if we are in the auto chisel + if (slotNumber <= 5) { + // merge hotbar + if (!this.mergeItemStack(itemStack1, 33, 42, false)) { + // merge rest of inventory + if (!this.mergeItemStack(itemStack1, 6, 33, false)) { + return null; + } + } + } else { + // if this is an upgrade, check the upgrade slots + if (itemStack1.getItem() == ModItems.upgrade) { + if (!this.mergeItemStack(itemStack1, 3, 6, false)) { + return null; + } + } else { + // otherwise just put it in one of the 3 other slots + if (!this.mergeItemStack(itemStack1, 1, 3, false)) { return null; } - } else if (slotNumber >= 30 && slotNumber < 39 && !this.mergeItemStack(itemStack1, 3, 30, false)) { - return null; } - } else if (this.mergeItemStack(itemStack1, 3, 39, false)) { - return null; } if (itemStack1.stackSize == 0) { diff --git a/src/main/java/com/cricketcraft/chisel/item/ItemUpgrade.java b/src/main/java/com/cricketcraft/chisel/item/ItemUpgrade.java index a6932e0b..ef4d1823 100644 --- a/src/main/java/com/cricketcraft/chisel/item/ItemUpgrade.java +++ b/src/main/java/com/cricketcraft/chisel/item/ItemUpgrade.java @@ -61,6 +61,6 @@ public class ItemUpgrade extends BaseItem { @Override public String getUnlocalizedName(ItemStack stack) { Upgrade[] upgrades = Upgrade.values(); - return getUnlocalizedName() + "_" + upgrades[stack.getItemDamage() % upgrades.length].name().toLowerCase(); + return upgrades[stack.getItemDamage() % upgrades.length].getUnlocalizedName(); } } diff --git a/src/main/resources/assets/chisel/lang/en_US.lang b/src/main/resources/assets/chisel/lang/en_US.lang index b890915f..3080d76e 100644 --- a/src/main/resources/assets/chisel/lang/en_US.lang +++ b/src/main/resources/assets/chisel/lang/en_US.lang @@ -43,6 +43,7 @@ item.diamondChisel.desc=Left click and it changes blocks! #Auto Chisel tile.autoChisel.name=Auto Chisel +autochisel.slot.target.tooltip=Target Slot #Leaves tile.leaves.6.desc=Dead Leaves