diff --git a/src/main/java/refinedstorage/block/BlockGrid.java b/src/main/java/refinedstorage/block/BlockGrid.java index 49ea2a100..846905f15 100755 --- a/src/main/java/refinedstorage/block/BlockGrid.java +++ b/src/main/java/refinedstorage/block/BlockGrid.java @@ -34,7 +34,7 @@ public class BlockGrid extends BlockMachine { @Override public void getSubBlocks(Item item, CreativeTabs tab, List subItems) { - for (int i = 0; i <= 1; i++) { + for (int i = 0; i <= 2; i++) { subItems.add(new ItemStack(item, 1, i)); } } @@ -50,12 +50,12 @@ public class BlockGrid extends BlockMachine { @Override public IBlockState getStateFromMeta(int meta) { - return getDefaultState().withProperty(TYPE, meta == 0 ? EnumGridType.NORMAL : EnumGridType.CRAFTING); + return getDefaultState().withProperty(TYPE, meta == 0 ? EnumGridType.NORMAL : (meta == 1 ? EnumGridType.CRAFTING : EnumGridType.PATTERN)); } @Override public int getMetaFromState(IBlockState state) { - return state.getValue(TYPE) == EnumGridType.NORMAL ? 0 : 1; + return state.getValue(TYPE) == EnumGridType.NORMAL ? 0 : (state.getValue(TYPE) == EnumGridType.CRAFTING ? 1 : 2); } @Override diff --git a/src/main/java/refinedstorage/block/EnumGridType.java b/src/main/java/refinedstorage/block/EnumGridType.java index 7ad35d165..dc0d28de1 100755 --- a/src/main/java/refinedstorage/block/EnumGridType.java +++ b/src/main/java/refinedstorage/block/EnumGridType.java @@ -4,7 +4,8 @@ import net.minecraft.util.IStringSerializable; public enum EnumGridType implements IStringSerializable { NORMAL(0, "normal"), - CRAFTING(1, "crafting"); + CRAFTING(1, "crafting"), + PATTERN(2, "pattern"); private int id; private String name; diff --git a/src/main/java/refinedstorage/container/ContainerGrid.java b/src/main/java/refinedstorage/container/ContainerGrid.java index 7e60c0bff..e45fd5604 100755 --- a/src/main/java/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/refinedstorage/container/ContainerGrid.java @@ -7,8 +7,9 @@ import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorage; +import refinedstorage.RefinedStorageItems; import refinedstorage.block.EnumGridType; -import refinedstorage.container.slot.SlotGridCraftingResult; +import refinedstorage.container.slot.*; import refinedstorage.network.MessageGridCraftingShift; import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.TileGrid; @@ -27,7 +28,7 @@ public class ContainerGrid extends ContainerBase { this.grid = grid; - addPlayerInventory(8, grid.getType() == EnumGridType.CRAFTING ? 174 : 126); + addPlayerInventory(8, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 174 : 126); if (grid.getType() == EnumGridType.CRAFTING) { int x = 25; @@ -49,6 +50,25 @@ public class ContainerGrid extends ContainerBase { } addSlotToContainer(new SlotGridCraftingResult(this, player, ((TileGrid) grid).getCraftingInventory(), ((TileGrid) grid).getCraftingResultInventory(), (TileGrid) grid, 0, 133 + 4, 120 + 4)); + } else if (grid.getType() == EnumGridType.PATTERN) { + int x = 8; + int y = 106; + + for (int i = 0; i < 9; ++i) { + addSlotToContainer(new SlotSpecimen(((TileGrid) grid).getCraftingInventory(), i, x, y, false)); + + x += 18; + + if ((i + 1) % 3 == 0) { + y += 18; + x = 8; + } + } + + addSlotToContainer(new SlotDisabled(((TileGrid) grid).getCraftingResultInventory(), 0, 116 + 4, 120 + 4)); + + addSlotToContainer(new SlotFiltered(((TileGrid) grid).getPatternsInventory(), 0, 152, 106, new BasicItemValidator(RefinedStorageItems.PATTERN))); + addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatternsInventory(), 1, 152, 142)); } } @@ -93,7 +113,7 @@ public class ContainerGrid extends ContainerBase { public ItemStack func_184996_a(int id, int clickedButton, ClickType clickType, EntityPlayer player) { Slot slot = id >= 0 ? getSlot(id) : null; - if (player.worldObj.isRemote && slot instanceof SlotGridCraftingResult && slot.getHasStack()) { + if (player.worldObj.isRemote && slot instanceof SlotGridCraftingResult && grid.getType() == EnumGridType.CRAFTING && slot.getHasStack()) { if (GuiScreen.isShiftKeyDown()) { RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingShift((TileGrid) grid)); diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 1e8548adb..6ccf744c8 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -40,11 +40,11 @@ public class GuiGrid extends GuiBase { private Scrollbar scrollbar; public GuiGrid(ContainerGrid container, IGrid grid) { - super(container, 193, grid.getType() == EnumGridType.CRAFTING ? 256 : 208); + super(container, 193, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 256 : 208); this.container = container; this.grid = grid; - this.scrollbar = new Scrollbar(174, 20, 12, grid.getType() == EnumGridType.CRAFTING ? 70 : 88); + this.scrollbar = new Scrollbar(174, 20, 12, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 70 : 88); } @Override @@ -141,6 +141,8 @@ public class GuiGrid extends GuiBase { public boolean isHoveringOverClear(int mouseX, int mouseY) { if (grid.getType() == EnumGridType.CRAFTING) { return inBounds(81, 105, 7, 7, mouseX, mouseY); + } else if (grid.getType() == EnumGridType.PATTERN) { + return inBounds(64, 105, 7, 7, mouseX, mouseY); } return false; @@ -150,6 +152,8 @@ public class GuiGrid extends GuiBase { public void drawBackground(int x, int y, int mouseX, int mouseY) { if (grid.getType() == EnumGridType.CRAFTING) { bindTexture("gui/crafting_grid.png"); + } else if (grid.getType() == EnumGridType.PATTERN) { + bindTexture("gui/pattern_grid.png"); } else { bindTexture("gui/grid.png"); } @@ -169,9 +173,11 @@ public class GuiGrid extends GuiBase { if (grid.getType() == EnumGridType.CRAFTING) { drawString(7, 94, t("container.crafting")); + } else if (grid.getType() == EnumGridType.PATTERN) { + drawString(7, 94, t("gui.refinedstorage:grid.pattern")); } - drawString(7, grid.getType() == EnumGridType.CRAFTING ? 163 : 113, t("container.inventory")); + drawString(7, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 163 : 113, t("container.inventory")); int x = 8; int y = 20; @@ -313,6 +319,6 @@ public class GuiGrid extends GuiBase { } public int getVisibleRows() { - return grid.getType() == EnumGridType.CRAFTING ? 4 : 5; + return (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 4 : 5; } } diff --git a/src/main/java/refinedstorage/network/MessageGridCraftingClear.java b/src/main/java/refinedstorage/network/MessageGridCraftingClear.java index 4538c9787..534513c5d 100755 --- a/src/main/java/refinedstorage/network/MessageGridCraftingClear.java +++ b/src/main/java/refinedstorage/network/MessageGridCraftingClear.java @@ -44,15 +44,21 @@ public class MessageGridCraftingClear extends MessageHandlerPlayerToServer