From 2249182df19085e14c5bd29d466331228677ad3c Mon Sep 17 00:00:00 2001 From: Inglett Date: Thu, 18 Jan 2024 14:58:23 -0600 Subject: bump mod to 1.20.4 support --- .../mixin/render/GameMenuScreenMixin.java | 3 +- .../mixin/render/GameRendererMixin.java | 17 +++----- .../dulkirfabric/mixin/render/InGameHudMixin.java | 45 ++++++++++++++++------ .../kotlin/com/dulkirfabric/config/DulkirConfig.kt | 12 +++--- .../com/dulkirfabric/util/ScoreBoardUtils.kt | 18 ++++----- src/main/kotlin/com/dulkirfabric/util/Utils.kt | 3 +- 6 files changed, 59 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java b/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java index 6f09e51..86a4ecf 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/GameMenuScreenMixin.java @@ -32,7 +32,8 @@ import java.util.function.Supplier; @Mixin(GameMenuScreen.class) public abstract class GameMenuScreenMixin extends ScreenMixin { - private final Text buttonText = MutableText.of(new LiteralTextContent("Dulkir")).formatted(Formatting.BOLD, Formatting.YELLOW); + private final Text buttonText = MutableText.of(new PlainTextContent.Literal("Dulkir")) + .formatted(Formatting.BOLD, Formatting.YELLOW); @Shadow protected abstract ButtonWidget createButton(Text text, Supplier screenSupplier); diff --git a/src/main/java/com/dulkirfabric/mixin/render/GameRendererMixin.java b/src/main/java/com/dulkirfabric/mixin/render/GameRendererMixin.java index 78b4dbd..40ac4af 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/GameRendererMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/GameRendererMixin.java @@ -2,18 +2,15 @@ package com.dulkirfabric.mixin.render; import com.dulkirfabric.features.InventoryScale; +import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.util.Window; -import net.minecraft.client.util.math.MatrixStack; -import org.joml.Matrix4f; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(value = GameRenderer.class, priority = 1001) public class GameRendererMixin { @@ -37,9 +34,8 @@ public class GameRendererMixin { opcode = Opcodes.GETFIELD, target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", shift = At.Shift.BEFORE, - ordinal = 1), locals = LocalCapture.CAPTURE_FAILHARD) - public void onScreenRenderPre(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int i, int j, - Window window, Matrix4f matrix4f, MatrixStack matrixStack, DrawContext drawContext) { + ordinal = 1)) + public void onScreenRenderPre(float tickDelta, long startTime, boolean tick, CallbackInfo ci, @Local DrawContext drawContext) { drawContext.getMatrices().push(); drawContext.getMatrices().scale(InventoryScale.INSTANCE.getScale(), InventoryScale.INSTANCE.getScale(), 1f); } @@ -49,10 +45,9 @@ public class GameRendererMixin { opcode = Opcodes.GETFIELD, target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", shift = At.Shift.AFTER, - ordinal = 3), locals = LocalCapture.CAPTURE_FAILHARD + ordinal = 3) ) - public void onScreenRenderPost(float tickDelta, long startTime, boolean tick, CallbackInfo ci, int i, int j, - Window window, Matrix4f matrix4f, MatrixStack matrixStack, DrawContext drawContext) { - drawContext.getMatrices().pop(); + public void onScreenRenderPost(float tickDelta, long startTime, boolean tick, CallbackInfo ci, @Local DrawContext drawContext) { + drawContext.getMatrices().pop(); } } \ No newline at end of file diff --git a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java index 7f90b3b..995b8af 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java @@ -6,6 +6,7 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; +import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -15,21 +16,36 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(InGameHud.class) public class InGameHudMixin { - @Inject(method = "renderStatusEffectOverlay", at = @At("HEAD"), cancellable = true) + @Inject( + method = "renderStatusEffectOverlay", + at = @At("HEAD"), + cancellable = true + ) public void onRenderStatusEffectOverlay(DrawContext context, CallbackInfo ci) { if (DulkirConfig.ConfigVars.getConfigOptions().getStatusEffectHidden()) { ci.cancel(); } } - @Redirect(method = "renderScoreboardSidebar(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawText(Lnet/minecraft/client/font/TextRenderer;Ljava/lang/String;IIIZ)I")) - public int renderScoreBoardSidebar(DrawContext instance, TextRenderer textRenderer, String text, int x, int y, int color, boolean shadow) { + @Redirect( + method = "method_55440([Lnet/minecraft/client/gui/hud/InGameHud$SidebarEntry;ILnet/minecraft/client/gui/DrawContext;Lnet/minecraft/text/Text;I)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/DrawContext;drawText(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;IIIZ)I", + ordinal = 2 + ) + ) + public int removeScoreBoardNumbers(DrawContext instance, TextRenderer textRenderer, Text text, int x, int y, int color, boolean shadow) { return 0; } - @ModifyExpressionValue(method = "renderStatusBars(Lnet/minecraft/client/gui/DrawContext;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getArmor()I")) + @ModifyExpressionValue( + method = "renderStatusBars(Lnet/minecraft/client/gui/DrawContext;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/entity/player/PlayerEntity;getArmor()I" + ) + ) public int onGrabArmorAmount(int original) { if (DulkirConfig.ConfigVars.getConfigOptions().getHideArmorOverlay() && Utils.INSTANCE.isInSkyblock()) { return 0; @@ -37,17 +53,24 @@ public class InGameHudMixin { return original; } - @ModifyExpressionValue(method = "renderStatusBars(Lnet/minecraft/client/gui/DrawContext;)V", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/gui/hud/InGameHud;getHeartCount(Lnet/minecraft/entity/LivingEntity;)I")) + @ModifyExpressionValue( + method = "renderStatusBars(Lnet/minecraft/client/gui/DrawContext;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/hud/InGameHud;getHeartCount(Lnet/minecraft/entity/LivingEntity;)I" + ) + ) public int onCheckForRiding(int original) { if (DulkirConfig.ConfigVars.getConfigOptions().getHideHungerOverlay() && Utils.INSTANCE.isInSkyblock()) return 1; return original; } - @Inject(method = "renderHeldItemTooltip", - at = @At("HEAD"), cancellable = true) + @Inject( + method = "renderHeldItemTooltip", + at = @At("HEAD"), + cancellable = true + ) public void changeItemDisplay (DrawContext context, CallbackInfo ci) { if (DulkirConfig.ConfigVars.getConfigOptions().getHideHeldItemTooltip()) ci.cancel(); diff --git a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt index 93db1a0..ccd5dd2 100644 --- a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt +++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt @@ -21,15 +21,17 @@ import com.dulkirfabric.util.render.AnimationPreset import com.dulkirfabric.util.render.HudElement import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers -import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import me.shedaniel.clothconfig2.api.ConfigBuilder import moe.nea.jarvis.api.Point import net.minecraft.client.gui.screen.Screen -import net.minecraft.client.util.InputUtil -import net.minecraft.client.util.InputUtil.* -import net.minecraft.text.* +import net.minecraft.client.util.InputUtil.Key +import net.minecraft.client.util.InputUtil.UNKNOWN_KEY +import net.minecraft.text.MutableText +import net.minecraft.text.PlainTextContent.Literal +import net.minecraft.text.Text +import net.minecraft.text.TextColor import net.minecraft.util.Formatting import net.minecraft.util.Identifier import java.io.File @@ -37,7 +39,7 @@ import java.io.File class DulkirConfig { private val buttonText: Text = - MutableText.of(LiteralTextContent("Dulkir")).formatted(Formatting.BOLD, Formatting.YELLOW) + MutableText.of(Literal("Dulkir")).formatted(Formatting.BOLD, Formatting.YELLOW) var screen: Screen = buildScreen(null) fun buildScreen(parentScreen: Screen? = null): Screen { diff --git a/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt b/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt index c62cbab..d8acd4b 100644 --- a/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt +++ b/src/main/kotlin/com/dulkirfabric/util/ScoreBoardUtils.kt @@ -23,12 +23,12 @@ object ScoreBoardUtils { fun getLines(): MutableList? { val scoreboard = DulkirModFabric.mc.player?.scoreboard ?: return null // This returns null if we're not in skyblock curiously - val sidebarObjective = scoreboard.getObjective("SBScoreboard") ?: return null - val scores = scoreboard.getAllPlayerScores(sidebarObjective) + val sidebarObjective = scoreboard.getNullableObjective("SBScoreboard") ?: return null + val scores = scoreboard.getScoreboardEntries(sidebarObjective) val lines: MutableList = ArrayList() for (score in scores.reversed()) { - val team = scoreboard.getPlayerTeam(score.playerName) - var str = Team.decorateName(team, Text.literal(score.playerName)).string + val team = scoreboard.getTeam(score.owner) + var str = Team.decorateName(team, Text.literal(score.owner)).string .replace("ยง[^a-f0-9]".toRegex(), "") lines.add(str) } @@ -42,12 +42,12 @@ object ScoreBoardUtils { fun getLinesWithColor(): MutableList? { val scoreboard = DulkirModFabric.mc.player?.scoreboard ?: return null // This returns null if we're not in skyblock curiously - val sidebarObjective = scoreboard.getObjective("SBScoreboard") ?: return null - val scores = scoreboard.getAllPlayerScores(sidebarObjective) + val sidebarObjective = scoreboard.getNullableObjective("SBScoreboard") ?: return null + val scores = scoreboard.getScoreboardEntries(sidebarObjective) val lines: MutableList = ArrayList() for (score in scores.reversed()) { - val team = scoreboard.getPlayerTeam(score.playerName) - lines.add(Team.decorateName(team, Text.literal(score.playerName)).formattedString()) + val team = scoreboard.getTeam(score.owner) + lines.add(Team.decorateName(team, Text.literal(score.owner)).formattedString()) } return lines } @@ -97,7 +97,7 @@ object ScoreBoardUtils { if (event.sound.id.path != "entity.wither.shoot") return if (event.sound.pitch != 0.6984127f) return if (event.sound.volume != .5f) return - SlayerBossEvents.Spawn(slayerType?: return err()).post() + SlayerBossEvents.Spawn(slayerType ?: return err()).post() } fun err() { diff --git a/src/main/kotlin/com/dulkirfabric/util/Utils.kt b/src/main/kotlin/com/dulkirfabric/util/Utils.kt index a0fec78..342dc48 100644 --- a/src/main/kotlin/com/dulkirfabric/util/Utils.kt +++ b/src/main/kotlin/com/dulkirfabric/util/Utils.kt @@ -6,7 +6,6 @@ import com.dulkirfabric.events.WorldLoadEvent import com.dulkirfabric.events.chat.ChatEvents import meteordevelopment.orbit.EventHandler import net.minecraft.block.entity.SkullBlockEntity -import net.minecraft.client.texture.PlayerSkinProvider import net.minecraft.entity.Entity import net.minecraft.item.ItemStack import net.minecraft.nbt.NbtHelper @@ -74,6 +73,6 @@ object Utils { fun getSkullTexture(itemStack: ItemStack): String? { return itemStack.getSubNbt(SkullBlockEntity.SKULL_OWNER_KEY)?.let(NbtHelper::toGameProfile)?.properties?.get( - PlayerSkinProvider.TEXTURES)?.first()?.value + "textures")?.first()?.value } } \ No newline at end of file -- cgit