diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-06-09 16:08:04 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-09 16:08:04 -0400 |
commit | 2adaeb8c54ddffd4cdd6b5a58497a876ed0d97dd (patch) | |
tree | f3f30d0543c6ae18ed110bd934aa54458a315dd1 /src/main/java/me/xmrvizzy/skyblocker/mixin | |
parent | cf15ad24aa5a2c766589ad9fc3a118b3bf1f6cb1 (diff) | |
parent | 9b93e87859276cd7e37de0b6b02ca27c27228b87 (diff) | |
download | Skyblocker-2adaeb8c54ddffd4cdd6b5a58497a876ed0d97dd.tar.gz Skyblocker-2adaeb8c54ddffd4cdd6b5a58497a876ed0d97dd.tar.bz2 Skyblocker-2adaeb8c54ddffd4cdd6b5a58497a876ed0d97dd.zip |
Merge pull request #137 from msg-programs/skyhytab
Replace tab/playerlist HUD with a more fancy version
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudAccessor.java | 18 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java | 57 |
2 files changed, 75 insertions, 0 deletions
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..db329775 --- /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<PlayerListEntry> 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..b5403ae2 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -0,0 +1,57 @@ +package me.xmrvizzy.skyblocker.mixin; + +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.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; + + @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() + || !SkyblockerConfig.get().general.tabHud.tabHudEnabled + || TabHud.defaultTgl.isPressed()) { + return; + } + + MinecraftClient client = MinecraftClient.getInstance(); + ClientPlayNetworkHandler nwH = client.getNetworkHandler(); + if (nwH == null) { + return; + } + + int w = scaledW; + int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); + try { + Screen screen = Screen.getCorrect(w, h, footer); + screen.render(ms); + info.cancel(); + } catch (Exception e) { + TabHud.LOGGER.error("Drawing default hud. Reason: Screen exception {}", e); + } + } + +}
\ No newline at end of file |