extendedItemIterator for player
This commit is contained in:
parent
1ff1587951
commit
da3ae55d38
@ -1,8 +1,10 @@
|
|||||||
package ru.dbotthepony.mc.otm.capability
|
package ru.dbotthepony.mc.otm.capability
|
||||||
|
|
||||||
import net.minecraft.core.Direction
|
import net.minecraft.core.Direction
|
||||||
|
import net.minecraft.world.Container
|
||||||
import net.minecraft.world.entity.LivingEntity
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraftforge.common.capabilities.ForgeCapabilities
|
import net.minecraftforge.common.capabilities.ForgeCapabilities
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider
|
import net.minecraftforge.common.capabilities.ICapabilityProvider
|
||||||
import net.minecraftforge.common.util.LazyOptional
|
import net.minecraftforge.common.util.LazyOptional
|
||||||
@ -10,6 +12,7 @@ import net.minecraftforge.energy.IEnergyStorage
|
|||||||
import net.minecraftforge.fml.ModList
|
import net.minecraftforge.fml.ModList
|
||||||
import ru.dbotthepony.mc.otm.compat.mekanism.getMekanismEnergySided
|
import ru.dbotthepony.mc.otm.compat.mekanism.getMekanismEnergySided
|
||||||
import ru.dbotthepony.mc.otm.compat.mekanism.mekanismEnergy
|
import ru.dbotthepony.mc.otm.compat.mekanism.mekanismEnergy
|
||||||
|
import ru.dbotthepony.mc.otm.container.iterator
|
||||||
import ru.dbotthepony.mc.otm.core.ImpreciseFraction
|
import ru.dbotthepony.mc.otm.core.ImpreciseFraction
|
||||||
import ru.dbotthepony.mc.otm.core.orNull
|
import ru.dbotthepony.mc.otm.core.orNull
|
||||||
|
|
||||||
@ -118,3 +121,58 @@ fun ICapabilityProvider.getMatteryEnergySided(side: Direction? = null): LazyOpti
|
|||||||
|
|
||||||
return getCapability(MatteryCapability.ENERGY, side)
|
return getCapability(MatteryCapability.ENERGY, side)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Player.extendedItemIterator(): MutableIterator<ItemStack> {
|
||||||
|
return object : MutableIterator<ItemStack> {
|
||||||
|
private val regular = this@extendedItemIterator.inventory.iterator()
|
||||||
|
private val mattery: MutableIterator<ItemStack>
|
||||||
|
private var isSecond = false
|
||||||
|
|
||||||
|
init {
|
||||||
|
val get = this@extendedItemIterator.matteryPlayer
|
||||||
|
|
||||||
|
if (get != null && get.hasExoSuit) {
|
||||||
|
mattery = get.exoSuitContainer.iterator()
|
||||||
|
} else {
|
||||||
|
mattery = object : MutableIterator<ItemStack> {
|
||||||
|
override fun hasNext(): Boolean {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun next(): ItemStack {
|
||||||
|
throw UnsupportedOperationException()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun remove() {
|
||||||
|
throw UnsupportedOperationException()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hasNext(): Boolean {
|
||||||
|
return regular.hasNext() || mattery.hasNext()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun next(): ItemStack {
|
||||||
|
if (isSecond) {
|
||||||
|
return mattery.next()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!regular.hasNext()) {
|
||||||
|
isSecond = true
|
||||||
|
return mattery.next()
|
||||||
|
}
|
||||||
|
|
||||||
|
return regular.next()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun remove() {
|
||||||
|
if (isSecond) {
|
||||||
|
mattery.remove()
|
||||||
|
} else {
|
||||||
|
regular.remove()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user