diff --git a/src/main/java/refinedstorage/container/ContainerGrid.java b/src/main/java/refinedstorage/container/ContainerGrid.java index bf8257afc..33ac2e3a1 100755 --- a/src/main/java/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/refinedstorage/container/ContainerGrid.java @@ -67,8 +67,8 @@ public class ContainerGrid extends ContainerBase { 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)); + addSlotToContainer(new SlotFiltered(((TileGrid) grid).getPatternsInventory(), 0, 152, 104, new BasicItemValidator(RefinedStorageItems.PATTERN))); + addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatternsInventory(), 1, 152, 144)); } } @@ -121,12 +121,6 @@ public class ContainerGrid extends ContainerBase { } } - if (!player.worldObj.isRemote && slot instanceof SlotDisabled && grid.getType() == EnumGridType.PATTERN && slot.getHasStack()) { - ((TileGrid) grid).onCreatePattern(); - - return null; - } - return super.func_184996_a(id, clickedButton, clickType, player); } } diff --git a/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java b/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java index 95b0d5867..870e3994e 100755 --- a/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java +++ b/src/main/java/refinedstorage/container/ContainerWirelessTransmitter.java @@ -13,8 +13,8 @@ public class ContainerWirelessTransmitter extends ContainerBase { public ContainerWirelessTransmitter(EntityPlayer player, TileWirelessTransmitter wirelessTransmitter) { super(player); - for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotFiltered(wirelessTransmitter, i, 8 + (i * 18), 20, new IItemValidator() { + for (int i = 0; i < 4; ++i) { + addSlotToContainer(new SlotFiltered(wirelessTransmitter, i, 187, 6 + (i * 18), new IItemValidator() { @Override public boolean isValid(ItemStack stack) { return stack.getItem() == RefinedStorageItems.UPGRADE && stack.getMetadata() == ItemUpgrade.TYPE_RANGE; diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 1a1548c15..e908f1865 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -19,6 +19,7 @@ import refinedstorage.jei.PluginRefinedStorage; import refinedstorage.network.GridPullFlags; import refinedstorage.network.MessageGridCraftingClear; import refinedstorage.network.MessageGridCraftingPush; +import refinedstorage.network.MessageGridPatternCreate; import refinedstorage.storage.ItemGroup; import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.TileGrid; @@ -153,6 +154,18 @@ public class GuiGrid extends GuiBase { return false; } + public boolean isHoveringOverCreatePattern(int mouseX, int mouseY) { + if (grid.getType() == EnumGridType.PATTERN) { + return inBounds(152, 124, 16, 16, mouseX, mouseY) && isCreatePatternEnabled(); + } + + return false; + } + + public boolean isCreatePatternEnabled() { + return ((TileGrid) grid).getCraftingResultInventory().getStackInSlot(0) != null && ((TileGrid) grid).getPatternsInventory().getStackInSlot(0) != null; + } + @Override public void drawBackground(int x, int y, int mouseX, int mouseY) { if (grid.getType() == EnumGridType.CRAFTING) { @@ -165,6 +178,20 @@ public class GuiGrid extends GuiBase { drawTexture(x, y, 0, 0, width, height); + if (grid.getType() == EnumGridType.PATTERN) { + int ty = 0; + + if (isHoveringOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { + ty = 1; + } + + if (!isCreatePatternEnabled()) { + ty = 2; + } + + drawTexture(x + 152, y + 124, 195, ty * 16, 16, 16); + } + scrollbar.draw(this); searchField.drawTextBox(); @@ -259,6 +286,10 @@ public class GuiGrid extends GuiBase { if (isHoveringOverClear(mouseX, mouseY)) { drawTooltip(mouseX, mouseY, t("misc.refinedstorage:clear")); } + + if (isHoveringOverCreatePattern(mouseX, mouseY)) { + drawTooltip(mouseX, mouseY, t("gui.refinedstorage:grid.pattern_create")); + } } @Override @@ -266,9 +297,14 @@ public class GuiGrid extends GuiBase { super.mouseClicked(mouseX, mouseY, clickedButton); boolean clickedClear = clickedButton == 0 && isHoveringOverClear(mouseX - guiLeft, mouseY - guiTop); + boolean playClickSound = clickedClear; if (grid.isConnected()) { - if (isHoveringOverSlot() && container.getPlayer().inventory.getItemStack() != null && (clickedButton == 0 || clickedButton == 1)) { + if (isHoveringOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { + RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate((TileGrid) grid)); + + playClickSound = true; + } 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) { if (items.get(hoveringSlot).getQuantity() == 0) { @@ -313,7 +349,7 @@ public class GuiGrid extends GuiBase { } } - if (clickedClear) { + if (playClickSound) { mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.ui_button_click, 1.0F)); } } diff --git a/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java b/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java index 8b200e9f5..5abe7b8ce 100755 --- a/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java +++ b/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java @@ -8,7 +8,7 @@ public class GuiWirelessTransmitter extends GuiBase { private TileWirelessTransmitter wirelessTransmitter; public GuiWirelessTransmitter(ContainerWirelessTransmitter container, TileWirelessTransmitter wirelessTransmitter) { - super(container, 176, 137); + super(container, 211, 137); this.wirelessTransmitter = wirelessTransmitter; } @@ -31,7 +31,8 @@ public class GuiWirelessTransmitter extends GuiBase { @Override public void drawForeground(int mouseX, int mouseY) { - drawString(7, 7, t("gui.refinedstorage:wireless_transmitter", wirelessTransmitter.getRange())); + drawString(7, 7, t("gui.refinedstorage:wireless_transmitter")); + drawString(28, 24, t("gui.refinedstorage:wireless_transmitter.distance", wirelessTransmitter.getRange())); drawString(7, 43, t("container.inventory")); } } diff --git a/src/main/java/refinedstorage/network/MessageGridPatternCreate.java b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java new file mode 100755 index 000000000..6d4cf42cf --- /dev/null +++ b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java @@ -0,0 +1,47 @@ +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.block.EnumGridType; +import refinedstorage.tile.grid.TileGrid; + +public class MessageGridPatternCreate extends MessageHandlerPlayerToServer implements IMessage { + private int x; + private int y; + private int z; + + public MessageGridPatternCreate() { + } + + public MessageGridPatternCreate(TileGrid grid) { + this.x = grid.getPos().getX(); + this.y = grid.getPos().getY(); + this.z = grid.getPos().getZ(); + } + + @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 void handle(MessageGridPatternCreate message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); + + if (tile instanceof TileGrid && ((TileGrid) tile).getType() == EnumGridType.PATTERN) { + ((TileGrid) tile).onCreatePattern(); + } + } +} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 3cfd6af4b..723bb042c 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -50,6 +50,7 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageGridCraftingShift.class, MessageGridCraftingShift.class, 19, Side.SERVER); 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); NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler()); diff --git a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java index b59080e73..784f3971f 100755 --- a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java @@ -13,7 +13,7 @@ public class TileWirelessTransmitter extends TileMachine implements IInventory { public static final int RANGE_PER_UPGRADE = 8; public static final int RF_PER_UPGRADE = 8; - private InventorySimple inventory = new InventorySimple("upgrades", 9, this); + private InventorySimple inventory = new InventorySimple("upgrades", 4, this); @Override public int getEnergyUsage() { @@ -45,7 +45,7 @@ public class TileWirelessTransmitter extends TileMachine implements IInventory { private int getUpgrades() { int upgrades = 0; - for (int i = 0; i < 9; ++i) { + for (int i = 0; i < inventory.getSizeInventory(); ++i) { if (inventory.getStackInSlot(i) != null) { upgrades++; } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index f3d1edf02..a6396e475 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -7,6 +7,7 @@ gui.refinedstorage:controller.machine_position.y=Y: %d gui.refinedstorage:controller.machine_position.z=Z: %d gui.refinedstorage:grid=Grid gui.refinedstorage:grid.pattern=Pattern +gui.refinedstorage:grid.pattern_create=Create Pattern gui.refinedstorage:wireless_grid=Wireless Grid gui.refinedstorage:disk_drive=Drive gui.refinedstorage:external_storage=External Storage @@ -21,7 +22,8 @@ gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.export=Interface Export gui.refinedstorage:interface.patterns=Patterns gui.refinedstorage:crafting_monitor=Crafting Monitor -gui.refinedstorage:wireless_transmitter=Wireless Transmitter (%d blocks) +gui.refinedstorage:wireless_transmitter=Wireless Transmitter +gui.refinedstorage:wireless_transmitter.distance=%d blocks misc.refinedstorage:energy_stored=%d / %d RF misc.refinedstorage:energy_usage=Usage: %d RF/t diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index fdb3fc614..2f89c4035 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -7,6 +7,7 @@ gui.refinedstorage:controller.machine_position.y=Y: %d gui.refinedstorage:controller.machine_position.z=Z: %d gui.refinedstorage:grid=Rooster gui.refinedstorage:grid.pattern=Patroon +gui.refinedstorage:grid.pattern_create=Patroon maken gui.refinedstorage:wireless_grid=Draadloos Rooster gui.refinedstorage:disk_drive=Schijf gui.refinedstorage:external_storage=Externe Opslag @@ -21,7 +22,8 @@ gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.export=Interface Export gui.refinedstorage:interface.patterns=Patronen gui.refinedstorage:crafting_monitor=Crafting Monitor -gui.refinedstorage:wireless_transmitter=Draadloze Zender (%d blokken) +gui.refinedstorage:wireless_transmitter=Draadloze Zender +gui.refinedstorage:wireless_transmitter.distance=%d blokken misc.refinedstorage:energy_stored=%d / %d RF misc.refinedstorage:energy_usage=Vebruik: %d RF/t diff --git a/src/main/resources/assets/refinedstorage/textures/gui/pattern_grid.png b/src/main/resources/assets/refinedstorage/textures/gui/pattern_grid.png index 1ab9ccd7d..7039086c7 100755 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/pattern_grid.png and b/src/main/resources/assets/refinedstorage/textures/gui/pattern_grid.png differ diff --git a/src/main/resources/assets/refinedstorage/textures/gui/wireless_transmitter.png b/src/main/resources/assets/refinedstorage/textures/gui/wireless_transmitter.png index 15c68e0e7..6843018c5 100755 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/wireless_transmitter.png and b/src/main/resources/assets/refinedstorage/textures/gui/wireless_transmitter.png differ