Drop exosuit inventory on death
This commit is contained in:
parent
7585da2a51
commit
23eb879105
@ -80,6 +80,17 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
|
||||
field = value
|
||||
}
|
||||
|
||||
fun dropExoSuitInventory() {
|
||||
val iterator = exoSuitContainer.iterator()
|
||||
|
||||
for (item in iterator) {
|
||||
if (!item.isEmpty) {
|
||||
ply.drop(item, true, false)
|
||||
iterator.remove()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var isExoSuitCraftingUpgraded by synchronizer.bool(setter = setter@{ value, access, _ ->
|
||||
if (value != access.read()) {
|
||||
access.write(value)
|
||||
@ -799,6 +810,10 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
|
||||
return
|
||||
}
|
||||
|
||||
if (mattery.hasExoSuit) {
|
||||
mattery.dropExoSuitInventory()
|
||||
}
|
||||
|
||||
if (!mattery.isAndroid) {
|
||||
return
|
||||
}
|
||||
|
@ -346,8 +346,30 @@ open class MatteryContainer(val watcher: Runnable, private val size: Int) : Cont
|
||||
Arrays.fill(trackedSlots, ItemStack.EMPTY)
|
||||
}
|
||||
|
||||
final override fun iterator(): Iterator<ItemStack> {
|
||||
return slots.iterator()
|
||||
final override fun iterator(): MutableIterator<ItemStack> {
|
||||
return object : MutableIterator<ItemStack> {
|
||||
private var index = 0
|
||||
|
||||
override fun hasNext(): Boolean {
|
||||
return index < size
|
||||
}
|
||||
|
||||
override fun next(): ItemStack {
|
||||
if (index >= size) {
|
||||
throw IllegalStateException("Already finished iterating")
|
||||
}
|
||||
|
||||
return slots[index++]
|
||||
}
|
||||
|
||||
override fun remove() {
|
||||
if (index == 0) {
|
||||
throw IllegalStateException("Never called next()")
|
||||
}
|
||||
|
||||
set(index - 1, ItemStack.EMPTY)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user