Make use of Curios' SlotModifiersUpdatedEvent
This commit is contained in:
parent
3c61a03fd8
commit
9cfd1e2119
@ -34,6 +34,7 @@ import ru.dbotthepony.mc.otm.client.render.ShockwaveRenderer;
|
|||||||
import ru.dbotthepony.mc.otm.client.render.blockentity.BatteryBankRenderer;
|
import ru.dbotthepony.mc.otm.client.render.blockentity.BatteryBankRenderer;
|
||||||
import ru.dbotthepony.mc.otm.client.render.blockentity.MatterBatteryBankRenderer;
|
import ru.dbotthepony.mc.otm.client.render.blockentity.MatterBatteryBankRenderer;
|
||||||
import ru.dbotthepony.mc.otm.compat.adastra.AdAstraCompatKt;
|
import ru.dbotthepony.mc.otm.compat.adastra.AdAstraCompatKt;
|
||||||
|
import ru.dbotthepony.mc.otm.compat.curios.CuriosCompatKt;
|
||||||
import ru.dbotthepony.mc.otm.compat.mekanism.QIOKt;
|
import ru.dbotthepony.mc.otm.compat.mekanism.QIOKt;
|
||||||
import ru.dbotthepony.mc.otm.compat.mekanism.TooltipsKt;
|
import ru.dbotthepony.mc.otm.compat.mekanism.TooltipsKt;
|
||||||
import ru.dbotthepony.mc.otm.config.AndroidConfig;
|
import ru.dbotthepony.mc.otm.config.AndroidConfig;
|
||||||
@ -53,6 +54,7 @@ import ru.dbotthepony.mc.otm.network.*;
|
|||||||
import ru.dbotthepony.mc.otm.registry.*;
|
import ru.dbotthepony.mc.otm.registry.*;
|
||||||
import ru.dbotthepony.mc.otm.storage.*;
|
import ru.dbotthepony.mc.otm.storage.*;
|
||||||
import ru.dbotthepony.mc.otm.triggers.KillAsAndroidTrigger;
|
import ru.dbotthepony.mc.otm.triggers.KillAsAndroidTrigger;
|
||||||
|
import top.theillusivec4.curios.api.CuriosApi;
|
||||||
|
|
||||||
import static net.minecraftforge.common.MinecraftForge.EVENT_BUS;
|
import static net.minecraftforge.common.MinecraftForge.EVENT_BUS;
|
||||||
|
|
||||||
@ -199,6 +201,10 @@ public final class OverdriveThatMatters {
|
|||||||
EVENT_BUS.addGenericListener(BlockEntity.class, EventPriority.NORMAL, QIOKt::attachCapabilities);
|
EVENT_BUS.addGenericListener(BlockEntity.class, EventPriority.NORMAL, QIOKt::attachCapabilities);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ModList.get().isLoaded(CuriosApi.MODID)) {
|
||||||
|
EVENT_BUS.addListener(EventPriority.NORMAL, CuriosCompatKt::onCuriosSlotModifiersUpdated);
|
||||||
|
}
|
||||||
|
|
||||||
if (AdAstraCompatKt.isAdAstraLoaded()) {
|
if (AdAstraCompatKt.isAdAstraLoaded()) {
|
||||||
EVENT_BUS.addListener(EventPriority.NORMAL, AdAstraCompatKt::onDamageEvent);
|
EVENT_BUS.addListener(EventPriority.NORMAL, AdAstraCompatKt::onDamageEvent);
|
||||||
EVENT_BUS.addListener(EventPriority.NORMAL, AdAstraCompatKt::onMatteryTick);
|
EVENT_BUS.addListener(EventPriority.NORMAL, AdAstraCompatKt::onMatteryTick);
|
||||||
|
@ -230,6 +230,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
private var _exoPackMenu: ExoPackInventoryMenu? = null
|
private var _exoPackMenu: ExoPackInventoryMenu? = null
|
||||||
set(value) {
|
set(value) {
|
||||||
if (field == ply.containerMenu) { ply.closeContainer() }
|
if (field == ply.containerMenu) { ply.closeContainer() }
|
||||||
|
field?.removed(ply)
|
||||||
field = value
|
field = value
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,6 +246,10 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
return _exoPackMenu!!
|
return _exoPackMenu!!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun recreateExoPackMenu() {
|
||||||
|
_exoPackMenu = ExoPackInventoryMenu(this)
|
||||||
|
}
|
||||||
|
|
||||||
private var shouldSendIteration = false
|
private var shouldSendIteration = false
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1160,8 +1165,13 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun onPlayerChangeDimensionEvent(event: PlayerEvent.PlayerChangedDimensionEvent) {
|
fun onPlayerChangeDimensionEvent(event: PlayerEvent.PlayerChangedDimensionEvent) {
|
||||||
event.entity.getCapability(MatteryCapability.MATTERY_PLAYER)
|
event.entity.getCapability(MatteryCapability.MATTERY_PLAYER).ifPresentK {
|
||||||
.ifPresentK { it.invalidateNetworkState() }
|
it.invalidateNetworkState()
|
||||||
|
|
||||||
|
onceServer(20) {
|
||||||
|
it.recreateExoPackMenu()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onPlayerDeath(event: LivingDeathEvent) {
|
fun onPlayerDeath(event: LivingDeathEvent) {
|
||||||
@ -1215,6 +1225,12 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
it.deserializeNBT(original.serializeNBT())
|
it.deserializeNBT(original.serializeNBT())
|
||||||
it.invalidateNetworkState()
|
it.invalidateNetworkState()
|
||||||
event.original.invalidateCaps()
|
event.original.invalidateCaps()
|
||||||
|
|
||||||
|
if (SERVER_IS_LIVE) {
|
||||||
|
onceServer(20) {
|
||||||
|
it.recreateExoPackMenu()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const val SLEEP_TICKS_LIMIT = 80
|
const val SLEEP_TICKS_LIMIT = 80
|
||||||
|
@ -6,12 +6,14 @@ import net.minecraft.world.inventory.Slot
|
|||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraftforge.fml.ModList
|
import net.minecraftforge.fml.ModList
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.container.awareStream
|
import ru.dbotthepony.mc.otm.container.awareStream
|
||||||
import ru.dbotthepony.mc.otm.container.stream
|
import ru.dbotthepony.mc.otm.container.stream
|
||||||
import ru.dbotthepony.mc.otm.core.collect.AwareItemStack
|
import ru.dbotthepony.mc.otm.core.collect.AwareItemStack
|
||||||
import ru.dbotthepony.mc.otm.core.orNull
|
import ru.dbotthepony.mc.otm.core.orNull
|
||||||
import ru.dbotthepony.mc.otm.menu.PlayerSlot
|
import ru.dbotthepony.mc.otm.menu.PlayerSlot
|
||||||
import top.theillusivec4.curios.api.CuriosApi
|
import top.theillusivec4.curios.api.CuriosApi
|
||||||
|
import top.theillusivec4.curios.api.event.SlotModifiersUpdatedEvent
|
||||||
import top.theillusivec4.curios.common.inventory.CosmeticCurioSlot
|
import top.theillusivec4.curios.common.inventory.CosmeticCurioSlot
|
||||||
import top.theillusivec4.curios.common.inventory.CurioSlot
|
import top.theillusivec4.curios.common.inventory.CurioSlot
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -21,6 +23,11 @@ val isCuriosLoaded by lazy {
|
|||||||
ModList.get().isLoaded(CuriosApi.MODID)
|
ModList.get().isLoaded(CuriosApi.MODID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun onCuriosSlotModifiersUpdated(event: SlotModifiersUpdatedEvent) {
|
||||||
|
check(isCuriosLoaded) { "Curios is not loaded!" }
|
||||||
|
event.entity.matteryPlayer?.recreateExoPackMenu()
|
||||||
|
}
|
||||||
|
|
||||||
private fun Player.getCuriosSlotsImpl(): List<PlayerSlot<Slot, Slot>> {
|
private fun Player.getCuriosSlotsImpl(): List<PlayerSlot<Slot, Slot>> {
|
||||||
val handler = getCapability(MatteryCapability.CURIOS_INVENTORY).orNull() ?: return listOf()
|
val handler = getCapability(MatteryCapability.CURIOS_INVENTORY).orNull() ?: return listOf()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user