fix slot type checking

This commit is contained in:
Bixilon 2022-02-25 21:37:15 +01:00
parent e9ab22e20a
commit 5028064bbc
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
7 changed files with 14 additions and 10 deletions

View File

@ -19,6 +19,5 @@ import de.bixilon.minosoft.data.registries.other.containers.Container
object ReadOnlySlotType : SlotType {
override fun canRemove(container: Container, slot: Int, stack: ItemStack): Boolean = false
override fun canModify(container: Container, slot: Int, stack: ItemStack): Boolean = false
override fun canPut(container: Container, slot: Int, stack: ItemStack): Boolean = false
}

View File

@ -19,6 +19,5 @@ import de.bixilon.minosoft.data.registries.other.containers.Container
object RemoveOnlySlotType : SlotType {
override fun canRemove(container: Container, slot: Int, stack: ItemStack): Boolean = true
override fun canModify(container: Container, slot: Int, stack: ItemStack): Boolean = true
override fun canPut(container: Container, slot: Int, stack: ItemStack): Boolean = true
override fun canPut(container: Container, slot: Int, stack: ItemStack): Boolean = false
}

View File

@ -18,7 +18,10 @@ import de.bixilon.minosoft.data.registries.other.containers.Container
interface SlotType {
fun canRemove(container: Container, slot: Int, stack: ItemStack) = true
fun canModify(container: Container, slot: Int, stack: ItemStack) = true
fun canRemove(container: Container, slot: Int, stack: ItemStack): Boolean {
// ToDo: Check course of binding
return true
}
fun canPut(container: Container, slot: Int, stack: ItemStack) = true
}

View File

@ -25,6 +25,6 @@ object ChestSlotType : EquipmentSlotType {
if (item !is ArmorItem) {
return false
}
return item.equipmentSlot == InventorySlots.EquipmentSlots.CHEST
return item.equipmentSlot == InventorySlots.EquipmentSlots.CHEST && super.canPut(container, slot, stack)
}
}

View File

@ -25,6 +25,6 @@ object FeetSlotType : EquipmentSlotType {
if (item !is ArmorItem) {
return false
}
return item.equipmentSlot == InventorySlots.EquipmentSlots.FEET
return item.equipmentSlot == InventorySlots.EquipmentSlots.FEET && super.canPut(container, slot, stack)
}
}

View File

@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.registries.other.containers.slots.equipment
import de.bixilon.minosoft.data.inventory.InventorySlots
import de.bixilon.minosoft.data.inventory.stack.ItemStack
import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks
import de.bixilon.minosoft.data.registries.items.armor.ArmorItem
import de.bixilon.minosoft.data.registries.other.containers.Container
@ -22,10 +23,12 @@ object HeadSlotType : EquipmentSlotType {
override fun canPut(container: Container, slot: Int, stack: ItemStack): Boolean {
val item = stack.item.item
// ToDo: Carved pumpkin
if (item.resourceLocation == MinecraftBlocks.CARVED_PUMPKIN) {
return super.canPut(container, slot, stack)
}
if (item !is ArmorItem) {
return false
}
return item.equipmentSlot == InventorySlots.EquipmentSlots.HEAD
return item.equipmentSlot == InventorySlots.EquipmentSlots.HEAD && super.canPut(container, slot, stack)
}
}

View File

@ -25,6 +25,6 @@ object LegsSlotType : EquipmentSlotType {
if (item !is ArmorItem) {
return false
}
return item.equipmentSlot == InventorySlots.EquipmentSlots.LEGS
return item.equipmentSlot == InventorySlots.EquipmentSlots.LEGS && super.canPut(container, slot, stack)
}
}