make whitelist / blacklist an interface

This commit is contained in:
Raoul Van den Berge
2016-01-31 14:49:09 +01:00
parent a58085659a
commit 8c630b7d64
9 changed files with 162 additions and 118 deletions

View File

@@ -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

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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);
}
}
}

View File

@@ -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();
}
}
}
}

View File

@@ -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);

View File

@@ -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();
}

View File

@@ -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

View File

@@ -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