From 76d86746136e67cd1898e7ca5681f2bbd71de775 Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Wed, 8 Oct 2025 03:00:06 -0400 Subject: [PATCH 01/15] Hollow wand utilities --- .DS_Store | Bin 0 -> 6148 bytes gradlew | 0 odin/src/main/kotlin/me/.DS_Store | Bin 0 -> 6148 bytes odin/src/main/kotlin/me/odin/.DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes src/main/.DS_Store | Bin 0 -> 6148 bytes src/main/kotlin/.DS_Store | Bin 0 -> 6148 bytes src/main/kotlin/me/.DS_Store | Bin 0 -> 6148 bytes src/main/kotlin/me/odinmain/.DS_Store | Bin 0 -> 6148 bytes .../kotlin/me/odinmain/features/.DS_Store | Bin 0 -> 6148 bytes .../me/odinmain/features/ModuleManager.kt | 2 +- .../me/odinmain/features/impl/.DS_Store | Bin 0 -> 6148 bytes .../features/impl/dungeon/HollowWand.kt | 70 ++++++++++++++++++ .../odinmain/features/impl/floor7/.DS_Store | Bin 0 -> 6148 bytes 14 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 .DS_Store mode change 100644 => 100755 gradlew create mode 100644 odin/src/main/kotlin/me/.DS_Store create mode 100644 odin/src/main/kotlin/me/odin/.DS_Store create mode 100644 src/.DS_Store create mode 100644 src/main/.DS_Store create mode 100644 src/main/kotlin/.DS_Store create mode 100644 src/main/kotlin/me/.DS_Store create mode 100644 src/main/kotlin/me/odinmain/.DS_Store create mode 100644 src/main/kotlin/me/odinmain/features/.DS_Store create mode 100644 src/main/kotlin/me/odinmain/features/impl/.DS_Store create mode 100644 src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt create mode 100644 src/main/kotlin/me/odinmain/features/impl/floor7/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3aabb82baf9faed5ff9cb29ab4919876be26b0cb GIT binary patch literal 6148 zcmeH~L2AQ53`M^h7Xsa6+2vfJHyA>4f?l8`-ULhx4cU9wYxhf|KvGl4DvR(1ns3X} z41NpC0$}TN{{gH3Ea|TJ@nvrQ+Qfe!;95JkwGhQ;UrcO;;IV^_{%abi96pPcje~ENh zZK_oSMBtWy&)&3^_x~;ZpZVW&WFjB}PfEbL&F5y#m&@Kddrj}Ph5kjq7;__?OSEEY iv|`?PD}KMqD}K%AHFatl<%~x;RX+mGMJ57|An*$jXC03K literal 0 HcmV?d00001 diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/odin/src/main/kotlin/me/.DS_Store b/odin/src/main/kotlin/me/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c49c3a6ec51797a4e99b30aa1ac848d9bc999fca GIT binary patch literal 6148 zcmeHK%}T>S5Z-O0O({YS3Oz1(EtpWTh?fxS3mDOZN=-=7V9b^#wTDv3SzpK}@p+ut z-H63{6|pn0`_1oe_JiyXV~hv0#AD21jM>l-IVx)e-D^V)lZ?o5jCfv5;!MV1znR!y z2mE%6NtUpbmp#h2-L zK5}+XWnM;UKAx(AG#Nw6%~hHwavsQ8o)oG!)B(F~w?|HQvG9((p6Cy}Wlt=Q-9b+r z_TA;OZSUbluID+N=9$dz!B^+kd4$9OF+dCu1Dnf$ zITP&8=2Ac_CkBXt9~i*>K|n+F4OSY})&U(}pD}JBqJWNX2}EJgH&|(e2ng4ufVz~M zCkEH$;1?#(H&|)Z<&3MDVH`7a{dnPOcJK?8&bY6UdSZYWSY@E8O$X2aGx%lJKJr&f z$RY-afq%vTw}#;`fJK?J_1p6BtQFAiprK%1g$fAhE0+K;a3ATappFaFA` SugU@GBA^JNju`j_20j2kxJpa_ literal 0 HcmV?d00001 diff --git a/odin/src/main/kotlin/me/odin/.DS_Store b/odin/src/main/kotlin/me/odin/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..30ce543f545afea3a5c1df2f5ce7d33a34cb9835 GIT binary patch literal 6148 zcmeHKJFdb&477nF5)CEgUV$5|5S)MuyvOHNNJxD8RGf>WG5!dF5+oX$r?F(uuGh0s zrifz^(fMUN6Pbue12>ebg|6ATdB+BsQ6L<5T;wP_Ic-myeW$uVVcbUk!1|T*Gk<+J ze0oR!&CF5(DnJFO02QDDeF|9bg*D?qMk+uBsK7%3`#u!7VNGlU{nLTqBLHxOv>Vnw zO8|={fHkoVLfZf}$aT{c$0#twsd@EqzhXOa&WDEMI1HnfCa6s7&Yo8^+Vg;}!TM!kPMk^St z>SKu2y&Wuht|nVB+C_8t(0sDm6a&*}7cEF&S{)2jfC_X9JVid){eOi2Hve}mOsN1B zcrXQYIJ_KYyj0$;cduvl*R0yQ!9hQc@Z%={iCx7zxEuD1Ex?*=K~!M;5pWq8sKB2p F@C6gX5~u(G literal 0 HcmV?d00001 diff --git a/src/main/.DS_Store b/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..324e8a21d1d1fc9eb78da2039616822ce233876d GIT binary patch literal 6148 zcmeHKJ5B>Z41IaWtMkLJAuS3L1Ep?C0^= zGn!Yd*8psJ*xdmO0CTD%j&7#n`>qqYsEDJ*8BciG?YI5IF!Yn`^8v5D!ZQZEp~si{ zYrNtSdu|@+ZQcLj@#im9R1Am#F(3xSz&~byJ=3YnF-5&#m+`V zbag*2MLH3g!cApiVPJ~&NG@_Z-VW#e^?L5@k21G2@Jz2By(2TCjj=bzvX@5*QE|$GWroe*^zC{|{QYBmolmGXgqU zZ`UilRNk#`uV?jLRxNLEs2@jo`3bR+`&WTAkui?Y%$zBtR$J23ti*oaxs3--bz_|j~ zx!tn=-@$*G|IbOvnY}k%> cQIvI!Yn=DOIWg$S2OX%N0qP=?0{^YR7qB%If&c&j literal 0 HcmV?d00001 diff --git a/src/main/kotlin/me/odinmain/.DS_Store b/src/main/kotlin/me/odinmain/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..30ce543f545afea3a5c1df2f5ce7d33a34cb9835 GIT binary patch literal 6148 zcmeHKJFdb&477nF5)CEgUV$5|5S)MuyvOHNNJxD8RGf>WG5!dF5+oX$r?F(uuGh0s zrifz^(fMUN6Pbue12>ebg|6ATdB+BsQ6L<5T;wP_Ic-myeW$uVVcbUk!1|T*Gk<+J ze0oR!&CF5(DnJFO02QDDeF|9bg*D?qMk+uBsK7%3`#u!7VNGlU{nLTqBLHxOv>Vnw zO8|={fHkoVLvIYIqf#4$mIH2r?wa*e@u>x3=Er<$CqZN!+ z^)bZi-VT;LSCcIm?V>q+Xg*nOih*ggixwm>tquk%Km|Gl4v|lG|DWMM&Hr5sQz}3O z{+R+gESF`*OXb~q_j*>pX4TdW4*GF~Z$AM@>?%IO-LPM50oG&-q5|WOfXl!@1%6e5 EPf1`BwEzGB literal 0 HcmV?d00001 diff --git a/src/main/kotlin/me/odinmain/features/ModuleManager.kt b/src/main/kotlin/me/odinmain/features/ModuleManager.kt index 32df34ffd..94efb65aa 100644 --- a/src/main/kotlin/me/odinmain/features/ModuleManager.kt +++ b/src/main/kotlin/me/odinmain/features/ModuleManager.kt @@ -51,7 +51,7 @@ object ModuleManager { // dungeon DungeonRequeue, BlessingDisplay, PositionalMessages, ExtraStats, KeyHighlight, Mimic, TeammatesHighlight, TerracottaTimer, BloodCamp, SecretClicked, DungeonWaypoints, LeapMenu, PuzzleSolvers, MageBeam, - WarpCooldown, MapInfo, SwapSound, LividSolver, SpiritBear, + WarpCooldown, MapInfo, SwapSound, LividSolver, SpiritBear, HollowWand, // floor 7 TerminalSolver, TerminalTimes, MelodyMessage, TickTimers, InactiveWaypoints, WitherDragons, diff --git a/src/main/kotlin/me/odinmain/features/impl/.DS_Store b/src/main/kotlin/me/odinmain/features/impl/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b3c81cb0cf43ee736bee924ab5526d02c01f099e GIT binary patch literal 6148 zcmeHKy9&ZU5ZqM}!N$_^e!vOHc6&Ax4$UiJHgamR9!Mp|6o^WUG! zEES*vRDcRl0V?oG0qec6$uy9W3Qz$m@KnIQ4+U;m6T3kFbRhT$030FhhPBTUz+wqt zP3!`ZfoV{ILDd{FH0a2etgDG#V9-T#_|SZ^=7ggDbevzjT(kx() + + private val incomingIchorRegex = Regex("""^Party > (?:\[[\wዞ]+\+*] )?[\w_]+: Ichor Pool x: (-?\d+), y: (-?\d+), z: (-?\d+)""") + private val outgoingIchorRegex = Regex("""^Casting Spell: Ichor Pool!$""") + private val messageSize by NumberSetting("Message Size", 1f, 0.1f, 4f, 0.1f, desc = "Whether or not to display the message size in the box.").withDependency { true } + + init { + // Sending Ichor Pool Messages + onMessage(outgoingIchorRegex) { + if(!sendChatMessage) return@onMessage + sendCommand("pc Ichor Pool ${PlayerUtils.getPositionString()}") + } + + // Receiving Ichor Pool Messages + onMessage(incomingIchorRegex) { + val x: Double = it.groups[1]?.value?.toDouble() ?: return@onMessage + val y: Double = it.groups[2]?.value?.toDouble() ?: return@onMessage + val z: Double = it.groups[3]?.value?.toDouble() ?: return@onMessage + poolsToRender.add(IchorPoolCoordinate(x, y, z)) + + runIn(400, true) { + poolsToRender.removeAt(0) + } + } + } + + // Waypoint rendering and management + + @SubscribeEvent + fun onRenderWorldLast(event: RenderWorldLastEvent) { + if(!showWaypoint) return + + poolsToRender.forEach { pool -> + Renderer.drawCylinder(Vec3(pool.x, pool.y, pool.z), 6, 6, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) + Renderer.drawStringInWorld("Ichor Pool", Vec3(pool.x, pool.y + 0.5, pool.z), Colors.WHITE, true, 0.03f * messageSize) + } + } + + @SubscribeEvent + fun onWorldLoad(event: WorldEvent.Load) { + poolsToRender.clear() + } +} diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/.DS_Store b/src/main/kotlin/me/odinmain/features/impl/floor7/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 8 Oct 2025 03:16:56 -0400 Subject: [PATCH 02/15] Remove .DS_Store files from repo --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 3aabb82baf9faed5ff9cb29ab4919876be26b0cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~L2AQ53`M^h7Xsa6+2vfJHyA>4f?l8`-ULhx4cU9wYxhf|KvGl4DvR(1ns3X} z41NpC0$}TN{{gH3Ea|TJ@nvrQ+Qfe!;95JkwGhQ;UrcO;;IV^_{%abi96pPcje~ENh zZK_oSMBtWy&)&3^_x~;ZpZVW&WFjB}PfEbL&F5y#m&@Kddrj}Ph5kjq7;__?OSEEY iv|`?PD}KMqD}K%AHFatl<%~x;RX+mGMJ57|An*$jXC03K From 4d3d4e7330da01d3b5b5c13336a69a19fb9fc96f Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Wed, 8 Oct 2025 03:25:43 -0400 Subject: [PATCH 03/15] Remove all .DS_Store files --- .gitignore | 1 + odin/src/main/kotlin/me/.DS_Store | Bin 6148 -> 0 bytes odin/src/main/kotlin/me/odin/.DS_Store | Bin 6148 -> 0 bytes src/.DS_Store | Bin 6148 -> 0 bytes src/main/.DS_Store | Bin 6148 -> 0 bytes src/main/kotlin/.DS_Store | Bin 6148 -> 0 bytes src/main/kotlin/me/.DS_Store | Bin 6148 -> 0 bytes src/main/kotlin/me/odinmain/.DS_Store | Bin 6148 -> 0 bytes src/main/kotlin/me/odinmain/features/.DS_Store | Bin 6148 -> 0 bytes .../kotlin/me/odinmain/features/impl/.DS_Store | Bin 6148 -> 0 bytes .../me/odinmain/features/impl/floor7/.DS_Store | Bin 6148 -> 0 bytes 11 files changed, 1 insertion(+) delete mode 100644 odin/src/main/kotlin/me/.DS_Store delete mode 100644 odin/src/main/kotlin/me/odin/.DS_Store delete mode 100644 src/.DS_Store delete mode 100644 src/main/.DS_Store delete mode 100644 src/main/kotlin/.DS_Store delete mode 100644 src/main/kotlin/me/.DS_Store delete mode 100644 src/main/kotlin/me/odinmain/.DS_Store delete mode 100644 src/main/kotlin/me/odinmain/features/.DS_Store delete mode 100644 src/main/kotlin/me/odinmain/features/impl/.DS_Store delete mode 100644 src/main/kotlin/me/odinmain/features/impl/floor7/.DS_Store diff --git a/.gitignore b/.gitignore index 87b14293e..5ca841444 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ /odinmain/src/main/resources/shaders/glslopt.exe /odinmain/src/main/resources/shaders/output/ /odinmain/src/main/resources/shaders/optimize.bat +.DS_Store diff --git a/odin/src/main/kotlin/me/.DS_Store b/odin/src/main/kotlin/me/.DS_Store deleted file mode 100644 index c49c3a6ec51797a4e99b30aa1ac848d9bc999fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z-O0O({YS3Oz1(EtpWTh?fxS3mDOZN=-=7V9b^#wTDv3SzpK}@p+ut z-H63{6|pn0`_1oe_JiyXV~hv0#AD21jM>l-IVx)e-D^V)lZ?o5jCfv5;!MV1znR!y z2mE%6NtUpbmp#h2-L zK5}+XWnM;UKAx(AG#Nw6%~hHwavsQ8o)oG!)B(F~w?|HQvG9((p6Cy}Wlt=Q-9b+r z_TA;OZSUbluID+N=9$dz!B^+kd4$9OF+dCu1Dnf$ zITP&8=2Ac_CkBXt9~i*>K|n+F4OSY})&U(}pD}JBqJWNX2}EJgH&|(e2ng4ufVz~M zCkEH$;1?#(H&|)Z<&3MDVH`7a{dnPOcJK?8&bY6UdSZYWSY@E8O$X2aGx%lJKJr&f z$RY-afq%vTw}#;`fJK?J_1p6BtQFAiprK%1g$fAhE0+K;a3ATappFaFA` SugU@GBA^JNju`j_20j2kxJpa_ diff --git a/odin/src/main/kotlin/me/odin/.DS_Store b/odin/src/main/kotlin/me/odin/.DS_Store deleted file mode 100644 index 30ce543f545afea3a5c1df2f5ce7d33a34cb9835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJFdb&477nF5)CEgUV$5|5S)MuyvOHNNJxD8RGf>WG5!dF5+oX$r?F(uuGh0s zrifz^(fMUN6Pbue12>ebg|6ATdB+BsQ6L<5T;wP_Ic-myeW$uVVcbUk!1|T*Gk<+J ze0oR!&CF5(DnJFO02QDDeF|9bg*D?qMk+uBsK7%3`#u!7VNGlU{nLTqBLHxOv>Vnw zO8|={fHkoVLfZf}$aT{c$0#twsd@EqzhXOa&WDEMI1HnfCa6s7&Yo8^+Vg;}!TM!kPMk^St z>SKu2y&Wuht|nVB+C_8t(0sDm6a&*}7cEF&S{)2jfC_X9JVid){eOi2Hve}mOsN1B zcrXQYIJ_KYyj0$;cduvl*R0yQ!9hQc@Z%={iCx7zxEuD1Ex?*=K~!M;5pWq8sKB2p F@C6gX5~u(G diff --git a/src/main/.DS_Store b/src/main/.DS_Store deleted file mode 100644 index 324e8a21d1d1fc9eb78da2039616822ce233876d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ5B>Z41IaWtMkLJAuS3L1Ep?C0^= zGn!Yd*8psJ*xdmO0CTD%j&7#n`>qqYsEDJ*8BciG?YI5IF!Yn`^8v5D!ZQZEp~si{ zYrNtSdu|@+ZQcLj@#im9R1Am#F(3xSz&~byJ=3YnF-5&#m+`V zbag*2MLH3g!cApiVPJ~&NG@_Z-VW#e^?L5@k21G2@Jz2By(2TCjj=bzvX@5*QE|$GWroe*^zC{|{QYBmolmGXgqU zZ`UilRNk#`uV?jLRxNLEs2@jo`3bR+`&WTAkui?Y%$zBtR$J23ti*oaxs3--bz_|j~ zx!tn=-@$*G|IbOvnY}k%> cQIvI!Yn=DOIWg$S2OX%N0qP=?0{^YR7qB%If&c&j diff --git a/src/main/kotlin/me/odinmain/.DS_Store b/src/main/kotlin/me/odinmain/.DS_Store deleted file mode 100644 index 30ce543f545afea3a5c1df2f5ce7d33a34cb9835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJFdb&477nF5)CEgUV$5|5S)MuyvOHNNJxD8RGf>WG5!dF5+oX$r?F(uuGh0s zrifz^(fMUN6Pbue12>ebg|6ATdB+BsQ6L<5T;wP_Ic-myeW$uVVcbUk!1|T*Gk<+J ze0oR!&CF5(DnJFO02QDDeF|9bg*D?qMk+uBsK7%3`#u!7VNGlU{nLTqBLHxOv>Vnw zO8|={fHkoVLvIYIqf#4$mIH2r?wa*e@u>x3=Er<$CqZN!+ z^)bZi-VT;LSCcIm?V>q+Xg*nOih*ggixwm>tquk%Km|Gl4v|lG|DWMM&Hr5sQz}3O z{+R+gESF`*OXb~q_j*>pX4TdW4*GF~Z$AM@>?%IO-LPM50oG&-q5|WOfXl!@1%6e5 EPf1`BwEzGB diff --git a/src/main/kotlin/me/odinmain/features/impl/.DS_Store b/src/main/kotlin/me/odinmain/features/impl/.DS_Store deleted file mode 100644 index b3c81cb0cf43ee736bee924ab5526d02c01f099e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKy9&ZU5ZqM}!N$_^e!vOHc6&Ax4$UiJHgamR9!Mp|6o^WUG! zEES*vRDcRl0V?oG0qec6$uy9W3Qz$m@KnIQ4+U;m6T3kFbRhT$030FhhPBTUz+wqt zP3!`ZfoV{ILDd{FH0a2etgDG#V9-T#_|SZ^=7ggDbevzjT(kxH1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 8 Oct 2025 03:29:47 -0400 Subject: [PATCH 04/15] Changed base color for ichor pool display --- src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt index 7a9364b0f..ce9478304 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt @@ -22,7 +22,7 @@ object HollowWand : Module( ) { private val sendChatMessage by BooleanSetting("Send Message", false, "Sends a message when ichor pool is casted.") private val showWaypoint by BooleanSetting("Show Waypoint", false,"Sends a waypoint when party ichor pool message is detected.") - private val waypointColor by ColorSetting("Waypoint Color", Color(50, 150, 220), allowAlpha = false, desc = "Color of the ichor pool waypoint.").withDependency { showWaypoint } + private val waypointColor by ColorSetting("Waypoint Color", Color(166, 21, 3), allowAlpha = false, desc = "Color of the ichor pool waypoint.").withDependency { showWaypoint } data class IchorPoolCoordinate(val x: Double, val y: Double, val z: Double) private val poolsToRender = mutableListOf() From ee1958c6c3c6460da349213b601a062f1adcdb2c Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Wed, 8 Oct 2025 03:42:47 -0400 Subject: [PATCH 05/15] commit test --- src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt index ce9478304..dec78918f 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt @@ -67,4 +67,4 @@ object HollowWand : Module( fun onWorldLoad(event: WorldEvent.Load) { poolsToRender.clear() } -} +} \ No newline at end of file From 1368ee4168b20d530a7902356ad3c75da55d85fa Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Wed, 8 Oct 2025 12:28:55 -0400 Subject: [PATCH 06/15] attempt to improve accuracy of ichor pool coordinates --- .../kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt | 2 +- src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt index dec78918f..02211ee43 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt @@ -35,7 +35,7 @@ object HollowWand : Module( // Sending Ichor Pool Messages onMessage(outgoingIchorRegex) { if(!sendChatMessage) return@onMessage - sendCommand("pc Ichor Pool ${PlayerUtils.getPositionString()}") + sendCommand("pc Ichor Pool ${PlayerUtils.getPositionString(true)}") } // Receiving Ichor Pool Messages diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt index 50a2548eb..586d753b8 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt @@ -49,9 +49,10 @@ object PlayerUtils { inline val posY get() = mc.thePlayer?.posY ?: 0.0 inline val posZ get() = mc.thePlayer?.posZ ?: 0.0 - fun getPositionString(): String { + fun getPositionString(getExactCoordinates: Boolean = false): String { val blockPos = BlockPos(posX, posY, posZ) - return "x: ${blockPos.x}, y: ${blockPos.y}, z: ${blockPos.z}" + return if(getExactCoordinates) "x: $posX, y: $posY, z: $posZ" + else "x: ${blockPos.x}, y: ${blockPos.y}, z: ${blockPos.z}" } private var lastClickSent = 0L From e5956052b2aaede38ceee567582d77ba6804a0bd Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Wed, 8 Oct 2025 19:39:14 -0400 Subject: [PATCH 07/15] Added coordinate specificity --- .../kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt | 4 ++-- src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt index 02211ee43..a997dfbe6 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt @@ -18,7 +18,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent object HollowWand : Module( name = "Hollow Wand", - description = "Messages and waypoints for ichor pool casting" + description = "Messages and waypoints for ichor pool casting." ) { private val sendChatMessage by BooleanSetting("Send Message", false, "Sends a message when ichor pool is casted.") private val showWaypoint by BooleanSetting("Show Waypoint", false,"Sends a waypoint when party ichor pool message is detected.") @@ -27,7 +27,7 @@ object HollowWand : Module( data class IchorPoolCoordinate(val x: Double, val y: Double, val z: Double) private val poolsToRender = mutableListOf() - private val incomingIchorRegex = Regex("""^Party > (?:\[[\wዞ]+\+*] )?[\w_]+: Ichor Pool x: (-?\d+), y: (-?\d+), z: (-?\d+)""") + private val incomingIchorRegex = Regex("""^Party > (?:\[[\wዞ]+\+*] )?[\w_]+: Ichor Pool x: (-?\d+\.\d{3}), y: (-?\d+\.\d{3}), z: (-?\d+\.\d{3})$""") private val outgoingIchorRegex = Regex("""^Casting Spell: Ichor Pool!$""") private val messageSize by NumberSetting("Message Size", 1f, 0.1f, 4f, 0.1f, desc = "Whether or not to display the message size in the box.").withDependency { true } diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt index 586d753b8..504bfe7d2 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt @@ -7,6 +7,8 @@ import me.odinmain.utils.postAndCatch import me.odinmain.utils.render.Color import me.odinmain.utils.render.Colors import me.odinmain.utils.render.Renderer +import me.odinmain.utils.round +import me.odinmain.utils.toFixed import net.minecraft.network.play.client.C0EPacketClickWindow import net.minecraft.util.BlockPos import net.minecraft.util.Vec3 @@ -49,9 +51,9 @@ object PlayerUtils { inline val posY get() = mc.thePlayer?.posY ?: 0.0 inline val posZ get() = mc.thePlayer?.posZ ?: 0.0 - fun getPositionString(getExactCoordinates: Boolean = false): String { + fun getPositionString(getSpecificCoordinates: Boolean = false): String { val blockPos = BlockPos(posX, posY, posZ) - return if(getExactCoordinates) "x: $posX, y: $posY, z: $posZ" + return if(getSpecificCoordinates) "x: ${posX.toFixed(3)}, y: ${posY.toFixed(3)}, z: ${posZ.toFixed(3)}" else "x: ${blockPos.x}, y: ${blockPos.y}, z: ${blockPos.z}" } From 98ce87a3dcd91d4bc175206cb92d85e3af1ae065 Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Wed, 8 Oct 2025 19:52:53 -0400 Subject: [PATCH 08/15] Removed decimals on y coordinate --- .../kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt | 3 ++- src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt index a997dfbe6..4945b511e 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt @@ -11,6 +11,7 @@ import me.odinmain.utils.render.Renderer import me.odinmain.utils.runIn import me.odinmain.utils.skyblock.PlayerUtils import me.odinmain.utils.skyblock.sendCommand +import me.odinmain.utils.toFixed import net.minecraft.util.Vec3 import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.event.world.WorldEvent @@ -27,7 +28,7 @@ object HollowWand : Module( data class IchorPoolCoordinate(val x: Double, val y: Double, val z: Double) private val poolsToRender = mutableListOf() - private val incomingIchorRegex = Regex("""^Party > (?:\[[\wዞ]+\+*] )?[\w_]+: Ichor Pool x: (-?\d+\.\d{3}), y: (-?\d+\.\d{3}), z: (-?\d+\.\d{3})$""") + private val incomingIchorRegex = Regex("""^Party > (?:\[[\wዞ]+\+*] )?[\w_]+: Ichor Pool x: (-?\d+\.\d{3}), y: (-?\d+), z: (-?\d+\.\d{3})$""") private val outgoingIchorRegex = Regex("""^Casting Spell: Ichor Pool!$""") private val messageSize by NumberSetting("Message Size", 1f, 0.1f, 4f, 0.1f, desc = "Whether or not to display the message size in the box.").withDependency { true } diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt index 504bfe7d2..52b15f148 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt @@ -53,7 +53,7 @@ object PlayerUtils { fun getPositionString(getSpecificCoordinates: Boolean = false): String { val blockPos = BlockPos(posX, posY, posZ) - return if(getSpecificCoordinates) "x: ${posX.toFixed(3)}, y: ${posY.toFixed(3)}, z: ${posZ.toFixed(3)}" + return if(getSpecificCoordinates) "x: ${posX.toFixed(3)}, y: ${posY.toFixed(0)}, z: ${posZ.toFixed(3)}" else "x: ${blockPos.x}, y: ${blockPos.y}, z: ${blockPos.z}" } From 0a912150dd3ac3e0097205f2c72a26aa1747f2e2 Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Wed, 8 Oct 2025 20:13:20 -0400 Subject: [PATCH 09/15] moved hollow wand module over to skyblock from dungeon because I am stupid --- src/main/kotlin/me/odinmain/features/ModuleManager.kt | 4 ++-- .../features/impl/{dungeon => skyblock}/HollowWand.kt | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) rename src/main/kotlin/me/odinmain/features/impl/{dungeon => skyblock}/HollowWand.kt (97%) diff --git a/src/main/kotlin/me/odinmain/features/ModuleManager.kt b/src/main/kotlin/me/odinmain/features/ModuleManager.kt index 94efb65aa..60ff9fc91 100644 --- a/src/main/kotlin/me/odinmain/features/ModuleManager.kt +++ b/src/main/kotlin/me/odinmain/features/ModuleManager.kt @@ -51,7 +51,7 @@ object ModuleManager { // dungeon DungeonRequeue, BlessingDisplay, PositionalMessages, ExtraStats, KeyHighlight, Mimic, TeammatesHighlight, TerracottaTimer, BloodCamp, SecretClicked, DungeonWaypoints, LeapMenu, PuzzleSolvers, MageBeam, - WarpCooldown, MapInfo, SwapSound, LividSolver, SpiritBear, HollowWand, + WarpCooldown, MapInfo, SwapSound, LividSolver, SpiritBear, // floor 7 TerminalSolver, TerminalTimes, MelodyMessage, TickTimers, InactiveWaypoints, WitherDragons, @@ -65,7 +65,7 @@ object ModuleManager { //skyblock NoCursorReset, AutoSprint, BlazeAttunement, ChatCommands, DeployableTimer, DianaHelper, Ragnarock, MobSpawn, Splits, WardrobeKeybinds, InvincibilityTimer, ItemsHighlight, PlayerDisplay, - FarmKeys, PetKeybinds, CommandKeybinds, SpringBoots, AbilityTimers, SlotBinds, + FarmKeys, PetKeybinds, CommandKeybinds, SpringBoots, AbilityTimers, SlotBinds, HollowWand, // kuudra BuildHelper, FreshTools, KuudraDisplay, NoPre, PearlWaypoints, RemovePerks, SupplyHelper, TeamHighlight, diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt similarity index 97% rename from src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt rename to src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt index 4945b511e..5956b443b 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt @@ -1,4 +1,4 @@ -package me.odinmain.features.impl.dungeon +package me.odinmain.features.impl.skyblock import me.odinmain.clickgui.settings.Setting.Companion.withDependency import me.odinmain.clickgui.settings.impl.BooleanSetting @@ -11,7 +11,6 @@ import me.odinmain.utils.render.Renderer import me.odinmain.utils.runIn import me.odinmain.utils.skyblock.PlayerUtils import me.odinmain.utils.skyblock.sendCommand -import me.odinmain.utils.toFixed import net.minecraft.util.Vec3 import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.event.world.WorldEvent @@ -53,7 +52,6 @@ object HollowWand : Module( } // Waypoint rendering and management - @SubscribeEvent fun onRenderWorldLast(event: RenderWorldLastEvent) { if(!showWaypoint) return @@ -68,4 +66,4 @@ object HollowWand : Module( fun onWorldLoad(event: WorldEvent.Load) { poolsToRender.clear() } -} \ No newline at end of file +} From 455448e26b704dc341d222c4dd2297bc1e0f3f2f Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Thu, 16 Oct 2025 21:17:51 -0400 Subject: [PATCH 10/15] Cleaned up the code base and made it work with another spell --- .../features/impl/skyblock/HollowWand.kt | 67 ++++++++++++------- .../me/odinmain/utils/skyblock/PlayerUtils.kt | 10 ++- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt index 5956b443b..1db46be7f 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt @@ -5,7 +5,6 @@ import me.odinmain.clickgui.settings.impl.BooleanSetting import me.odinmain.clickgui.settings.impl.ColorSetting import me.odinmain.clickgui.settings.impl.NumberSetting import me.odinmain.features.Module -import me.odinmain.utils.render.Color import me.odinmain.utils.render.Colors import me.odinmain.utils.render.Renderer import me.odinmain.utils.runIn @@ -18,48 +17,66 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent object HollowWand : Module( name = "Hollow Wand", - description = "Messages and waypoints for ichor pool casting." + description = "Messages and waypoints for hollow wand casting." ) { - private val sendChatMessage by BooleanSetting("Send Message", false, "Sends a message when ichor pool is casted.") - private val showWaypoint by BooleanSetting("Show Waypoint", false,"Sends a waypoint when party ichor pool message is detected.") - private val waypointColor by ColorSetting("Waypoint Color", Color(166, 21, 3), allowAlpha = false, desc = "Color of the ichor pool waypoint.").withDependency { showWaypoint } + private val sendChatMessage by BooleanSetting("Send Message", false, "Sends a message when hollow wand is casted.") + private val showWaypoint by BooleanSetting("Show Waypoint", false, "Shows a waypoint when party hollow wand message is detected.") + private val waypointColor by ColorSetting("Waypoint Color", Colors.MINECRAFT_DARK_RED, desc = "Color of the pool waypoint.").withDependency { showWaypoint } + private val messageSize by NumberSetting("Message Size", 1f, 0.1f, 4f, 0.1f, desc = "The size of the waypoint text.").withDependency { showWaypoint } - data class IchorPoolCoordinate(val x: Double, val y: Double, val z: Double) - private val poolsToRender = mutableListOf() + data class CastCoordinate(val x: Double, val y: Double, val z: Double, var radius: Double = 0.0) + private val poolsToRender = mutableListOf() + private val windsToRender = mutableListOf() - private val incomingIchorRegex = Regex("""^Party > (?:\[[\wዞ]+\+*] )?[\w_]+: Ichor Pool x: (-?\d+\.\d{3}), y: (-?\d+), z: (-?\d+\.\d{3})$""") - private val outgoingIchorRegex = Regex("""^Casting Spell: Ichor Pool!$""") - private val messageSize by NumberSetting("Message Size", 1f, 0.1f, 4f, 0.1f, desc = "Whether or not to display the message size in the box.").withDependency { true } + private val incomingHollowRegex = Regex("^Party > (?:\\[[\\wዞ]+\\+*] )?[\\w_]+: (Raging Wind|Ichor Pool) x: (-?\\d+\\.\\d{3}), y: (-?\\d+), z: (-?\\d+\\.\\d{3})$") + private val outgoingHollowRegex = Regex("^Casting Spell: (Raging Wind|Ichor Pool)!$") init { - // Sending Ichor Pool Messages - onMessage(outgoingIchorRegex) { - if(!sendChatMessage) return@onMessage - sendCommand("pc Ichor Pool ${PlayerUtils.getPositionString(true)}") + onMessage(outgoingHollowRegex) { + val type = it.groups[1]?.value ?: return@onMessage + if(sendChatMessage) sendCommand("pc $type ${PlayerUtils.getPositionString(true)}") } - // Receiving Ichor Pool Messages - onMessage(incomingIchorRegex) { - val x: Double = it.groups[1]?.value?.toDouble() ?: return@onMessage - val y: Double = it.groups[2]?.value?.toDouble() ?: return@onMessage - val z: Double = it.groups[3]?.value?.toDouble() ?: return@onMessage - poolsToRender.add(IchorPoolCoordinate(x, y, z)) - - runIn(400, true) { - poolsToRender.removeAt(0) + onMessage(incomingHollowRegex) { + val type = it.groups[1]?.value ?: return@onMessage + val x = it.groups[2]?.value?.toDouble() ?: return@onMessage + val y = it.groups[3]?.value?.toDouble() ?: return@onMessage + val z = it.groups[4]?.value?.toDouble() ?: return@onMessage + val thisCast = CastCoordinate(x, y, z) + when(type) { + "Raging Wind" -> { + windsToRender.add(thisCast) + } + "Ichor Pool" -> { + poolsToRender.add(thisCast) + runIn(400, true) { + poolsToRender.remove(thisCast) + } + } } } } - // Waypoint rendering and management @SubscribeEvent fun onRenderWorldLast(event: RenderWorldLastEvent) { if(!showWaypoint) return poolsToRender.forEach { pool -> - Renderer.drawCylinder(Vec3(pool.x, pool.y, pool.z), 6, 6, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) + Renderer.drawCylinder(Vec3(pool.x, pool.y, pool.z), 8, 8, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) Renderer.drawStringInWorld("Ichor Pool", Vec3(pool.x, pool.y + 0.5, pool.z), Colors.WHITE, true, 0.03f * messageSize) } + + windsToRender.forEach { wind -> + wind.radius += 0.15 + if(wind.radius > 25) { + windsToRender.remove(wind) + return@forEach + } + + Renderer.drawCylinder(Vec3(wind.x, wind.y, wind.z), wind.radius, wind.radius, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) + Renderer.drawStringInWorld("Raging Wind", Vec3(wind.x, wind.y + 0.5, wind.z), Colors.WHITE, true, 0.03f * messageSize) + + } } @SubscribeEvent diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt index 52b15f148..e414729c7 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt @@ -52,9 +52,13 @@ object PlayerUtils { inline val posZ get() = mc.thePlayer?.posZ ?: 0.0 fun getPositionString(getSpecificCoordinates: Boolean = false): String { - val blockPos = BlockPos(posX, posY, posZ) - return if(getSpecificCoordinates) "x: ${posX.toFixed(3)}, y: ${posY.toFixed(0)}, z: ${posZ.toFixed(3)}" - else "x: ${blockPos.x}, y: ${blockPos.y}, z: ${blockPos.z}" + return if(getSpecificCoordinates) { + "x: ${posX.toFixed(3)}, y: ${posY.toFixed(0)}, z: ${posZ.toFixed(3)}" + } + else { + val blockPos = BlockPos(posX, posY, posZ) + "x: ${blockPos.x}, y: ${blockPos.y}, z: ${blockPos.z}" + } } private var lastClickSent = 0L From 0086d7eeb4398c6253df9f7834c91cac94e544e5 Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Thu, 16 Oct 2025 21:36:09 -0400 Subject: [PATCH 11/15] Removed the crash from modifying a list --- .../kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt index 1db46be7f..5aa027968 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt @@ -66,7 +66,7 @@ object HollowWand : Module( Renderer.drawStringInWorld("Ichor Pool", Vec3(pool.x, pool.y + 0.5, pool.z), Colors.WHITE, true, 0.03f * messageSize) } - windsToRender.forEach { wind -> + windsToRender.toList().forEach { wind -> wind.radius += 0.15 if(wind.radius > 25) { windsToRender.remove(wind) From 5ce5251c113b221d91eb9c842c4992cd08d8fddc Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Thu, 16 Oct 2025 23:20:26 -0400 Subject: [PATCH 12/15] Made the raging wind spell waypoint scale according to fps so it's more consistent across users --- .../kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt index 5aa027968..fedb25508 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt @@ -46,6 +46,7 @@ object HollowWand : Module( when(type) { "Raging Wind" -> { windsToRender.add(thisCast) + } "Ichor Pool" -> { poolsToRender.add(thisCast) @@ -60,6 +61,8 @@ object HollowWand : Module( @SubscribeEvent fun onRenderWorldLast(event: RenderWorldLastEvent) { if(!showWaypoint) return + val fps = mc.debug?.split(" ")?.get(0)?.toIntOrNull() ?: 60 + val windIncrement = 25 / fps poolsToRender.forEach { pool -> Renderer.drawCylinder(Vec3(pool.x, pool.y, pool.z), 8, 8, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) @@ -67,7 +70,7 @@ object HollowWand : Module( } windsToRender.toList().forEach { wind -> - wind.radius += 0.15 + wind.radius += windIncrement if(wind.radius > 25) { windsToRender.remove(wind) return@forEach @@ -75,7 +78,6 @@ object HollowWand : Module( Renderer.drawCylinder(Vec3(wind.x, wind.y, wind.z), wind.radius, wind.radius, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) Renderer.drawStringInWorld("Raging Wind", Vec3(wind.x, wind.y + 0.5, wind.z), Colors.WHITE, true, 0.03f * messageSize) - } } From e5ea7f18737d24ffc61e7a43e10f4200d40db9d0 Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Thu, 16 Oct 2025 23:29:13 -0400 Subject: [PATCH 13/15] Fixed raging wind spell waypoint math --- .../kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt index fedb25508..61ced96b0 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt @@ -61,8 +61,8 @@ object HollowWand : Module( @SubscribeEvent fun onRenderWorldLast(event: RenderWorldLastEvent) { if(!showWaypoint) return - val fps = mc.debug?.split(" ")?.get(0)?.toIntOrNull() ?: 60 - val windIncrement = 25 / fps + val fps = mc.debug?.split(" ")?.get(0)?.toDoubleOrNull() ?: 60.0 + val windIncrement = 25.0 / fps poolsToRender.forEach { pool -> Renderer.drawCylinder(Vec3(pool.x, pool.y, pool.z), 8, 8, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) From 402f1e38ad3ffb77794b26145f630dd2176a35f9 Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Fri, 17 Oct 2025 01:18:01 -0400 Subject: [PATCH 14/15] Added title for Raging Winds spell --- .../me/odinmain/features/impl/skyblock/HollowWand.kt | 10 ++++++++-- .../kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt index 61ced96b0..ab4ad98e7 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt @@ -9,6 +9,7 @@ import me.odinmain.utils.render.Colors import me.odinmain.utils.render.Renderer import me.odinmain.utils.runIn import me.odinmain.utils.skyblock.PlayerUtils +import me.odinmain.utils.skyblock.modMessage import me.odinmain.utils.skyblock.sendCommand import net.minecraft.util.Vec3 import net.minecraftforge.client.event.RenderWorldLastEvent @@ -33,11 +34,13 @@ object HollowWand : Module( init { onMessage(outgoingHollowRegex) { + if(!sendChatMessage) return@onMessage val type = it.groups[1]?.value ?: return@onMessage - if(sendChatMessage) sendCommand("pc $type ${PlayerUtils.getPositionString(true)}") + sendCommand("pc $type ${PlayerUtils.getPositionString(true)}") } onMessage(incomingHollowRegex) { + if(!showWaypoint) return@onMessage val type = it.groups[1]?.value ?: return@onMessage val x = it.groups[2]?.value?.toDouble() ?: return@onMessage val y = it.groups[3]?.value?.toDouble() ?: return@onMessage @@ -46,7 +49,10 @@ object HollowWand : Module( when(type) { "Raging Wind" -> { windsToRender.add(thisCast) - + if(PlayerUtils.getDistanceTo(x, y, z) <= 25) { + PlayerUtils.alert("Raging Winds", color = Colors.MINECRAFT_RED) + modMessage("Raging Winds applied") + } } "Ichor Pool" -> { poolsToRender.add(thisCast) diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt index e414729c7..b6003f28f 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/PlayerUtils.kt @@ -13,6 +13,8 @@ import net.minecraft.network.play.client.C0EPacketClickWindow import net.minecraft.util.BlockPos import net.minecraft.util.Vec3 import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import kotlin.math.pow +import kotlin.math.sqrt object PlayerUtils { var shouldBypassVolume = false @@ -61,6 +63,13 @@ object PlayerUtils { } } + fun getDistanceTo(x: Double, y: Double, z: Double): Double { + val xDist = (posX - x).pow(2) + val yDist = (posY - y).pow(2) + val zDist = (posZ - z).pow(2) + return sqrt(xDist + yDist + zDist) + } + private var lastClickSent = 0L @SubscribeEvent From f98fe40c1ab79ca513bc59055fccde952ce646d5 Mon Sep 17 00:00:00 2001 From: Soon2BeATaco_ Date: Fri, 17 Oct 2025 13:33:00 -0400 Subject: [PATCH 15/15] Removed a divide by zero error --- .../kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt index ab4ad98e7..63ca6e522 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/HollowWand.kt @@ -15,6 +15,7 @@ import net.minecraft.util.Vec3 import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.event.world.WorldEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import kotlin.math.max object HollowWand : Module( name = "Hollow Wand", @@ -68,7 +69,7 @@ object HollowWand : Module( fun onRenderWorldLast(event: RenderWorldLastEvent) { if(!showWaypoint) return val fps = mc.debug?.split(" ")?.get(0)?.toDoubleOrNull() ?: 60.0 - val windIncrement = 25.0 / fps + val windIncrement = 25.0 / max(60.0, fps) poolsToRender.forEach { pool -> Renderer.drawCylinder(Vec3(pool.x, pool.y, pool.z), 8, 8, 0.05, 80f, 1f, 0f, 90f, 90f, waypointColor, true) @@ -90,5 +91,6 @@ object HollowWand : Module( @SubscribeEvent fun onWorldLoad(event: WorldEvent.Load) { poolsToRender.clear() + windsToRender.clear() } }