From 9a9ec02eefe994361c261db7e6fd105de174ec30 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 7 Jun 2016 23:17:06 +0200 Subject: [PATCH] Added item filters --- .../mod/creative/CreativeTab.java | 2 +- .../mod/inventory/ContainerBreaker.java | 2 +- .../mod/inventory/ContainerCanolaPress.java | 2 +- .../mod/inventory/ContainerCoalGenerator.java | 2 +- .../mod/inventory/ContainerCoffeeMachine.java | 2 +- .../mod/inventory/ContainerCrafter.java | 2 +- .../ContainerDirectionalBreaker.java | 2 +- .../mod/inventory/ContainerDrill.java | 12 +- .../mod/inventory/ContainerDropper.java | 2 +- .../mod/inventory/ContainerEnergizer.java | 2 +- .../mod/inventory/ContainerEnervator.java | 2 +- .../mod/inventory/ContainerFeeder.java | 2 +- .../inventory/ContainerFermentingBarrel.java | 2 +- .../mod/inventory/ContainerFilter.java | 258 ++++++++++++++++++ .../inventory/ContainerFluidCollector.java | 2 +- .../mod/inventory/ContainerFurnaceDouble.java | 2 +- .../mod/inventory/ContainerGiantChest.java | 2 +- .../mod/inventory/ContainerGrinder.java | 2 +- .../mod/inventory/ContainerInputter.java | 2 +- .../ContainerLaserRelayItemWhitelist.java | 2 +- .../mod/inventory/ContainerMiner.java | 2 +- .../mod/inventory/ContainerOilGenerator.java | 2 +- .../mod/inventory/ContainerPhantomPlacer.java | 2 +- .../inventory/ContainerRangedCollector.java | 2 +- .../mod/inventory/ContainerRepairer.java | 2 +- .../mod/inventory/ContainerXPSolidifier.java | 2 +- .../mod/inventory/GuiHandler.java | 7 +- .../mod/inventory/gui/GuiFilter.java | 49 ++++ .../mod/items/InitItems.java | 2 + .../mod/items/ItemDrill.java | 20 +- .../mod/items/ItemFilter.java | 60 ++++ .../mod/tile/TileEntityInputter.java | 28 +- .../TileEntityLaserRelayItemWhitelist.java | 90 ++++-- .../mod/tile/TileEntityRangedCollector.java | 13 +- .../assets/actuallyadditions/lang/en_US.lang | 6 +- .../models/item/itemFilter.json | 6 + .../textures/gui/guiFilter.png | Bin 0 -> 1724 bytes .../textures/items/itemFilter.png | Bin 0 -> 509 bytes 38 files changed, 493 insertions(+), 106 deletions(-) create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/GuiFilter.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java create mode 100644 src/main/resources/assets/actuallyadditions/models/item/itemFilter.json create mode 100644 src/main/resources/assets/actuallyadditions/textures/gui/guiFilter.png create mode 100644 src/main/resources/assets/actuallyadditions/textures/items/itemFilter.png diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java b/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java index 3fb187cd1..087c750a3 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/creative/CreativeTab.java @@ -168,7 +168,7 @@ public class CreativeTab extends CreativeTabs{ this.list.add(UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, InitFluids.fluidOil)); this.add(InitItems.itemPhantomConnector); - + this.add(InitItems.itemFilter); this.add(InitItems.itemWingsOfTheBats); this.add(InitItems.itemCoffeeSeed); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java index 858ca5d3c..71c5c5c2d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java @@ -74,7 +74,7 @@ public class ContainerBreaker extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java index eb980e3bf..8a666ba2a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java @@ -76,7 +76,7 @@ public class ContainerCanolaPress extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java index 60773bd2f..89162aed5 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java @@ -75,7 +75,7 @@ public class ContainerCoalGenerator extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java index f59711d48..34902031a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java @@ -103,7 +103,7 @@ public class ContainerCoffeeMachine extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java index b15018967..a57a4e66a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java @@ -74,7 +74,7 @@ public class ContainerCrafter extends Container{ return null; } - if(savedStack.stackSize == 0){ + if(savedStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java index fe7181a50..b461964e4 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java @@ -74,7 +74,7 @@ public class ContainerDirectionalBreaker extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java index 7f547b687..fb2213e5f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java @@ -36,7 +36,7 @@ public class ContainerDrill extends Container{ this.inventory = inventory; for(int i = 0; i < SLOT_AMOUNT; i++){ - this.addSlotToContainer(new Slot(ContainerDrill.this.drillInventory, i, 44+i*18, 19){ + this.addSlotToContainer(new Slot(this.drillInventory, i, 44+i*18, 19){ @Override public boolean isItemValid(ItemStack stack){ return stack.getItem() instanceof ItemDrillUpgrade || stack.getItem() instanceof IEnergyContainerItem; @@ -60,10 +60,7 @@ public class ContainerDrill extends Container{ ItemStack stack = inventory.getCurrentItem(); if(stack != null && stack.getItem() instanceof ItemDrill){ - ItemStack[] slots = ((ItemDrill)stack.getItem()).getSlotsFromNBT(inventory.getCurrentItem()); - if(slots != null && slots.length > 0){ - this.drillInventory.slots = slots; - } + ItemDrill.loadSlotsFromNBT(this.drillInventory.slots, inventory.getCurrentItem()); } } @@ -103,7 +100,7 @@ public class ContainerDrill extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ @@ -134,7 +131,7 @@ public class ContainerDrill extends Container{ public void onContainerClosed(EntityPlayer player){ ItemStack stack = this.inventory.getCurrentItem(); if(stack != null && stack.getItem() instanceof ItemDrill){ - ((ItemDrill)stack.getItem()).writeSlotsToNBT(this.drillInventory.slots, this.inventory.getCurrentItem()); + ItemDrill.writeSlotsToNBT(this.drillInventory.slots, this.inventory.getCurrentItem()); } super.onContainerClosed(player); } @@ -148,7 +145,6 @@ public class ContainerDrill extends Container{ public ItemStack[] slots = new ItemStack[SLOT_AMOUNT]; - @Override public String getName(){ return "drill"; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java index 0143f19b1..7ac5ef2df 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java @@ -74,7 +74,7 @@ public class ContainerDropper extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java index 97ed701d5..e99b39bd4 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java @@ -111,7 +111,7 @@ public class ContainerEnergizer extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java index 14a9186ca..112e894b4 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java @@ -110,7 +110,7 @@ public class ContainerEnervator extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java index f2511306e..f83139cd6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java @@ -69,7 +69,7 @@ public class ContainerFeeder extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java index 2b5b55344..07090c987 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java @@ -64,7 +64,7 @@ public class ContainerFermentingBarrel extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java new file mode 100644 index 000000000..846e3d731 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java @@ -0,0 +1,258 @@ +/* + * This file ("ContainerFilter.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.mod.inventory; + +import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter; +import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable; +import de.ellpeck.actuallyadditions.mod.items.ItemDrill; +import de.ellpeck.actuallyadditions.mod.items.ItemFilter; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextComponentTranslation; + + +public class ContainerFilter extends Container{ + + public static final int SLOT_AMOUNT = 24; + + private final InventoryFilter filterInventory = new InventoryFilter(); + private final InventoryPlayer inventory; + + public ContainerFilter(InventoryPlayer inventory){ + this.inventory = inventory; + + for(int i = 0; i < 4; i++){ + for(int j = 0; j < 6; j++){ + this.addSlotToContainer(new SlotFilter(this.filterInventory, j+(i*6), 35+j*18, 10+i*18)); + } + } + + for(int i = 0; i < 3; i++){ + for(int j = 0; j < 9; j++){ + this.addSlotToContainer(new Slot(inventory, j+i*9+9, 8+j*18, 94+i*18)); + } + } + for(int i = 0; i < 9; i++){ + if(i == inventory.currentItem){ + this.addSlotToContainer(new SlotImmovable(inventory, i, 8+i*18, 152)); + } + else{ + this.addSlotToContainer(new Slot(inventory, i, 8+i*18, 152)); + } + } + + ItemStack stack = inventory.getCurrentItem(); + if(stack != null && stack.getItem() instanceof ItemFilter){ + ItemDrill.loadSlotsFromNBT(this.filterInventory.slots, inventory.getCurrentItem()); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot){ + final int inventoryStart = SLOT_AMOUNT; + final int inventoryEnd = inventoryStart+26; + final int hotbarStart = inventoryEnd+1; + final int hotbarEnd = hotbarStart+8; + + Slot theSlot = this.inventorySlots.get(slot); + + if(theSlot != null && theSlot.getHasStack()){ + ItemStack newStack = theSlot.getStack(); + ItemStack currentStack = newStack.copy(); + + //Other Slots in Inventory excluded + if(slot >= inventoryStart){ + //Shift from Inventory + // + if(slot >= inventoryStart && slot <= inventoryEnd){ + if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ + return null; + } + } + else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ + return null; + } + } + else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ + return null; + } + + if(newStack.stackSize == 0){ + theSlot.putStack(null); + } + else{ + theSlot.onSlotChanged(); + } + + if(newStack.stackSize == currentStack.stackSize){ + return null; + } + theSlot.onPickupFromSlot(player, newStack); + + return currentStack; + } + return null; + } + + @Override + public ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, EntityPlayer player){ + if(slotId >= 0 && slotId < this.inventorySlots.size() && this.getSlot(slotId) instanceof SlotFilter){ + //Calls the Filter's SlotClick function + return ((SlotFilter)this.getSlot(slotId)).slotClick(player); + } + else if(clickTypeIn == ClickType.SWAP && dragType == this.inventory.currentItem){ + return null; + } + else{ + return super.slotClick(slotId, dragType, clickTypeIn, player); + } + } + + @Override + public void onContainerClosed(EntityPlayer player){ + ItemStack stack = this.inventory.getCurrentItem(); + if(stack != null && stack.getItem() instanceof ItemFilter){ + ItemDrill.writeSlotsToNBT(this.filterInventory.slots, this.inventory.getCurrentItem()); + } + super.onContainerClosed(player); + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return this.filterInventory.isUseableByPlayer(player); + } + + public static class InventoryFilter implements IInventory{ + + public ItemStack[] slots = new ItemStack[SLOT_AMOUNT]; + + @Override + public String getName(){ + return "filter"; + } + + @Override + public int getInventoryStackLimit(){ + return 64; + } + + @Override + public void markDirty(){ + + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player){ + return true; + } + + @Override + public void openInventory(EntityPlayer player){ + + } + + @Override + public void closeInventory(EntityPlayer player){ + + } + + @Override + public boolean isItemValidForSlot(int index, ItemStack stack){ + return true; + } + + @Override + public int getField(int id){ + return 0; + } + + @Override + public void setField(int id, int value){ + + } + + @Override + public int getFieldCount(){ + return 0; + } + + @Override + public void clear(){ + int length = this.slots.length; + this.slots = new ItemStack[length]; + } + + @Override + public void setInventorySlotContents(int i, ItemStack stack){ + this.slots[i] = stack; + this.markDirty(); + } + + @Override + public int getSizeInventory(){ + return this.slots.length; + } + + @Override + public ItemStack getStackInSlot(int i){ + if(i < this.getSizeInventory()){ + return this.slots[i]; + } + return null; + } + + @Override + public ItemStack decrStackSize(int i, int j){ + if(this.slots[i] != null){ + ItemStack stackAt; + if(this.slots[i].stackSize <= j){ + stackAt = this.slots[i]; + this.slots[i] = null; + this.markDirty(); + return stackAt; + } + else{ + stackAt = this.slots[i].splitStack(j); + if(this.slots[i].stackSize <= 0){ + this.slots[i] = null; + } + this.markDirty(); + return stackAt; + } + } + return null; + } + + @Override + public ItemStack removeStackFromSlot(int index){ + ItemStack stack = this.slots[index]; + this.slots[index] = null; + return stack; + } + + @Override + public boolean hasCustomName(){ + return false; + } + + + @Override + public ITextComponent getDisplayName(){ + return new TextComponentTranslation(this.getName()); + } + } +} \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java index 7624a2e5f..f622045a4 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java @@ -71,7 +71,7 @@ public class ContainerFluidCollector extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java index 98a41acea..fdc5c6f20 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java @@ -88,7 +88,7 @@ public class ContainerFurnaceDouble extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java index 84e109656..2964b390e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java @@ -75,7 +75,7 @@ public class ContainerGiantChest extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java index 462f5c065..3730ba761 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java @@ -99,7 +99,7 @@ public class ContainerGrinder extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java index 1a7eee3d7..23cbb2d74 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java @@ -86,7 +86,7 @@ public class ContainerInputter extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java index 79a71cddb..db269a3f9 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java @@ -74,7 +74,7 @@ public class ContainerLaserRelayItemWhitelist extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java index 707823c7e..d7f1bff70 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java @@ -74,7 +74,7 @@ public class ContainerMiner extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java index c5b43019f..9a1bbe2d9 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java @@ -63,7 +63,7 @@ public class ContainerOilGenerator extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java index 69c980af0..ea7e57b2f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java @@ -74,7 +74,7 @@ public class ContainerPhantomPlacer extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java index 4742bc767..052834770 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java @@ -81,7 +81,7 @@ public class ContainerRangedCollector extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java index 765fb50e4..adb34ed27 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java @@ -76,7 +76,7 @@ public class ContainerRepairer extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java index 5dbbba39b..e67d4b50d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java @@ -67,7 +67,7 @@ public class ContainerXPSolidifier extends Container{ return null; } - if(newStack.stackSize == 0){ + if(newStack.stackSize <= 0){ theSlot.putStack(null); } else{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/GuiHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/GuiHandler.java index b0aa01a77..fe80795ca 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/GuiHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/GuiHandler.java @@ -74,6 +74,8 @@ public class GuiHandler implements IGuiHandler{ return new ContainerCoffeeMachine(entityPlayer.inventory, tile); case DRILL: return new ContainerDrill(entityPlayer.inventory); + case FILTER: + return new ContainerFilter(entityPlayer.inventory); case ENERGIZER: return new ContainerEnergizer(entityPlayer, tile); case ENERVATOR: @@ -140,6 +142,8 @@ public class GuiHandler implements IGuiHandler{ return new GuiCoffeeMachine(entityPlayer.inventory, tile, x, y, z, world); case DRILL: return new GuiDrill(entityPlayer.inventory); + case FILTER: + return new GuiFilter(entityPlayer.inventory); case ENERGIZER: return new GuiEnergizer(entityPlayer, tile); case ENERVATOR: @@ -194,7 +198,8 @@ public class GuiHandler implements IGuiHandler{ RANGED_COLLECTOR, MINER, BOOK_STAND, - LASER_RELAY_ITEM_WHITELIST; + LASER_RELAY_ITEM_WHITELIST, + FILTER(false); public final boolean checkTileEntity; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/GuiFilter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/GuiFilter.java new file mode 100644 index 000000000..398971903 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/gui/GuiFilter.java @@ -0,0 +1,49 @@ +/* + * This file ("GuiFilter.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.mod.inventory.gui; + +import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter; +import de.ellpeck.actuallyadditions.mod.util.AssetUtil; +import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class GuiFilter extends GuiContainer{ + + private static final ResourceLocation RES_LOC = AssetUtil.getGuiLocation("guiFilter"); + + public GuiFilter(InventoryPlayer inventory){ + super(new ContainerFilter(inventory)); + this.xSize = 176; + this.ySize = 90+86; + } + + @Override + public void drawGuiContainerForegroundLayer(int x, int y){ + AssetUtil.displayNameString(this.fontRendererObj, this.xSize, -10, "container."+ModUtil.MOD_ID+".filter"); + } + + @Override + public void drawGuiContainerBackgroundLayer(float f, int x, int y){ + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + + this.mc.getTextureManager().bindTexture(AssetUtil.GUI_INVENTORY_LOCATION); + this.drawTexturedModalRect(this.guiLeft, this.guiTop+90, 0, 0, 176, 86); + + this.mc.getTextureManager().bindTexture(RES_LOC); + this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 90); + } +} \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java index 29ee5d294..96559cc28 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/InitItems.java @@ -208,12 +208,14 @@ public class InitItems{ public static Item itemPaxelCrystalWhite; public static Item itemWaterBowl; + public static Item itemFilter; public static Item itemRarmorModuleReconstructor; public static void init(){ ModUtil.LOGGER.info("Initializing Items..."); + itemFilter = new ItemFilter("itemFilter"); itemWaterBowl = new ItemWaterBowl("itemWaterBowl"); itemSpawnerChanger = new ItemSpawnerChanger("itemSpawnerChanger"); itemMisc = new ItemMisc("itemMisc"); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java index 47e6ad857..9338bf763 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java @@ -126,7 +126,8 @@ public class ItemDrill extends ItemEnergy{ return null; } - ItemStack[] slots = this.getSlotsFromNBT(stack); + ItemStack[] slots = new ItemStack[ContainerDrill.SLOT_AMOUNT]; + loadSlotsFromNBT(slots, stack); if(slots != null && slots.length > 0){ for(ItemStack slotStack : slots){ if(slotStack != null && slotStack.getItem() instanceof ItemDrillUpgrade){ @@ -143,18 +144,12 @@ public class ItemDrill extends ItemEnergy{ * Gets all of the Slots from NBT * * @param stack The Drill - * @return All of the Slots */ - public ItemStack[] getSlotsFromNBT(ItemStack stack){ + public static void loadSlotsFromNBT(ItemStack[] slots, ItemStack stack){ NBTTagCompound compound = stack.getTagCompound(); - if(compound == null){ - return null; + if(compound != null){ + TileEntityInventoryBase.loadSlots(slots, compound); } - - ItemStack[] slots = new ItemStack[ContainerDrill.SLOT_AMOUNT]; - TileEntityInventoryBase.loadSlots(slots, compound); - - return slots; } @@ -183,7 +178,8 @@ public class ItemDrill extends ItemEnergy{ //Checks for Energy Containers in the Upgrade Slots and charges the Drill from them @Override public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5){ - ItemStack[] slots = this.getSlotsFromNBT(stack); + ItemStack[] slots = new ItemStack[ContainerDrill.SLOT_AMOUNT]; + loadSlotsFromNBT(slots, stack); if(slots != null && slots.length > 0){ for(ItemStack slotStack : slots){ if(slotStack != null && slotStack.getItem() instanceof IEnergyContainerItem){ @@ -395,7 +391,7 @@ public class ItemDrill extends ItemEnergy{ * @param slots The Slots * @param stack The Drill */ - public void writeSlotsToNBT(ItemStack[] slots, ItemStack stack){ + public static void writeSlotsToNBT(ItemStack[] slots, ItemStack stack){ NBTTagCompound compound = stack.getTagCompound(); if(compound == null){ compound = new NBTTagCompound(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java new file mode 100644 index 000000000..e94fb72e4 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFilter.java @@ -0,0 +1,60 @@ +/* + * This file ("ItemFilter.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.mod.items; + +import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; +import de.ellpeck.actuallyadditions.mod.inventory.ContainerDrill; +import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter; +import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler; +import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemFilter extends ItemBase{ + + public ItemFilter(String name){ + super(name); + this.setMaxStackSize(1); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.UNCOMMON; + } + + @Override + public ActionResult onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand){ + if(!world.isRemote){ + player.openGui(ActuallyAdditions.instance, GuiHandler.GuiTypes.FILTER.ordinal(), world, (int)player.posX, (int)player.posY, (int)player.posZ); + } + return new ActionResult(EnumActionResult.PASS, stack); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer playerIn, List tooltip, boolean advanced){ + ItemStack[] slots = new ItemStack[ContainerFilter.SLOT_AMOUNT]; + ItemDrill.loadSlotsFromNBT(slots, stack); + if(slots != null && slots.length > 0){ + for(ItemStack slot : slots){ + if(slot != null && slot.getItem() != null){ + tooltip.add(slot.getItem().getItemStackDisplayName(slot)); + } + } + } + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java index 221b70b05..6a7d66e08 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.tile; +import com.sun.org.apache.bcel.internal.generic.PUTFIELD; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; @@ -265,31 +266,8 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt * @return If the Item is filtered correctly */ private boolean checkBothFilters(ItemStack stack, boolean output){ - return this.checkFilter(stack, !output, output ? this.isPutWhitelist : this.isPullWhitelist); - } - - /** - * Checks the Whitelist/Blacklist to see if Item fits - * - * @param stack The Stack to check for - * @param isPull If we're pulling or putting - * @param isWhitelist If it's set to white- or Blacklist - * @return Is Item on White-/Blacklist? - */ - private boolean checkFilter(ItemStack stack, boolean isPull, boolean isWhitelist){ - if(!this.isAdvanced){ - return true; - } - - int slotStart = isPull ? PULL_FILTER_START : PUT_FILTER_START; - int slotStop = slotStart+12; - - for(int i = slotStart; i < slotStop; i++){ - if(this.slots[i] != null && this.slots[i].isItemEqual(stack)){ - return isWhitelist; - } - } - return !isWhitelist; + int slotStart = output ? PUT_FILTER_START : PULL_FILTER_START; + return TileEntityLaserRelayItemWhitelist.checkFilter(stack, output ? this.isPutWhitelist : this.isPullWhitelist, this.slots, slotStart, slotStart+12); } /** diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java index c8226572e..85385c94d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java @@ -10,8 +10,10 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter; +import de.ellpeck.actuallyadditions.mod.items.ItemDrill; +import de.ellpeck.actuallyadditions.mod.items.ItemFilter; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; -import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -20,7 +22,6 @@ import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; import net.minecraftforge.items.IItemHandler; -import java.util.Arrays; import java.util.List; public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{ @@ -164,19 +165,8 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem @Override public boolean isWhitelisted(ItemStack stack, boolean output){ - return this.checkFilter(stack, !output, output ? this.isRightWhitelist : this.isLeftWhitelist); - } - - private boolean checkFilter(ItemStack stack, boolean left, boolean isWhitelist){ - int slotStart = left ? 0 : 12; - int slotStop = slotStart+12; - - for(int i = slotStart; i < slotStop; i++){ - if(this.slots[i] != null && this.slots[i].isItemEqual(stack)){ - return isWhitelist; - } - } - return !isWhitelist; + int slotStart = output ? 12 : 0; + return checkFilter(stack, output ? this.isRightWhitelist : this.isLeftWhitelist, this.slots, slotStart, slotStart+12); } @Override @@ -189,6 +179,30 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem compound.setBoolean("RightWhitelist", this.isRightWhitelist); } + public static boolean checkFilter(ItemStack stack, boolean isWhitelist, ItemStack[] slots, int start, int end){ + if(stack != null){ + for(int i = start; i < end; i++){ + if(slots[i] != null){ + if(slots[i].isItemEqual(stack)){ + return isWhitelist; + } + else if(slots[i].getItem() instanceof ItemFilter){ + ItemStack[] filterSlots = new ItemStack[ContainerFilter.SLOT_AMOUNT]; + ItemDrill.loadSlotsFromNBT(filterSlots, slots[i]); + if(filterSlots != null && filterSlots.length > 0){ + for(ItemStack filterSlot : filterSlots){ + if(filterSlot != null && filterSlot.isItemEqual(stack)){ + return isWhitelist; + } + } + } + } + } + } + } + return !isWhitelist; + } + @Override public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){ super.readSyncableNBT(compound, isForSync); @@ -219,20 +233,52 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem int slotStart = output ? 12 : 0; int slotStop = slotStart+12; + for(int i = 0; i < this.slots.length; i++){ + if(this.slots[i] != null){ + if(this.slots[i].getItem() instanceof ItemFilter){ + ItemDrill.writeSlotsToNBT(new ItemStack[ContainerFilter.SLOT_AMOUNT], this.slots[i]); + } + else{ + this.slots[i] = null; + } + } + } + List handlers = this.getAllHandlersAround(); for(IItemHandler handler : handlers){ for(int i = 0; i < handler.getSlots(); i++){ ItemStack stack = handler.getStackInSlot(i); if(stack != null){ - if(!ItemUtil.contains(Arrays.copyOfRange(this.slots, slotStart, slotStop), stack, false)){ - for(int j = slotStart; j < slotStop; j++){ - if(this.slots[j] == null || this.slots[j].stackSize <= 0){ - ItemStack whitelistStack = stack.copy(); - whitelistStack.stackSize = 1; - this.slots[j] = whitelistStack; - break; + ItemStack copy = stack.copy(); + copy.stackSize = 1; + + for(int k = slotStart; k < slotStop; k++){ + if(this.slots[k] != null){ + if(this.slots[k].getItem() instanceof ItemFilter){ + ItemStack[] filterSlots = new ItemStack[ContainerFilter.SLOT_AMOUNT]; + ItemDrill.loadSlotsFromNBT(filterSlots, this.slots[k]); + + boolean did = false; + if(filterSlots != null && filterSlots.length > 0){ + for(int j = 0; j < filterSlots.length; j++){ + if(filterSlots[j] == null || filterSlots[j].stackSize <= 0){ + filterSlots[j] = copy; + did = true; + break; + } + } + } + + if(did){ + ItemDrill.writeSlotsToNBT(filterSlots, this.slots[k]); + break; + } } } + else{ + this.slots[k] = copy; + break; + } } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java index 7fe3f936b..8a67053b4 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java @@ -55,7 +55,7 @@ public class TileEntityRangedCollector extends TileEntityInventoryBase implement for(EntityItem item : items){ if(!item.isDead && item.getEntityItem() != null){ ItemStack toAdd = item.getEntityItem().copy(); - if(this.checkFilter(toAdd)){ + if(TileEntityLaserRelayItemWhitelist.checkFilter(toAdd, this.isWhitelist, this.slots, WHITELIST_START, WHITELIST_START+12)){ ArrayList checkList = new ArrayList(); checkList.add(toAdd); if(WorldUtil.addToInventory(this, 0, WHITELIST_START, checkList, EnumFacing.UP, false, true)){ @@ -74,17 +74,6 @@ public class TileEntityRangedCollector extends TileEntityInventoryBase implement } } - private boolean checkFilter(ItemStack stack){ - int slotStop = WHITELIST_START+12; - - for(int i = WHITELIST_START; i < slotStop; i++){ - if(this.slots[i] != null && this.slots[i].isItemEqual(stack)){ - return this.isWhitelist; - } - } - return !this.isWhitelist; - } - @Override public boolean isItemValidForSlot(int i, ItemStack stack){ return false; diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 0e719eeaf..0c413a3b7 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -490,6 +490,7 @@ item.actuallyadditions.itemSpawnerChanger.name=Spawner Changer item.actuallyadditions.itemMiscSpawnerShard.name=Spawner Shards item.actuallyadditions.itemMinecartFireworkBox.name=Firework Box Cart item.actuallyadditions.itemWaterBowl.name=Bowl of Water +item.actuallyadditions.itemFilter.name=Item Filter #Tooltips tooltip.actuallyadditions.onSuffix.desc=On @@ -542,10 +543,10 @@ info.actuallyadditions.gui.coffee=Coffee info.actuallyadditions.gui.ok=Ok info.actuallyadditions.gui.the=the info.actuallyadditions.gui.smart=Smart Whitelist -info.actuallyadditions.gui.smartInfo=When pressing this, all items from inventories adjacent to this relay will be added to this part of the white- or blacklist. +info.actuallyadditions.gui.smartInfo=When pressing this, all items from inventories adjacent to this relay will be added to this part of the white- or blacklist. Adding Item Filters to the list before will cause them to also be filled. Caution: Non-Item Filters previously added to the list will be removed and Item Filters will be cleared! info.actuallyadditions.inputter.info.1=This is the first Slot in the connected Inventory to

at. info.actuallyadditions.inputter.info.2=This is the slot after the last Slot in the connected Inventory to

at. What that means: If you, for example, write 2 in the field to the left and 5 in this one, it will

at Slot 2, 3, and 4. -info.actuallyadditions.inputter.whitelistInfo=When pressing this, this side's whitelist mode will be changed. To let all items through, an empty blacklist can be used, to let no items through, an empty whitelist can be used. To configure certain items, place them in the slots. +info.actuallyadditions.inputter.whitelistInfo=When pressing this, this side's whitelist mode will be changed. To let all items through, an empty blacklist can be used, to let no items through, an empty whitelist can be used. To configure certain items, place them or configured Item Filters in the slots. info.actuallyadditions.noLens=No Lens info.actuallyadditions.booklet.manualName.1=Actually Additions info.actuallyadditions.booklet.manualName.2=Manual @@ -586,6 +587,7 @@ container.actuallyadditions.directionalBreaker.name=Long-Range Breaker container.actuallyadditions.rangedCollector.name=Ranged Collector container.actuallyadditions.miner.name=Vertical Digger container.actuallyadditions.laserRelayItemWhitelist.name=Laser Relay +container.actuallyadditions.filter.name=Item Filter #Update Information info.actuallyadditions.update.generic=[{"text":"There is an Update for "},{"text":"Actually Additions ","color":"dark_green"},{"text":"available!","color":"none"}] diff --git a/src/main/resources/assets/actuallyadditions/models/item/itemFilter.json b/src/main/resources/assets/actuallyadditions/models/item/itemFilter.json new file mode 100644 index 000000000..2f3a59911 --- /dev/null +++ b/src/main/resources/assets/actuallyadditions/models/item/itemFilter.json @@ -0,0 +1,6 @@ +{ + "parent": "actuallyadditions:item/standardItem", + "textures": { + "layer0": "actuallyadditions:items/itemFilter" + } +} diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiFilter.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiFilter.png new file mode 100644 index 0000000000000000000000000000000000000000..664ff5067316d10254de6ee5bc8ab02a8d4f6e18 GIT binary patch literal 1724 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6&2?&#~tz_78O`%fY(kk47* z5n0T@z_%8J8TsBfqyq&dN?apKg7ec#$`gxH8440J^GfvcQcDy}^bGVYbByc!7#P^B zJY5_^D&pSWaLkK#7hnmve@gx1$`bwf(~evBO*pVpQDHKdmHd0gtq&K8znaCiGXMX^ z_@dtqU%P*wo_GH`Z~g992k-v<^YgOcgZOn-d%QiL%=`KA@o^RF`gq$vj~TXHI#K(G z;X=&$`;0rPWf*3?{%Orn-p}k%Y+KL%;9Vg@#=7V48SdEfF`WJS=REs^-{0T+KY#mn zZQZ|{Gd^3)yj(WJg2Cka=lU9kpf%}2&*pqSWtrRF$?Rafv@>khk!I`k$8)wFKEk+Q z<|P+x-$w`MZZ7n@od~qgCv(wMwT}UIY5H!tq#}36Qu_H8Sv8__3h}?2(_4ItPnf+S%}aQ#Nhf>xxnl!o z{Ym$Y^HR?xub&0+L3plQJ#&SbX8G?wn+=~A8bSOC3{CX|^HWAnsGvv6lf@C|jh=4| zKMRT1)n@(s8Es}y*rb&OUyhVV>`) zyLSI`&Q#7h0|~p=KYw$6P#;D)h)}4Ymmfbhu5CV3`6d)n20UAJcBe&AKe#+9XLu*a z-tesIAK!tyk1z>%2XskIMF-yt761+}7)&kS0000ObVXQn zQ*UN;cVTj60B~VxZgehgWpp4kE-)@RY%_jN0004KNkld(+6VpkaOYxqYvFM=KIY*D+wE_zwrlVad_rqA z(P*fUWa)_0hMPApSKBq{x9eQpycy6|i{}2Ti7SA7!D; znOS-U^oK#Rx|EXrpjpzXmHp>qNvBqp@AL2n_YRrJEv8p%00000NkvXXu0mjf$i3cn literal 0 HcmV?d00001