aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/lorenz/mod/misc
diff options
context:
space:
mode:
authorLorenz <ESs95s3P5z8Pheb>2022-07-09 02:41:10 +0200
committerLorenz <ESs95s3P5z8Pheb>2022-07-09 02:41:10 +0200
commit8b9489efd50a238fbb918705132e17bb64461837 (patch)
tree2e3cac801aaa3c6adeb9ceb0ce30d898d2eb3881 /src/main/java/at/lorenz/mod/misc
parent8d24353d88e5a0ac1be40922275ccbb57a9e9c2d (diff)
downloadSkyHanni-8b9489efd50a238fbb918705132e17bb64461837.tar.gz
SkyHanni-8b9489efd50a238fbb918705132e17bb64461837.tar.bz2
SkyHanni-8b9489efd50a238fbb918705132e17bb64461837.zip
adding support for isOnHypixel, inSkyblock and inDungeons
Diffstat (limited to 'src/main/java/at/lorenz/mod/misc')
-rw-r--r--src/main/java/at/lorenz/mod/misc/ButtonOnPause.kt5
-rw-r--r--src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt5
-rw-r--r--src/main/java/at/lorenz/mod/misc/ExpBottleOnGroundHider.kt2
-rw-r--r--src/main/java/at/lorenz/mod/misc/HypixelData.kt76
4 files changed, 88 insertions, 0 deletions
diff --git a/src/main/java/at/lorenz/mod/misc/ButtonOnPause.kt b/src/main/java/at/lorenz/mod/misc/ButtonOnPause.kt
index 9fe540ae9..c15ce4a44 100644
--- a/src/main/java/at/lorenz/mod/misc/ButtonOnPause.kt
+++ b/src/main/java/at/lorenz/mod/misc/ButtonOnPause.kt
@@ -1,6 +1,7 @@
package at.lorenz.mod.misc
import at.lorenz.mod.LorenzMod
+import at.lorenz.mod.utils.LorenzUtils
import com.thatgravyboat.skyblockhud_2.config.SBHConfigEditor
import com.thatgravyboat.skyblockhud_2.core.GuiScreenElementWrapper
import net.minecraft.client.gui.GuiButton
@@ -13,6 +14,8 @@ class ButtonOnPause {
@SubscribeEvent
fun onGuiAction(event: GuiScreenEvent.ActionPerformedEvent.Post) {
+ if (!LorenzUtils.isOnHypixel) return
+
if (LorenzMod.feature.misc.configButtonOnPause && event.gui is GuiIngameMenu && event.button.id == buttonId) {
LorenzMod.screenToOpen = GuiScreenElementWrapper(SBHConfigEditor(LorenzMod.feature))
}
@@ -20,6 +23,8 @@ class ButtonOnPause {
@SubscribeEvent
fun onGuiInitPost(event: GuiScreenEvent.InitGuiEvent.Post) {
+ if (!LorenzUtils.isOnHypixel) return
+
if (LorenzMod.feature.misc.configButtonOnPause && event.gui is GuiIngameMenu) {
val x = event.gui.width - 105
val x2 = x + 100
diff --git a/src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt b/src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt
index 9159dc3cc..dcbbc1259 100644
--- a/src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt
+++ b/src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt
@@ -3,6 +3,7 @@ package at.lorenz.mod.misc
import at.lorenz.mod.LorenzMod
import at.lorenz.mod.events.LorenzChatEvent
import at.lorenz.mod.utils.GuiRender.renderString
+import at.lorenz.mod.utils.LorenzUtils
import at.lorenz.mod.utils.LorenzUtils.between
import at.lorenz.mod.utils.LorenzUtils.matchRegex
import net.minecraftforge.client.event.RenderGameOverlayEvent
@@ -16,6 +17,8 @@ class CurrentPetDisplay {
@SubscribeEvent
fun onChatMessage(event: LorenzChatEvent) {
+ if (!LorenzUtils.inSkyblock) return
+
var blocked = false
val message = event.message
@@ -40,6 +43,8 @@ class CurrentPetDisplay {
@SubscribeEvent
fun renderOverlay(event: RenderGameOverlayEvent.Post) {
+ if (!LorenzUtils.inSkyblock) return
+
if (!LorenzMod.feature.misc.petDisplay) return
if (currentPet == "") return
diff --git a/src/main/java/at/lorenz/mod/misc/ExpBottleOnGroundHider.kt b/src/main/java/at/lorenz/mod/misc/ExpBottleOnGroundHider.kt
index a82e22dc8..6b263cdd9 100644
--- a/src/main/java/at/lorenz/mod/misc/ExpBottleOnGroundHider.kt
+++ b/src/main/java/at/lorenz/mod/misc/ExpBottleOnGroundHider.kt
@@ -2,12 +2,14 @@ package at.lorenz.mod.misc
import at.lorenz.mod.LorenzMod
import at.lorenz.mod.events.CheckRenderEntityEvent
+import at.lorenz.mod.utils.LorenzUtils
import net.minecraft.entity.item.EntityXPOrb
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class ExpBottleOnGroundHider {
@SubscribeEvent
fun onCheckRender(event: CheckRenderEntityEvent<*>) {
+ if (!LorenzUtils.inSkyblock) return
if (!LorenzMod.feature.misc.hideExpBottles) return
if (event.entity is EntityXPOrb) {
diff --git a/src/main/java/at/lorenz/mod/misc/HypixelData.kt b/src/main/java/at/lorenz/mod/misc/HypixelData.kt
new file mode 100644
index 000000000..01db59312
--- /dev/null
+++ b/src/main/java/at/lorenz/mod/misc/HypixelData.kt
@@ -0,0 +1,76 @@
+package at.lorenz.mod.misc
+
+import at.lorenz.mod.events.PacketEvent
+import at.lorenz.mod.utils.LorenzUtils
+import net.minecraft.client.Minecraft
+import net.minecraft.network.play.server.S38PacketPlayerListItem
+import net.minecraft.network.play.server.S3DPacketDisplayScoreboard
+import net.minecraftforge.event.world.WorldEvent
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.network.FMLNetworkEvent
+
+class HypixelData {
+
+ companion object {
+ var hypixel = false
+ var skyblock = false
+ var dungeon = false
+}
+
+ @SubscribeEvent
+ fun onConnect(event: FMLNetworkEvent.ClientConnectedToServerEvent) {
+ hypixel = Minecraft.getMinecraft().runCatching {
+ !event.isLocal && (thePlayer?.clientBrand?.lowercase()?.contains("hypixel")
+ ?: currentServerData?.serverIP?.lowercase()?.contains("hypixel") ?: false)
+ }.onFailure { it.printStackTrace() }.getOrDefault(false)
+ LorenzUtils.debug("connected to hypixel!")
+ if (hypixel) {
+ LorenzUtils.debug("connected to hypixel!")
+ }
+ }
+
+ @SubscribeEvent
+ fun onScoreboardChange(event: PacketEvent.ReceiveEvent) {
+ if (!hypixel || skyblock || event.packet !is S3DPacketDisplayScoreboard) return
+ if (event.packet.func_149371_c() != 1) return
+ skyblock = event.packet.func_149370_d() == "SBScoreboard"
+ if (skyblock) {
+ LorenzUtils.debug("joined on skyblock!")
+ }
+ }
+
+ val areaRegex = Regex("§r§b§l(?<area>[\\w]+): §r§7(?<loc>[\\w ]+)§r")
+
+ @SubscribeEvent
+ fun onTabUpdate(event: PacketEvent.ReceiveEvent) {
+ if (dungeon || !hypixel || event.packet !is S38PacketPlayerListItem ||
+ (event.packet.action != S38PacketPlayerListItem.Action.UPDATE_DISPLAY_NAME &&
+ event.packet.action != S38PacketPlayerListItem.Action.ADD_PLAYER)
+ ) return
+ event.packet.entries.forEach { playerData ->
+ val name = playerData?.displayName?.formattedText ?: playerData?.profile?.name ?: return@forEach
+ areaRegex.matchEntire(name)?.let { result ->
+ dungeon = skyblock && result.groups["area"]?.value == "Dungeon"
+ if (dungeon) {
+ LorenzUtils.debug("entered a dungeon!")
+ }
+ return@forEach
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onWorldChange(event: WorldEvent.Load) {
+ skyblock = false
+ dungeon = false
+ LorenzUtils.debug("onWorldChange")
+ }
+
+ @SubscribeEvent
+ fun onDisconnect(event: FMLNetworkEvent.ClientDisconnectionFromServerEvent) {
+ hypixel = false
+ skyblock = false
+ dungeon = false
+ LorenzUtils.debug("ClientDisconnection")
+ }
+} \ No newline at end of file