From 7ec94f6b6b7fcdd1ff50b7242bd400b04ed53d36 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Tue, 22 Dec 2015 21:41:53 +0100 Subject: [PATCH] clearing crafting matrix --- .../storagecraft/container/ContainerGrid.java | 6 +- src/main/java/storagecraft/gui/GuiGrid.java | 19 +++++ .../network/MessageGridCraftingClear.java | 75 ++++++++++++++++++ .../java/storagecraft/proxy/CommonProxy.java | 2 + .../assets/storagecraft/lang/en_US.lang | 2 + .../textures/gui/craftingGrid.png | Bin 1964 -> 2036 bytes 6 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 src/main/java/storagecraft/network/MessageGridCraftingClear.java diff --git a/src/main/java/storagecraft/container/ContainerGrid.java b/src/main/java/storagecraft/container/ContainerGrid.java index 46675b3df..1723cdc00 100644 --- a/src/main/java/storagecraft/container/ContainerGrid.java +++ b/src/main/java/storagecraft/container/ContainerGrid.java @@ -15,7 +15,7 @@ public class ContainerGrid extends ContainerBase if (grid.isCrafting()) { - int x = 44; + int x = 25; int y = 106; for (int i = 0; i < 9; ++i) @@ -27,11 +27,11 @@ public class ContainerGrid extends ContainerBase if ((i + 1) % 3 == 0) { y += 18; - x = 44; + x = 25; } } - addSlotToContainer(new SlotGridCraftingResult(player, grid.getCraftingMatrix(), grid.getCraftingResult(), grid, 0, 125, 124)); + addSlotToContainer(new SlotGridCraftingResult(player, grid.getCraftingMatrix(), grid.getCraftingResult(), grid, 0, 137, 124)); } } } diff --git a/src/main/java/storagecraft/gui/GuiGrid.java b/src/main/java/storagecraft/gui/GuiGrid.java index f49fee77f..fb73eef9d 100644 --- a/src/main/java/storagecraft/gui/GuiGrid.java +++ b/src/main/java/storagecraft/gui/GuiGrid.java @@ -4,8 +4,10 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.Iterator; import java.util.List; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiTextField; import net.minecraft.inventory.Slot; +import net.minecraft.util.ResourceLocation; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import storagecraft.StorageCraft; @@ -13,6 +15,7 @@ import storagecraft.container.ContainerGrid; import storagecraft.gui.sidebutton.SideButtonGridSortingDirection; import storagecraft.gui.sidebutton.SideButtonGridSortingType; import storagecraft.gui.sidebutton.SideButtonRedstoneMode; +import storagecraft.network.MessageGridCraftingClear; import storagecraft.network.MessageStoragePull; import storagecraft.network.MessageStoragePush; import storagecraft.storage.StorageItem; @@ -114,6 +117,11 @@ public class GuiGrid extends GuiBase return hoveringSlotId >= 0; } + public boolean isHoveringOverClear(int mouseX, int mouseY) + { + return mouseX >= 81 && mouseX <= 87 && mouseY >= 105 && mouseY <= 111; + } + @Override public void drawBackground(int x, int y, int mouseX, int mouseY) { @@ -192,6 +200,11 @@ public class GuiGrid extends GuiBase { drawTooltip(mouseX, mouseY, items.get(hoveringSlotId).toItemStack()); } + + if (grid.isCrafting() && isHoveringOverClear(mouseX, mouseY)) + { + drawTooltip(mouseX, mouseY, t("misc.storagecraft:clear")); + } } public List getItems() @@ -282,6 +295,12 @@ public class GuiGrid extends GuiBase { StorageCraft.NETWORK.sendToServer(new MessageStoragePull(controller.xCoord, controller.yCoord, controller.zCoord, hoveringId, clickedButton == 1, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); } + else if (clickedButton == 0 && grid.isCrafting() && isHoveringOverClear(mouseX - guiLeft, mouseY - guiTop)) + { + StorageCraft.NETWORK.sendToServer(new MessageGridCraftingClear(grid)); + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + } else { for (Slot slot : container.getPlayerInventorySlots()) diff --git a/src/main/java/storagecraft/network/MessageGridCraftingClear.java b/src/main/java/storagecraft/network/MessageGridCraftingClear.java new file mode 100644 index 000000000..68c9d5103 --- /dev/null +++ b/src/main/java/storagecraft/network/MessageGridCraftingClear.java @@ -0,0 +1,75 @@ +package storagecraft.network; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import storagecraft.tile.TileGrid; + +public class MessageGridCraftingClear implements IMessage, IMessageHandler +{ + private int x; + private int y; + private int z; + + public MessageGridCraftingClear() + { + } + + public MessageGridCraftingClear(TileGrid grid) + { + this.x = grid.xCoord; + this.y = grid.yCoord; + this.z = grid.zCoord; + } + + @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 IMessage onMessage(MessageGridCraftingClear message, MessageContext context) + { + EntityPlayerMP player = context.getServerHandler().playerEntity; + + TileEntity tile = player.worldObj.getTileEntity(message.x, message.y, message.z); + + if (tile instanceof TileGrid) + { + TileGrid grid = (TileGrid) tile; + + if (grid.isConnected()) + { + for (int i = 0; i < grid.getCraftingMatrix().getSizeInventory(); ++i) + { + ItemStack slot = grid.getCraftingMatrix().getStackInSlot(i); + + if (slot != null) + { + if (grid.getController().push(slot)) + { + grid.getCraftingMatrix().setInventorySlotContents(i, null); + } + } + } + } + } + + return null; + } +} diff --git a/src/main/java/storagecraft/proxy/CommonProxy.java b/src/main/java/storagecraft/proxy/CommonProxy.java index 067e49d7d..0001994f2 100644 --- a/src/main/java/storagecraft/proxy/CommonProxy.java +++ b/src/main/java/storagecraft/proxy/CommonProxy.java @@ -15,6 +15,7 @@ import storagecraft.item.ItemBlockGrid; import storagecraft.network.MessageCompareUpdate; import storagecraft.network.MessageDetectorAmountUpdate; import storagecraft.network.MessageDetectorModeUpdate; +import storagecraft.network.MessageGridCraftingClear; import storagecraft.network.MessageGridCraftingUpdate; import storagecraft.network.MessageImporterModeUpdate; import storagecraft.network.MessageRedstoneModeUpdate; @@ -43,6 +44,7 @@ public class CommonProxy StorageCraft.NETWORK.registerMessage(MessageDetectorModeUpdate.class, MessageDetectorModeUpdate.class, 6, Side.SERVER); StorageCraft.NETWORK.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, 7, Side.SERVER); StorageCraft.NETWORK.registerMessage(MessageGridCraftingUpdate.class, MessageGridCraftingUpdate.class, 8, Side.CLIENT); + StorageCraft.NETWORK.registerMessage(MessageGridCraftingClear.class, MessageGridCraftingClear.class, 9, Side.SERVER); NetworkRegistry.INSTANCE.registerGuiHandler(StorageCraft.INSTANCE, new GuiHandler()); diff --git a/src/main/resources/assets/storagecraft/lang/en_US.lang b/src/main/resources/assets/storagecraft/lang/en_US.lang index 30903ba9c..e06389dad 100644 --- a/src/main/resources/assets/storagecraft/lang/en_US.lang +++ b/src/main/resources/assets/storagecraft/lang/en_US.lang @@ -19,6 +19,8 @@ misc.storagecraft:wirelessGrid.notFound=Grid not found. misc.storagecraft:wirelessGrid.notSet=Grid not set yet. misc.storagecraft:wirelessGrid.outOfRange=Grid is out of range. +misc.storagecraft:clear=Clear + sidebutton.storagecraft:compare.1=Compare Damage sidebutton.storagecraft:compare.2=Compare NBT diff --git a/src/main/resources/assets/storagecraft/textures/gui/craftingGrid.png b/src/main/resources/assets/storagecraft/textures/gui/craftingGrid.png index 20af2297b1844bb01d62707efc576ccef999c2b9..a908b1468e8408ed43547368a7b07d8afb263992 100644 GIT binary patch literal 2036 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;5!7ujG`J|4M0JO64!{5;QX|b^2DN4hJwV*yb`^<)Di^~Jp(y_izzusLukB2GNSN{KF^SA_-A8VK1){RMExNui{1yjT9)xS%=e`dbp+q;_u=!7lr zHvmZnhGTQtSsT7d$LTVBe|g)?`S4wBh7W8F{14J^#$LZ;zkUbfmz`=~EpCI#LNHiR z+YT)5pkTwir*m_U@+{ctea_i*1W*yev=a~tEAt%*S4PzDQ7$q%ur;XnI~e@{1D z{8WAFG}DW_;kxhH4>U6Tjz98$U-7(#)T95`KK^}fZB zY-72_bVDG6CqcI$mBH4~|NPQf%n@8B>|18CHp)}B%LEcK0L3m-RPm5RBmvixK4fkq8wHaQYS6%;wZT&i~02!eBU{SMR z_jzUq`Cwp_eNkXNu#~ZH4u@#D$^lJ;9~c-)zH@AmXjH z4xG(!UqwCZC{KVpP^96T>@{wO&DZA??pvL`F5@Wgg7s#akHxptYQvNRRfxgZ3=R3S zq_-xqtx#rQ$dG=J#`vP`cUZ8^fzR9D#X8SrPOxCzYLaWUZr^`qy>o1#KLVr|gLHbj L`njxgN@xNAT?Skh>GZx^prwH!2#la2;k~;5*ECJby*XG+x3?Pe zZW)NQ1+u;UZEqy~biQusWR916dGDQD?%BCUXr}V!tm$*tUB7G<``S9z|NZML3I$Ow z|L)&^mAi&v&)Q2rWAqA`Ph1wyU~DK3pZ@!Dy!?YpSB~p3GB8Z2ozBVt1oGDUTn^u& z?`bhi|80L;YL{&-W5Yd$FZGOne%w*Le)FLAU51~#)4u%6(gvvpf`&J{bs#Jt+djQ= z{kBUy6Ly|nQ@CyN>zvD8<_>|>U zg89jnQJHKJ%0M>MR)=}}9DuwN`%W`4Bv?D_TRA`XU)=sxiy4h(OXSL>gaD0!`RBxC zc{YXjnJf$rd2S30^-t1R6!i5t4{T)kz5n|9S1*J=>|F2H@=1BK`{Tv+ZI z&GJYf$uMELJ&(gSOC|;dbD-r##!M5$|LZdRoO!XEd5V9_JUMyUS|+>a|2b+uDt{<} zxd&*q&EG_ZPxFA*0c``@`{~gn1{v-EJHh&@UCoSr{K!`53jleW-fv=H*unhd_Me-} z-v29}Yr3w4Ii=3AmH#VRt&;oU^uYv{lERiOC=SGr$;`{QNMn3+0?v- zIa>lBC*Ir61XTnM9Vq+7>?a{>O_)>a-x+1kdHclb_LfV$6DFHw*_`t zvjOP&Kld4)i#1$+yYqAi|A*K9^Y%I|=Tm67tr@ZO_p;Z!;_8{MJm7HKn3WO=((CE! K=d#Wzp$PyW7Cs9A