diff options
| author | msg-programs <msgdoesstuff@gmail.com> | 2023-04-02 14:58:42 +0200 |
|---|---|---|
| committer | msg-programs <msgdoesstuff@gmail.com> | 2023-04-02 14:58:42 +0200 |
| commit | 9cbce39d68c1c766e20819101fbb803ad05e8fdc (patch) | |
| tree | 164b9f11c4c572bdd632aa16b53fc8a9634f7331 /src/main/java/me | |
| parent | 3074075c1561163606f441f1a8f582b79082c311 (diff) | |
| download | Skyblocker-9cbce39d68c1c766e20819101fbb803ad05e8fdc.tar.gz Skyblocker-9cbce39d68c1c766e20819101fbb803ad05e8fdc.tar.bz2 Skyblocker-9cbce39d68c1c766e20819101fbb803ad05e8fdc.zip | |
Merging SkyHyTab into Skyblocker: Initial commit
Needs cleanup
Diffstat (limited to 'src/main/java/me')
63 files changed, 2900 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java index 3d713727..c866ea01 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java @@ -9,6 +9,7 @@ import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; +import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.utils.UpdateChecker; import net.fabricmc.api.ClientModInitializer; @@ -25,5 +26,6 @@ public class SkyblockerInitializer implements ClientModInitializer { ChatMessageListener.init(); UpdateChecker.init(); DiscordRPCManager.init(); + TabHud.init(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 21322c81..41ac7f2d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -125,6 +125,8 @@ public class SkyblockerConfig implements ConfigData { public final boolean enableUpdateNotification = true; public final boolean backpackPreviewWithoutShift = false; + public boolean tabHudEnabled = true; + @ConfigEntry.Gui.Excluded public String apiKey; 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<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..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<PlayerListEntry> 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! :(")); + } + + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java new file mode 100644 index 00000000..3cc75e00 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/TabHud.java @@ -0,0 +1,40 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud; + +import org.lwjgl.glfw.GLFW; + +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; + +public class TabHud { + + public static KeyBinding playerTgl; + public static KeyBinding genericTgl; + // public static KeyBinding mapTgl; + public static KeyBinding defaultTgl; + + public static void init() { + + playerTgl = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.skyhytab.playerTgl", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_LEFT_SHIFT, + "key.categories.skyblocker")); + genericTgl = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.tabhud.genericTgl", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_LEFT_ALT, + "key.categories.skyblocker")); + // mapTgl = KeyBindingHelper.registerKeyBinding( + // new KeyBinding("key.tabhud.mapTgl", + // InputUtil.Type.KEYSYM, + // GLFW.GLFW_KEY_LEFT_ALT, + // "key.categories.skyblocker")); + defaultTgl = KeyBindingHelper.registerKeyBinding( + new KeyBinding("key.tabhud.defaultTgl", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_B, + "key.categories.skyblocker")); + + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java new file mode 100644 index 00000000..4bd48f89 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonHubScreen.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EssenceWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonHubScreen extends Screen{ + + public DungeonHubScreen(int w, int h, List<PlayerListEntry> list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + EssenceWidget ew = new EssenceWidget(list); + centerW(sw); + centerW(ew); + stackWidgetsH(sw, ew); + this.addWidget(ew); + this.addWidget(sw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java new file mode 100644 index 00000000..ce87a035 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonPlayerScreen.java @@ -0,0 +1,30 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPlayerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonPlayerScreen extends Screen { + + public DungeonPlayerScreen(int w, int h, List<PlayerListEntry> ple, Text footer) { + super(w, h); + DungeonPlayerWidget dpw1 = new DungeonPlayerWidget(ple, 1); + DungeonPlayerWidget dpw2 = new DungeonPlayerWidget(ple, 2); + DungeonPlayerWidget dpw3 = new DungeonPlayerWidget(ple, 3); + DungeonPlayerWidget dpw4 = new DungeonPlayerWidget(ple, 4); + DungeonPlayerWidget dpw5 = new DungeonPlayerWidget(ple, 5); + + offCenterL(dpw1); + offCenterL(dpw2); + offCenterL(dpw3); + offCenterR(dpw4); + offCenterR(dpw5); + stackWidgetsH(dpw1, dpw2, dpw3); + stackWidgetsH(dpw4, dpw5); + addWidgets(dpw1, dpw2, dpw3, dpw4, dpw5); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java new file mode 100644 index 00000000..bb80b01b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/DungeonScreen.java @@ -0,0 +1,37 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonDeathWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonDownedWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonPuzzleWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonSecretWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.DungeonServerWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class DungeonScreen extends Screen { + + public DungeonScreen(int w, int h, List<PlayerListEntry> ple, Text footer) { + super(w, h); + DungeonDownedWidget ddow = new DungeonDownedWidget(ple); + DungeonDeathWidget ddew = new DungeonDeathWidget(ple); + DungeonSecretWidget dscw = new DungeonSecretWidget(ple); + DungeonServerWidget dsrw = new DungeonServerWidget(ple); + DungeonPuzzleWidget dpuw = new DungeonPuzzleWidget(ple); + + offCenterL(ddow); + offCenterL(ddew); + offCenterL(dscw); + offCenterR(dsrw); + offCenterR(dpuw); + + stackWidgetsH(ddow, ddew, dscw); + stackWidgetsH(dsrw, dpuw); + + addWidgets(ddow, ddew, dscw, dsrw, dpuw); + + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java new file mode 100644 index 00000000..07162834 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/EmptyScreen.java @@ -0,0 +1,19 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EmptyWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class EmptyScreen extends Screen { + + public EmptyScreen(int w, int h, List<PlayerListEntry> ple, Text footer) { + super(w, h); + EmptyWidget ew = new EmptyWidget(ple); + this.center(ew); + this.addWidget(ew); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java new file mode 100644 index 00000000..f66638a9 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/FarmingServerScreen.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ServerWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.TrapperWidget; + +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class FarmingServerScreen extends Screen{ + + public FarmingServerScreen(int w, int h, List<PlayerListEntry> list, Text footer) { + super(w, h); + ServerWidget sw = new ServerWidget(list); + TrapperWidget tw = new TrapperWidget(list); + centerW(sw); + centerW(tw); + stackWidgetsH(sw, tw); + this.addWidgets(tw, sw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java new file mode 100644 index 00000000..30f4bbc3 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GardenScreen.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ComposterWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.GardenServerWidget; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.text.Text; + +public class GardenScreen extends Screen{ + + public GardenScreen(int w, int h, List<PlayerListEntry> ple, Text footer) { + super(w, h); + GardenServerWidget gsw = new GardenServerWidget(ple); + ComposterWidget cw = new ComposterWidget(ple); + + this.stackWidgetsH(gsw, cw); + this.centerW(gsw); + this.centerW(cw); + this.addWidgets(gsw, cw); + } + +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java new file mode 100644 index 00000000..01b159e2 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/GenericInfoScreen.java @@ -0,0 +1,51 @@ +package me.xmrvizzy.skyblocker.skyblock.tabhud.screens; + +import java.util.List; + +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.CookieWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EffectWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.ElectionWidget; +import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.EventWidget; +im |
