basic-components/src/main/java/universalelectricity/prefab/SlotSpecific.java
2022-10-16 16:08:02 +02:00

75 lines
2.2 KiB
Java

package universalelectricity.prefab;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class SlotSpecific extends Slot {
public ItemStack[] validItemStacks = new ItemStack[0];
public Class[] validClasses = new Class[0];
public boolean isInverted = false;
public boolean isMetadataSensitive = false;
public SlotSpecific(IInventory par2IInventory, int par3, int par4, int par5, ItemStack ... itemStacks) {
super(par2IInventory, par3, par4, par5);
this.setItemStacks(itemStacks);
}
public SlotSpecific(IInventory par2IInventory, int par3, int par4, int par5, Class ... validClasses) {
super(par2IInventory, par3, par4, par5);
this.setClasses(validClasses);
}
public SlotSpecific setMetadataSensitive() {
this.isMetadataSensitive = true;
return this;
}
public SlotSpecific setItemStacks(ItemStack ... validItemStacks) {
this.validItemStacks = validItemStacks;
return this;
}
public SlotSpecific setClasses(Class ... validClasses) {
this.validClasses = validClasses;
return this;
}
public SlotSpecific toggleInverted() {
this.isInverted = !this.isInverted;
return this;
}
public boolean isItemValid(ItemStack compareStack) {
boolean returnValue = false;
ItemStack[] arr$ = this.validItemStacks;
int len$ = arr$.length;
int i$;
for(i$ = 0; i$ < len$; ++i$) {
ItemStack clazz = arr$[i$];
if(compareStack.isItemEqual(clazz) || !this.isMetadataSensitive && compareStack.getItem() == clazz.getItem()) {
returnValue = true;
break;
}
}
if(!returnValue) {
Class[] var7 = this.validClasses;
len$ = var7.length;
for(i$ = 0; i$ < len$; ++i$) {
Class var8 = var7[i$];
if(var8.equals(compareStack.getItem().getClass()) || var8.isInstance(compareStack.getItem())) {
returnValue = true;
break;
}
}
}
return this.isInverted?!returnValue:returnValue;
}
}