What am I doing wrong? (kotlin)
MCItems is net.minecraft.item.Items
Items is my own object containing all items that my mod has
Item.provider is "ItemStack { this }" where this is the Item
class CompressorContainer(id: Int, inv: PlayerInventory, iwpc: IWorldPosCallable) : WorkbenchContainer(id, inv, iwpc) {
val csl: List<Slot> get() = this.inventorySlots
override fun canInteractWith(playerIn: PlayerEntity): Boolean {
return true
}
fun setResult(stack: ItemStack) {
this.inventorySlots.first { it.slotIndex == this.outputSlot }.putStack(stack)
}
override fun onCraftMatrixChanged(inventoryIn: IInventory) {
this.inventory
val cs = this.inventorySlots.filter {
it.slotNumber in 0..9 && it.stack !in this.inventorySlots.filter { af -> af.slotNumber in 0..9 }
.map(Slot::getStack)
}
if (cs.sumOf { it.stack.count } == 160 && cs.all {
it.stack.item in arrayOf(
MCItems.DIAMOND,
MCItems.GOLD_INGOT
)
}) {
val i = when (cs.first().stack.item.registryName?.path ?: "air") {
"gold_ingot" -> Items.ENCH_GOLD
"diamond" -> Items.ENCH_DIAMOND
else -> null
}
if (i != null) setResult(i.provider)
log.debug("WE DID IT")
}
dLog()
}
fun dLog() {
log.debug(csl.size)
log.debug(csl.filter { it.slotNumber in 0..9 }
.joinToString(", ") { "${it.slotIndex} - ${it.stack.item.registryName?.toString()} with ${it.stack.tag}" })
}
}