aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2025-06-08 14:33:14 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2025-06-08 14:33:14 -0400
commit1b44c4102c8dddcbebe7321ee9703bbffaedbd05 (patch)
tree7e2bbb6692ac1ac0be15011a741016034896fba7 /src
parent4a71b7806224ae0eff6605942dce7ec95216d751 (diff)
downloadSkyblocker-1b44c4102c8dddcbebe7321ee9703bbffaedbd05.tar.gz
Skyblocker-1b44c4102c8dddcbebe7321ee9703bbffaedbd05.tar.bz2
Skyblocker-1b44c4102c8dddcbebe7321ee9703bbffaedbd05.zip
Add Biome & Action Bar debug tools
Diffstat (limited to 'src')
-rw-r--r--src/main/java/de/hysky/skyblocker/debug/Debug.java41
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/accessors/InGameHudInvoker.java8
2 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/debug/Debug.java b/src/main/java/de/hysky/skyblocker/debug/Debug.java
index bfee4471..559c09d1 100644
--- a/src/main/java/de/hysky/skyblocker/debug/Debug.java
+++ b/src/main/java/de/hysky/skyblocker/debug/Debug.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.debug;
+import com.google.gson.JsonElement;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.serialization.JsonOps;
@@ -7,6 +8,7 @@ import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
+import de.hysky.skyblocker.mixins.accessors.InGameHudInvoker;
import de.hysky.skyblocker.skyblock.events.EventNotifications;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.ItemUtils;
@@ -30,8 +32,12 @@ import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtHelper;
import net.minecraft.nbt.NbtOps;
import net.minecraft.predicate.entity.EntityPredicates;
+import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.screen.slot.Slot;
import net.minecraft.text.Text;
+import net.minecraft.text.TextCodecs;
+import net.minecraft.world.biome.Biome;
+
import org.lwjgl.glfw.GLFW;
import java.util.List;
@@ -73,6 +79,8 @@ public class Debug {
.then(dumpArmorStandHeadTextures())
.then(toggleWebSocketDebug())
.then(EventNotifications.debugToasts())
+ .then(dumpBiome())
+ .then(dumpActionBar())
)
));
ClientTickEvents.END_CLIENT_TICK.register(client -> {
@@ -146,6 +154,39 @@ public class Debug {
});
}
+ private static LiteralArgumentBuilder<FabricClientCommandSource> dumpBiome() {
+ return literal("dumpBiome")
+ .executes(context -> {
+ FabricClientCommandSource source = context.getSource();
+ RegistryEntry<Biome> biome = source.getWorld().getBiome(source.getPlayer().getBlockPos());
+
+ if (biome != null && biome.value() != null) {
+ String biomeData = Biome.CODEC.encodeStart(JsonOps.INSTANCE, biome.value())
+ .map(JsonElement::toString)
+ .setPartial("")
+ .getPartialOrThrow();
+ source.sendFeedback(Constants.PREFIX.get().append(Text.literal(String.format("Biome ID: %s, Data: %s", biome.getIdAsString(), biomeData))));
+ }
+
+ return Command.SINGLE_SUCCESS;
+ });
+ }
+
+ private static LiteralArgumentBuilder<FabricClientCommandSource> dumpActionBar() {
+ return literal("dumpActionBar")
+ .executes(context -> {
+ FabricClientCommandSource source = context.getSource();
+ Text actionBar = ((InGameHudInvoker) (source.getClient().inGameHud)).getOverlayMessage();
+
+ if (actionBar != null) {
+ Text pretty = NbtHelper.toPrettyPrintedText(TextCodecs.CODEC.encodeStart(Utils.getRegistryWrapperLookup().getOps(NbtOps.INSTANCE), actionBar).getOrThrow());
+ source.sendFeedback(Constants.PREFIX.get().append("Action Bar: ").append(pretty));
+ }
+
+ return Command.SINGLE_SUCCESS;
+ });
+ }
+
public enum DumpFormat {
JSON {
@Override
diff --git a/src/main/java/de/hysky/skyblocker/mixins/accessors/InGameHudInvoker.java b/src/main/java/de/hysky/skyblocker/mixins/accessors/InGameHudInvoker.java
index d32ca253..80e46293 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/accessors/InGameHudInvoker.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/accessors/InGameHudInvoker.java
@@ -3,11 +3,19 @@ package de.hysky.skyblocker.mixins.accessors;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.scoreboard.ScoreboardObjective;
+import net.minecraft.text.Text;
+
+import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(InGameHud.class)
public interface InGameHudInvoker {
+
+ @Accessor
+ @Nullable
+ Text getOverlayMessage();
@Invoker("renderScoreboardSidebar")
void skyblocker$renderSidebar(DrawContext context, ScoreboardObjective objective);