From b86b3354b1aa7668602bfacc2e790b13133f3bd9 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Mon, 18 Jul 2016 01:35:21 +0200 Subject: [PATCH] Added X button to Processing Pattern Encoder to clear configuration of inputs and outputs, fixes #204 --- CHANGELOG.md | 3 ++ src/main/java/refinedstorage/gui/GuiGrid.java | 10 ++-- .../gui/GuiProcessingPatternEncoder.java | 21 ++++++-- .../MessageProcessingPatternEncoderClear.java | 51 ++++++++++++++++++ .../refinedstorage/proxy/CommonProxy.java | 1 + .../gui/processing_pattern_encoder.png | Bin 2524 -> 2551 bytes 6 files changed, 77 insertions(+), 9 deletions(-) create mode 100755 src/main/java/refinedstorage/network/MessageProcessingPatternEncoderClear.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 911a1ba72..b0348ea7c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ - Fixed exporter crafting upgrades taking priority over other tasks - Fixed NPE with incorrectly initialized disks +**Features** +- Added X button to Processing Pattern Encoder to clear configuration of inputs and outputs + ### 0.8.10 **Bugfixes** - Fixed not being able to get some items out of Grid diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 820203030..469617b5b 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -176,11 +176,11 @@ public class GuiGrid extends GuiBase { getScrollbar().setScrollDelta((float) getScrollbar().getScrollbarHeight() / (float) getRows()); } - public int getOffset() { + private int getOffset() { return (int) Math.ceil(getScrollbar().getCurrentScroll() / 70f * (float) getRows()); } - public int getRows() { + private int getRows() { int max = (int) Math.ceil((float) items.size() / 9f); return max < 0 ? 0 : max; @@ -198,11 +198,11 @@ public class GuiGrid extends GuiBase { return inBounds(7, 19, 162, 18 * getVisibleRows(), mouseX, mouseY); } - public int getVisibleRows() { + private int getVisibleRows() { return (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 4 : 5; } - public boolean isOverClear(int mouseX, int mouseY) { + private boolean isOverClear(int mouseX, int mouseY) { switch (grid.getType()) { case CRAFTING: return inBounds(82, 95, 7, 7, mouseX, mouseY); @@ -213,7 +213,7 @@ public class GuiGrid extends GuiBase { } } - public boolean isOverCreatePattern(int mouseX, int mouseY) { + private boolean isOverCreatePattern(int mouseX, int mouseY) { return grid.getType() == EnumGridType.PATTERN && inBounds(152, 114, 16, 16, mouseX, mouseY) && ((TileGrid) grid).canCreatePattern(); } diff --git a/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java b/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java index 71594f7ce..62f3e1e0c 100755 --- a/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java +++ b/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java @@ -5,6 +5,7 @@ import net.minecraft.init.SoundEvents; import refinedstorage.RefinedStorage; import refinedstorage.container.ContainerProcessingPatternEncoder; import refinedstorage.network.MessageGridPatternCreate; +import refinedstorage.network.MessageProcessingPatternEncoderClear; import refinedstorage.tile.TileProcessingPatternEncoder; import java.io.IOException; @@ -26,10 +27,14 @@ public class GuiProcessingPatternEncoder extends GuiBase { public void update(int x, int y) { } - public boolean isHoveringOverCreatePattern(int mouseX, int mouseY) { + private boolean isOverCreatePattern(int mouseX, int mouseY) { return inBounds(152, 38, 16, 16, mouseX, mouseY) && processingPatternEncoder.canCreatePattern(); } + private boolean isOverClear(int mouseX, int mouseY) { + return inBounds(136, 75, 7, 7, mouseX, mouseY); + } + @Override public void drawBackground(int x, int y, int mouseX, int mouseY) { bindTexture("gui/processing_pattern_encoder.png"); @@ -38,7 +43,7 @@ public class GuiProcessingPatternEncoder extends GuiBase { int ty = 0; - if (isHoveringOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { + if (isOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { ty = 1; } @@ -54,18 +59,26 @@ public class GuiProcessingPatternEncoder extends GuiBase { drawString(7, 7, t("gui.refinedstorage:processing_pattern_encoder")); drawString(7, 78, t("container.inventory")); - if (isHoveringOverCreatePattern(mouseX, mouseY)) { + if (isOverCreatePattern(mouseX, mouseY)) { drawTooltip(mouseX, mouseY, t("gui.refinedstorage:processing_pattern_encoder.pattern_create")); } + + if (isOverClear(mouseX, mouseY)) { + drawTooltip(mouseX, mouseY, t("misc.refinedstorage:clear")); + } } @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); - if (isHoveringOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { + if (isOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { RefinedStorage.INSTANCE.network.sendToServer(new MessageGridPatternCreate(processingPatternEncoder.getPos().getX(), processingPatternEncoder.getPos().getY(), processingPatternEncoder.getPos().getZ())); + mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + } else if (isOverClear(mouseX - guiLeft, mouseY - guiTop)) { + RefinedStorage.INSTANCE.network.sendToServer(new MessageProcessingPatternEncoderClear(processingPatternEncoder)); + mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F)); } } diff --git a/src/main/java/refinedstorage/network/MessageProcessingPatternEncoderClear.java b/src/main/java/refinedstorage/network/MessageProcessingPatternEncoderClear.java new file mode 100755 index 000000000..be9fec068 --- /dev/null +++ b/src/main/java/refinedstorage/network/MessageProcessingPatternEncoderClear.java @@ -0,0 +1,51 @@ +package refinedstorage.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import refinedstorage.tile.TileProcessingPatternEncoder; + +public class MessageProcessingPatternEncoderClear extends MessageHandlerPlayerToServer implements IMessage { + private int x; + private int y; + private int z; + + public MessageProcessingPatternEncoderClear() { + } + + public MessageProcessingPatternEncoderClear(TileProcessingPatternEncoder processingPatternEncoder) { + this.x = processingPatternEncoder.getPos().getX(); + this.y = processingPatternEncoder.getPos().getY(); + this.z = processingPatternEncoder.getPos().getZ(); + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + } + + @Override + public void handle(MessageProcessingPatternEncoderClear message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); + + if (tile instanceof TileProcessingPatternEncoder) { + TileProcessingPatternEncoder processingPatternEncoder = (TileProcessingPatternEncoder) tile; + + for (int i = 0; i < processingPatternEncoder.getConfiguration().getSlots(); ++i) { + processingPatternEncoder.getConfiguration().setStackInSlot(i, null); + } + } + } +} + diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 1e2d9d5ff..8383ba7fe 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -57,6 +57,7 @@ public class CommonProxy { RefinedStorage.INSTANCE.network.registerMessage(MessageCraftingMonitorCancel.class, MessageCraftingMonitorCancel.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridUpdate.class, MessageGridUpdate.class, id++, Side.CLIENT); RefinedStorage.INSTANCE.network.registerMessage(MessageGridDelta.class, MessageGridDelta.class, id++, Side.CLIENT); + RefinedStorage.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderClear.class, MessageProcessingPatternEncoderClear.class, id++, Side.SERVER); NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler()); diff --git a/src/main/resources/assets/refinedstorage/textures/gui/processing_pattern_encoder.png b/src/main/resources/assets/refinedstorage/textures/gui/processing_pattern_encoder.png index d24f82b4db62d1327f3f3fbe7002c2f622e2035b..f6fcdb0b5bad7a5cdfc5fe6350d29056c85583c9 100755 GIT binary patch delta 1427 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 OsX_vGZL8YCJ^2^MQBL^)