cosmetic armor streams

This commit is contained in:
DBotThePony 2022-09-25 21:14:24 +07:00
parent 3d8035c977
commit 0f173922a5
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 57 additions and 2 deletions

View File

@ -9,6 +9,9 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider
import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.common.util.LazyOptional
import net.minecraftforge.energy.IEnergyStorage import net.minecraftforge.energy.IEnergyStorage
import net.minecraftforge.fml.ModList import net.minecraftforge.fml.ModList
import ru.dbotthepony.mc.otm.compat.cos.cosmeticArmorAwareStream
import ru.dbotthepony.mc.otm.compat.cos.cosmeticArmorStream
import ru.dbotthepony.mc.otm.compat.cos.isCosmeticArmorLoaded
import ru.dbotthepony.mc.otm.compat.curios.curiosAwareStream import ru.dbotthepony.mc.otm.compat.curios.curiosAwareStream
import ru.dbotthepony.mc.otm.compat.curios.curiosStream import ru.dbotthepony.mc.otm.compat.curios.curiosStream
import ru.dbotthepony.mc.otm.compat.curios.isCuriosLoaded import ru.dbotthepony.mc.otm.compat.curios.isCuriosLoaded
@ -173,6 +176,10 @@ fun Player.itemsStream(includeCosmetics: Boolean = true): Stream<out ItemStack>
streams.add(curiosStream(includeCosmetics)) streams.add(curiosStream(includeCosmetics))
} }
if (includeCosmetics && isCosmeticArmorLoaded) {
streams.add(cosmeticArmorStream())
}
return Streams.concat(*streams.toTypedArray()) return Streams.concat(*streams.toTypedArray())
} }
@ -202,7 +209,7 @@ fun Player.allItemsStream(includeCosmetics: Boolean = true): Stream<out ItemStac
* *
* Contains all items that player might carry * Contains all items that player might carry
*/ */
fun Player.awareItemsStream(includeCosmetics: Boolean = true): Stream<out AwareItemStack> { fun Player.awareItemsStream(includeCosmetics: Boolean = false): Stream<out AwareItemStack> {
val streams = LinkedList<Stream<out AwareItemStack>>() val streams = LinkedList<Stream<out AwareItemStack>>()
streams.add(inventory.awareStream()) streams.add(inventory.awareStream())
@ -216,6 +223,10 @@ fun Player.awareItemsStream(includeCosmetics: Boolean = true): Stream<out AwareI
streams.add(curiosAwareStream(includeCosmetics)) streams.add(curiosAwareStream(includeCosmetics))
} }
if (includeCosmetics && isCosmeticArmorLoaded) {
streams.add(cosmeticArmorAwareStream())
}
return Streams.concat(*streams.toTypedArray()) return Streams.concat(*streams.toTypedArray())
} }
@ -224,7 +235,7 @@ fun Player.awareItemsStream(includeCosmetics: Boolean = true): Stream<out AwareI
* *
* Contains all items that player might see/access ([itemsStream] + open container's items) * Contains all items that player might see/access ([itemsStream] + open container's items)
*/ */
fun Player.awareAllItemsStream(includeCosmetics: Boolean = true): Stream<out AwareItemStack> { fun Player.awareAllItemsStream(includeCosmetics: Boolean = false): Stream<out AwareItemStack> {
if (containerMenu == inventoryMenu || containerMenu == matteryPlayer?.exoSuitMenu) { if (containerMenu == inventoryMenu || containerMenu == matteryPlayer?.exoSuitMenu) {
return awareItemsStream(includeCosmetics) return awareItemsStream(includeCosmetics)
} }

View File

@ -25,7 +25,11 @@ import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
import ru.dbotthepony.mc.otm.client.screen.panels.RectangleButtonPanel import ru.dbotthepony.mc.otm.client.screen.panels.RectangleButtonPanel
import ru.dbotthepony.mc.otm.compat.cos.CosmeticToggleButton.Companion.BUTTON_ACTIVE import ru.dbotthepony.mc.otm.compat.cos.CosmeticToggleButton.Companion.BUTTON_ACTIVE
import ru.dbotthepony.mc.otm.compat.cos.CosmeticToggleButton.Companion.BUTTON_INACTIVE import ru.dbotthepony.mc.otm.compat.cos.CosmeticToggleButton.Companion.BUTTON_INACTIVE
import ru.dbotthepony.mc.otm.container.awareStream
import ru.dbotthepony.mc.otm.container.stream
import ru.dbotthepony.mc.otm.core.AwareItemStack
import ru.dbotthepony.mc.otm.menu.MatterySlot import ru.dbotthepony.mc.otm.menu.MatterySlot
import java.util.stream.Stream
val isCosmeticArmorLoaded by lazy { val isCosmeticArmorLoaded by lazy {
ModList.get().isLoaded("cosmeticarmorreworked") ModList.get().isLoaded("cosmeticarmorreworked")
@ -65,6 +69,46 @@ private class CosmeticSlot(container: Container, private val slot: EquipmentSlot
} }
} }
fun Player.cosmeticArmorStream(): Stream<out ItemStack> {
if (!isCosmeticArmorLoaded) {
return Stream.empty()
}
return cosmeticArmorStreamImpl()
}
private fun Player.cosmeticArmorStreamImpl(): Stream<out ItemStack> {
val manager = ModObjects.invMan ?: return Stream.empty()
val container = if (this !is ServerPlayer) {
manager.getCosArmorInventoryClient(uuid)
} else {
manager.getCosArmorInventory(uuid)
}
return (container as Container).stream()
}
fun Player.cosmeticArmorAwareStream(): Stream<out AwareItemStack> {
if (!isCosmeticArmorLoaded) {
return Stream.empty()
}
return cosmeticArmorAwareStreamImpl()
}
private fun Player.cosmeticArmorAwareStreamImpl(): Stream<out AwareItemStack> {
val manager = ModObjects.invMan ?: return Stream.empty()
val container = if (this !is ServerPlayer) {
manager.getCosArmorInventoryClient(uuid)
} else {
manager.getCosArmorInventory(uuid)
}
return (container as Container).awareStream()
}
private val Player.cosmeticArmorSlotsImpl: Map<EquipmentSlot, Slot>? get() { private val Player.cosmeticArmorSlotsImpl: Map<EquipmentSlot, Slot>? get() {
val manager = ModObjects.invMan ?: return null val manager = ModObjects.invMan ?: return null