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

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

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

View File

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