add whitelist / blacklist to importer and fix some code

This commit is contained in:
Raoul Van den Berge
2015-12-19 00:02:44 +01:00
parent 2bae408c59
commit 2f9bc96ee5
15 changed files with 110 additions and 36 deletions

View File

@@ -12,6 +12,6 @@ public class ContainerImporter extends ContainerBase {
addSlotToContainer(new SlotSpecimen(importer, i, 8 + (18 * i), 20)); addSlotToContainer(new SlotSpecimen(importer, i, 8 + (18 * i), 20));
} }
addPlayerInventory(8, 100); addPlayerInventory(8, 119);
} }
} }

View File

@@ -15,16 +15,15 @@ public class GuiImporter extends GuiMachine {
private TileImporter importer; private TileImporter importer;
private int compareFlags;
private GuiButton compareNBT; private GuiButton compareNBT;
private GuiButton compareDamage; private GuiButton compareDamage;
private GuiButton mode;
public GuiImporter(ContainerImporter container, TileImporter importer) { public GuiImporter(ContainerImporter container, TileImporter importer) {
super(container, importer); super(container, importer);
this.xSize = 176; this.xSize = 176;
this.ySize = 182; this.ySize = 201;
this.importer = importer; this.importer = importer;
} }
@@ -36,18 +35,18 @@ public class GuiImporter extends GuiMachine {
int x = (this.width - xSize) / 2; int x = (this.width - xSize) / 2;
int y = (this.height - ySize) / 2; int y = (this.height - ySize) / 2;
buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, "...")); buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, ""));
buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, "...")); buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, ""));
buttonList.add(mode = new GuiButton(3, x + 7, y + 85, 80, 20, ""));
} }
@Override @Override
public void updateScreen() { public void updateScreen() {
super.updateScreen(); super.updateScreen();
compareFlags = importer.getCompareFlags();
compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT); compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT);
compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE); compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE);
mode.displayString = StatCollector.translateToLocal("misc.storagecraft:importer.mode." + importer.getMode().id);
} }
private String getTextForCompareToggle(String which, int flag) { private String getTextForCompareToggle(String which, int flag) {
@@ -56,7 +55,7 @@ public class GuiImporter extends GuiMachine {
builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which)); builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which));
builder.append(": "); builder.append(": ");
if ((compareFlags & flag) == flag) { if ((importer.getCompareFlags() & flag) == flag) {
builder.append(StatCollector.translateToLocal("misc.storagecraft:on")); builder.append(StatCollector.translateToLocal("misc.storagecraft:on"));
} else { } else {
builder.append(StatCollector.translateToLocal("misc.storagecraft:off")); builder.append(StatCollector.translateToLocal("misc.storagecraft:off"));
@@ -79,14 +78,14 @@ public class GuiImporter extends GuiMachine {
super.drawGuiContainerForegroundLayer(mouseX, mouseY); super.drawGuiContainerForegroundLayer(mouseX, mouseY);
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:importer"), 7, 7, 4210752); fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:importer"), 7, 7, 4210752);
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 89, 4210752); fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 108, 4210752);
} }
@Override @Override
protected void actionPerformed(GuiButton button) { protected void actionPerformed(GuiButton button) {
super.actionPerformed(button); super.actionPerformed(button);
int flags = compareFlags; int flags = importer.getCompareFlags();
if (button.id == compareNBT.id) { if (button.id == compareNBT.id) {
flags ^= InventoryUtils.COMPARE_NBT; flags ^= InventoryUtils.COMPARE_NBT;
@@ -94,6 +93,6 @@ public class GuiImporter extends GuiMachine {
flags ^= InventoryUtils.COMPARE_DAMAGE; flags ^= InventoryUtils.COMPARE_DAMAGE;
} }
StorageCraft.NETWORK.sendToServer(new MessageImporterUpdate(importer.xCoord, importer.yCoord, importer.zCoord, flags)); StorageCraft.NETWORK.sendToServer(new MessageImporterUpdate(importer.xCoord, importer.yCoord, importer.zCoord, flags, button.id == mode.id));
} }
} }

View File

@@ -46,7 +46,7 @@ public abstract class GuiMachine extends GuiContainer {
lines.add(StatCollector.translateToLocal("misc.storagecraft:redstoneMode." + machine.getRedstoneMode().id)); lines.add(StatCollector.translateToLocal("misc.storagecraft:redstoneMode." + machine.getRedstoneMode().id));
this.drawHoveringText(lines, mx, my, fontRendererObj); drawHoveringText(lines, mx, my, fontRendererObj);
} }
} }

View File

