diff --git a/src/main/java/storagecraft/gui/GuiImporter.java b/src/main/java/storagecraft/gui/GuiImporter.java index 4734f67ee..ac3e3e5ae 100644 --- a/src/main/java/storagecraft/gui/GuiImporter.java +++ b/src/main/java/storagecraft/gui/GuiImporter.java @@ -2,7 +2,7 @@ package storagecraft.gui; import storagecraft.container.ContainerImporter; import storagecraft.gui.sidebutton.SideButtonCompare; -import storagecraft.gui.sidebutton.SideButtonImporterMode; +import storagecraft.gui.sidebutton.SideButtonWhitelistBlacklist; import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.tile.TileImporter; import storagecraft.util.InventoryUtils; @@ -26,7 +26,7 @@ public class GuiImporter extends GuiBase addSideButton(new SideButtonCompare(importer, InventoryUtils.COMPARE_DAMAGE)); addSideButton(new SideButtonCompare(importer, InventoryUtils.COMPARE_NBT)); - addSideButton(new SideButtonImporterMode(importer)); + addSideButton(new SideButtonWhitelistBlacklist(importer)); } @Override diff --git a/src/main/java/storagecraft/gui/sidebutton/SideButtonImporterMode.java b/src/main/java/storagecraft/gui/sidebutton/SideButtonImporterMode.java deleted file mode 100644 index 490d1d244..000000000 --- a/src/main/java/storagecraft/gui/sidebutton/SideButtonImporterMode.java +++ /dev/null @@ -1,42 +0,0 @@ -package storagecraft.gui.sidebutton; - -import net.minecraft.util.EnumChatFormatting; -import storagecraft.StorageCraft; -import storagecraft.gui.GuiBase; -import storagecraft.network.MessageImporterModeUpdate; -import storagecraft.tile.TileImporter; - -public class SideButtonImporterMode extends SideButton -{ - private TileImporter importer; - - public SideButtonImporterMode(TileImporter importer) - { - this.importer = importer; - } - - @Override - public String getTooltip(GuiBase gui) - { - StringBuilder builder = new StringBuilder(); - - builder.append(EnumChatFormatting.GREEN).append(gui.t("sidebutton.storagecraft:importer.mode")).append(EnumChatFormatting.RESET).append("\n"); - - builder.append(gui.t("sidebutton.storagecraft:importer.mode." + importer.getMode())); - - return builder.toString(); - } - - @Override - public void draw(GuiBase gui, int x, int y) - { - gui.bindTexture("icons.png"); - gui.drawTexture(x, y + 1, importer.getMode() * 16, 64, 16, 16); - } - - @Override - public void actionPerformed() - { - StorageCraft.NETWORK.sendToServer(new MessageImporterModeUpdate(importer)); - } -} diff --git a/src/main/java/storagecraft/gui/sidebutton/SideButtonWhitelistBlacklist.java b/src/main/java/storagecraft/gui/sidebutton/SideButtonWhitelistBlacklist.java new file mode 100644 index 000000000..4de3f2306 --- /dev/null +++ b/src/main/java/storagecraft/gui/sidebutton/SideButtonWhitelistBlacklist.java @@ -0,0 +1,54 @@ +package storagecraft.gui.sidebutton; + +import net.minecraft.util.EnumChatFormatting; +import storagecraft.StorageCraft; +import storagecraft.gui.GuiBase; +import storagecraft.network.MessageWhitelistBlacklistToggle; +import storagecraft.tile.IWhitelistBlacklistSetting; + +public class SideButtonWhitelistBlacklist extends SideButton +{ + private IWhitelistBlacklistSetting wb; + + public SideButtonWhitelistBlacklist(IWhitelistBlacklistSetting wb) + { + this.wb = wb; + } + + @Override + public String getTooltip(GuiBase gui) + { + StringBuilder builder = new StringBuilder(); + + builder.append(EnumChatFormatting.GREEN).append(gui.t("sidebutton.storagecraft:whitelist_blacklist")).append(EnumChatFormatting.RESET).append("\n"); + + builder.append(gui.t("sidebutton.storagecraft:whitelist_blacklist." + (wb.isWhitelist() ? "whitelist" : "blacklist"))); + + return builder.toString(); + } + + @Override + public void draw(GuiBase gui, int x, int y) + { + gui.bindTexture("icons.png"); + + int tx = 0; + + if (wb.isWhitelist()) + { + tx = 0; + } + else if (wb.isBlacklist()) + { + tx = 16; + } + + gui.drawTexture(x, y + 1, tx, 64, 16, 16); + } + + @Override + public void actionPerformed() + { + StorageCraft.NETWORK.sendToServer(new MessageWhitelistBlacklistToggle(wb)); + } +} diff --git a/src/main/java/storagecraft/network/MessageImporterModeUpdate.java b/src/main/java/storagecraft/network/MessageImporterModeUpdate.java deleted file mode 100644 index 042507b15..000000000 --- a/src/main/java/storagecraft/network/MessageImporterModeUpdate.java +++ /dev/null @@ -1,55 +0,0 @@ -package storagecraft.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import storagecraft.tile.TileImporter; - -public class MessageImporterModeUpdate extends MessageHandlerPlayerToServer implements IMessage -{ - private int x; - private int y; - private int z; - - public MessageImporterModeUpdate() - { - } - - public MessageImporterModeUpdate(TileImporter importer) - { - this.x = importer.getPos().getX(); - this.y = importer.getPos().getY(); - this.z = importer.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(MessageImporterModeUpdate message, EntityPlayerMP player) - { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileImporter) - { - TileImporter importer = (TileImporter) tile; - - importer.setMode(importer.getMode() == TileImporter.MODE_WHITELIST ? TileImporter.MODE_BLACKLIST : TileImporter.MODE_WHITELIST); - } - } -} diff --git a/src/main/java/storagecraft/network/MessageWhitelistBlacklistToggle.java b/src/main/java/storagecraft/network/MessageWhitelistBlacklistToggle.java new file mode 100644 index 000000000..b0bc95faa --- /dev/null +++ b/src/main/java/storagecraft/network/MessageWhitelistBlacklistToggle.java @@ -0,0 +1,62 @@ +package storagecraft.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import storagecraft.tile.IWhitelistBlacklistSetting; + +public class MessageWhitelistBlacklistToggle extends MessageHandlerPlayerToServer implements IMessage +{ + private int x; + private int y; + private int z; + + public MessageWhitelistBlacklistToggle() + { + } + + public MessageWhitelistBlacklistToggle(IWhitelistBlacklistSetting wb) + { + this.x = wb.getMachinePos().getX(); + this.y = wb.getMachinePos().getY(); + this.z = wb.getMachinePos().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(MessageWhitelistBlacklistToggle message, EntityPlayerMP player) + { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); + + if (tile instanceof IWhitelistBlacklistSetting) + { + IWhitelistBlacklistSetting wb = (IWhitelistBlacklistSetting) tile; + + if (wb.isWhitelist()) + { + wb.setToBlacklist(); + } + else if (wb.isBlacklist()) + { + wb.setToWhitelist(); + } + } + } +} diff --git a/src/main/java/storagecraft/proxy/CommonProxy.java b/src/main/java/storagecraft/proxy/CommonProxy.java index 4ae08407a..230e386dd 100644 --- a/src/main/java/storagecraft/proxy/CommonProxy.java +++ b/src/main/java/storagecraft/proxy/CommonProxy.java @@ -29,7 +29,7 @@ public class CommonProxy StorageCraft.NETWORK.registerMessage(MessageStoragePush.class, MessageStoragePush.class, 2, Side.SERVER); StorageCraft.NETWORK.registerMessage(MessageStoragePull.class, MessageStoragePull.class, 3, Side.SERVER); StorageCraft.NETWORK.registerMessage(MessageCompareUpdate.class, MessageCompareUpdate.class, 4, Side.SERVER); - StorageCraft.NETWORK.registerMessage(MessageImporterModeUpdate.class, MessageImporterModeUpdate.class, 5, Side.SERVER); + StorageCraft.NETWORK.registerMessage(MessageWhitelistBlacklistToggle.class, MessageWhitelistBlacklistToggle.class, 5, Side.SERVER); StorageCraft.NETWORK.registerMessage(MessageDetectorModeUpdate.class, MessageDetectorModeUpdate.class, 6, Side.SERVER); StorageCraft.NETWORK.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, 7, Side.SERVER); StorageCraft.NETWORK.registerMessage(MessageGridCraftingUpdate.class, MessageGridCraftingUpdate.class, 8, Side.CLIENT); diff --git a/src/main/java/storagecraft/tile/IWhitelistBlacklistSetting.java b/src/main/java/storagecraft/tile/IWhitelistBlacklistSetting.java new file mode 100644 index 000000000..59e869f65 --- /dev/null +++ b/src/main/java/storagecraft/tile/IWhitelistBlacklistSetting.java @@ -0,0 +1,16 @@ +package storagecraft.tile; + +import net.minecraft.util.BlockPos; + +public interface IWhitelistBlacklistSetting +{ + public boolean isWhitelist(); + + public boolean isBlacklist(); + + public void setToWhitelist(); + + public void setToBlacklist(); + + public BlockPos getMachinePos(); +} diff --git a/src/main/java/storagecraft/tile/TileImporter.java b/src/main/java/storagecraft/tile/TileImporter.java index b7e776a80..a530de49d 100644 --- a/src/main/java/storagecraft/tile/TileImporter.java +++ b/src/main/java/storagecraft/tile/TileImporter.java @@ -12,18 +12,15 @@ import net.minecraft.util.IChatComponent; import storagecraft.inventory.InventorySimple; import storagecraft.util.InventoryUtils; -public class TileImporter extends TileMachine implements IInventory, ISidedInventory, ICompareSetting +public class TileImporter extends TileMachine implements IInventory, ISidedInventory, ICompareSetting, IWhitelistBlacklistSetting { - public static final int MODE_WHITELIST = 0; - public static final int MODE_BLACKLIST = 1; - public static final String NBT_COMPARE = "Compare"; public static final String NBT_MODE = "Mode"; private InventorySimple inventory = new InventorySimple("importer", 9); private int compare = 0; - private int mode = MODE_WHITELIST; + private int mode = 0; private int currentSlot = 0; @@ -102,11 +99,11 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven if (InventoryUtils.compareStack(stack, slot, compare)) { - if (mode == MODE_WHITELIST) + if (isWhitelist()) { return true; } - else if (mode == MODE_BLACKLIST) + else if (isBlacklist()) { return false; } @@ -114,7 +111,7 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven } } - if (mode == MODE_WHITELIST) + if (isWhitelist()) { return slots == 0; } @@ -136,16 +133,28 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven this.compare = compare; } - public int getMode() + @Override + public boolean isWhitelist() { - return mode; + return mode == 0; } - public void setMode(int mode) + @Override + public boolean isBlacklist() { - markDirty(); + return mode == 1; + } - this.mode = mode; + @Override + public void setToWhitelist() + { + this.mode = 0; + } + + @Override + public void setToBlacklist() + { + this.mode = 1; } @Override @@ -301,8 +310,8 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven public int[] getSlotsForFace(EnumFacing side) { return new int[] - { - }; + { + }; } @Override diff --git a/src/main/resources/assets/storagecraft/lang/en_US.lang b/src/main/resources/assets/storagecraft/lang/en_US.lang index 84c0f5acf..365bdf0f1 100644 --- a/src/main/resources/assets/storagecraft/lang/en_US.lang +++ b/src/main/resources/assets/storagecraft/lang/en_US.lang @@ -52,9 +52,9 @@ sidebutton.storagecraft:sorting.type=Sorting Type sidebutton.storagecraft:sorting.type.0=Amount sidebutton.storagecraft:sorting.type.1=Name -sidebutton.storagecraft:importer.mode=Mode -sidebutton.storagecraft:importer.mode.0=Whitelist -sidebutton.storagecraft:importer.mode.1=Blacklist +sidebutton.storagecraft:whitelist_blacklist=Mode +sidebutton.storagecraft:whitelist_blacklist.whitelist=Whitelist +sidebutton.storagecraft:whitelist_blacklist.blacklist=Blacklist sidebutton.storagecraft:detector.mode=Mode sidebutton.storagecraft:detector.mode.0=Emit signal when under the amount