Skip to content

Commit db235ba

Browse files
fix: invalid condition prevents CataclysmicMap from loading
1 parent 11adc07 commit db235ba

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/main/kotlin/gg/skytils/skytilsmod/features/impl/dungeons/cataclysmicmap/CataclysmicMap.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import gg.essential.elementa.utils.withAlpha
2222
import gg.essential.universal.UGraphics
2323
import gg.essential.universal.UMatrixStack
2424
import gg.skytils.skytilsmod.Skytils.Companion.mc
25+
import gg.skytils.skytilsmod.events.impl.PacketEvent
2526
import gg.skytils.skytilsmod.features.impl.dungeons.DungeonFeatures
2627
import gg.skytils.skytilsmod.features.impl.dungeons.DungeonTimer
2728
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.core.CataclysmicMapConfig
@@ -35,9 +36,10 @@ import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.MapU
3536
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.MimicDetector
3637
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.utils.MapUtils
3738
import gg.skytils.skytilsmod.utils.RenderUtil
38-
import gg.skytils.skytilsmod.utils.TabListUtils
3939
import gg.skytils.skytilsmod.utils.Utils
40+
import net.minecraft.network.play.server.S34PacketMaps
4041
import net.minecraft.util.AxisAlignedBB
42+
import net.minecraft.world.storage.MapData
4143
import net.minecraftforge.client.event.RenderWorldLastEvent
4244
import net.minecraftforge.common.MinecraftForge
4345
import 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

src/main/kotlin/gg/skytils/skytilsmod/features/impl/dungeons/cataclysmicmap/handlers/DungeonInfo.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ object DungeonInfo {
3636
var keys = 0
3737

3838
var dungeonMap: MapData? = null
39+
var guessMapData: MapData? = null
3940

4041
fun reset() {
4142
dungeonList.fill(Unknown(0, 0))
@@ -51,5 +52,6 @@ object DungeonInfo {
5152
keys = 0
5253

5354
dungeonMap = null
55+
guessMapData = null
5456
}
5557
}

src/main/kotlin/gg/skytils/skytilsmod/features/impl/dungeons/cataclysmicmap/utils/MapUtils.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.utils
2020

2121
import gg.skytils.skytilsmod.Skytils.Companion.mc
2222
import gg.skytils.skytilsmod.features.impl.dungeons.DungeonFeatures
23+
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.DungeonInfo
2324
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.DungeonMapColorParser
2425
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.DungeonScanner
2526
import gg.skytils.skytilsmod.utils.Utils
@@ -80,7 +81,7 @@ object MapUtils {
8081
private fun findEntranceCorner(): Pair<Int, Int> {
8182
var start = 0
8283
var currLength = 0
83-
getMapData()?.colors?.forEachIndexed { index, byte ->
84+
(DungeonInfo.dungeonMap ?: DungeonInfo.guessMapData)?.colors?.forEachIndexed { index, byte ->
8485
if (byte == 30.toByte()) {
8586
if (currLength == 0) start = index
8687
currLength++

0 commit comments

Comments
 (0)