mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-26 08:48:34 +01:00
Added item filters
This commit is contained in:
parent
0b025fe249
commit
9a9ec02eef
38 changed files with 493 additions and 106 deletions
|
@ -168,7 +168,7 @@ public class CreativeTab extends CreativeTabs{
|
||||||
this.list.add(UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, InitFluids.fluidOil));
|
this.list.add(UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, InitFluids.fluidOil));
|
||||||
|
|
||||||
this.add(InitItems.itemPhantomConnector);
|
this.add(InitItems.itemPhantomConnector);
|
||||||
|
this.add(InitItems.itemFilter);
|
||||||
this.add(InitItems.itemWingsOfTheBats);
|
this.add(InitItems.itemWingsOfTheBats);
|
||||||
|
|
||||||
this.add(InitItems.itemCoffeeSeed);
|
this.add(InitItems.itemCoffeeSeed);
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ContainerBreaker extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -76,7 +76,7 @@ public class ContainerCanolaPress extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -75,7 +75,7 @@ public class ContainerCoalGenerator extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -103,7 +103,7 @@ public class ContainerCoffeeMachine extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ContainerCrafter extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(savedStack.stackSize == 0){
|
if(savedStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ContainerDirectionalBreaker extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class ContainerDrill extends Container{
|
||||||
this.inventory = inventory;
|
this.inventory = inventory;
|
||||||
|
|
||||||
for(int i = 0; i < SLOT_AMOUNT; i++){
|
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
|
@Override
|
||||||
public boolean isItemValid(ItemStack stack){
|
public boolean isItemValid(ItemStack stack){
|
||||||
return stack.getItem() instanceof ItemDrillUpgrade || stack.getItem() instanceof IEnergyContainerItem;
|
return stack.getItem() instanceof ItemDrillUpgrade || stack.getItem() instanceof IEnergyContainerItem;
|
||||||
|
@ -60,10 +60,7 @@ public class ContainerDrill extends Container{
|
||||||
|
|
||||||
ItemStack stack = inventory.getCurrentItem();
|
ItemStack stack = inventory.getCurrentItem();
|
||||||
if(stack != null && stack.getItem() instanceof ItemDrill){
|
if(stack != null && stack.getItem() instanceof ItemDrill){
|
||||||
ItemStack[] slots = ((ItemDrill)stack.getItem()).getSlotsFromNBT(inventory.getCurrentItem());
|
ItemDrill.loadSlotsFromNBT(this.drillInventory.slots, inventory.getCurrentItem());
|
||||||
if(slots != null && slots.length > 0){
|
|
||||||
this.drillInventory.slots = slots;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,7 +100,7 @@ public class ContainerDrill extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -134,7 +131,7 @@ public class ContainerDrill extends Container{
|
||||||
public void onContainerClosed(EntityPlayer player){
|
public void onContainerClosed(EntityPlayer player){
|
||||||
ItemStack stack = this.inventory.getCurrentItem();
|
ItemStack stack = this.inventory.getCurrentItem();
|
||||||
if(stack != null && stack.getItem() instanceof ItemDrill){
|
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);
|
super.onContainerClosed(player);
|
||||||
}
|
}
|
||||||
|
@ -148,7 +145,6 @@ public class ContainerDrill extends Container{
|
||||||
|
|
||||||
public ItemStack[] slots = new ItemStack[SLOT_AMOUNT];
|
public ItemStack[] slots = new ItemStack[SLOT_AMOUNT];
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName(){
|
public String getName(){
|
||||||
return "drill";
|
return "drill";
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ContainerDropper extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -111,7 +111,7 @@ public class ContainerEnergizer extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -110,7 +110,7 @@ public class ContainerEnervator extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class ContainerFeeder extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -64,7 +64,7 @@ public class ContainerFermentingBarrel extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -71,7 +71,7 @@ public class ContainerFluidCollector extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -88,7 +88,7 @@ public class ContainerFurnaceDouble extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -75,7 +75,7 @@ public class ContainerGiantChest extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -99,7 +99,7 @@ public class ContainerGrinder extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class ContainerInputter extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ContainerLaserRelayItemWhitelist extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ContainerMiner extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class ContainerOilGenerator extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ContainerPhantomPlacer extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -81,7 +81,7 @@ public class ContainerRangedCollector extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -76,7 +76,7 @@ public class ContainerRepairer extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class ContainerXPSolidifier extends Container{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newStack.stackSize == 0){
|
if(newStack.stackSize <= 0){
|
||||||
theSlot.putStack(null);
|
theSlot.putStack(null);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -74,6 +74,8 @@ public class GuiHandler implements IGuiHandler{
|
||||||
return new ContainerCoffeeMachine(entityPlayer.inventory, tile);
|
return new ContainerCoffeeMachine(entityPlayer.inventory, tile);
|
||||||
case DRILL:
|
case DRILL:
|
||||||
return new ContainerDrill(entityPlayer.inventory);
|
return new ContainerDrill(entityPlayer.inventory);
|
||||||
|
case FILTER:
|
||||||
|
return new ContainerFilter(entityPlayer.inventory);
|
||||||
case ENERGIZER:
|
case ENERGIZER:
|
||||||
return new ContainerEnergizer(entityPlayer, tile);
|
return new ContainerEnergizer(entityPlayer, tile);
|
||||||
case ENERVATOR:
|
case ENERVATOR:
|
||||||
|
@ -140,6 +142,8 @@ public class GuiHandler implements IGuiHandler{
|
||||||
return new GuiCoffeeMachine(entityPlayer.inventory, tile, x, y, z, world);
|
return new GuiCoffeeMachine(entityPlayer.inventory, tile, x, y, z, world);
|
||||||
case DRILL:
|
case DRILL:
|
||||||
return new GuiDrill(entityPlayer.inventory);
|
return new GuiDrill(entityPlayer.inventory);
|
||||||
|
case FILTER:
|
||||||
|
return new GuiFilter(entityPlayer.inventory);
|
||||||
case ENERGIZER:
|
case ENERGIZER:
|
||||||
return new GuiEnergizer(entityPlayer, tile);
|
return new GuiEnergizer(entityPlayer, tile);
|
||||||
case ENERVATOR:
|
case ENERVATOR:
|
||||||
|
@ -194,7 +198,8 @@ public class GuiHandler implements IGuiHandler{
|
||||||
RANGED_COLLECTOR,
|
RANGED_COLLECTOR,
|
||||||
MINER,
|
MINER,
|
||||||
BOOK_STAND,
|
BOOK_STAND,
|
||||||
LASER_RELAY_ITEM_WHITELIST;
|
LASER_RELAY_ITEM_WHITELIST,
|
||||||
|
FILTER(false);
|
||||||
|
|
||||||
public final boolean checkTileEntity;
|
public final boolean checkTileEntity;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -208,12 +208,14 @@ public class InitItems{
|
||||||
public static Item itemPaxelCrystalWhite;
|
public static Item itemPaxelCrystalWhite;
|
||||||
|
|
||||||
public static Item itemWaterBowl;
|
public static Item itemWaterBowl;
|
||||||
|
public static Item itemFilter;
|
||||||
|
|
||||||
public static Item itemRarmorModuleReconstructor;
|
public static Item itemRarmorModuleReconstructor;
|
||||||
|
|
||||||
public static void init(){
|
public static void init(){
|
||||||
ModUtil.LOGGER.info("Initializing Items...");
|
ModUtil.LOGGER.info("Initializing Items...");
|
||||||
|
|
||||||
|
itemFilter = new ItemFilter("itemFilter");
|
||||||
itemWaterBowl = new ItemWaterBowl("itemWaterBowl");
|
itemWaterBowl = new ItemWaterBowl("itemWaterBowl");
|
||||||
itemSpawnerChanger = new ItemSpawnerChanger("itemSpawnerChanger");
|
itemSpawnerChanger = new ItemSpawnerChanger("itemSpawnerChanger");
|
||||||
itemMisc = new ItemMisc("itemMisc");
|
itemMisc = new ItemMisc("itemMisc");
|
||||||
|
|
|
@ -126,7 +126,8 @@ public class ItemDrill extends ItemEnergy{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack[] slots = this.getSlotsFromNBT(stack);
|
ItemStack[] slots = new ItemStack[ContainerDrill.SLOT_AMOUNT];
|
||||||
|
loadSlotsFromNBT(slots, stack);
|
||||||
if(slots != null && slots.length > 0){
|
if(slots != null && slots.length > 0){
|
||||||
for(ItemStack slotStack : slots){
|
for(ItemStack slotStack : slots){
|
||||||
if(slotStack != null && slotStack.getItem() instanceof ItemDrillUpgrade){
|
if(slotStack != null && slotStack.getItem() instanceof ItemDrillUpgrade){
|
||||||
|
@ -143,18 +144,12 @@ public class ItemDrill extends ItemEnergy{
|
||||||
* Gets all of the Slots from NBT
|
* Gets all of the Slots from NBT
|
||||||
*
|
*
|
||||||
* @param stack The Drill
|
* @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();
|
NBTTagCompound compound = stack.getTagCompound();
|
||||||
if(compound == null){
|
if(compound != null){
|
||||||
return 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
|
//Checks for Energy Containers in the Upgrade Slots and charges the Drill from them
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5){
|
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){
|
if(slots != null && slots.length > 0){
|
||||||
for(ItemStack slotStack : slots){
|
for(ItemStack slotStack : slots){
|
||||||
if(slotStack != null && slotStack.getItem() instanceof IEnergyContainerItem){
|
if(slotStack != null && slotStack.getItem() instanceof IEnergyContainerItem){
|
||||||
|
@ -395,7 +391,7 @@ public class ItemDrill extends ItemEnergy{
|
||||||
* @param slots The Slots
|
* @param slots The Slots
|
||||||
* @param stack The Drill
|
* @param stack The Drill
|
||||||
*/
|
*/
|
||||||
public void writeSlotsToNBT(ItemStack[] slots, ItemStack stack){
|
public static void writeSlotsToNBT(ItemStack[] slots, ItemStack stack){
|
||||||
NBTTagCompound compound = stack.getTagCompound();
|
NBTTagCompound compound = stack.getTagCompound();
|
||||||
if(compound == null){
|
if(compound == null){
|
||||||
compound = new NBTTagCompound();
|
compound = new NBTTagCompound();
|
||||||
|
|
|
@ -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<ItemStack> 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<ItemStack>(EnumActionResult.PASS, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,7 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
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.IButtonReactor;
|
||||||
import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor;
|
import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
|
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
|
* @return If the Item is filtered correctly
|
||||||
*/
|
*/
|
||||||
private boolean checkBothFilters(ItemStack stack, boolean output){
|
private boolean checkBothFilters(ItemStack stack, boolean output){
|
||||||
return this.checkFilter(stack, !output, output ? this.isPutWhitelist : this.isPullWhitelist);
|
int slotStart = output ? PUT_FILTER_START : PULL_FILTER_START;
|
||||||
}
|
return TileEntityLaserRelayItemWhitelist.checkFilter(stack, output ? this.isPutWhitelist : this.isPullWhitelist, this.slots, slotStart, slotStart+12);
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -10,8 +10,10 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
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.network.gui.IButtonReactor;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -20,7 +22,6 @@ import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.TextComponentTranslation;
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{
|
public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{
|
||||||
|
@ -164,19 +165,8 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isWhitelisted(ItemStack stack, boolean output){
|
public boolean isWhitelisted(ItemStack stack, boolean output){
|
||||||
return this.checkFilter(stack, !output, output ? this.isRightWhitelist : this.isLeftWhitelist);
|
int slotStart = output ? 12 : 0;
|
||||||
}
|
return checkFilter(stack, output ? this.isRightWhitelist : this.isLeftWhitelist, this.slots, slotStart, slotStart+12);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -189,6 +179,30 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
|
||||||
compound.setBoolean("RightWhitelist", this.isRightWhitelist);
|
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
|
@Override
|
||||||
public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){
|
public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){
|
||||||
super.readSyncableNBT(compound, isForSync);
|
super.readSyncableNBT(compound, isForSync);
|
||||||
|
@ -219,20 +233,52 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
|
||||||
int slotStart = output ? 12 : 0;
|
int slotStart = output ? 12 : 0;
|
||||||
int slotStop = slotStart+12;
|
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<IItemHandler> handlers = this.getAllHandlersAround();
|
List<IItemHandler> handlers = this.getAllHandlersAround();
|
||||||
for(IItemHandler handler : handlers){
|
for(IItemHandler handler : handlers){
|
||||||
for(int i = 0; i < handler.getSlots(); i++){
|
for(int i = 0; i < handler.getSlots(); i++){
|
||||||
ItemStack stack = handler.getStackInSlot(i);
|
ItemStack stack = handler.getStackInSlot(i);
|
||||||
if(stack != null){
|
if(stack != null){
|
||||||
if(!ItemUtil.contains(Arrays.copyOfRange(this.slots, slotStart, slotStop), stack, false)){
|
ItemStack copy = stack.copy();
|
||||||
for(int j = slotStart; j < slotStop; j++){
|
copy.stackSize = 1;
|
||||||
if(this.slots[j] == null || this.slots[j].stackSize <= 0){
|
|
||||||
ItemStack whitelistStack = stack.copy();
|
for(int k = slotStart; k < slotStop; k++){
|
||||||
whitelistStack.stackSize = 1;
|
if(this.slots[k] != null){
|
||||||
this.slots[j] = whitelistStack;
|
if(this.slots[k].getItem() instanceof ItemFilter){
|
||||||
break;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class TileEntityRangedCollector extends TileEntityInventoryBase implement
|
||||||
for(EntityItem item : items){
|
for(EntityItem item : items){
|
||||||
if(!item.isDead && item.getEntityItem() != null){
|
if(!item.isDead && item.getEntityItem() != null){
|
||||||
ItemStack toAdd = item.getEntityItem().copy();
|
ItemStack toAdd = item.getEntityItem().copy();
|
||||||
if(this.checkFilter(toAdd)){
|
if(TileEntityLaserRelayItemWhitelist.checkFilter(toAdd, this.isWhitelist, this.slots, WHITELIST_START, WHITELIST_START+12)){
|
||||||
ArrayList<ItemStack> checkList = new ArrayList<ItemStack>();
|
ArrayList<ItemStack> checkList = new ArrayList<ItemStack>();
|
||||||
checkList.add(toAdd);
|
checkList.add(toAdd);
|
||||||
if(WorldUtil.addToInventory(this, 0, WHITELIST_START, checkList, EnumFacing.UP, false, true)){
|
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
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack stack){
|
public boolean isItemValidForSlot(int i, ItemStack stack){
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -490,6 +490,7 @@ item.actuallyadditions.itemSpawnerChanger.name=Spawner Changer
|
||||||
item.actuallyadditions.itemMiscSpawnerShard.name=Spawner Shards
|
item.actuallyadditions.itemMiscSpawnerShard.name=Spawner Shards
|
||||||
item.actuallyadditions.itemMinecartFireworkBox.name=Firework Box Cart
|
item.actuallyadditions.itemMinecartFireworkBox.name=Firework Box Cart
|
||||||
item.actuallyadditions.itemWaterBowl.name=Bowl of Water
|
item.actuallyadditions.itemWaterBowl.name=Bowl of Water
|
||||||
|
item.actuallyadditions.itemFilter.name=Item Filter
|
||||||
|
|
||||||
#Tooltips
|
#Tooltips
|
||||||
tooltip.actuallyadditions.onSuffix.desc=On
|
tooltip.actuallyadditions.onSuffix.desc=On
|
||||||
|
@ -542,10 +543,10 @@ info.actuallyadditions.gui.coffee=Coffee
|
||||||
info.actuallyadditions.gui.ok=Ok
|
info.actuallyadditions.gui.ok=Ok
|
||||||
info.actuallyadditions.gui.the=the
|
info.actuallyadditions.gui.the=the
|
||||||
info.actuallyadditions.gui.smart=Smart Whitelist
|
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 <p> at.
|
info.actuallyadditions.inputter.info.1=This is the first Slot in the connected Inventory to <p> at.
|
||||||
info.actuallyadditions.inputter.info.2=This is the slot after the last Slot in the connected Inventory to <p> at. What that means: If you, for example, write 2 in the field to the left and 5 in this one, it will <p> at Slot 2, 3, and 4.
|
info.actuallyadditions.inputter.info.2=This is the slot after the last Slot in the connected Inventory to <p> at. What that means: If you, for example, write 2 in the field to the left and 5 in this one, it will <p> 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.noLens=No Lens
|
||||||
info.actuallyadditions.booklet.manualName.1=Actually Additions
|
info.actuallyadditions.booklet.manualName.1=Actually Additions
|
||||||
info.actuallyadditions.booklet.manualName.2=Manual
|
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.rangedCollector.name=Ranged Collector
|
||||||
container.actuallyadditions.miner.name=Vertical Digger
|
container.actuallyadditions.miner.name=Vertical Digger
|
||||||
container.actuallyadditions.laserRelayItemWhitelist.name=Laser Relay
|
container.actuallyadditions.laserRelayItemWhitelist.name=Laser Relay
|
||||||
|
container.actuallyadditions.filter.name=Item Filter
|
||||||
|
|
||||||
#Update Information
|
#Update Information
|
||||||
info.actuallyadditions.update.generic=[{"text":"There is an Update for "},{"text":"Actually Additions ","color":"dark_green"},{"text":"available!","color":"none"}]
|
info.actuallyadditions.update.generic=[{"text":"There is an Update for "},{"text":"Actually Additions ","color":"dark_green"},{"text":"available!","color":"none"}]
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "actuallyadditions:item/standardItem",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "actuallyadditions:items/itemFilter"
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 509 B |
Loading…
Reference in a new issue