diff --git a/src/main/java/refinedstorage/container/ContainerBase.java b/src/main/java/refinedstorage/container/ContainerBase.java index 19b8349d9..2082a1c5b 100644 --- a/src/main/java/refinedstorage/container/ContainerBase.java +++ b/src/main/java/refinedstorage/container/ContainerBase.java @@ -7,6 +7,7 @@ import net.minecraft.inventory.ClickType; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import org.lwjgl.input.Keyboard; import refinedstorage.container.slot.SlotDisabled; import refinedstorage.container.slot.SlotSpecimen; @@ -63,7 +64,56 @@ public abstract class ContainerBase extends Container if (slot instanceof SlotSpecimen) { - if (clickedButton == 2 || player.inventory.getItemStack() == null) + if (((SlotSpecimen) slot).isSizeAllowed()) + { + if (player.inventory.getItemStack() != null) + { + int amount = player.inventory.getItemStack().stackSize; + + if (clickedButton == 1) + { + amount = 1; + } + + ItemStack toPut = player.inventory.getItemStack().copy(); + toPut.stackSize = amount; + + slot.putStack(toPut); + } + else if (slot.getStack() != null) + { + if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) + { + slot.putStack(null); + } + else + { + int amount = slot.getStack().stackSize; + + if (clickedButton == 0) + { + amount++; + + if (amount > 64) + { + amount = 64; + } + } + else if (clickedButton == 1) + { + amount--; + + if (amount < 1) + { + amount = 1; + } + } + + slot.getStack().stackSize = amount; + } + } + } + else if (player.inventory.getItemStack() == null) { slot.putStack(null); } diff --git a/src/main/java/refinedstorage/container/slot/SlotSpecimen.java b/src/main/java/refinedstorage/container/slot/SlotSpecimen.java index 33386673e..87ab2a6c6 100644 --- a/src/main/java/refinedstorage/container/slot/SlotSpecimen.java +++ b/src/main/java/refinedstorage/container/slot/SlotSpecimen.java @@ -7,13 +7,13 @@ import net.minecraft.item.ItemStack; public class SlotSpecimen extends Slot { - private boolean allowSize; + private boolean sizeAllowed; public SlotSpecimen(IInventory inventory, int id, int x, int y, boolean allowSize) { super(inventory, id, x, y); - this.allowSize = allowSize; + this.sizeAllowed = allowSize; } @Override @@ -31,11 +31,16 @@ public class SlotSpecimen extends Slot @Override public void putStack(ItemStack stack) { - if (stack != null && !allowSize) + if (stack != null && !sizeAllowed) { stack.stackSize = 1; } super.putStack(stack); } + + public boolean isSizeAllowed() + { + return sizeAllowed; + } } diff --git a/src/main/java/refinedstorage/gui/GuiInterface.java b/src/main/java/refinedstorage/gui/GuiInterface.java index bee66ff85..d7deb39a1 100644 --- a/src/main/java/refinedstorage/gui/GuiInterface.java +++ b/src/main/java/refinedstorage/gui/GuiInterface.java @@ -45,5 +45,14 @@ public class GuiInterface extends GuiBase drawString(7, 7, t("gui.refinedstorage:interface.import")); drawString(7, 42, t("gui.refinedstorage:interface.export")); drawString(7, 123, t("container.inventory")); + + if (inBounds(162, 42, 7, 7, mouseX, mouseY)) + { + String message = t("gui.refinedstorage:interface.export.explanation.0"); + message += "\n" + t("gui.refinedstorage:interface.export.explanation.1"); + message += "\n" + t("gui.refinedstorage:interface.export.explanation.2"); + + drawTooltip(mouseX, mouseY, message); + } } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 65f2b9549..ff03552dd 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -15,6 +15,9 @@ gui.refinedstorage:constructor=Constructor gui.refinedstorage:relay=Relay gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.export=Interface Export +gui.refinedstorage:interface.export.explanation.0=Top slots: items you want exported +gui.refinedstorage:interface.export.explanation.1=Clear a slot: mouse click + SHIFT +gui.refinedstorage:interface.export.explanation.2=Incr. or decr. a slot: left/ right mouse click misc.refinedstorage:energy_stored=%d / %d RF misc.refinedstorage:energy_usage=Usage: %d RF/t diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index 3f88f0603..758235863 100644 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -15,6 +15,9 @@ gui.refinedstorage:constructor=Constructor gui.refinedstorage:relay=Relais gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.export=Interface Export +gui.refinedstorage:interface.export.explanation.0=Bovenste slots: items die je wilt exporten +gui.refinedstorage:interface.export.explanation.1=Slot leegmaken: muisklik + SHIFT +gui.refinedstorage:interface.export.explanation.2=Verhoog of verklein aantal: links/ rechts muisklik misc.refinedstorage:energy_stored=%d / %d RF misc.refinedstorage:energy_usage=Vebruik: %d RF/t diff --git a/src/main/resources/assets/refinedstorage/textures/gui/interface.png b/src/main/resources/assets/refinedstorage/textures/gui/interface.png index f5e1c90d1..052e3350b 100644 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/interface.png and b/src/main/resources/assets/refinedstorage/textures/gui/interface.png differ