From 27bfe4a764d14984e9c1e5854f51d0fb1b9ebe6f Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Fri, 6 May 2016 15:58:42 +0200 Subject: [PATCH] Cancelling crafting tasks --- .../gui/GuiCraftingMonitor.java | 13 ++++- .../network/MessageCraftingMonitorCancel.java | 54 +++++++++++++++++++ .../refinedstorage/proxy/CommonProxy.java | 1 + .../refinedstorage/tile/TileController.java | 6 +++ .../assets/refinedstorage/lang/en_US.lang | 1 + .../assets/refinedstorage/lang/nl_NL.lang | 1 + 6 files changed, 75 insertions(+), 1 deletion(-) create mode 100755 src/main/java/refinedstorage/network/MessageCraftingMonitorCancel.java diff --git a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java index 81b185ccf..1dfb20ab7 100755 --- a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java @@ -4,8 +4,10 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.item.ItemStack; +import refinedstorage.RefinedStorage; import refinedstorage.container.ContainerCraftingMonitor; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; +import refinedstorage.network.MessageCraftingMonitorCancel; import refinedstorage.tile.autocrafting.TileCraftingMonitor; import scala.actors.threadpool.Arrays; @@ -38,7 +40,7 @@ public class GuiCraftingMonitor extends GuiBase { public void init(int x, int y) { addSideButton(new SideButtonRedstoneMode(craftingMonitor)); - cancelButton = addButton(x + 7, y + 113, 50, 20, "Cancel"); + cancelButton = addButton(x + 7, y + 113, 50, 20, t("misc.refinedstorage:cancel")); } @Override @@ -144,6 +146,15 @@ public class GuiCraftingMonitor extends GuiBase { return max < 0 ? 0 : max; } + @Override + protected void actionPerformed(GuiButton button) throws IOException { + super.actionPerformed(button); + + if (button == cancelButton && itemSelected != -1) { + RefinedStorage.NETWORK.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, itemSelected)); + } + } + @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); diff --git a/src/main/java/refinedstorage/network/MessageCraftingMonitorCancel.java b/src/main/java/refinedstorage/network/MessageCraftingMonitorCancel.java new file mode 100755 index 000000000..fb06d30a3 --- /dev/null +++ b/src/main/java/refinedstorage/network/MessageCraftingMonitorCancel.java @@ -0,0 +1,54 @@ +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.autocrafting.TileCraftingMonitor; + +public class MessageCraftingMonitorCancel extends MessageHandlerPlayerToServer implements IMessage { + private int x; + private int y; + private int z; + private int id; + + public MessageCraftingMonitorCancel() { + } + + public MessageCraftingMonitorCancel(TileCraftingMonitor craftingMonitor, int id) { + this.x = craftingMonitor.getPos().getX(); + this.y = craftingMonitor.getPos().getY(); + this.z = craftingMonitor.getPos().getZ(); + this.id = id; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + id = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(id); + } + + @Override + public void handle(MessageCraftingMonitorCancel message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); + + if (tile instanceof TileCraftingMonitor) { + TileCraftingMonitor craftingMonitor = (TileCraftingMonitor) tile; + + if (craftingMonitor.isConnected()) { + craftingMonitor.getController().onCraftingTaskCancelRequested(message.id); + } + } + } +} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index b6b1dcd1e..637125029 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -55,6 +55,7 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageGridCraftingStart.class, MessageGridCraftingStart.class, 20, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageWirelessGridCraftingStart.class, MessageWirelessGridCraftingStart.class, 21, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridPatternCreate.class, MessageGridPatternCreate.class, 22, Side.SERVER); + RefinedStorage.NETWORK.registerMessage(MessageCraftingMonitorCancel.class, MessageCraftingMonitorCancel.class, 23, Side.SERVER); NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler()); diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 3491e998c..813c13bd8 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -750,4 +750,10 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } } } + + public void onCraftingTaskCancelRequested(int id) { + if (id >= 0 && id < craftingTasks.size()) { + cancelCraftingTask(craftingTasks.get(id)); + } + } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index ce35d3917..bcace7a30 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -51,6 +51,7 @@ misc.refinedstorage:no=No misc.refinedstorage:start=Start misc.refinedstorage:clear=Clear misc.refinedstorage:none=None +misc.refinedstorage:cancel=Cancel misc.refinedstorage:priority=Priority misc.refinedstorage:processing=Processing diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index cb659db2d..9beea496b 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -51,6 +51,7 @@ misc.refinedstorage:no=Nee misc.refinedstorage:start=Start misc.refinedstorage:clear=Legen misc.refinedstorage:none=Geen +misc.refinedstorage:cancel=Annuleer misc.refinedstorage:priority=Prioriteit misc.refinedstorage:processing=Verwerking