aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/nether
diff options
context:
space:
mode:
authorThunderblade73 <85900443+Thunderblade73@users.noreply.github.com>2024-04-27 13:43:51 +0200
committerGitHub <noreply@github.com>2024-04-27 13:43:51 +0200
commit5597d58047a2232274c7d2a094b5276f4a7795c6 (patch)
tree69402cb3fc7fa5b35725d0116263ac823c4d6fec /src/main/java/at/hannibal2/skyhanni/features/nether
parentcabc3aa250d073942f414e795f625e88ff827f45 (diff)
downloadskyhanni-5597d58047a2232274c7d2a094b5276f4a7795c6.tar.gz
skyhanni-5597d58047a2232274c7d2a094b5276f4a7795c6.tar.bz2
skyhanni-5597d58047a2232274c7d2a094b5276f4a7795c6.zip
Feature: Matriarch Helper (#1385)
Co-authored-by: Cal <cwolfson58@gmail.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/nether')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/MatriarchHelper.kt71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/MatriarchHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/MatriarchHelper.kt
new file mode 100644
index 000000000..24d70e12c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/MatriarchHelper.kt
@@ -0,0 +1,71 @@
+package at.hannibal2.skyhanni.features.nether
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.data.IslandType
+import at.hannibal2.skyhanni.data.mob.Mob
+import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
+import at.hannibal2.skyhanni.events.MobEvent
+import at.hannibal2.skyhanni.test.command.CopyNearbyEntitiesCommand.getMobInfo
+import at.hannibal2.skyhanni.test.command.ErrorManager
+import at.hannibal2.skyhanni.utils.ColorUtils.toChromaColor
+import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland
+import at.hannibal2.skyhanni.utils.RenderUtils.draw3DLine
+import at.hannibal2.skyhanni.utils.RenderUtils.drawFilledBoundingBox_nea
+import at.hannibal2.skyhanni.utils.RenderUtils.exactPlayerEyeLocation
+import at.hannibal2.skyhanni.utils.RenderUtils.expandBlock
+import at.hannibal2.skyhanni.utils.getLorenzVec
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import java.util.TreeSet
+
+class MatriarchHelper {
+
+ private val config get() = SkyHanniMod.feature.crimsonIsle.matriarchHelper
+
+ private val pearlList = TreeSet<Mob> { first, second ->
+ first.baseEntity.getLorenzVec().y.compareTo(second.baseEntity.getLorenzVec().y)
+ }
+
+ @SubscribeEvent
+ fun onMobSpawn(event: MobEvent.Spawn.Special) {
+ if (!isHeavyPearl(event)) return
+ pearlList.add(event.mob)
+ if (pearlList.size > 3) {
+ ErrorManager.logErrorStateWithData(
+ "Something went wrong with the Heavy Pearl detection",
+ "More then 3 pearls",
+ "pearList" to pearlList.map { getMobInfo(it) }
+ )
+ pearlList.clear()
+ }
+ }
+
+ private fun isHeavyPearl(event: MobEvent) = isEnabled() && event.mob.name == "Heavy Pearl"
+
+ @SubscribeEvent
+ fun onMobDespawn(event: MobEvent.DeSpawn.Special) {
+ if (!isHeavyPearl(event)) return
+ pearlList.remove(event.mob)
+ }
+
+ @SubscribeEvent
+ fun onRender(event: LorenzRenderWorldEvent) {
+ if (!isEnabled()) return
+ if (config.highlight) {
+ val color = config.highlightColor.toChromaColor()
+ pearlList.forEach {
+ event.drawFilledBoundingBox_nea(it.boundingBox.expandBlock(), color, 1.0f)
+ }
+ }
+ if (config.line) {
+ val color = config.lineColor.toChromaColor()
+ var prePoint = event.exactPlayerEyeLocation()
+ pearlList.forEach {
+ val point = it.baseEntity.getLorenzVec().add(y = 1.2)
+ event.draw3DLine(prePoint, point, color, 10, true)
+ prePoint = point
+ }
+ }
+ }
+
+ fun isEnabled() = config.enabled && IslandType.CRIMSON_ISLE.isInIsland()
+}