diff --git a/src/main/java/refinedstorage/RefinedStorageBlocks.java b/src/main/java/refinedstorage/RefinedStorageBlocks.java index 9803fd44b..d9f376622 100755 --- a/src/main/java/refinedstorage/RefinedStorageBlocks.java +++ b/src/main/java/refinedstorage/RefinedStorageBlocks.java @@ -21,4 +21,5 @@ public final class RefinedStorageBlocks { public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor(); public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter(); public static final BlockCrafter CRAFTER = new BlockCrafter(); + public static final BlockProcessingPatternEncoder PROCESSING_PATTERN_ENCODER = new BlockProcessingPatternEncoder(); } diff --git a/src/main/java/refinedstorage/RefinedStorageGui.java b/src/main/java/refinedstorage/RefinedStorageGui.java index 035605d81..53899b893 100755 --- a/src/main/java/refinedstorage/RefinedStorageGui.java +++ b/src/main/java/refinedstorage/RefinedStorageGui.java @@ -17,4 +17,5 @@ public final class RefinedStorageGui { public static final int CRAFTING_MONITOR = 15; public static final int WIRELESS_TRANSMITTER = 16; public static final int CRAFTER = 17; + public static final int PROCESSING_PATTERN_ENCODER = 18; } diff --git a/src/main/java/refinedstorage/block/BlockProcessingPatternEncoder.java b/src/main/java/refinedstorage/block/BlockProcessingPatternEncoder.java new file mode 100755 index 000000000..0a496973a --- /dev/null +++ b/src/main/java/refinedstorage/block/BlockProcessingPatternEncoder.java @@ -0,0 +1,38 @@ +package refinedstorage.block; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import refinedstorage.RefinedStorage; +import refinedstorage.RefinedStorageGui; +import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; + +public class BlockProcessingPatternEncoder extends BlockBase { + public BlockProcessingPatternEncoder() { + super("processing_pattern_encoder"); + } + + @Override + public boolean hasTileEntity(IBlockState state) { + return true; + } + + @Override + public TileEntity createTileEntity(World world, IBlockState state) { + return new TileProcessingPatternEncoder(); + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { + if (!world.isRemote) { + player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.PROCESSING_PATTERN_ENCODER, world, pos.getX(), pos.getY(), pos.getZ()); + } + + return true; + } +} diff --git a/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java b/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java new file mode 100755 index 000000000..846143038 --- /dev/null +++ b/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java @@ -0,0 +1,41 @@ +package refinedstorage.container; + +import net.minecraft.entity.player.EntityPlayer; +import refinedstorage.RefinedStorageItems; +import refinedstorage.container.slot.BasicItemValidator; +import refinedstorage.container.slot.SlotFiltered; +import refinedstorage.container.slot.SlotOutput; +import refinedstorage.container.slot.SlotSpecimen; +import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; + +public class ContainerProcessingPatternEncoder extends ContainerBase { + public ContainerProcessingPatternEncoder(EntityPlayer player, TileProcessingPatternEncoder ppEncoder) { + super(player); + + int ox = 8; + int x = ox; + int y = 20; + + for (int i = 0; i < 9 * 2; ++i) { + addSlotToContainer(new SlotSpecimen(ppEncoder.getInputsOutputsInventory(), i, x, y, false)); + + x += 18; + + if ((i + 1) % 3 == 0) { + if (i == 8) { + ox = 90; + x = ox; + y = 20; + } else { + x = ox; + y += 18; + } + } + } + + addSlotToContainer(new SlotFiltered(ppEncoder, 0, 152, 18, new BasicItemValidator(RefinedStorageItems.PATTERN))); + addSlotToContainer(new SlotOutput(ppEncoder, 1, 152, 58)); + + addPlayerInventory(8, 93); + } +} diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 15bf63464..340f2a85f 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -36,7 +36,6 @@ public class GuiGrid extends GuiBase { private List items = new ArrayList(); private GuiTextField searchField; - private GuiCheckBox processingCheckbox; private int hoveringSlot; private int hoveringItemId; @@ -67,10 +66,6 @@ public class GuiGrid extends GuiBase { addSideButton(new SideButtonGridSortingDirection(grid)); addSideButton(new SideButtonGridSortingType(grid)); addSideButton(new SideButtonGridSearchBoxMode(grid)); - - if (grid.getType() == EnumGridType.PATTERN) { - processingCheckbox = (GuiCheckBox) addCheckBox(x + 65, y + 148, t("misc.refinedstorage:processing")); - } } public IGrid getGrid() { @@ -308,7 +303,7 @@ public class GuiGrid extends GuiBase { if (grid.isConnected()) { if (clickedCreatePattern) { - RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate((TileGrid) grid, processingCheckbox.isChecked())); + RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate((TileGrid) grid)); } else if (isHoveringOverSlot() && container.getPlayer().inventory.getItemStack() != null && (clickedButton == 0 || clickedButton == 1)) { grid.onItemPush(-1, clickedButton == 1); } else if (isHoveringOverItemInSlot() && container.getPlayer().inventory.getItemStack() == null) { diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index deaa7c311..1ded7e7e5 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -11,6 +11,7 @@ import refinedstorage.container.*; import refinedstorage.storage.IStorageGui; import refinedstorage.tile.*; import refinedstorage.tile.autocrafting.TileCraftingMonitor; +import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; import refinedstorage.tile.grid.TileGrid; import refinedstorage.tile.grid.WirelessGrid; import refinedstorage.util.HandUtils; @@ -48,6 +49,8 @@ public class GuiHandler implements IGuiHandler { return new ContainerWirelessTransmitter(player, (TileWirelessTransmitter) tile); case RefinedStorageGui.CRAFTER: return new ContainerCrafter(player, (TileCrafter) tile); + case RefinedStorageGui.PROCESSING_PATTERN_ENCODER: + return new ContainerProcessingPatternEncoder(player, (TileProcessingPatternEncoder) tile); default: return null; } @@ -115,6 +118,8 @@ public class GuiHandler implements IGuiHandler { return new GuiWirelessTransmitter((ContainerWirelessTransmitter) getContainer(ID, player, tile), (TileWirelessTransmitter) tile); case RefinedStorageGui.CRAFTER: 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); default: return null; } diff --git a/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java b/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java new file mode 100755 index 000000000..e1cd34aaf --- /dev/null +++ b/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java @@ -0,0 +1,35 @@ +package refinedstorage.gui; + +import refinedstorage.container.ContainerProcessingPatternEncoder; +import refinedstorage.gui.sidebutton.SideButtonCompare; +import refinedstorage.gui.sidebutton.SideButtonMode; +import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; +import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; +import refinedstorage.util.InventoryUtils; + +public class GuiProcessingPatternEncoder extends GuiBase { + public GuiProcessingPatternEncoder(ContainerProcessingPatternEncoder container, TileProcessingPatternEncoder ppEncoder) { + super(container, 176, 172); + } + + @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/processing_pattern_encoder.png"); + + drawTexture(x, y, 0, 0, width, height); + } + + @Override + public void drawForeground(int mouseX, int mouseY) { + drawString(7, 7, t("gui.refinedstorage:processing_pattern_encoder")); + drawString(7, 77, t("container.inventory")); + } +} diff --git a/src/main/java/refinedstorage/network/MessageGridPatternCreate.java b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java index 9e41e3802..6d4cf42cf 100755 --- a/src/main/java/refinedstorage/network/MessageGridPatternCreate.java +++ b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java @@ -12,16 +12,14 @@ public class MessageGridPatternCreate extends MessageHandlerPlayerToServer 0) { @@ -174,7 +174,7 @@ public class TileGrid extends TileMachine implements IGrid { ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN); ItemPattern.setResult(pattern, crafted); - ItemPattern.setProcessing(pattern, processing); + ItemPattern.setProcessing(pattern, false); for (int i = 0; i < 9; ++i) { ItemStack ingredient = craftingInventory.getStackInSlot(i); diff --git a/src/main/resources/assets/refinedstorage/blockstates/processing_pattern_encoder.json b/src/main/resources/assets/refinedstorage/blockstates/processing_pattern_encoder.json new file mode 100755 index 000000000..e85b1407d --- /dev/null +++ b/src/main/resources/assets/refinedstorage/blockstates/processing_pattern_encoder.json @@ -0,0 +1,39 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "orientable", + "textures": { + "side": "refinedstorage:blocks/side", + "top": "refinedstorage:blocks/side", + "front": "refinedstorage:blocks/processing_pattern_encoder" + } + }, + "variants": { + "inventory": [ + { + "transform": "forge:default-block", + "y": 0 + } + ], + "direction": { + "north": { + "y": 0 + }, + "east": { + "y": 90 + }, + "south": { + "y": 180 + }, + "west": { + "y": 270 + }, + "up": { + "x": 270 + }, + "down": { + "x": 90 + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 6a5dbaf23..bc0ecf897 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -24,6 +24,7 @@ gui.refinedstorage:crafting_monitor=Crafting Monitor gui.refinedstorage:wireless_transmitter=Wireless Transmitter gui.refinedstorage:wireless_transmitter.distance=%d blocks gui.refinedstorage:crafter=Crafter +gui.refinedstorage:processing_pattern_encoder=Processing Pattern Encoder misc.refinedstorage:energy_stored=%d / %d RF misc.refinedstorage:energy_usage=Usage: %d RF/t @@ -102,6 +103,7 @@ block.refinedstorage:interface.name=Interface block.refinedstorage:crafting_monitor.name=Crafting Monitor block.refinedstorage:wireless_transmitter.name=Wireless Transmitter block.refinedstorage:crafter.name=Crafter +block.refinedstorage:processing_pattern_encoder.name=Processing Pattern Encoder item.refinedstorage:storage_disk.0.name=1k Storage Disk item.refinedstorage:storage_disk.1.name=4k Storage Disk diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index 0c3751ce5..237f9884a 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -24,6 +24,7 @@ gui.refinedstorage:crafting_monitor=Crafting Monitor gui.refinedstorage:wireless_transmitter=Draadloze Zender gui.refinedstorage:wireless_transmitter.distance=%d blokken gui.refinedstorage:crafter=Crafter +gui.refinedstorage:processing_pattern_encoder=Verwerkingspatroon Codeerder misc.refinedstorage:energy_stored=%d / %d RF misc.refinedstorage:energy_usage=Vebruik: %d RF/t @@ -102,6 +103,7 @@ block.refinedstorage:interface.name=Interface block.refinedstorage:crafting_monitor.name=Crafting Monitor block.refinedstorage:wireless_transmitter.name=Draadloze Zender block.refinedstorage:crafter.name=Crafter +block.refinedstorage:processing_pattern_encoder.name=Verwerkingspatroon Codeerder item.refinedstorage:storage_disk.0.name=1k Opslagschijf item.refinedstorage:storage_disk.1.name=4k Opslagschijf diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/processing_pattern_encoder.png b/src/main/resources/assets/refinedstorage/textures/blocks/processing_pattern_encoder.png new file mode 100755 index 000000000..909db6a58 Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/blocks/processing_pattern_encoder.png differ 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 new file mode 100755 index 000000000..20c3f2319 Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/gui/processing_pattern_encoder.png differ