@@ -13,15 +13,17 @@ public class MessageImporterUpdate implements IMessage, IMessageHandler<MessageI
private int y; private int y;
private int z; private int z;
private int compareFlags; private int compareFlags;
private boolean nextMode;
public MessageImporterUpdate() { public MessageImporterUpdate() {
} }
public MessageImporterUpdate(int x, int y, int z, int compareFlags) { public MessageImporterUpdate(int x, int y, int z, int compareFlags, boolean nextMode) {
this.x = x; this.x = x;
this.y = y; this.y = y;
this.z = z; this.z = z;
this.compareFlags = compareFlags; this.compareFlags = compareFlags;
this.nextMode = nextMode;
} }
@Override @Override
@@ -30,6 +32,7 @@ public class MessageImporterUpdate implements IMessage, IMessageHandler<MessageI
y = buf.readInt(); y = buf.readInt();
z = buf.readInt(); z = buf.readInt();
compareFlags = buf.readInt(); compareFlags = buf.readInt();
nextMode = buf.readBoolean();
} }
@Override @Override
@@ -38,6 +41,7 @@ public class MessageImporterUpdate implements IMessage, IMessageHandler<MessageI
buf.writeInt(y); buf.writeInt(y);
buf.writeInt(z); buf.writeInt(z);
buf.writeInt(compareFlags); buf.writeInt(compareFlags);
buf.writeBoolean(nextMode);
} }
@Override @Override
@@ -47,7 +51,13 @@ public class MessageImporterUpdate implements IMessage, IMessageHandler<MessageI
TileEntity tile = player.worldObj.getTileEntity(message.x, message.y, message.z); TileEntity tile = player.worldObj.getTileEntity(message.x, message.y, message.z);
if (tile instanceof TileImporter) { if (tile instanceof TileImporter) {
((TileImporter) tile).setCompareFlags(message.compareFlags); TileImporter importer = (TileImporter) tile;
importer.setCompareFlags(message.compareFlags);
if (message.nextMode) {
importer.setMode(importer.getMode().next());
}
} }
return null; return null;

View File

