From c376ff5ce71b369167628075e8695093f2b40ba6 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 30 Jul 2016 00:21:01 +0200 Subject: [PATCH] Grid Filter item and GUI --- .../refinedstorage/RefinedStorageGui.java | 1 + .../refinedstorage/RefinedStorageItems.java | 1 + .../container/ContainerBase.java | 9 ++- .../container/ContainerGridFilter.java | 55 ++++++++++++++++++ .../refinedstorage/gui/GuiGridFilter.java | 30 ++++++++++ .../java/refinedstorage/gui/GuiHandler.java | 8 +++ .../inventory/GridFilterItemHandler.java | 31 ++++++++++ .../refinedstorage/item/ItemGridFilter.java | 29 +++++++++ .../refinedstorage/proxy/ClientProxy.java | 1 + .../refinedstorage/proxy/CommonProxy.java | 1 + .../java/refinedstorage/tile/TileBase.java | 8 +-- .../assets/refinedstorage/lang/en_US.lang | 4 +- .../assets/refinedstorage/lang/nl_NL.lang | 4 +- .../models/item/grid_filter.json | 6 ++ .../textures/gui/grid_filter.png | Bin 0 -> 1832 bytes .../textures/items/grid_filter.png | Bin 0 -> 232 bytes 16 files changed, 181 insertions(+), 7 deletions(-) create mode 100755 src/main/java/refinedstorage/container/ContainerGridFilter.java create mode 100755 src/main/java/refinedstorage/gui/GuiGridFilter.java create mode 100755 src/main/java/refinedstorage/inventory/GridFilterItemHandler.java create mode 100755 src/main/java/refinedstorage/item/ItemGridFilter.java create mode 100755 src/main/resources/assets/refinedstorage/models/item/grid_filter.json create mode 100755 src/main/resources/assets/refinedstorage/textures/gui/grid_filter.png create mode 100755 src/main/resources/assets/refinedstorage/textures/items/grid_filter.png diff --git a/src/main/java/refinedstorage/RefinedStorageGui.java b/src/main/java/refinedstorage/RefinedStorageGui.java index e454987b3..e07961b75 100755 --- a/src/main/java/refinedstorage/RefinedStorageGui.java +++ b/src/main/java/refinedstorage/RefinedStorageGui.java @@ -18,4 +18,5 @@ public final class RefinedStorageGui { public static final int WIRELESS_TRANSMITTER = 14; public static final int CRAFTER = 15; public static final int PROCESSING_PATTERN_ENCODER = 16; + public static final int GRID_FILTER = 17; } diff --git a/src/main/java/refinedstorage/RefinedStorageItems.java b/src/main/java/refinedstorage/RefinedStorageItems.java index df83bd2dc..8ea4c3810 100755 --- a/src/main/java/refinedstorage/RefinedStorageItems.java +++ b/src/main/java/refinedstorage/RefinedStorageItems.java @@ -13,4 +13,5 @@ public final class RefinedStorageItems { public static final ItemPattern PATTERN = new ItemPattern(); public static final ItemUpgrade UPGRADE = new ItemUpgrade(); public static final ItemStorageHousing STORAGE_HOUSING = new ItemStorageHousing(); + public static final ItemGridFilter GRID_FILTER = new ItemGridFilter(); } diff --git a/src/main/java/refinedstorage/container/ContainerBase.java b/src/main/java/refinedstorage/container/ContainerBase.java index 3eb1d74a1..bfc46cb7b 100755 --- a/src/main/java/refinedstorage/container/ContainerBase.java +++ b/src/main/java/refinedstorage/container/ContainerBase.java @@ -26,7 +26,14 @@ public abstract class ContainerBase extends Container { int id = 0; for (int i = 0; i < 9; i++) { - addSlotToContainer(new Slot(player.inventory, id, xInventory + i * 18, yInventory + 4 + (3 * 18))); + int x = xInventory + i * 18; + int y = yInventory + 4 + (3 * 18); + + if (ContainerBase.this instanceof ContainerGridFilter && i == ((ContainerGridFilter) ContainerBase.this).slot) { + addSlotToContainer(new SlotDisabled(player.inventory, id, x, y)); + } else { + addSlotToContainer(new Slot(player.inventory, id, x, y)); + } id++; } diff --git a/src/main/java/refinedstorage/container/ContainerGridFilter.java b/src/main/java/refinedstorage/container/ContainerGridFilter.java new file mode 100755 index 000000000..1a0537d1d --- /dev/null +++ b/src/main/java/refinedstorage/container/ContainerGridFilter.java @@ -0,0 +1,55 @@ +package refinedstorage.container; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import refinedstorage.container.slot.SlotSpecimen; +import refinedstorage.inventory.GridFilterItemHandler; + +public class ContainerGridFilter extends ContainerBase { + private GridFilterItemHandler itemHandler; + + protected int slot; + + public ContainerGridFilter(EntityPlayer player, ItemStack gridFilter, int slot) { + super(player); + + this.slot = slot; + this.itemHandler = new GridFilterItemHandler(gridFilter); + + int x = 8; + int y = 20; + + for (int i = 0; i < 9 * 3; ++i) { + addSlotToContainer(new SlotSpecimen(itemHandler, i, x, y)); + + if ((i + 1) % 9 == 0) { + y += 18; + x = 8; + } else { + x += 18; + } + } + + addPlayerInventory(8, 91); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + + Slot slot = getSlot(index); + + if (slot != null && slot.getHasStack()) { + stack = slot.getStack(); + + if (index > (9 * 3) - 1) { + return mergeItemStackToSpecimen(stack, 0, 9 * 3); + } + + return null; + } + + return stack; + } +} diff --git a/src/main/java/refinedstorage/gui/GuiGridFilter.java b/src/main/java/refinedstorage/gui/GuiGridFilter.java new file mode 100755 index 000000000..002913bad --- /dev/null +++ b/src/main/java/refinedstorage/gui/GuiGridFilter.java @@ -0,0 +1,30 @@ +package refinedstorage.gui; + +import refinedstorage.container.ContainerGridFilter; + +public class GuiGridFilter extends GuiBase { + public GuiGridFilter(ContainerGridFilter container) { + super(container, 176, 183); + } + + @Override + public void init(int x, int y) { + } + + @Override + public void update(int x, int y) { + } + + @Override + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/grid_filter.png"); + + drawTexture(x, y, 0, 0, width, height); + } + + @Override + public void drawForeground(int mouseX, int mouseY) { + drawString(7, 7, t("gui.refinedstorage:grid_filter")); + drawString(7, 79, t("container.inventory")); + } +} diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index d5aa498ca..baa33c5f3 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -59,11 +59,17 @@ public class GuiHandler implements IGuiHandler { public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if (ID == RefinedStorageGui.WIRELESS_GRID) { return getWirelessGridContainer(player, x); + } else if (ID == RefinedStorageGui.GRID_FILTER) { + return getGridFilterContainer(player, x); } return getContainer(ID, player, world.getTileEntity(new BlockPos(x, y, z))); } + private ContainerGridFilter getGridFilterContainer(EntityPlayer player, int hand) { + return new ContainerGridFilter(player, player.getHeldItem(EnumHand.values()[hand]), player.inventory.currentItem); + } + private WirelessGrid getWirelessGrid(EntityPlayer player, int hand) { return new WirelessGrid(player.worldObj, player.getHeldItem(EnumHand.values()[hand]), EnumHand.values()[hand]); } @@ -119,6 +125,8 @@ public class GuiHandler implements IGuiHandler { return new GuiCrafter((ContainerCrafter) getContainer(ID, player, tile), (TileCrafter) tile); case RefinedStorageGui.PROCESSING_PATTERN_ENCODER: return new GuiProcessingPatternEncoder((ContainerProcessingPatternEncoder) getContainer(ID, player, tile), (TileProcessingPatternEncoder) tile); + case RefinedStorageGui.GRID_FILTER: + return new GuiGridFilter(getGridFilterContainer(player, x)); default: return null; } diff --git a/src/main/java/refinedstorage/inventory/GridFilterItemHandler.java b/src/main/java/refinedstorage/inventory/GridFilterItemHandler.java new file mode 100755 index 000000000..31bf88390 --- /dev/null +++ b/src/main/java/refinedstorage/inventory/GridFilterItemHandler.java @@ -0,0 +1,31 @@ +package refinedstorage.inventory; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.items.ItemStackHandler; +import refinedstorage.tile.TileBase; + +public class GridFilterItemHandler extends ItemStackHandler { + private ItemStack filter; + + public GridFilterItemHandler(ItemStack filter) { + super(9 * 3); + + this.filter = filter; + + if (filter.hasTagCompound()) { + TileBase.readItems(this, 0, filter.getTagCompound()); + } + } + + @Override + protected void onContentsChanged(int slot) { + super.onContentsChanged(slot); + + if (!filter.hasTagCompound()) { + filter.setTagCompound(new NBTTagCompound()); + } + + TileBase.writeItems(this, 0, filter.getTagCompound()); + } +} diff --git a/src/main/java/refinedstorage/item/ItemGridFilter.java b/src/main/java/refinedstorage/item/ItemGridFilter.java new file mode 100755 index 000000000..ff9c75454 --- /dev/null +++ b/src/main/java/refinedstorage/item/ItemGridFilter.java @@ -0,0 +1,29 @@ +package refinedstorage.item; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.world.World; +import refinedstorage.RefinedStorage; +import refinedstorage.RefinedStorageGui; + +public class ItemGridFilter extends ItemBase { + public ItemGridFilter() { + super("grid_filter"); + + setMaxStackSize(1); + } + + @Override + public ActionResult onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) { + if (!world.isRemote) { + player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.GRID_FILTER, world, hand.ordinal(), 0, 0); + + return new ActionResult(EnumActionResult.SUCCESS, stack); + } + + return new ActionResult(EnumActionResult.PASS, stack); + } +} diff --git a/src/main/java/refinedstorage/proxy/ClientProxy.java b/src/main/java/refinedstorage/proxy/ClientProxy.java index 51a02b210..8307640aa 100755 --- a/src/main/java/refinedstorage/proxy/ClientProxy.java +++ b/src/main/java/refinedstorage/proxy/ClientProxy.java @@ -94,6 +94,7 @@ public class ClientProxy extends CommonProxy { ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.WIRELESS_GRID, 0, new ModelResourceLocation("refinedstorage:wireless_grid", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.PATTERN, 0, new ModelResourceLocation("refinedstorage:pattern", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.STORAGE_HOUSING, 0, new ModelResourceLocation("refinedstorage:storage_housing", "inventory")); + ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.GRID_FILTER, 0, new ModelResourceLocation("refinedstorage:grid_filter", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, 0, new ModelResourceLocation("refinedstorage:upgrade", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_RANGE, new ModelResourceLocation("refinedstorage:range_upgrade", "inventory")); diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 8383ba7fe..2c036b343 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -110,6 +110,7 @@ public class CommonProxy { registerItem(RefinedStorageItems.CORE); registerItem(RefinedStorageItems.SILICON); registerItem(RefinedStorageItems.UPGRADE); + registerItem(RefinedStorageItems.GRID_FILTER); OreDictionary.registerOre("itemSilicon", RefinedStorageItems.SILICON); diff --git a/src/main/java/refinedstorage/tile/TileBase.java b/src/main/java/refinedstorage/tile/TileBase.java index 751aa7f4e..7bf1fe33a 100755 --- a/src/main/java/refinedstorage/tile/TileBase.java +++ b/src/main/java/refinedstorage/tile/TileBase.java @@ -134,7 +134,7 @@ public abstract class TileBase extends TileEntity implements ITickable { return null; } - protected void writeItems(IItemHandler handler, int id, NBTTagCompound nbt) { + public static void writeItems(IItemHandler handler, int id, NBTTagCompound nbt) { NBTTagList tagList = new NBTTagList(); for (int i = 0; i < handler.getSlots(); i++) { @@ -152,7 +152,7 @@ public abstract class TileBase extends TileEntity implements ITickable { nbt.setTag(String.format(NBT_INVENTORY, id), tagList); } - protected void readItems(IItemHandler handler, int id, NBTTagCompound nbt) { + public static void readItems(IItemHandler handler, int id, NBTTagCompound nbt) { String name = String.format(NBT_INVENTORY, id); if (nbt.hasKey(name)) { @@ -168,7 +168,7 @@ public abstract class TileBase extends TileEntity implements ITickable { } } - protected void writeItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { + public static void writeItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { NBTTagList tagList = new NBTTagList(); for (int i = 0; i < inventory.getSizeInventory(); i++) { @@ -186,7 +186,7 @@ public abstract class TileBase extends TileEntity implements ITickable { nbt.setTag(String.format(NBT_INVENTORY, id), tagList); } - protected void readItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { + public static void readItemsLegacy(IInventory inventory, int id, NBTTagCompound nbt) { String name = String.format(NBT_INVENTORY, id); if (nbt.hasKey(name)) { diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index b3fbc772b..968ae2a51 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -30,6 +30,7 @@ gui.refinedstorage:crafter=Crafter gui.refinedstorage:crafter.processing=Processing gui.refinedstorage:processing_pattern_encoder=Processing Pattern Encoder gui.refinedstorage:processing_pattern_encoder.pattern_create=Create Pattern +gui.refinedstorage:grid_filter=Grid Filter misc.refinedstorage:energy_stored=%d / %d RS misc.refinedstorage:energy_usage=Usage: %d RS/t @@ -144,4 +145,5 @@ item.refinedstorage:upgrade.1.name=Range Upgrade item.refinedstorage:upgrade.2.name=Speed Upgrade item.refinedstorage:upgrade.3.name=Crafting Upgrade item.refinedstorage:upgrade.4.name=Stack Upgrade -item.refinedstorage:storage_housing.name=Storage Housing \ No newline at end of file +item.refinedstorage:storage_housing.name=Storage Housing +item.refinedstorage:grid_filter.name=Grid Filter \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index e3c70c657..23c96624d 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -30,6 +30,7 @@ gui.refinedstorage:crafter=Crafter gui.refinedstorage:crafter.processing=Verwerking gui.refinedstorage:processing_pattern_encoder=Verwerkingspatroon Codeerder gui.refinedstorage:processing_pattern_encoder.pattern_create=Patroon maken +gui.refinedstorage:grid_filter=Rooster Filter misc.refinedstorage:energy_stored=%d / %d RS misc.refinedstorage:energy_usage=Vebruik: %d RS/t @@ -144,4 +145,5 @@ item.refinedstorage:upgrade.1.name=Afstand Upgrade item.refinedstorage:upgrade.2.name=Snelheid Upgrade item.refinedstorage:upgrade.3.name=Crafting Upgrade item.refinedstorage:upgrade.4.name=Stack Upgrade -item.refinedstorage:storage_housing.name=Opslagomhulsel \ No newline at end of file +item.refinedstorage:storage_housing.name=Opslagomhulsel +item.refinedstorage:grid_filter.name=Rooster Filter \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/item/grid_filter.json b/src/main/resources/assets/refinedstorage/models/item/grid_filter.json new file mode 100755 index 000000000..7dcacb623 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/grid_filter.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:items/grid_filter" + } +} diff --git a/src/main/resources/assets/refinedstorage/textures/gui/grid_filter.png b/src/main/resources/assets/refinedstorage/textures/gui/grid_filter.png new file mode 100755 index 0000000000000000000000000000000000000000..a1c7b0fc36d05a101b168c7f85c82bf326c3a384 GIT binary patch literal 1832 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;M)trjPAcDtOW{6mbgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48m#5w zI>5ld)a&Wu7*Y}U_SVI$+YTbGfmi$f|DSx<%JSD>=IyMlRy7_ zqyPC|ea}DMSkBg%y!`+F$BW}02tP=kp0~ZIQQTqPK43}3aH4uTu%KdKsQkqSEY1|( z$BF?tc8qnk@8`w-eLgv_;rDhq`?oA0B|tFYyB;@$#lZ03-&f(D`d^vqXBl>uN1EPy zn-ad#aVv zd+wW8S3J!f_H8NemH)g|7;2`&z1=!6;~VzPp0jFlT7xanFF^4%`x$mt$C}=Ip9Tq+ z>(62z%WuKqu!`njxg HN@xNA?!zhP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/refinedstorage/textures/items/grid_filter.png b/src/main/resources/assets/refinedstorage/textures/items/grid_filter.png new file mode 100755 index 0000000000000000000000000000000000000000..f4cab8420e13ba4736b5801f01aa9c38b7e64684 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwt=FTwDi$iXuE+978PpxAr*l9Z=vo{Nw*}>xf+%TdqpX`k<+2bkFG%Q^_bHA&S0 Ud^^Tu2ha`%Pgg&ebxsLQ0H1kEUH||9 literal 0 HcmV?d00001