From d625098e5b1a7bba09c3998c3789341b3d8fd62e Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 2 Feb 2017 23:12:57 +0100 Subject: [PATCH] Improve Reader/Writer GUI clicks, add redstone toggle button to GUI --- .../network/node/NetworkNodeReader.java | 5 +++ .../network/node/NetworkNodeWriter.java | 5 +++ .../refinedstorage/block/BlockReader.java | 3 +- .../refinedstorage/block/BlockWriter.java | 3 +- .../refinedstorage/gui/GuiReaderWriter.java | 31 +++++++++---------- .../refinedstorage/tile/IReaderWriter.java | 2 ++ .../refinedstorage/tile/TileReader.java | 4 +-- .../refinedstorage/tile/TileWriter.java | 4 +-- 8 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java index e62049216..01231cd9e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java @@ -49,6 +49,11 @@ public class NetworkNodeReader extends NetworkNode implements IReader { return TileReader.CHANNEL; } + @Override + public TileDataParameter getRedstoneModeParameter() { + return TileReader.REDSTONE_MODE; + } + @Override public boolean hasConnectivityState() { return true; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java index 6b432b1c7..d979dbd03 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java @@ -87,6 +87,11 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter { return TileWriter.CHANNEL; } + @Override + public TileDataParameter getRedstoneModeParameter() { + return TileWriter.REDSTONE_MODE; + } + @Override public boolean hasConnectivityState() { return true; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java index d7161ac34..d3cae1631 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java @@ -16,7 +16,6 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import java.util.List; -import java.util.stream.Collectors; public class BlockReader extends BlockCable { public BlockReader() { @@ -42,7 +41,7 @@ public class BlockReader extends BlockCable { IReaderWriterChannel channel = reader.getNetwork().getReaderWriterChannel(reader.getChannel()); if (channel != null) { - channel.getHandlers().stream().map(h -> h.getStatus(reader, channel)).flatMap(List::stream).collect(Collectors.toList()).forEach(player::sendMessage); + channel.getHandlers().stream().map(h -> h.getStatus(reader, channel)).flatMap(List::stream).forEach(player::sendMessage); } } } else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java index ac2126454..9a1ecba96 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java @@ -17,7 +17,6 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import java.util.List; -import java.util.stream.Collectors; public class BlockWriter extends BlockCable { public BlockWriter() { @@ -43,7 +42,7 @@ public class BlockWriter extends BlockCable { IReaderWriterChannel channel = writer.getNetwork().getReaderWriterChannel(writer.getChannel()); if (channel != null) { - channel.getHandlers().stream().map(h -> h.getStatus(writer, channel)).flatMap(List::stream).collect(Collectors.toList()).forEach(player::sendMessage); + channel.getHandlers().stream().map(h -> h.getStatus(writer, channel)).flatMap(List::stream).forEach(player::sendMessage); } } } else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java index 1829e282e..d27b4ba65 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java @@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.gui; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter; +import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelAdd; import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelRemove; import com.raoulvdberge.refinedstorage.tile.IReaderWriter; @@ -42,6 +43,8 @@ public class GuiReaderWriter extends GuiBase { @Override public void init(int x, int y) { + addSideButton(new SideButtonRedstoneMode(this, readerWriter.getRedstoneModeParameter())); + add = addButton(x + 128, y + 15, 20, 20, "+"); remove = addButton(x + 150, y + 15, 20, 20, "-"); name = new GuiTextField(0, fontRendererObj, x + 8 + 1, y + 20 + 1, 107, fontRendererObj.FONT_HEIGHT); @@ -123,28 +126,24 @@ public class GuiReaderWriter extends GuiBase { name.mouseClicked(mouseX, mouseY, mouseButton); - int itemSelectedOld = itemSelected; + if (inBounds(8, 39, 144, 73, mouseX - guiLeft, mouseY - guiTop)) { + if (mouseButton == 0) { + int item = scrollbar.getOffset(); - itemSelected = -1; + for (int i = 0; i < VISIBLE_ROWS; ++i) { + int ix = 8; + int iy = 39 + (i * ITEM_HEIGHT); - if (mouseButton == 0 && inBounds(8, 39, 144, 73, mouseX - guiLeft, mouseY - guiTop)) { - int item = scrollbar.getOffset(); + if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getChannels().size()) { + itemSelected = item + i; - for (int i = 0; i < VISIBLE_ROWS; ++i) { - int ix = 8; - int iy = 39 + (i * ITEM_HEIGHT); - - if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getChannels().size()) { - itemSelected = item + i; - - TileDataManager.setParameter(readerWriter.getChannelParameter(), getChannels().get(itemSelected)); + TileDataManager.setParameter(readerWriter.getChannelParameter(), getChannels().get(itemSelected)); + } } + } else if (itemSelected != -1) { + TileDataManager.setParameter(readerWriter.getChannelParameter(), ""); } } - - if (itemSelectedOld != -1 && itemSelected == -1) { - TileDataManager.setParameter(readerWriter.getChannelParameter(), ""); - } } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java index 0e625ad3c..16d95197f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java @@ -13,6 +13,8 @@ public interface IReaderWriter extends INetworkNode { TileDataParameter getChannelParameter(); + TileDataParameter getRedstoneModeParameter(); + default void onAdd(String name) { INetworkMaster network = getNetwork(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java index 39495b572..32d123ae3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java @@ -71,7 +71,7 @@ public class TileReader extends TileNode { return false; } - if (reader.getNetwork() == null) { + if (reader.getNetwork() == null || !reader.canUpdate()) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { return getDummyCapabilityForClient(reader, capability) != null; } @@ -105,7 +105,7 @@ public class TileReader extends TileNode { return null; } - if (reader.getNetwork() == null) { + if (reader.getNetwork() == null || !reader.canUpdate()) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { return getDummyCapabilityForClient(reader, capability); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java index b365d7dac..f87cbcfd3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java @@ -32,7 +32,7 @@ public class TileWriter extends TileNode { return false; } - if (writer.getNetwork() == null) { + if (writer.getNetwork() == null || !writer.canUpdate()) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { return TileReader.getDummyCapabilityForClient(writer, capability) != null; } @@ -66,7 +66,7 @@ public class TileWriter extends TileNode { return null; } - if (writer.getNetwork() == null) { + if (writer.getNetwork() == null || !writer.canUpdate()) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { return TileReader.getDummyCapabilityForClient(writer, capability); }