From 9cbce39d68c1c766e20819101fbb803ad05e8fdc Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 2 Apr 2023 14:58:42 +0200 Subject: Merging SkyHyTab into Skyblocker: Initial commit Needs cleanup --- .../skyblocker/mixin/PlayerListHudAccessor.java | 18 ++++++ .../skyblocker/mixin/PlayerListHudMixin.java | 70 ++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java new file mode 100644 index 00000000..e96e4ede --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java @@ -0,0 +1,18 @@ +package me.xmrvizzy.skyblocker.mixin; + +import java.util.Comparator; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.minecraft.client.gui.hud.PlayerListHud; +import net.minecraft.client.network.PlayerListEntry; + +@Mixin(PlayerListHud.class) +public interface PlayerListHudAccessor { + + @Accessor("ENTRY_ORDERING") + public static Comparator getOrdering() { + throw new AssertionError(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java new file mode 100644 index 00000000..36d4a375 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -0,0 +1,70 @@ +package me.xmrvizzy.skyblocker.mixin; + +import java.util.List; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; +import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.Screen; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.hud.PlayerListHud; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.scoreboard.Scoreboard; +import net.minecraft.scoreboard.ScoreboardObjective; +import net.minecraft.text.Text; + +@Environment(EnvType.CLIENT) +@Mixin(PlayerListHud.class) +public class PlayerListHudMixin { + + @Shadow + private Text footer; + + boolean ok = true; + @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/util/math/MatrixStack;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) + public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, CallbackInfo info) { + + if (!Utils.isOnSkyblock) { + return; + } + + if (TabHud.defaultTgl.isPressed()) { + return; + } + + MinecraftClient client = MinecraftClient.getInstance(); + ClientPlayNetworkHandler nwH = client.getNetworkHandler(); + if (nwH == null) { + return; + } + + List list = nwH.getListedPlayerListEntries().stream().sorted(PlayerListHudAccessor.getOrdering()).toList(); + int w = scaledW; + int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); + + try { + + Screen screen = Screen.getCorrect(w, h, list, footer); + if (screen != null) { + screen.render(ms); + info.cancel(); + } + } catch (Exception e) { + e.printStackTrace(); + SkyblockerConfig.get().general.tabHudEnabled = false; + MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has crashed due to some unexpected text, see log! :(")); + } + + } + +} -- cgit From 20ef6eaf4672fac2d98022f9f2368b3b83868ab0 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 8 Apr 2023 20:20:07 +0200 Subject: Cleanup unused things in the mixin, reword crashing text --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index 36d4a375..ca6c9b41 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -30,7 +30,6 @@ public class PlayerListHudMixin { @Shadow private Text footer; - boolean ok = true; @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/util/math/MatrixStack;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, CallbackInfo info) { @@ -61,8 +60,7 @@ public class PlayerListHudMixin { } } catch (Exception e) { e.printStackTrace(); - SkyblockerConfig.get().general.tabHudEnabled = false; - MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has crashed due to some unexpected text, see log! :(")); + MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); } } -- cgit From 763507b427d151c77a3c5a1b8dfe03f0a4a059e1 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 11:32:50 +0200 Subject: Minor refactoring --- .../me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index ca6c9b41..f4089f83 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -31,13 +31,12 @@ public class PlayerListHudMixin { private Text footer; @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/util/math/MatrixStack;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) - public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, CallbackInfo info) { + public void skyblocker$renderTabHud(MatrixStack ms, int scaledW, Scoreboard sb, ScoreboardObjective sbo, + CallbackInfo info) { - if (!Utils.isOnSkyblock) { - return; - } - - if (TabHud.defaultTgl.isPressed()) { + if (!Utils.isOnSkyblock + || !SkyblockerConfig.get().general.tabHudEnabled + || TabHud.defaultTgl.isPressed()) { return; } @@ -47,7 +46,8 @@ public class PlayerListHudMixin { return; } - List list = nwH.getListedPlayerListEntries().stream().sorted(PlayerListHudAccessor.getOrdering()).toList(); + List list = nwH.getListedPlayerListEntries().stream() + .sorted(PlayerListHudAccessor.getOrdering()).toList(); int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); @@ -60,7 +60,7 @@ public class PlayerListHudMixin { } } catch (Exception e) { e.printStackTrace(); - MinecraftClient.getInstance().player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); + client.player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); } } -- cgit From e332b243dcea6ec567bd38db99ec3cfa35a57fe1 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sat, 6 May 2023 13:15:51 +0200 Subject: Minor foramtting and code style changes --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java index e96e4ede..db329775 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java @@ -10,9 +10,9 @@ import net.minecraft.client.network.PlayerListEntry; @Mixin(PlayerListHud.class) public interface PlayerListHudAccessor { - + @Accessor("ENTRY_ORDERING") public static Comparator getOrdering() { - throw new AssertionError(); + throw new AssertionError(); } } -- cgit From 8716da49090362275e94d159b0dc7be4781f6451 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 7 May 2023 11:32:45 +0200 Subject: Put fancy tab HUD config into its own section --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index f4089f83..bb2c0e0c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -35,7 +35,7 @@ public class PlayerListHudMixin { CallbackInfo info) { if (!Utils.isOnSkyblock - || !SkyblockerConfig.get().general.tabHudEnabled + || !SkyblockerConfig.get().general.tabHud.tabHudEnabled || TabHud.defaultTgl.isPressed()) { return; } -- cgit From 272b19c2d8219380caf4ed74042d6d62152ac2fb Mon Sep 17 00:00:00 2001 From: msg-programs Date: Fri, 12 May 2023 23:57:21 +0200 Subject: Prevent errors when player list is incomplete shortly after join or area change --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index bb2c0e0c..a2ab848a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -48,6 +48,12 @@ public class PlayerListHudMixin { List list = nwH.getListedPlayerListEntries().stream() .sorted(PlayerListHudAccessor.getOrdering()).toList(); + + // list hasn't loaded completely, abort until widgets handle errors correctly + if (list.size() < 40) { + return; + } + int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); -- cgit From 73968e490b4a6886b05f45a95bfcd2328affdac4 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Fri, 19 May 2023 17:05:00 +0200 Subject: Rework just about everything to gracefully handle unexpected inputs --- .../skyblocker/mixin/PlayerListHudMixin.java | 25 +++++----------------- 1 file changed, 5 insertions(+), 20 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index a2ab848a..53494940 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -1,7 +1,5 @@ package me.xmrvizzy.skyblocker.mixin; -import java.util.List; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -17,7 +15,6 @@ import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.scoreboard.ScoreboardObjective; @@ -46,29 +43,17 @@ public class PlayerListHudMixin { return; } - List list = nwH.getListedPlayerListEntries().stream() - .sorted(PlayerListHudAccessor.getOrdering()).toList(); - - // list hasn't loaded completely, abort until widgets handle errors correctly - if (list.size() < 40) { - return; - } - int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); - try { - - Screen screen = Screen.getCorrect(w, h, list, footer); - if (screen != null) { - screen.render(ms); - info.cancel(); - } + long then = System.nanoTime(); + Screen screen = Screen.getCorrect(w, h, footer); + screen.render(ms); + info.cancel(); } catch (Exception e) { e.printStackTrace(); - client.player.sendMessage(Text.of("The tab HUD has encountered unexpected text, see log! :(")); } } -} +} \ No newline at end of file -- cgit From 2512857cf028b7f72f951d975c745a4c50f22bf3 Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 21 May 2023 20:57:11 +0200 Subject: Remove debugging leftover --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 1 - 1 file changed, 1 deletion(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index 53494940..3d915f8b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -46,7 +46,6 @@ public class PlayerListHudMixin { int w = scaledW; int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); try { - long then = System.nanoTime(); Screen screen = Screen.getCorrect(w, h, footer); screen.render(ms); info.cancel(); -- cgit From ad9986028e5f7b1c2ec38323d3af19088d7089ac Mon Sep 17 00:00:00 2001 From: msg-programs Date: Sun, 28 May 2023 11:46:49 +0200 Subject: Use logger on PlayerListHudMixin exception instead of printStackTrace --- src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index 3d915f8b..eee4eaca 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -1,5 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -50,9 +52,8 @@ public class PlayerListHudMixin { screen.render(ms); info.cancel(); } catch (Exception e) { - e.printStackTrace(); + TabHud.LOGGER.error("Drawing default hud. Reason: Screen exception {}", e); } - } } \ No newline at end of file -- cgit