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));
}
addPlayerInventory(8, 100);
addPlayerInventory(8, 119);
}
}

View File

@@ -15,16 +15,15 @@ public class GuiImporter extends GuiMachine {
private TileImporter importer;
private int compareFlags;
private GuiButton compareNBT;
private GuiButton compareDamage;
private GuiButton mode;
public GuiImporter(ContainerImporter container, TileImporter importer) {
super(container, importer);
this.xSize = 176;
this.ySize = 182;
this.ySize = 201;
this.importer = importer;
}
@@ -36,18 +35,18 @@ public class GuiImporter extends GuiMachine {
int x = (this.width - xSize) / 2;
int y = (this.height - ySize) / 2;
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(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 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
public void updateScreen() {
super.updateScreen();
compareFlags = importer.getCompareFlags();
compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT);
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) {
@@ -56,7 +55,7 @@ public class GuiImporter extends GuiMachine {
builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which));
builder.append(": ");
if ((compareFlags & flag) == flag) {
if ((importer.getCompareFlags() & flag) == flag) {
builder.append(StatCollector.translateToLocal("misc.storagecraft:on"));
} else {
builder.append(StatCollector.translateToLocal("misc.storagecraft:off"));
@@ -79,14 +78,14 @@ public class GuiImporter extends GuiMachine {
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
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
protected void actionPerformed(GuiButton button) {
super.actionPerformed(button);
int flags = compareFlags;
int flags = importer.getCompareFlags();
if (button.id == compareNBT.id) {
flags ^= InventoryUtils.COMPARE_NBT;
@@ -94,6 +93,6 @@ public class GuiImporter extends GuiMachine {
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));
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 z;
private int compareFlags;
private boolean nextMode;
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.y = y;
this.z = z;
this.compareFlags = compareFlags;
this.nextMode = nextMode;
}
@Override
@@ -30,6 +32,7 @@ public class MessageImporterUpdate implements IMessage, IMessageHandler<MessageI
y = buf.readInt();
z = buf.readInt();
compareFlags = buf.readInt();
nextMode = buf.readBoolean();
}
@Override
@@ -38,6 +41,7 @@ public class MessageImporterUpdate implements IMessage, IMessageHandler<MessageI
buf.writeInt(y);
buf.writeInt(z);
buf.writeInt(compareFlags);
buf.writeBoolean(nextMode);
}
@Override
@@ -47,7 +51,13 @@ public class MessageImporterUpdate implements IMessage, IMessageHandler<MessageI
TileEntity tile = player.worldObj.getTileEntity(message.x, message.y, message.z);
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;

View File

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

View File

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

View File

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

View File

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

View File

@@ -22,6 +22,9 @@ misc.storagecraft:redstoneMode.0=Negeren
misc.storagecraft:redstoneMode.1=Hoog
misc.storagecraft:redstoneMode.2=Laag
misc.storagecraft:importer.mode.0=Whitelist
misc.storagecraft:importer.mode.1=Blacklist
block.storagecraft:controller.name=Controleur
block.storagecraft:cable.name=Kabel
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