From 7e697af5ffc9a962ebcd208e55e69677ba146c9f Mon Sep 17 00:00:00 2001 From: My-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:06:49 -0500 Subject: [PATCH] feat: Use WS for Jerry data --- .../features/impl/handlers/MayorInfo.kt | 24 ++++--------------- .../skytils/skytilsws/client/PacketHandler.kt | 8 +++++++ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/gg/skytils/skytilsmod/features/impl/handlers/MayorInfo.kt b/src/main/kotlin/gg/skytils/skytilsmod/features/impl/handlers/MayorInfo.kt index d97bbcc21..a10ec10dc 100644 --- a/src/main/kotlin/gg/skytils/skytilsmod/features/impl/handlers/MayorInfo.kt +++ b/src/main/kotlin/gg/skytils/skytilsmod/features/impl/handlers/MayorInfo.kt @@ -26,6 +26,8 @@ import gg.skytils.skytilsmod.core.SoundQueue import gg.skytils.skytilsmod.core.tickTimer import gg.skytils.skytilsmod.events.impl.GuiContainerEvent import gg.skytils.skytilsmod.utils.* +import gg.skytils.skytilsws.client.WSClient +import gg.skytils.skytilsws.shared.packet.C2SPacketJerryVote import io.ktor.client.call.* import io.ktor.client.request.* import io.ktor.client.statement.* @@ -154,13 +156,7 @@ object MayorInfo { } } - fun fetchJerryData() = Skytils.IO.launch { - val res = client.get("https://${Skytils.domain}/api/mayor/jerry").body() - tickTimer(1) { - newJerryPerks = res.nextSwitch - jerryMayor = res.mayor - } - } + fun fetchJerryData() = {} // no-op fun sendJerryData(mayor: Mayor?, nextSwitch: Long) = Skytils.IO.launch { if (mayor == null || nextSwitch <= System.currentTimeMillis()) return@launch @@ -168,19 +164,7 @@ object MayorInfo { println("Client's time isn't trusted, skip sending jerry data.") return@launch } - try { - val serverId = UUID.randomUUID().toString().replace("-".toRegex(), "") - val commentForDecompilers = - "This sends a request to Mojang's auth server, used for verification. This is how we verify you are the real user without your session details. This is the exact same system Optifine uses." - mc.sessionService.joinServer(mc.session.profile, mc.session.token, serverId) - val url = - "https://${Skytils.domain}/api/mayor/jerry/perks?username=${mc.session.username}&serverId=${serverId}&nextPerks=${nextSwitch}&mayor=${mayor.name}&currTime=${System.currentTimeMillis()}" - println(client.get(url).bodyAsText()) - } catch (e: AuthenticationException) { - e.printStackTrace() - } catch (e: IOException) { - e.printStackTrace() - } + WSClient.sendPacket(C2SPacketJerryVote(mayor.name, nextSwitch, System.currentTimeMillis())) } } diff --git a/src/main/kotlin/gg/skytils/skytilsws/client/PacketHandler.kt b/src/main/kotlin/gg/skytils/skytilsws/client/PacketHandler.kt index 84cca9741..929342ccc 100644 --- a/src/main/kotlin/gg/skytils/skytilsws/client/PacketHandler.kt +++ b/src/main/kotlin/gg/skytils/skytilsws/client/PacketHandler.kt @@ -27,6 +27,7 @@ import gg.skytils.skytilsmod.features.impl.dungeons.catlas.core.map.Room import gg.skytils.skytilsmod.features.impl.dungeons.catlas.core.map.Unknown import gg.skytils.skytilsmod.features.impl.dungeons.catlas.handlers.DungeonInfo import gg.skytils.skytilsmod.features.impl.dungeons.catlas.utils.ScanUtils +import gg.skytils.skytilsmod.features.impl.handlers.MayorInfo import gg.skytils.skytilsmod.features.impl.mining.CHWaypoints import gg.skytils.skytilsmod.features.impl.mining.CHWaypoints.CHInstance import gg.skytils.skytilsmod.features.impl.mining.CHWaypoints.chWaypointsList @@ -101,6 +102,13 @@ object PacketHandler : IPacketHandler { instance.waypoints[packet.type] = BlockPos(packet.x, packet.y, packet.z) } } + is S2CPacketJerryMayor -> { + MayorInfo.jerryMayor = MayorInfo.mayorData.find { it.name == packet.mayor } + MayorInfo.newJerryPerks = packet.endTime + if (MayorInfo.currentMayor != "Jerry") { + MayorInfo.fetchMayorData() + } + } else -> { session.close(CloseReason(CloseReason.Codes.CANNOT_ACCEPT, "Unknown packet type")) }