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
|
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, _ ->
|
var isExoSuitCraftingUpgraded by synchronizer.bool(setter = setter@{ value, access, _ ->
|
||||||
if (value != access.read()) {
|
if (value != access.read()) {
|
||||||
access.write(value)
|
access.write(value)
|
||||||
@ -799,6 +810,10 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mattery.hasExoSuit) {
|
||||||
|
mattery.dropExoSuitInventory()
|
||||||
|
}
|
||||||
|
|
||||||
if (!mattery.isAndroid) {
|
if (!mattery.isAndroid) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -346,8 +346,30 @@ open class MatteryContainer(val watcher: Runnable, private val size: Int) : Cont
|
|||||||
Arrays.fill(trackedSlots, ItemStack.EMPTY)
|
Arrays.fill(trackedSlots, ItemStack.EMPTY)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun iterator(): Iterator<ItemStack> {
|
final override fun iterator(): MutableIterator<ItemStack> {
|
||||||
return slots.iterator()
|
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