@@ -22,6 +22,7 @@ import gg.essential.elementa.utils.withAlpha
2222import gg.essential.universal.UGraphics
2323import gg.essential.universal.UMatrixStack
2424import gg.skytils.skytilsmod.Skytils.Companion.mc
25+ import gg.skytils.skytilsmod.events.impl.PacketEvent
2526import gg.skytils.skytilsmod.features.impl.dungeons.DungeonFeatures
2627import gg.skytils.skytilsmod.features.impl.dungeons.DungeonTimer
2728import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.core.CataclysmicMapConfig
@@ -35,9 +36,10 @@ import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.MapU
3536import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.MimicDetector
3637import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.utils.MapUtils
3738import gg.skytils.skytilsmod.utils.RenderUtil
38- import gg.skytils.skytilsmod.utils.TabListUtils
3939import gg.skytils.skytilsmod.utils.Utils
40+ import net.minecraft.network.play.server.S34PacketMaps
4041import net.minecraft.util.AxisAlignedBB
42+ import net.minecraft.world.storage.MapData
4143import net.minecraftforge.client.event.RenderWorldLastEvent
4244import net.minecraftforge.common.MinecraftForge
4345import net.minecraftforge.event.world.WorldEvent
@@ -65,7 +67,7 @@ object CataclysmicMap {
6567
6668 MapUtils .calibrated = MapUtils .calibrateMap()
6769 } else if (DungeonTimer .scoreShownAt == - 1L && DungeonTimer .bossEntryTime == - 1L ) {
68- DungeonInfo .dungeonMap?.let {
70+ ( DungeonInfo .dungeonMap ? : DungeonInfo .guessMapData) ?.let {
6971 MapUpdater .updateRooms(it)
7072 MapUpdater .updatePlayers(it)
7173 }
@@ -116,6 +118,19 @@ object CataclysmicMap {
116118 }
117119 }
118120
121+ @SubscribeEvent
122+ fun onPacket (event : PacketEvent .ReceiveEvent ) {
123+ if (event.packet is S34PacketMaps && Utils .inDungeons && DungeonInfo .dungeonMap == null && mc.theWorld != null ) {
124+ val id = event.packet.mapId
125+ if (id and 1000 == 0 ) {
126+ val guess = mc.theWorld.mapStorage.loadData(MapData ::class .java, " map_${id} " ) as MapData ? ? : return
127+ if (guess.mapDecorations.any { it.value.func_176110_a() == 1 .toByte() }) {
128+ DungeonInfo .guessMapData = guess
129+ }
130+ }
131+ }
132+ }
133+
119134 init {
120135 CataclysmicMapElement
121136
0 commit comments