diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt index c11d81a68..69900a176 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt @@ -1000,8 +1000,9 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial val exoPackContainer = exoPackContainer if (!stack.isStackable) { + // двигаем в отфильтрованные слоты for (i in items.indices) { - if (items[i].isEmpty && (regularSlotFilters[i].value === null || regularSlotFilters[i].value === stack.item)) { + if (items[i].isEmpty && regularSlotFilters[i].value === stack.item) { items[i] = stack.copy() items[i].popTime = 5 stack.count = 0 @@ -1010,7 +1011,26 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial } for (i in 0 until exoPackContainer.containerSize) { - if (exoPackContainer[i].isEmpty && exoPackContainer.testSlotFilter(i, stack)) { + if (exoPackContainer[i].isEmpty && exoPackContainer.hasSlotFilter(i) && exoPackContainer.testSlotFilter(i, stack)) { + exoPackContainer[i] = stack.copy() + exoPackContainer[i].popTime = 5 + stack.count = 0 + return true + } + } + + // двигаем в обычные слоты + for (i in items.indices) { + if (items[i].isEmpty && regularSlotFilters[i].value === null) { + items[i] = stack.copy() + items[i].popTime = 5 + stack.count = 0 + return true + } + } + + for (i in 0 until exoPackContainer.containerSize) { + if (exoPackContainer[i].isEmpty && !exoPackContainer.hasSlotFilter(i)) { exoPackContainer[i] = stack.copy() exoPackContainer[i].popTime = 5 stack.count = 0