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

Commit d52de28

Browse files
committed
loads of fixed bugs, activity updates, general code cleanup + minor performance considerations
1 parent c112486 commit d52de28

File tree

44 files changed

+343
-420
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+343
-420
lines changed

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,17 @@ public void render(MatrixStack graphics, int mouseX, int mouseY, float delta) {
7575
if (parent != null) {
7676
parent.render(graphics, mouseX, mouseY, delta);
7777
}
78+
graphics.push();
79+
graphics.translate(0, 0, 1000);
7880
fill(graphics, sidebarAnimX, 0, sidebarWidth + sidebarAnimX, height, 0x99000000);
7981

8082
textRenderer.drawWithShadow(graphics, I18n.translate("api.chats"), 10 + sidebarAnimX, 10, -1);
8183

8284
if (hasChat) {
8385
fill(graphics, 70 + sidebarAnimX, 0, 70 + sidebarAnimX + 1, height, 0xFF000000);
8486
textRenderer.drawWithShadow(graphics, channel.getName(), sidebarAnimX + 75, 20, -1);
85-
if (channel.isDM()) {
86-
textRenderer.drawWithShadow(graphics, Formatting.ITALIC + ((Channel.DM) channel).getReceiver().getStatus().getTitle() + ":" + ((Channel.DM) channel).getReceiver().getStatus().getDescription(),
87+
if (channel.isDM() && ((Channel.DM) channel).getReceiver().getStatus().isOnline()) {
88+
textRenderer.drawWithShadow(graphics, Formatting.ITALIC + I18n.translate(((Channel.DM) channel).getReceiver().getStatus().getTitle()) + ":" + I18n.translate(((Channel.DM) channel).getReceiver().getStatus().getDescription()),
8789
sidebarAnimX + 80, 30, 8421504);
8890
}
8991
chatWidget.render(graphics, mouseX, mouseY, delta);
@@ -93,6 +95,7 @@ public void render(MatrixStack graphics, int mouseX, int mouseY, float delta) {
9395

9496
contextMenu.render(graphics, mouseX, mouseY, delta);
9597
animate();
98+
graphics.pop();
9699
}
97100

98101
@Override
@@ -200,17 +203,20 @@ private void removeChat() {
200203
}
201204

202205
private void addChat(Channel channel) {
206+
if (hasChat) {
207+
removeChat();
208+
}
203209
hasChat = true;
204210
this.channel = channel;
205211
int w;
206212
if (channel.isDM()) {
207213
User chatUser = ((Channel.DM) channel).getReceiver();
208-
w = Math.max(client.textRenderer.getWidth(chatUser.getStatus().getTitle() + ":" + chatUser.getStatus().getDescription()),
214+
w = Math.max(client.textRenderer.getWidth(I18n.translate(chatUser.getStatus().getTitle()) + ":" + I18n.translate(chatUser.getStatus().getDescription())),
209215
client.textRenderer.getWidth(channel.getName()));
210216
} else {
211217
w = client.textRenderer.getWidth(channel.getName());
212218
}
213-
sidebarWidth = Math.max(width * 5 / 12, w + 5);
219+
sidebarWidth = Math.min(Math.max(width * 5 / 12, w + 5), width/2);
214220
chatWidget = new ChatWidget(channel, 75, 50, sidebarWidth - 80, height - 100, this);
215221
addChild(chatWidget);
216222
addButton(input = new TextFieldWidget(textRenderer, 75, height - 30, sidebarWidth - 80, 20, new TranslatableText("api.friends.chat.input")) {

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

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@
2222

2323
package io.github.axolotlclient.api;
2424

25-
import java.time.Instant;
2625
import java.util.Arrays;
2726
import java.util.Optional;
28-
import java.util.concurrent.atomic.AtomicReference;
2927

3028
import com.google.gson.JsonObject;
3129
import io.github.axolotlclient.api.requests.StatusUpdate;
@@ -36,15 +34,12 @@
3634
import net.minecraft.client.MinecraftClient;
3735
import net.minecraft.client.gui.screen.Screen;
3836
import net.minecraft.client.gui.screen.TitleScreen;
37+
import net.minecraft.client.gui.screen.ingame.HandledScreen;
3938
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
40-
import net.minecraft.client.network.PlayerListEntry;
4139
import net.minecraft.client.network.ServerInfo;
42-
import net.minecraft.entity.player.PlayerEntity;
4340

4441
public class StatusUpdateProviderImpl implements StatusUpdateProvider {
4542

46-
private final Instant time = Instant.now();
47-
4843
@Override
4944
public void initialize() {
5045
Events.RECEIVE_CHAT_MESSAGE_EVENT.register(event ->
@@ -59,7 +54,7 @@ public Request getStatus() {
5954
return StatusUpdate.online(StatusUpdate.MenuId.MAIN_MENU);
6055
} else if (current instanceof MultiplayerScreen) {
6156
return StatusUpdate.online(StatusUpdate.MenuId.SERVER_LIST);
62-
} else if (current != null) {
57+
} else if (!(current instanceof HandledScreen<?>)) {
6358
return StatusUpdate.online(StatusUpdate.MenuId.SETTINGS);
6459
}
6560

@@ -71,9 +66,7 @@ public Request getStatus() {
7166
if (optional.isPresent()) {
7267
StatusUpdate.SupportedServer server = optional.get();
7368
if (server.equals(StatusUpdate.SupportedServer.HYPIXEL)) {
74-
AtomicReference<JsonObject> loc = new AtomicReference<>();
75-
HypixelLocation.get(s -> loc.set(GsonHelper.GSON.fromJson(s, JsonObject.class)));
76-
JsonObject object = loc.get();
69+
JsonObject object = HypixelLocation.get().thenApply(GsonHelper::fromJson).join();
7770
StatusUpdate.GameType gameType = StatusUpdate.GameType.valueOf(object.get("gametype").getAsString());
7871
String gameMode = getOrEmpty(object, "mode");
7972
String map = getOrEmpty(object, "map");
@@ -83,10 +76,9 @@ public Request getStatus() {
8376
}
8477
}
8578
}
86-
} else if (MinecraftClient.getInstance().player != null) {
87-
String gamemode = getGameMode(MinecraftClient.getInstance().player);
88-
return StatusUpdate.inGameUnknown(entry.address, "", entry.name, gamemode);
89-
79+
return StatusUpdate.inGameUnknown(entry.name);
80+
} else if (MinecraftClient.getInstance().getServer() != null) {
81+
return StatusUpdate.inGameUnknown(MinecraftClient.getInstance().getServer().getSaveProperties().getLevelName());
9082
}
9183

9284
return null;
@@ -95,18 +87,4 @@ public Request getStatus() {
9587
private String getOrEmpty(JsonObject object, String name) {
9688
return object.has(name) ? object.get(name).getAsString() : "";
9789
}
98-
99-
private String getGameMode(PlayerEntity entity) {
100-
PlayerListEntry entry = MinecraftClient.getInstance().getNetworkHandler().getPlayerListEntry(entity.getUuid());
101-
if (entry == null) {
102-
return "";
103-
}
104-
return switch (entry.getGameMode()) {
105-
case CREATIVE -> "Creative Mode";
106-
case SURVIVAL -> "Survival Mode";
107-
case SPECTATOR -> "Spectator Mode";
108-
case ADVENTURE -> "Adventure Mode";
109-
default -> "";
110-
};
111-
}
11290
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ protected void init() {
7676
int rightColY = 36 + 30;
7777

7878
var nameField = new TextFieldWidget(textRenderer, rightColX, rightColY, 150, 20, LiteralText.EMPTY);
79-
nameField.setText(channel.getName());
79+
nameField.setText(channel.getRealName());
8080
addButton(text("api.chat.groups.name", leftColX, leftColY));
8181
addButton(nameField);
8282
rightColY += rightColYStep;

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
import java.time.Instant;
2626
import java.time.ZoneId;
2727
import java.time.format.DateTimeFormatter;
28-
import java.util.*;
28+
import java.util.ArrayList;
29+
import java.util.Comparator;
30+
import java.util.List;
31+
import java.util.Objects;
2932

3033
import com.mojang.blaze3d.systems.RenderSystem;
3134
import io.github.axolotlclient.api.API;
@@ -62,7 +65,7 @@ public ChatWidget(Channel channel, int x, int y, int width, int height, ContextM
6265
this.screen = screen;
6366
this.width = width;
6467
this.height = height;
65-
Arrays.stream(channel.getMessages()).forEach(this::addMessage);
68+
channel.getMessages().forEach(this::addMessage);
6669

6770
ChatHandler.getInstance().setMessagesConsumer(chatMessages -> chatMessages.forEach(this::addMessage));
6871
ChatHandler.getInstance().setMessageConsumer(this::addMessage);

1.16_combat-6/src/main/java/io/github/axolotlclient/modules/auth/Auth.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,14 @@ protected void login(Account account) {
9191
return;
9292
}
9393

94-
Runnable runnable = () -> {
94+
if (account.needsRefresh() && !account.isOffline()) {
95+
if (account.isExpired()) {
96+
Notifications.getInstance().addStatus(new TranslatableText("auth.notif.title"), new TranslatableText("auth.notif.refreshing", account.getName()));
97+
}
98+
account.refresh(auth, () -> {
99+
getAccounts().stream().filter(a -> account.getUuid().equals(a.getUuid())).findFirst().ifPresent(this::login);
100+
});
101+
} else {
95102
try {
96103
API.getInstance().shutdown();
97104
((MinecraftClientAccessor) client).setSession(new Session(account.getName(), account.getUuid(), account.getAuthToken(), Session.AccountType.MOJANG.name()));
@@ -103,17 +110,6 @@ protected void login(Account account) {
103110
e.printStackTrace();
104111
Notifications.getInstance().addStatus(new TranslatableText("auth.notif.title"), new TranslatableText("auth.notif.login.failed"));
105112
}
106-
};
107-
108-
if (account.needsRefresh() && !account.isOffline()) {
109-
if (account.isExpired()) {
110-
Notifications.getInstance().addStatus(new TranslatableText("auth.notif.title"), new TranslatableText("auth.notif.refreshing", account.getName()));
111-
}
112-
account.refresh(auth, () -> {
113-
getAccounts().stream().filter(a -> account.getUuid().equals(a.getUuid())).findFirst().ifPresent(this::login);
114-
});
115-
} else {
116-
runnable.run();
117113
}
118114
}
119115

1.16_combat-6/src/main/java/io/github/axolotlclient/modules/hypixel/HypixelLocation.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,24 @@
2222

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

25-
import java.util.function.Consumer;
25+
import java.util.concurrent.CompletableFuture;
2626

2727
import io.github.axolotlclient.util.Util;
2828

2929
public class HypixelLocation {
3030

31-
private static boolean waiting;
32-
private static Consumer<String> consumer;
31+
private static CompletableFuture<String> consumer;
3332

34-
public static void get(Consumer<String> location) {
33+
public static CompletableFuture<String> get() {
3534
Util.sendChatMessage("/locraw");
36-
waiting = true;
37-
consumer = location;
35+
consumer = new CompletableFuture<>();
36+
return consumer;
3837
}
3938

4039
public static boolean waitingForResponse(String message) {
41-
boolean consume = waiting && message.startsWith("{") && message.endsWith("}") && message.contains("gameType") && consumer != null;
40+
boolean consume = consumer != null && message.startsWith("{") && message.endsWith("}") && message.contains("gameType");
4241
if (consume) {
43-
consumer.accept(message);
42+
consumer.complete(message);
4443
consumer = null;
4544
}
4645
return consume;

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import net.minecraft.client.gui.widget.ButtonWidget;
4040
import net.minecraft.client.gui.widget.ClickableWidget;
4141
import net.minecraft.client.gui.widget.TextFieldWidget;
42+
import net.minecraft.client.resource.language.I18n;
4243
import net.minecraft.text.CommonTexts;
4344
import net.minecraft.text.Text;
4445
import net.minecraft.util.Formatting;
@@ -70,22 +71,25 @@ public void render(GuiGraphics graphics, int mouseX, int mouseY, float delta) {
7071
if (parent != null) {
7172
parent.render(graphics, mouseX, mouseY, delta);
7273
}
74+
graphics.getMatrices().push();
75+
graphics.getMatrices().translate(0, 0, 1000);
7376
graphics.fill(sidebarAnimX, 0, sidebarWidth + sidebarAnimX, height, 0x99000000);
7477

7578
graphics.drawShadowedText(client.textRenderer, Text.translatable("api.chats"), 10 + sidebarAnimX, 10, -1);
7679

7780
if (hasChat) {
7881
graphics.fill(70 + sidebarAnimX, 0, 70 + sidebarAnimX + 1, height, 0xFF000000);
7982
graphics.drawShadowedText(client.textRenderer, channel.getName(), sidebarAnimX + 75, 20, -1);
80-
if (channel.isDM()) {
81-
graphics.drawShadowedText(client.textRenderer, Formatting.ITALIC + ((Channel.DM) channel).getReceiver().getStatus().getTitle() + ":" + ((Channel.DM) channel).getReceiver().getStatus().getDescription(),
83+
if (channel.isDM() && ((Channel.DM) channel).getReceiver().getStatus().isOnline()) {
84+
graphics.drawShadowedText(client.textRenderer, Formatting.ITALIC + I18n.translate(((Channel.DM) channel).getReceiver().getStatus().getTitle()) + ":" + I18n.translate(((Channel.DM) channel).getReceiver().getStatus().getDescription()),
8285
sidebarAnimX + 80, 30, 8421504);
8386
}
8487
}
8588

8689
super.render(graphics, mouseX, mouseY, delta);
8790

8891
animate();
92+
graphics.getMatrices().pop();
8993
}
9094

9195
@Override
@@ -186,17 +190,20 @@ private void removeChat() {
186190
}
187191

188192
private void addChat(Channel channel) {
193+
if (hasChat) {
194+
removeChat();
195+
}
189196
hasChat = true;
190197
this.channel = channel;
191198
int w;
192199
if (channel.isDM()) {
193200
User chatUser = ((Channel.DM) channel).getReceiver();
194-
w = Math.max(client.textRenderer.getWidth(chatUser.getStatus().getTitle() + ":" + chatUser.getStatus().getDescription()),
201+
w = Math.max(client.textRenderer.getWidth(I18n.translate(chatUser.getStatus().getTitle()) + ":" + I18n.translate(chatUser.getStatus().getDescription())),
195202
client.textRenderer.getWidth(channel.getName()));
196203
} else {
197204
w = client.textRenderer.getWidth(channel.getName());
198205
}
199-
sidebarWidth = Math.max(width * 5 / 12, w + 5);
206+
sidebarWidth = Math.min(Math.max(width * 5 / 12, w + 5), width/2);
200207
chatWidget = new ChatWidget(channel, 75, 50, sidebarWidth - 80, height - 100, this);
201208
addDrawableChild(chatWidget);
202209
addDrawableChild(input = new TextFieldWidget(textRenderer, 75, height - 30, sidebarWidth - 80, 20, Text.translatable("api.friends.chat.input")) {

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

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@
2222

2323
package io.github.axolotlclient.api;
2424

25-
import java.time.Instant;
2625
import java.util.Arrays;
2726
import java.util.Optional;
28-
import java.util.concurrent.atomic.AtomicReference;
2927

3028
import com.google.gson.JsonObject;
3129
import io.github.axolotlclient.api.requests.StatusUpdate;
@@ -36,15 +34,12 @@
3634
import net.minecraft.client.MinecraftClient;
3735
import net.minecraft.client.gui.screen.Screen;
3836
import net.minecraft.client.gui.screen.TitleScreen;
37+
import net.minecraft.client.gui.screen.ingame.HandledScreen;
3938
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
40-
import net.minecraft.client.network.PlayerListEntry;
4139
import net.minecraft.client.network.ServerInfo;
42-
import net.minecraft.entity.player.PlayerEntity;
4340

4441
public class StatusUpdateProviderImpl implements StatusUpdateProvider {
4542

46-
private final Instant time = Instant.now();
47-
4843
@Override
4944
public void initialize() {
5045
Events.RECEIVE_CHAT_MESSAGE_EVENT.register(event ->
@@ -59,7 +54,7 @@ public Request getStatus() {
5954
return StatusUpdate.online(StatusUpdate.MenuId.MAIN_MENU);
6055
} else if (current instanceof MultiplayerScreen) {
6156
return StatusUpdate.online(StatusUpdate.MenuId.SERVER_LIST);
62-
} else if (current != null) {
57+
} else if (!(current instanceof HandledScreen<?>)) {
6358
return StatusUpdate.online(StatusUpdate.MenuId.SETTINGS);
6459
}
6560

@@ -71,9 +66,7 @@ public Request getStatus() {
7166
if (optional.isPresent()) {
7267
StatusUpdate.SupportedServer server = optional.get();
7368
if (server.equals(StatusUpdate.SupportedServer.HYPIXEL)) {
74-
AtomicReference<JsonObject> loc = new AtomicReference<>();
75-
HypixelLocation.get(s -> loc.set(GsonHelper.GSON.fromJson(s, JsonObject.class)));
76-
JsonObject object = loc.get();
69+
JsonObject object = HypixelLocation.get().thenApply(GsonHelper::fromJson).join();
7770
StatusUpdate.GameType gameType = StatusUpdate.GameType.valueOf(object.get("gametype").getAsString());
7871
String gameMode = getOrEmpty(object, "mode");
7972
String map = getOrEmpty(object, "map");
@@ -83,29 +76,14 @@ public Request getStatus() {
8376
}
8477
}
8578
}
86-
} else if (MinecraftClient.getInstance().player != null) {
87-
String gamemode = getGameMode(MinecraftClient.getInstance().player);
88-
return StatusUpdate.inGameUnknown(entry.address, "", entry.name, gamemode);
89-
79+
return StatusUpdate.inGameUnknown(entry.name);
80+
} else if (MinecraftClient.getInstance().getServer() != null) {
81+
return StatusUpdate.inGameUnknown(MinecraftClient.getInstance().getServer().getSaveProperties().getWorldName());
9082
}
91-
9283
return null;
9384
}
9485

9586
private String getOrEmpty(JsonObject object, String name) {
9687
return object.has(name) ? object.get(name).getAsString() : "";
9788
}
98-
99-
private String getGameMode(PlayerEntity entity) {
100-
PlayerListEntry entry = MinecraftClient.getInstance().getNetworkHandler().getPlayerListEntry(entity.getUuid());
101-
if (entry == null) {
102-
return "";
103-
}
104-
return switch (entry.getGameMode()) {
105-
case CREATIVE -> "Creative Mode";
106-
case SURVIVAL -> "Survival Mode";
107-
case SPECTATOR -> "Spectator Mode";
108-
case ADVENTURE -> "Adventure Mode";
109-
};
110-
}
11189
}

1.20/src/main/java/io/github/axolotlclient/api/chat/ChannelSettingsScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ protected void init() {
6868
int rightColY = 36 + 30;
6969

7070
var nameField = new TextFieldWidget(textRenderer, rightColX, rightColY, 150, 20, Text.empty());
71-
nameField.setText(channel.getName());
71+
nameField.setText(channel.getRealName());
7272
addDrawableChild(text("api.chat.groups.name", leftColX, leftColY));
7373
addDrawableChild(nameField);
7474
rightColY += rightColYStep;

1.20/src/main/java/io/github/axolotlclient/api/chat/ChatWidget.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
import java.time.Instant;
2626
import java.time.ZoneId;
2727
import java.time.format.DateTimeFormatter;
28-
import java.util.*;
28+
import java.util.ArrayList;
29+
import java.util.Comparator;
30+
import java.util.List;
31+
import java.util.Objects;
2932

3033
import com.mojang.blaze3d.systems.RenderSystem;
3134
import io.github.axolotlclient.api.API;
@@ -61,7 +64,7 @@ public ChatWidget(Channel channel, int x, int y, int width, int height, ContextM
6164

6265
setRenderHeader(false, 0);
6366
this.screen = screen;
64-
Arrays.stream(channel.getMessages()).forEach(this::addMessage);
67+
channel.getMessages().forEach(this::addMessage);
6568

6669
ChatHandler.getInstance().setMessagesConsumer(chatMessages -> chatMessages.forEach(this::addMessage));
6770
ChatHandler.getInstance().setMessageConsumer(this::addMessage);

0 commit comments

Comments
 (0)