make whitelist / blacklist an interface
This commit is contained in:
@@ -2,7 +2,7 @@ package storagecraft.gui;
|
|||||||
|
|
||||||
import storagecraft.container.ContainerImporter;
|
import storagecraft.container.ContainerImporter;
|
||||||
import storagecraft.gui.sidebutton.SideButtonCompare;
|
import storagecraft.gui.sidebutton.SideButtonCompare;
|
||||||
import storagecraft.gui.sidebutton.SideButtonImporterMode;
|
import storagecraft.gui.sidebutton.SideButtonWhitelistBlacklist;
|
||||||
import storagecraft.gui.sidebutton.SideButtonRedstoneMode;
|
import storagecraft.gui.sidebutton.SideButtonRedstoneMode;
|
||||||
import storagecraft.tile.TileImporter;
|
import storagecraft.tile.TileImporter;
|
||||||
import storagecraft.util.InventoryUtils;
|
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_DAMAGE));
|
||||||
addSideButton(new SideButtonCompare(importer, InventoryUtils.COMPARE_NBT));
|
addSideButton(new SideButtonCompare(importer, InventoryUtils.COMPARE_NBT));
|
||||||
|
|
||||||
addSideButton(new SideButtonImporterMode(importer));
|
addSideButton(new SideButtonWhitelistBlacklist(importer));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<MessageImporterModeUpdate> 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<MessageWhitelistBlacklistToggle> 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,7 +29,7 @@ public class CommonProxy
|
|||||||
StorageCraft.NETWORK.registerMessage(MessageStoragePush.class, MessageStoragePush.class, 2, Side.SERVER);
|
StorageCraft.NETWORK.registerMessage(MessageStoragePush.class, MessageStoragePush.class, 2, Side.SERVER);
|
||||||
StorageCraft.NETWORK.registerMessage(MessageStoragePull.class, MessageStoragePull.class, 3, 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(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(MessageDetectorModeUpdate.class, MessageDetectorModeUpdate.class, 6, Side.SERVER);
|
||||||
StorageCraft.NETWORK.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, 7, Side.SERVER);
|
StorageCraft.NETWORK.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, 7, Side.SERVER);
|
||||||
StorageCraft.NETWORK.registerMessage(MessageGridCraftingUpdate.class, MessageGridCraftingUpdate.class, 8, Side.CLIENT);
|
StorageCraft.NETWORK.registerMessage(MessageGridCraftingUpdate.class, MessageGridCraftingUpdate.class, 8, Side.CLIENT);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
@@ -12,18 +12,15 @@ import net.minecraft.util.IChatComponent;
|
|||||||
import storagecraft.inventory.InventorySimple;
|
import storagecraft.inventory.InventorySimple;
|
||||||
import storagecraft.util.InventoryUtils;
|
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_COMPARE = "Compare";
|
||||||
public static final String NBT_MODE = "Mode";
|
public static final String NBT_MODE = "Mode";
|
||||||
|
|
||||||
private InventorySimple inventory = new InventorySimple("importer", 9);
|
private InventorySimple inventory = new InventorySimple("importer", 9);
|
||||||
|
|
||||||
private int compare = 0;
|
private int compare = 0;
|
||||||
private int mode = MODE_WHITELIST;
|
private int mode = 0;
|
||||||
|
|
||||||
private int currentSlot = 0;
|
private int currentSlot = 0;
|
||||||
|
|
||||||
@@ -102,11 +99,11 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven
|
|||||||
|
|
||||||
if (InventoryUtils.compareStack(stack, slot, compare))
|
if (InventoryUtils.compareStack(stack, slot, compare))
|
||||||
{
|
{
|
||||||
if (mode == MODE_WHITELIST)
|
if (isWhitelist())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (mode == MODE_BLACKLIST)
|
else if (isBlacklist())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -114,7 +111,7 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == MODE_WHITELIST)
|
if (isWhitelist())
|
||||||
{
|
{
|
||||||
return slots == 0;
|
return slots == 0;
|
||||||
}
|
}
|
||||||
@@ -136,16 +133,28 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven
|
|||||||
this.compare = compare;
|
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
|
@Override
|
||||||
@@ -301,8 +310,8 @@ public class TileImporter extends TileMachine implements IInventory, ISidedInven
|
|||||||
public int[] getSlotsForFace(EnumFacing side)
|
public int[] getSlotsForFace(EnumFacing side)
|
||||||
{
|
{
|
||||||
return new int[]
|
return new int[]
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ sidebutton.storagecraft:sorting.type=Sorting Type
|
|||||||
sidebutton.storagecraft:sorting.type.0=Amount
|
sidebutton.storagecraft:sorting.type.0=Amount
|
||||||
sidebutton.storagecraft:sorting.type.1=Name
|
sidebutton.storagecraft:sorting.type.1=Name
|
||||||
|
|
||||||
sidebutton.storagecraft:importer.mode=Mode
|
sidebutton.storagecraft:whitelist_blacklist=Mode
|
||||||
sidebutton.storagecraft:importer.mode.0=Whitelist
|
sidebutton.storagecraft:whitelist_blacklist.whitelist=Whitelist
|
||||||
sidebutton.storagecraft:importer.mode.1=Blacklist
|
sidebutton.storagecraft:whitelist_blacklist.blacklist=Blacklist
|
||||||
|
|
||||||
sidebutton.storagecraft:detector.mode=Mode
|
sidebutton.storagecraft:detector.mode=Mode
|
||||||
sidebutton.storagecraft:detector.mode.0=Emit signal when under the amount
|
sidebutton.storagecraft:detector.mode.0=Emit signal when under the amount
|
||||||
|
|||||||
Reference in New Issue
Block a user