Skip to content

Commit 6c6f97c

Browse files
feat: change mimic detector to CataclysmicMap
Modified version of upstream
1 parent d1b2903 commit 6c6f97c

File tree

3 files changed

+86
-21
lines changed

3 files changed

+86
-21
lines changed

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

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,11 @@ import gg.skytils.skytilsmod.utils.*
3333
import gg.skytils.skytilsmod.utils.graphics.ScreenRenderer
3434
import gg.skytils.skytilsmod.utils.graphics.SmartFontRenderer.TextAlignment
3535
import gg.skytils.skytilsmod.utils.graphics.colors.CommonColors
36-
import net.minecraft.entity.monster.EntityZombie
3736
import net.minecraft.network.play.server.S38PacketPlayerListItem
3837
import net.minecraft.network.play.server.S3EPacketTeams
3938
import net.minecraft.network.play.server.S45PacketTitle
4039
import net.minecraft.util.ChatComponentText
4140
import net.minecraftforge.client.event.ClientChatReceivedEvent
42-
import net.minecraftforge.event.entity.living.LivingDeathEvent
4341
import net.minecraftforge.event.world.WorldEvent
4442
import net.minecraftforge.fml.common.eventhandler.EventPriority
4543
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@@ -471,25 +469,6 @@ object ScoreCalculation {
471469
}
472470
}
473471

474-
@SubscribeEvent
475-
fun onEntityDeath(event: LivingDeathEvent) {
476-
if (!Utils.inDungeons) return
477-
if (event.entity is EntityZombie) {
478-
val entity = event.entity as EntityZombie
479-
if (entity.isChild && entity.getCurrentArmor(0) == null && entity.getCurrentArmor(1) == null && entity.getCurrentArmor(
480-
2
481-
) == null && entity.getCurrentArmor(3) == null
482-
) {
483-
if (!mimicKilled.get()) {
484-
mimicKilled.set(true)
485-
if (Skytils.config.scoreCalculationAssist) {
486-
Skytils.sendMessageQueue.add("/pc \$SKYTILS-DUNGEON-SCORE-MIMIC$")
487-
}
488-
}
489-
}
490-
}
491-
}
492-
493472
@SubscribeEvent
494473
fun clearScore(event: WorldEvent.Unload) {
495474
mimicKilled.set(false)

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

Lines changed: 11 additions & 0 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.features.impl.dungeons.DungeonFeatures
2526
import gg.skytils.skytilsmod.features.impl.dungeons.DungeonTimer
2627
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.core.CataclysmicMapConfig
2728
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.core.CataclysmicMapElement
@@ -31,12 +32,14 @@ import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.core.map.Room
3132
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.DungeonInfo
3233
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.DungeonScanner
3334
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.MapUpdater
35+
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers.MimicDetector
3436
import gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.utils.MapUtils
3537
import gg.skytils.skytilsmod.utils.RenderUtil
3638
import gg.skytils.skytilsmod.utils.TabListUtils
3739
import gg.skytils.skytilsmod.utils.Utils
3840
import net.minecraft.util.AxisAlignedBB
3941
import net.minecraftforge.client.event.RenderWorldLastEvent
42+
import net.minecraftforge.common.MinecraftForge
4043
import net.minecraftforge.event.world.WorldEvent
4144
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
4245
import net.minecraftforge.fml.common.gameevent.TickEvent
@@ -64,6 +67,10 @@ object CataclysmicMap {
6467
MapUpdater.updateRooms(it)
6568
MapUpdater.updatePlayers(it)
6669
}
70+
71+
if ((DungeonFeatures.dungeonFloorNumber ?: 0) >= 6) {
72+
MimicDetector.checkMimicDead()
73+
}
6774
}
6875

6976
if (DungeonScanner.shouldScan) {
@@ -109,5 +116,9 @@ object CataclysmicMap {
109116

110117
init {
111118
CataclysmicMapElement
119+
120+
arrayOf(
121+
MimicDetector,
122+
).forEach(MinecraftForge.EVENT_BUS::register)
112123
}
113124
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
* Skytils - Hypixel Skyblock Quality of Life Mod
3+
* Copyright (C) 2020-2024 Skytils
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Affero General Public License as published
7+
* by the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Affero General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Affero General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*/
18+
19+
package gg.skytils.skytilsmod.features.impl.dungeons.cataclysmicmap.handlers
20+
21+
import gg.skytils.skytilsmod.Skytils
22+
import gg.skytils.skytilsmod.Skytils.Companion.mc
23+
import gg.skytils.skytilsmod.events.impl.BlockChangeEvent
24+
import gg.skytils.skytilsmod.features.impl.dungeons.ScoreCalculation
25+
import gg.skytils.skytilsmod.utils.Utils
26+
import net.minecraft.entity.monster.EntityZombie
27+
import net.minecraft.init.Blocks
28+
import net.minecraft.util.BlockPos
29+
import net.minecraftforge.event.entity.living.LivingDeathEvent
30+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
31+
32+
object MimicDetector {
33+
var mimicOpenTime = 0L
34+
var mimicPos: BlockPos? = null
35+
36+
@SubscribeEvent
37+
fun onBlockChange(event: BlockChangeEvent) {
38+
if (Utils.inDungeons && event.old.block == Blocks.trapped_chest && event.update.block == Blocks.air) {
39+
mimicOpenTime = System.currentTimeMillis()
40+
mimicPos = event.pos
41+
}
42+
}
43+
44+
@SubscribeEvent
45+
fun onEntityDeath(event: LivingDeathEvent) {
46+
if (!Utils.inDungeons) return
47+
val entity = event.entity as? EntityZombie ?: return
48+
if (entity.isChild && (0..3).all { entity.getCurrentArmor(it) == null }) {
49+
if (!ScoreCalculation.mimicKilled.get()) {
50+
ScoreCalculation.mimicKilled.set(true)
51+
if (Skytils.config.scoreCalculationAssist) {
52+
Skytils.sendMessageQueue.add("/pc \$SKYTILS-DUNGEON-SCORE-MIMIC$")
53+
}
54+
}
55+
}
56+
}
57+
58+
fun checkMimicDead() {
59+
if (ScoreCalculation.mimicKilled.get()) return
60+
if (mimicOpenTime == 0L) return
61+
if (System.currentTimeMillis() - mimicOpenTime < 750) return
62+
if (mc.thePlayer.getDistanceSq(mimicPos) < 400) {
63+
if (mc.theWorld.loadedEntityList.none {
64+
it is EntityZombie && it.isChild && it.getCurrentArmor(3)
65+
?.getSubCompound("SkullOwner", false)
66+
?.getString("Id") == "bcb486a4-0cb5-35db-93f0-039fbdde03f0"
67+
}) {
68+
ScoreCalculation.mimicKilled.set(true)
69+
if (Skytils.config.scoreCalculationAssist) {
70+
Skytils.sendMessageQueue.add("/pc \$SKYTILS-DUNGEON-SCORE-MIMIC$")
71+
}
72+
}
73+
}
74+
}
75+
}

0 commit comments

Comments
 (0)