Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 5799c6d

Browse files
committed
overhaul/fix hypixel status info gathering
- it'll still be broken, but less.
1 parent ff6d5dd commit 5799c6d

File tree

22 files changed

+169
-255
lines changed

22 files changed

+169
-255
lines changed

1.16_combat-6/src/main/java/io/github/axolotlclient/api/StatusUpdateProviderImpl.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,6 @@
2828
import com.google.gson.JsonObject;
2929
import io.github.axolotlclient.api.requests.StatusUpdate;
3030
import io.github.axolotlclient.api.util.StatusUpdateProvider;
31-
import io.github.axolotlclient.modules.hypixel.HypixelGameType;
32-
import io.github.axolotlclient.modules.hypixel.HypixelLocation;
33-
import io.github.axolotlclient.util.GsonHelper;
34-
import io.github.axolotlclient.util.events.Events;
3531
import net.minecraft.client.MinecraftClient;
3632
import net.minecraft.client.gui.screen.Screen;
3733
import net.minecraft.client.gui.screen.TitleScreen;
@@ -42,8 +38,7 @@ public class StatusUpdateProviderImpl implements StatusUpdateProvider {
4238

4339
@Override
4440
public void initialize() {
45-
Events.RECEIVE_CHAT_MESSAGE_EVENT.register(event ->
46-
event.setCancelled(HypixelLocation.waitingForResponse(event.getOriginalMessage())));
41+
4742
}
4843

4944
@Override
@@ -55,18 +50,7 @@ public Request getStatus() {
5550
Optional<StatusUpdate.SupportedServer> optional = Arrays.stream(StatusUpdate.SupportedServer.values()).filter(s -> s.getAddress().matcher(entry.address).matches()).findFirst();
5651
if (optional.isPresent()) {
5752
StatusUpdate.SupportedServer server = optional.get();
58-
if (server.equals(StatusUpdate.SupportedServer.HYPIXEL)) {
59-
JsonObject object = HypixelLocation.get().thenApply(GsonHelper::fromJson).join();
60-
String gameType;
61-
if (object.has("gametype")) {
62-
gameType = HypixelGameType.valueOf(object.get("gametype").getAsString()).getName();
63-
} else {
64-
gameType = object.get("server").getAsString();
65-
}
66-
String gameMode = getOrEmpty(object, "mode");
67-
String map = getOrEmpty(object, "map");
68-
return StatusUpdate.inGame(server, gameType, gameMode, map);
69-
}
53+
7054
}
7155
}
7256
return StatusUpdate.inGameUnknown(entry.name);

1.20/build.gradle.kts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,6 @@ loom {
2020
}
2121

2222
repositories {
23-
maven("https://api.modrinth.com/maven") {
24-
content {
25-
includeGroup("maven.modrinth")
26-
}
27-
}
2823
maven("https://maven.noxcrew.com/public")
2924
maven("https://maven.enginehub.org/repo/")
3025
}
@@ -62,6 +57,9 @@ dependencies {
6257
modCompileOnly("maven.modrinth:noxesium:$noxesiumVersion")
6358
//modImplementation("com.noxcrew.noxesium:api:$noxesiumVersion")
6459
//localRuntime("org.khelekore:prtree:1.5")
60+
61+
implementation("net.hypixel:mod-api:1.0.1")
62+
include(modImplementation("io.github.moehreag.hypixel:mod-api-fabric:1.0.1+build.1+mc1.20.1")!!)
6563
}
6664

6765
tasks.processResources {

1.20/src/main/java/io/github/axolotlclient/api/StatusUpdateProviderImpl.java

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,8 @@
2828
import com.google.gson.JsonObject;
2929
import io.github.axolotlclient.api.requests.StatusUpdate;
3030
import io.github.axolotlclient.api.util.StatusUpdateProvider;
31-
import io.github.axolotlclient.modules.hypixel.HypixelGameType;
32-
import io.github.axolotlclient.modules.hypixel.HypixelLocation;
31+
import io.github.axolotlclient.modules.hypixel.HypixelMods;
3332
import io.github.axolotlclient.modules.mcci.MccIslandMods;
34-
import io.github.axolotlclient.util.GsonHelper;
35-
import io.github.axolotlclient.util.events.Events;
3633
import net.minecraft.client.MinecraftClient;
3734
import net.minecraft.client.gui.screen.Screen;
3835
import net.minecraft.client.gui.screen.TitleScreen;
@@ -43,8 +40,7 @@ public class StatusUpdateProviderImpl implements StatusUpdateProvider {
4340

4441
@Override
4542
public void initialize() {
46-
Events.RECEIVE_CHAT_MESSAGE_EVENT.register(event ->
47-
event.setCancelled(HypixelLocation.waitingForResponse(event.getOriginalMessage())));
43+
4844
}
4945

5046
@Override
@@ -57,16 +53,7 @@ public Request getStatus() {
5753
if (optional.isPresent()) {
5854
StatusUpdate.SupportedServer server = optional.get();
5955
if (server.equals(StatusUpdate.SupportedServer.HYPIXEL)) {
60-
JsonObject object = HypixelLocation.get().thenApply(GsonHelper::fromJson).join();
61-
String gameType;
62-
if (object.has("gametype")) {
63-
gameType = HypixelGameType.valueOf(object.get("gametype").getAsString()).getName();
64-
} else {
65-
gameType = object.get("server").getAsString();
66-
}
67-
String gameMode = getOrEmpty(object, "mode");
68-
String map = getOrEmpty(object, "map");
69-
return StatusUpdate.inGame(server, gameType, gameMode, map);
56+
return HypixelMods.getInstance().getStatus();
7057
} else if (server.equals(StatusUpdate.SupportedServer.MCC_ISLAND)) {
7158
return MccIslandMods.getInstance().getMccIStatus();
7259
}

1.16_combat-6/src/main/java/io/github/axolotlclient/modules/hypixel/HypixelLocation.java renamed to 1.20/src/main/java/io/github/axolotlclient/modules/hypixel/HypixelModApi.java

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,24 @@
2222

2323
package io.github.axolotlclient.modules.hypixel;
2424

25-
import java.util.concurrent.CompletableFuture;
25+
import io.github.axolotlclient.api.Request;
26+
import io.github.axolotlclient.api.requests.StatusUpdate;
27+
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
28+
import net.hypixel.data.type.ServerType;
29+
import net.hypixel.modapi.HypixelModAPI;
30+
import net.hypixel.modapi.packet.impl.clientbound.event.ClientboundLocationPacket;
2631

27-
import io.github.axolotlclient.util.Util;
2832

29-
public class HypixelLocation {
33+
public class HypixelModApi {
34+
private ClientboundLocationPacket current;
3035

31-
private static CompletableFuture<String> consumer;
32-
33-
public static CompletableFuture<String> get() {
34-
Util.sendChatMessage("/locraw");
35-
consumer = new CompletableFuture<>();
36-
return consumer;
36+
public void init() {
37+
HypixelModAPI.getInstance().createHandler(ClientboundLocationPacket.class, packet -> current = packet);
38+
ClientPlayConnectionEvents.INIT.register((handler, client) -> HypixelModAPI.getInstance().subscribeToEventPacket(ClientboundLocationPacket.class));
3739
}
3840

39-
public static boolean waitingForResponse(String message) {
40-
boolean consume = consumer != null && message.startsWith("{") && message.endsWith("}") && message.contains("server");
41-
if (consume) {
42-
consumer.complete(message);
43-
consumer = null;
44-
}
45-
return consume;
41+
public Request getStatus() {
42+
if (current == null) return null;
43+
return StatusUpdate.inGame(StatusUpdate.SupportedServer.HYPIXEL, current.getServerType().map(ServerType::getName).orElse(""), current.getMode().orElse(""), current.getMap().orElse(""));
4644
}
4745
}

1.20/src/main/java/io/github/axolotlclient/modules/hypixel/HypixelMods.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.github.axolotlclient.AxolotlClientConfig.api.options.OptionCategory;
3030
import io.github.axolotlclient.AxolotlClientConfig.impl.options.BooleanOption;
3131
import io.github.axolotlclient.AxolotlClientConfig.impl.options.EnumOption;
32+
import io.github.axolotlclient.api.Request;
3233
import io.github.axolotlclient.modules.AbstractModule;
3334
import io.github.axolotlclient.modules.hypixel.autoboop.AutoBoop;
3435
import io.github.axolotlclient.modules.hypixel.autogg.AutoGG;
@@ -51,6 +52,8 @@ public class HypixelMods extends AbstractModule {
5152
private final List<AbstractHypixelMod> subModules = new ArrayList<>();
5253
private final BooleanOption removeLobbyJoinMessages = new BooleanOption("removeLobbyJoinMessages", false);
5354

55+
private final HypixelModApi modApi = new HypixelModApi();
56+
5457
public static HypixelMods getInstance() {
5558
return INSTANCE;
5659
}
@@ -78,6 +81,8 @@ public void init() {
7881
AutoBoop.getInstance().handleMessage(event.getOriginalMessage());
7982
HypixelMessages.getInstance().process(removeLobbyJoinMessages, "lobby_join", event);
8083
});
84+
85+
modApi.init();
8186
}
8287

8388
public void tick() {
@@ -95,4 +100,8 @@ private void addSubModule(AbstractHypixelMod mod) {
95100
public enum HypixelCacheMode {
96101
ON_CLIENT_DISCONNECT, ON_PLAYER_DISCONNECT
97102
}
103+
104+
public Request getStatus() {
105+
return modApi.getStatus();
106+
}
98107
}

1.21.4/build.gradle.kts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ loom {
2424
repositories {
2525
maven("https://maven.noxcrew.com/public")
2626
maven("https://maven.enginehub.org/repo/")
27-
maven("https://api.modrinth.com/maven") {
28-
content {
29-
includeGroup("maven.modrinth")
30-
}
31-
}
3227
}
3328

3429
dependencies {
@@ -37,7 +32,7 @@ dependencies {
3732
officialMojangMappings {
3833
nameSyntheticMembers = true
3934
}
40-
parchment("org.parchmentmc.data:parchment-1.21.4:2024.12.07@zip")
35+
parchment("org.parchmentmc.data:parchment-1.21.4:2024.12.22@zip")
4136
})
4237

4338
modImplementation("net.fabricmc:fabric-loader:${project.property("fabric_loader")}")
@@ -71,6 +66,9 @@ dependencies {
7166
modCompileOnly("maven.modrinth:noxesium:$noxesiumVersion")
7267
//modImplementation("com.noxcrew.noxesium:api:$noxesiumVersion")
7368
//localRuntime("org.khelekore:prtree:1.5")
69+
70+
implementation("net.hypixel:mod-api:1.0.1")
71+
include(modImplementation("maven.modrinth:hypixel-mod-api:1.0.1+build.1+mc1.21")!!)
7472
}
7573

7674
tasks.processResources {

1.21.4/src/main/java/io/github/axolotlclient/api/StatusUpdateProviderImpl.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,8 @@
2929
import io.github.axolotlclient.api.requests.StatusUpdate;
3030
import io.github.axolotlclient.api.util.StatusUpdateProvider;
3131
import io.github.axolotlclient.api.worldhost.WorldHostStatusProvider;
32-
import io.github.axolotlclient.modules.hypixel.HypixelGameType;
33-
import io.github.axolotlclient.modules.hypixel.HypixelLocation;
32+
import io.github.axolotlclient.modules.hypixel.HypixelMods;
3433
import io.github.axolotlclient.modules.mcci.MccIslandMods;
35-
import io.github.axolotlclient.util.GsonHelper;
36-
import io.github.axolotlclient.util.events.Events;
3734
import net.minecraft.client.Minecraft;
3835
import net.minecraft.client.gui.screens.Screen;
3936
import net.minecraft.client.gui.screens.TitleScreen;
@@ -44,8 +41,6 @@ public class StatusUpdateProviderImpl implements StatusUpdateProvider {
4441

4542
@Override
4643
public void initialize() {
47-
Events.RECEIVE_CHAT_MESSAGE_EVENT.register(
48-
event -> event.setCancelled(HypixelLocation.waitingForResponse(event.getOriginalMessage())));
4944
}
5045

5146
@Override
@@ -60,16 +55,7 @@ public Request getStatus() {
6055
if (optional.isPresent()) {
6156
StatusUpdate.SupportedServer server = optional.get();
6257
if (server.equals(StatusUpdate.SupportedServer.HYPIXEL)) {
63-
JsonObject object = HypixelLocation.get().thenApply(GsonHelper::fromJson).join();
64-
String gameType;
65-
if (object.has("gametype")) {
66-
gameType = HypixelGameType.valueOf(object.get("gametype").getAsString()).getName();
67-
} else {
68-
gameType = object.get("server").getAsString();
69-
}
70-
String gameMode = getOrEmpty(object, "mode");
71-
String map = getOrEmpty(object, "map");
72-
return StatusUpdate.inGame(server, gameType, gameMode, map);
58+
return HypixelMods.getInstance().getStatus();
7359
} else if (server.equals(StatusUpdate.SupportedServer.MCC_ISLAND)) {
7460
return MccIslandMods.getInstance().getMccIStatus();
7561
}

1.21.4/src/main/java/io/github/axolotlclient/modules/hypixel/HypixelLocation.java renamed to 1.21.4/src/main/java/io/github/axolotlclient/modules/hypixel/HypixelModApi.java

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,24 @@
2222

2323
package io.github.axolotlclient.modules.hypixel;
2424

25-
import java.util.concurrent.CompletableFuture;
25+
import io.github.axolotlclient.api.Request;
26+
import io.github.axolotlclient.api.requests.StatusUpdate;
27+
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
28+
import net.hypixel.data.type.ServerType;
29+
import net.hypixel.modapi.HypixelModAPI;
30+
import net.hypixel.modapi.packet.impl.clientbound.event.ClientboundLocationPacket;
2631

27-
import io.github.axolotlclient.util.Util;
2832

29-
public class HypixelLocation {
33+
public class HypixelModApi {
34+
private ClientboundLocationPacket current;
3035

31-
private static CompletableFuture<String> consumer;
32-
33-
public static CompletableFuture<String> get() {
34-
Util.sendChatMessage("/locraw");
35-
consumer = new CompletableFuture<>();
36-
return consumer;
36+
public void init() {
37+
HypixelModAPI.getInstance().createHandler(ClientboundLocationPacket.class, packet -> current = packet);
38+
ClientPlayConnectionEvents.INIT.register((handler, client) -> HypixelModAPI.getInstance().subscribeToEventPacket(ClientboundLocationPacket.class));
3739
}
3840

39-
public static boolean waitingForResponse(String message) {
40-
boolean consume = consumer != null && message.startsWith("{") && message.endsWith("}") && message.contains("server");
41-
if (consume) {
42-
consumer.complete(message);
43-
consumer = null;
44-
}
45-
return consume;
41+
public Request getStatus() {
42+
if (current == null) return null;
43+
return StatusUpdate.inGame(StatusUpdate.SupportedServer.HYPIXEL, current.getServerType().map(ServerType::getName).orElse(""), current.getMode().orElse(""), current.getMap().orElse(""));
4644
}
4745
}

1.21.4/src/main/java/io/github/axolotlclient/modules/hypixel/HypixelMods.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.github.axolotlclient.AxolotlClientConfig.api.options.OptionCategory;
3030
import io.github.axolotlclient.AxolotlClientConfig.impl.options.BooleanOption;
3131
import io.github.axolotlclient.AxolotlClientConfig.impl.options.EnumOption;
32+
import io.github.axolotlclient.api.Request;
3233
import io.github.axolotlclient.modules.AbstractModule;
3334
import io.github.axolotlclient.modules.hypixel.autoboop.AutoBoop;
3435
import io.github.axolotlclient.modules.hypixel.autogg.AutoGG;
@@ -51,6 +52,8 @@ public class HypixelMods extends AbstractModule {
5152
private final List<AbstractHypixelMod> subModules = new ArrayList<>();
5253
private final BooleanOption removeLobbyJoinMessages = new BooleanOption("removeLobbyJoinMessages", false);
5354

55+
private final HypixelModApi modApi = new HypixelModApi();
56+
5457
public static HypixelMods getInstance() {
5558
return INSTANCE;
5659
}
@@ -78,6 +81,8 @@ public void init() {
7881
AutoBoop.getInstance().handleMessage(event.getOriginalMessage());
7982
HypixelMessages.getInstance().process(removeLobbyJoinMessages, "lobby_join", event);
8083
});
84+
85+
modApi.init();
8186
}
8287

8388
public void tick() {
@@ -94,4 +99,8 @@ private void addSubModule(AbstractHypixelMod mod) {
9499
public enum HypixelCacheMode {
95100
ON_CLIENT_DISCONNECT, ON_PLAYER_DISCONNECT
96101
}
102+
103+
public Request getStatus() {
104+
return modApi.getStatus();
105+
}
97106
}

1.21/build.gradle.kts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,6 @@ loom {
1919
}
2020
}
2121

22-
repositories {
23-
maven("https://api.modrinth.com/maven") {
24-
content {
25-
includeGroup("maven.modrinth")
26-
}
27-
}
28-
}
29-
3022
dependencies {
3123
minecraft("com.mojang:minecraft:${project.property("minecraft_121")}")
3224
mappings("org.quiltmc:quilt-mappings:${project.property("mappings_121")}:intermediary-v2")
@@ -64,6 +56,9 @@ dependencies {
6456
modCompileOnly("maven.modrinth:noxesium:$noxesiumVersion")
6557
//modImplementation("com.noxcrew.noxesium:api:$noxesiumVersion")
6658
//localRuntime("org.khelekore:prtree:1.5")
59+
60+
implementation("net.hypixel:mod-api:1.0.1")
61+
include(modImplementation("maven.modrinth:hypixel-mod-api:1.0.1+build.1+mc1.21")!!)
6762
}
6863

6964
tasks.processResources {

0 commit comments

Comments
 (0)