@@ -6,7 +6,6 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import storagecraft.tile.RedstoneMode;
import storagecraft.tile.TileMachine; import storagecraft.tile.TileMachine;
public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<MessageRedstoneModeUpdate, IMessage> { public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<MessageRedstoneModeUpdate, IMessage> {
@@ -46,13 +45,7 @@ public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler<Mess
if (tile instanceof TileMachine) { if (tile instanceof TileMachine) {
TileMachine machine = (TileMachine) tile; TileMachine machine = (TileMachine) tile;
int id = machine.getRedstoneMode().id + 1; machine.setRedstoneMode(machine.getRedstoneMode().next());
if (RedstoneMode.getById(id) == null) {
id = 0;
}
machine.setRedstoneMode(RedstoneMode.getById(id));
} }
return null; return null;

View File

@@ -0,0 +1,31 @@
package storagecraft.tile;
public enum ImporterMode {
WHITELIST(0), BLACKLIST(1);
public final int id;
ImporterMode(int id) {
this.id = id;
}
public ImporterMode next() {
ImporterMode next = getById(id + 1);
if (next == null) {
return getById(0);
}
return next;
}
public static ImporterMode getById(int id) {
for (ImporterMode mode : values()) {
if (mode.id == id) {
return mode;
}
}
return null;
}
}

View File

@@ -11,6 +11,16 @@ public enum RedstoneMode {
this.id = id; this.id = id;
} }
public RedstoneMode next() {
RedstoneMode next = getById(id + 1);
if (next == null) {
return getById(0);
}
return next;
}
public static RedstoneMode getById(int id) { public static RedstoneMode getById(int id) {
for (RedstoneMode control : values()) { for (RedstoneMode control : values()) {
if (control.id == id) { if (control.id == id) {

View File

@@ -13,7 +13,7 @@ import storagecraft.network.MessageTileUpdate;
public class TileBase extends TileEntity { public class TileBase extends TileEntity {
public static final int UPDATE_RANGE = 64; public static final int UPDATE_RANGE = 64;
private ForgeDirection direction; private ForgeDirection direction = ForgeDirection.UNKNOWN;
protected int ticks; protected int ticks;

View File

@@ -11,10 +11,12 @@ import storagecraft.util.InventoryUtils;
public class TileImporter extends TileMachine implements IInventory { public class TileImporter extends TileMachine implements IInventory {
public static final String NBT_COMPARE_FLAGS = "CompareFlags"; public static final String NBT_COMPARE_FLAGS = "CompareFlags";
public static final String NBT_MODE = "Mode";
private InventorySimple inventory = new InventorySimple("importer", 9); private InventorySimple inventory = new InventorySimple("importer", 9);
private int compareFlags = InventoryUtils.COMPARE_NBT | InventoryUtils.COMPARE_DAMAGE; private int compareFlags = 0;
private ImporterMode mode = ImporterMode.WHITELIST;
private int currentSlot = 0; private int currentSlot = 0;
@@ -67,14 +69,22 @@ public class TileImporter extends TileMachine implements IInventory {
slots++; slots++;
if (InventoryUtils.compareStack(stack, slot, compareFlags)) { if (InventoryUtils.compareStack(stack, slot, compareFlags)) {
if (mode == ImporterMode.WHITELIST) {
return true; return true;
} else if (mode == ImporterMode.BLACKLIST) {
return false;
}
} }
} }
} }
if (mode == ImporterMode.WHITELIST) {
return slots == 0; return slots == 0;
} }
return true;
}
public int getCompareFlags() { public int getCompareFlags() {
return compareFlags; return compareFlags;
} }
@@ -83,6 +93,14 @@ public class TileImporter extends TileMachine implements IInventory {
this.compareFlags = flags; this.compareFlags = flags;
} }
public ImporterMode getMode() {
return mode;
}
public void setMode(ImporterMode mode) {
this.mode = mode;
}
@Override @Override
public int getSizeInventory() { public int getSizeInventory() {
return inventory.getSizeInventory(); return inventory.getSizeInventory();
@@ -151,6 +169,10 @@ public class TileImporter extends TileMachine implements IInventory {
compareFlags = nbt.getInteger(NBT_COMPARE_FLAGS); compareFlags = nbt.getInteger(NBT_COMPARE_FLAGS);
} }
if (nbt.hasKey(NBT_MODE)) {
mode = ImporterMode.getById(nbt.getInteger(NBT_MODE));
}
InventoryUtils.restoreInventory(this, nbt); InventoryUtils.restoreInventory(this, nbt);
} }
@@ -159,6 +181,7 @@ public class TileImporter extends TileMachine implements IInventory {
super.writeToNBT(nbt); super.writeToNBT(nbt);
nbt.setInteger(NBT_COMPARE_FLAGS, compareFlags); nbt.setInteger(NBT_COMPARE_FLAGS, compareFlags);
nbt.setInteger(NBT_MODE, mode.id);
InventoryUtils.saveInventory(this, nbt); InventoryUtils.saveInventory(this, nbt);
} }
@@ -168,6 +191,7 @@ public class TileImporter extends TileMachine implements IInventory {
super.fromBytes(buf); super.fromBytes(buf);
compareFlags = buf.readInt(); compareFlags = buf.readInt();
mode = ImporterMode.getById(buf.readInt());
} }
@Override @Override
@@ -175,5 +199,6 @@ public class TileImporter extends TileMachine implements IInventory {
super.toBytes(buf); super.toBytes(buf);
buf.writeInt(compareFlags); buf.writeInt(compareFlags);
buf.writeInt(mode.id);
} }
} }

View File

@@ -8,7 +8,7 @@ public abstract class TileMachine extends TileBase implements INetworkTile {
protected boolean connected = false; protected boolean connected = false;
private RedstoneMode redstoneMode = RedstoneMode.IGNORE; private RedstoneMode redstoneMode = RedstoneMode.LOW;
private int xController; private int xController;
private int yController; private int yController;

View File

@@ -22,6 +22,9 @@ misc.storagecraft:redstoneMode.0=Ignore
misc.storagecraft:redstoneMode.1=High misc.storagecraft:redstoneMode.1=High
misc.storagecraft:redstoneMode.2=Low misc.storagecraft:redstoneMode.2=Low
misc.storagecraft:importer.mode.0=Whitelist
misc.storagecraft:importer.mode.1=Blacklist
block.storagecraft:controller.name=Controller block.storagecraft:controller.name=Controller
block.storagecraft:cable.name=Cable block.storagecraft:cable.name=Cable
block.storagecraft:grid.name=Grid block.storagecraft:grid.name=Grid

View File

@@ -22,6 +22,9 @@ misc.storagecraft:redstoneMode.0=Negeren
misc.storagecraft:redstoneMode.1=Hoog misc.storagecraft:redstoneMode.1=Hoog
misc.storagecraft:redstoneMode.2=Laag misc.storagecraft:redstoneMode.2=Laag
misc.storagecraft:importer.mode.0=Whitelist
misc.storagecraft:importer.mode.1=Blacklist
block.storagecraft:controller.name=Controleur block.storagecraft:controller.name=Controleur
block.storagecraft:cable.name=Kabel block.storagecraft:cable.name=Kabel
block.storagecraft:grid.name=Rooster block.storagecraft:grid.name=Rooster

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB