diff options
Diffstat (limited to 'src/main')
28 files changed, 217 insertions, 234 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java index e4ff229d..354e7e3a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java @@ -8,7 +8,7 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.OrderTerminal; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.StartsWithTerminal; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; @@ -24,7 +24,7 @@ import java.util.regex.Pattern; /** * Manager class for {@link ContainerSolver}s like terminal solvers and experiment solvers. To add a new gui solver, extend {@link ContainerSolver} and register it in {@link #ContainerSolverManager()}. */ -public class ContainerSolverManager extends DrawableHelper { +public class ContainerSolverManager { private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile(""); private final ContainerSolver[] solvers; private ContainerSolver currentSolver = null; @@ -43,10 +43,11 @@ public class ContainerSolverManager extends DrawableHelper { public void init() { ScreenEvents.BEFORE_INIT.register((client, screen, scaledWidth, scaledHeight) -> { if (Utils.isOnSkyblock() && screen instanceof GenericContainerScreen genericContainerScreen) { - ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> { + ScreenEvents.afterRender(screen).register((screen1, context, mouseX, mouseY, delta) -> { + MatrixStack matrices = context.getMatrices(); matrices.push(); matrices.translate(((HandledScreenAccessor) genericContainerScreen).getX(), ((HandledScreenAccessor) genericContainerScreen).getY(), 300); - onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9)); + onDraw(context, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9)); matrices.pop(); }); onSetScreen(genericContainerScreen); @@ -83,7 +84,7 @@ public class ContainerSolverManager extends DrawableHelper { highlights = null; } - public void onDraw(MatrixStack matrices, List<Slot> slots) { + public void onDraw(DrawContext context, List<Slot> slots) { if (currentSolver == null) return; if (highlights == null) @@ -93,7 +94,7 @@ public class ContainerSolverManager extends DrawableHelper { for (ColorHighlight highlight : highlights) { Slot slot = slots.get(highlight.slot()); int color = highlight.color(); - fillGradient(matrices, slot.x, slot.y, slot.x + 16, slot.y + 16, color, color); + context.fillGradient(slot.x, slot.y, slot.x + 16, slot.y + 16, color, color); } RenderSystem.colorMask(true, true, true, true); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java index 26bafc14..ccbeaca2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java @@ -15,17 +15,15 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.ItemUtils; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.render.item.ItemRenderer; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.DrawContext; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.util.math.ColorHelper; -@Mixin(ItemRenderer.class) -public abstract class ItemRendererMixin { - @Inject(method = "renderGuiItemOverlay(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) - public void skyblocker$renderItemBar(MatrixStack matrices, TextRenderer renderer, ItemStack stack, int x, int y, @Nullable String countLabel, CallbackInfo ci) { +@Mixin(DrawContext.class) +public abstract class DrawContextMixin { + @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) + public void skyblocker$renderItemBar(TextRenderer textRenderer, ItemStack stack, int x, int y, @Nullable String countOverride, CallbackInfo ci) { if (Utils.isOnSkyblock() && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) { if (!stack.isEmpty()) { @@ -44,13 +42,15 @@ public abstract class ItemRendererMixin { break; } } + + DrawContext context = ((DrawContext) (Object) this); RenderSystem.disableDepthTest(); float hue = Math.max(0.0F, 1.0F - (max - current) / max); int width = Math.round(current / max * 13.0F); Color color = Color.getHSBColor(hue / 3.0F, 1.0F, 1.0F); - DrawableHelper.fill(matrices, x + 2, y + 13, x + 15, y + 15, 0xFF000000); - DrawableHelper.fill(matrices, x + 2, y + 13, x + 2 + width, y + 14, ColorHelper.Argb.getArgb(color.getAlpha(), color.getRed(), color.getGreen(), color.getBlue())); + context.fill(x + 2, y + 13, x + 15, y + 15, 0xFF000000); + context.fill(x + 2, y + 13, x + 2 + width, y + 14, ColorHelper.Argb.getArgb(color.getAlpha(), color.getRed(), color.getGreen(), color.getBlue())); RenderSystem.enableDepthTest(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index 2d200a86..30aa1ed2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -3,9 +3,10 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.Nullable; @@ -36,12 +37,18 @@ public abstract class HandledScreenMixin extends Screen { } @Inject(at = @At("HEAD"), method = "drawMouseoverTooltip", cancellable = true) - public void skyblocker$drawMouseOverTooltip(MatrixStack matrices, int x, int y, CallbackInfo ci) { + public void skyblocker$drawMouseOverTooltip(DrawContext context, int x, int y, CallbackInfo ci) { + //Hide Empty Tooltips + Text stackName = focusedSlot.getStack().getName(); + String strName = stackName.getString(); + if(this.focusedSlot != null && Utils.isOnSkyblock() && SkyblockerConfig.get().general.hideEmptyTooltips && strName.equals(" ")) ci.cancel(); + + //Backpack Preview String title = this.getTitle().getString(); boolean shiftDown = SkyblockerConfig.get().general.backpackPreviewWithoutShift ^ Screen.hasShiftDown(); if (shiftDown && title.equals("Storage") && this.focusedSlot != null) { if (this.focusedSlot.inventory == this.client.player.getInventory()) return; - if (BackpackPreview.renderPreview(matrices, this.focusedSlot.getIndex(), x, y)) ci.cancel(); + if (BackpackPreview.renderPreview(context, this.focusedSlot.getIndex(), x, y)) ci.cancel(); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java index e17795ab..335737a1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.mixin; -import com.mojang.blaze3d.systems.RenderSystem; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.FancyStatusBars; @@ -10,13 +9,14 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Identifier; + import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -26,7 +26,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Environment(EnvType.CLIENT) @Mixin(InGameHud.class) -public abstract class InGameHudMixin extends DrawableHelper { +public abstract class InGameHudMixin { + //@Shadow + //@Final + //private static Identifier ICONS = new Identifier("textures/gui/icons.png"); @Unique private static final Identifier SLOT_LOCK = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/slot_lock.png"); @Unique @@ -35,7 +38,7 @@ public abstract class InGameHudMixin extends DrawableHelper { @Unique private final FancyStatusBars statusBars = new FancyStatusBars(); @Unique - private MatrixStack hotbarMatrices; + private DrawContext hotbarContext; @Unique private int hotbarSlotIndex; @@ -62,45 +65,44 @@ public abstract class InGameHudMixin extends DrawableHelper { } @Inject(method = "renderHotbar", at = @At("HEAD")) - public void skyblocker$renderHotbar(float f, MatrixStack matrices, CallbackInfo ci) { + public void skyblocker$renderHotbar(float f, DrawContext context, CallbackInfo ci) { if (Utils.isOnSkyblock()) { - hotbarMatrices = matrices; + hotbarContext = context; hotbarSlotIndex = 0; } } @Inject(method = "renderHotbarItem", at = @At("HEAD")) - public void skyblocker$renderHotbarItem(MatrixStack matrices, int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) { + public void skyblocker$renderHotbarItem(DrawContext context, int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) { if (Utils.isOnSkyblock()) { if (HotbarSlotLock.isLocked(hotbarSlotIndex)) { - RenderSystem.setShaderTexture(0, SLOT_LOCK); - DrawableHelper.drawTexture(hotbarMatrices, i, j, 0, 0, 16, 16); + hotbarContext.drawTexture(SLOT_LOCK, i, j, 0, 0, 16, 16); } hotbarSlotIndex++; } } @Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true) - private void skyblocker$renderExperienceBar(MatrixStack matrices, int x, CallbackInfo ci) { + private void skyblocker$renderExperienceBar(DrawContext context, int x, CallbackInfo ci) { if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars) ci.cancel(); } @Inject(method = "renderStatusBars", at = @At("HEAD"), cancellable = true) - private void skyblocker$renderStatusBars(MatrixStack matrices, CallbackInfo ci) { + private void skyblocker$renderStatusBars(DrawContext context, CallbackInfo ci) { if (!Utils.isOnSkyblock()) return; - if (statusBars.render(matrices, scaledWidth, scaledHeight)) + if (statusBars.render(context, scaledWidth, scaledHeight)) ci.cancel(); if (Utils.isInDungeons() && SkyblockerConfig.get().locations.dungeons.enableMap) - DungeonMap.render(matrices); + DungeonMap.render(context.getMatrices()); - RenderSystem.setShaderTexture(0, GUI_ICONS_TEXTURE); + //RenderSystem.setShaderTexture(0, ICONS); } @Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true) - private void skyblocker$renderMountHealth(MatrixStack matrices, CallbackInfo ci) { + private void skyblocker$renderMountHealth(DrawContext context, CallbackInfo ci) { if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars) ci.cancel(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index b5403ae2..ef65190f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -13,9 +13,9 @@ 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.DrawContext; 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; @@ -27,8 +27,8 @@ 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, + @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/gui/DrawContext;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) + public void skyblocker$renderTabHud(DrawContext context, int scaledW, Scoreboard sb, ScoreboardObjective sbo, CallbackInfo info) { if (!Utils.isOnSkyblock() @@ -47,7 +47,7 @@ public class PlayerListHudMixin { int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); try { Screen screen = Screen.getCorrect(w, h, footer); - screen.render(ms); + screen.render(context); info.cancel(); } catch (Exception e) { TabHud.LOGGER.error("Drawing default hud. Reason: Screen exception {}", e); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java deleted file mode 100644 index 9389b792..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.xmrvizzy.skyblocker.mixin; - -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.ItemStack; -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; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(Screen.class) -public abstract class ScreenMixin { - @Inject(at = @At("HEAD"), method = "renderTooltip(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/item/ItemStack;II)V", cancellable = true) - public void skyblocker$renderTooltip(MatrixStack matrices, ItemStack itemStack, int x, int y, CallbackInfo ci) { - Text stackName = itemStack.getName(); - String strName = stackName.getString(); - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.hideEmptyTooltips && strName.equals(" ")) { - ci.cancel(); - } - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java index 4820bc0f..e35ef605 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java @@ -7,7 +7,7 @@ import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.network.PlayerListEntry; @@ -27,7 +27,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class BackpackPreview extends DrawableHelper { +public class BackpackPreview { private static final Identifier TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/inventory_background.png"); private static final BackpackPreview instance = new BackpackPreview(); private static final Pattern PROFILE_PATTERN = Pattern.compile("Profile: ([a-zA-Z]+)"); @@ -135,7 +135,7 @@ public class BackpackPreview extends DrawableHelper { } } - public static boolean renderPreview(MatrixStack matrices, int index, int mouseX, int mouseY) { + public static boolean renderPreview(DrawContext context, int index, int mouseX, int mouseY) { if (index >= 9 && index < 18) index -= 9; else if (index >= 27 && index < 45) index -= 18; else return false; @@ -149,12 +149,13 @@ public class BackpackPreview extends DrawableHelper { RenderSystem.disableDepthTest(); RenderSystem.setShaderTexture(0, TEXTURE); - BackpackPreview.drawTexture(matrices, x, y, 0, 0, 176, 7); + context.drawTexture(TEXTURE, x, y, 0, 0, 176, 7); for (int i = 0; i < rows; ++i) - BackpackPreview.drawTexture(matrices, x, y + i * 18 + 7, 0, 7, 176, 18); - BackpackPreview.drawTexture(matrices, x, y + rows * 18 + 7, 0, 25, 176, 7); + context.drawTexture(TEXTURE, x, y + i * 18 + 7, 0, 7, 176, 18); + context.drawTexture(TEXTURE, x, y + rows * 18 + 7, 0, 25, 176, 7); RenderSystem.enableDepthTest(); + MatrixStack matrices = context.getMatrices(); ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; for (int i = 9; i < storage[index].size(); ++i) { @@ -162,8 +163,8 @@ public class BackpackPreview extends DrawableHelper { int itemY = y + (i - 9) / 9 * 18 + 8; matrices.push(); matrices.translate(0, 0, 200); - itemRenderer.renderInGui(matrices, storage[index].getStack(i), itemX, itemY); - itemRenderer.renderGuiItemOverlay(matrices, textRenderer, storage[index].getStack(i), itemX, itemY); + context.drawItem(storage[index].getStack(i), itemX, itemY); + context.drawItemInSlot(textRenderer, storage[index].getStack(i), itemX, itemY); matrices.pop(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java index 05b57410..6af06e6d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java @@ -1,15 +1,13 @@ package me.xmrvizzy.skyblocker.skyblock; -import com.mojang.blaze3d.systems.RenderSystem; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.DrawContext; import net.minecraft.util.Identifier; -public class FancyStatusBars extends DrawableHelper { +public class FancyStatusBars { private static final Identifier BARS = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/bars.png"); private final MinecraftClient client = MinecraftClient.getInstance(); @@ -39,7 +37,7 @@ public class FancyStatusBars extends DrawableHelper { return (100 * value) / max; } - public boolean render(MatrixStack matrices, int scaledWidth, int scaledHeight) { + public boolean render(DrawContext context, int scaledWidth, int scaledHeight) { var player = client.player; if (!SkyblockerConfig.get().general.bars.enableBars || player == null) return false; @@ -72,11 +70,10 @@ public class FancyStatusBars extends DrawableHelper { moveBar(i, configAnchorNum); } - RenderSystem.setShaderTexture(0, BARS); for (var bar : bars) - bar.draw(matrices); + bar.draw(context); for (var bar : bars) - bar.drawText(matrices); + bar.drawText(context); return true; } @@ -143,32 +140,32 @@ public class FancyStatusBars extends DrawableHelper { this.text = val; } - public void draw(MatrixStack matrices) { + public void draw(DrawContext context) { // Dont draw if anchorNum is outside of range if (anchorNum < 0 || anchorNum > 2) return; // Draw the icon for the bar - drawTexture(matrices, anchorsX[anchorNum] + offsetX, anchorsY[anchorNum], 0, v, 9, 9); + context.drawTexture(BARS, anchorsX[anchorNum] + offsetX, anchorsY[anchorNum], 0, v, 9, 9); // Draw the background for the bar - drawTexture(matrices, anchorsX[anchorNum] + offsetX + 10, anchorsY[anchorNum], 10, v, 2, 9); + context.drawTexture(BARS, anchorsX[anchorNum] + offsetX + 10, anchorsY[anchorNum], 10, v, 2, 9); for (int i = 2; i < bar_width - 2; i += 58) - drawTexture(matrices, anchorsX[anchorNum] + offsetX + 10 + i, anchorsY[anchorNum], 12, v, Math.min(58, bar_width - 2 - i), 9); - drawTexture(matrices, anchorsX[anchorNum] + offsetX + 10 + bar_width - 2, anchorsY[anchorNum], 70, v, 2, 9); + context.drawTexture(BARS, anchorsX[anchorNum] + offsetX + 10 + i, anchorsY[anchorNum], 12, v, Math.min(58, bar_width - 2 - i), 9); + context.drawTexture(BARS, anchorsX[anchorNum] + offsetX + 10 + bar_width - 2, anchorsY[anchorNum], 70, v, 2, 9); // Draw the filled part of the bar for (int i = 0; i < fill.length; i++) { int fill_width = this.fill[i] * (bar_width - 2) / 100; if (fill_width >= 1) - drawTexture(matrices, anchorsX[anchorNum] + offsetX + 11, anchorsY[anchorNum], 72 + i*60, v, 1, 9); + context.drawTexture(BARS, anchorsX[anchorNum] + offsetX + 11, anchorsY[anchorNum], 72 + i*60, v, 1, 9); for (int j = 1; j < fill_width - 1; j += 58) - drawTexture(matrices, anchorsX[anchorNum] + offsetX + 11 + j, anchorsY[anchorNum], 73 + i*60, v, Math.min(58, fill_width - 1 - j), 9); + context.drawTexture(BARS, anchorsX[anchorNum] + offsetX + 11 + j, anchorsY[anchorNum], 73 + i*60, v, Math.min(58, fill_width - 1 - j), 9); if (fill_width == bar_width - 2) - drawTexture(matrices, anchorsX[anchorNum] + offsetX + 11 + fill_width - 1, anchorsY[anchorNum], 131 + i*60, v, 1, 9); + context.drawTexture(BARS, anchorsX[anchorNum] + offsetX + 11 + fill_width - 1, anchorsY[anchorNum], 131 + i*60, v, 1, 9); } } - public void drawText(MatrixStack matrices) { + public void drawText(DrawContext context) { // Dont draw if anchorNum is outside of range if (anchorNum < 0 || anchorNum > 2) return; @@ -179,10 +176,10 @@ public class FancyStatusBars extends DrawableHelper { final int[] offsets = new int[]{-1, 1}; for (int i : offsets) { - textRenderer.draw(matrices, text, (float) (x + i), (float) y, 0); - textRenderer.draw(matrices, text, (float) x, (float) (y + i), 0); + context.drawText(textRenderer, text, x + i, y, 0, false); + context.drawText(textRenderer, text, x, y + i, 0, false); } - textRenderer.draw(matrices, text, (float) x, (float) y, text_color); + context.drawText(textRenderer, text, x, y, text_color, false); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java index e5441b5c..2a97d0ee 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java @@ -2,14 +2,13 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import org.apache.commons.lang3.StringUtils; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.brigadier.Command; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.MapRenderer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.math.MatrixStack; @@ -50,11 +49,10 @@ public class DungeonMap { } } - public static void renderHUDMap(MatrixStack matrices, int x, int y) { + public static void renderHUDMap(DrawContext context, int x, int y) { float scaling = SkyblockerConfig.get().locations.dungeons.mapScaling; int size = (int) (128 * scaling); - RenderSystem.setShaderTexture(0, MAP_BACKGROUND); - DrawableHelper.drawTexture(matrices, x, y, 0, 0, size, size, size, size); + context.drawTexture(MAP_BACKGROUND, x, y, 0, 0, size, size, size, size); } public static void init() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java index 8fba6a7a..ffd7a8b6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java @@ -5,8 +5,8 @@ import java.awt.Color; import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.RenderUtils; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; public class DungeonMapConfigScreen extends Screen { @@ -19,11 +19,11 @@ public class DungeonMapConfigScreen extends Screen { } @Override - public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { - super.render(matrices, mouseX, mouseY, delta); - renderBackground(matrices); - DungeonMap.renderHUDMap(matrices, hudX, hudY); - drawCenteredTextWithShadow(matrices, textRenderer, "Right Click To Reset Position", width / 2, height / 2, Color.GRAY.getRGB()); + public void render(DrawContext context, int mouseX, int mouseY, float delta) { + super.render(context, mouseX, mouseY, delta); + renderBackground(context); + DungeonMap.renderHUDMap(context, hudX, hudY); + context.drawCenteredTextWithShadow(textRenderer, "Right Click To Reset Position", width / 2, height / 2, Color.GRAY.getRGB()); } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java index 15f9e58b..122f6c6c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -6,7 +6,7 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -49,35 +49,35 @@ public class DwarvenHud { return 1; }))))); - HudRenderCallback.EVENT.register((matrixStack, tickDelta) -> { + HudRenderCallback.EVENT.register((context, tickDelta) -> { if (!SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled || client.options.playerListKey.isPressed() || client.player == null || commissionList.isEmpty()) { return; } - render(matrixStack, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y, commissionList); + render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y, commissionList); }); } - public static void render(MatrixStack matrixStack, int hudX, int hudY, List<Commission> commissions) { + public static void render(DrawContext context, int hudX, int hudY, List<Commission> commissions) { switch(SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { - case SIMPLE -> renderSimple(matrixStack, hudX, hudY, commissions); - case FANCY -> renderFancy(matrixStack, hudX, hudY, commissions); - case CLASSIC -> renderClassic(matrixStack, hudX, hudY, commissions); + case SIMPLE -> renderSimple(context, hudX, hudY, commissions); + case FANCY -> renderFancy(context, hudX, hudY, commissions); + case CLASSIC -> renderClassic(context, hudX, hudY, commissions); } } - public static void renderClassic(MatrixStack matrixStack, int hudX, int hudY, List<Commission> commissions) { + public static void renderClassic(DrawContext context, int hudX, int hudY, List<Commission> commissions) { if (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground) { - DrawableHelper.fill(matrixStack, hudX, hudY, hudX + 200, hudY + (20 * commissions.size()), 0x64000000); + context.fill(hudX, hudY, hudX + 200, hudY + (20 * commissions.size()), 0x64000000); } int y = 0; for (Commission commission : commissions) { - client.textRenderer - .drawWithShadow(matrixStack, + context + .drawTextWithShadow(client.textRenderer, Text.literal(commission.commission + ": ") .styled(style -> style.withColor(Formatting.AQUA)) .append(Text.literal(commission.progression) @@ -87,18 +87,18 @@ public class DwarvenHud { } } - public static void renderSimple(MatrixStack matrixStack, int hudX, int hudY, List<Commission> commissions) { + public static void renderSimple(DrawContext context, int hudX, int hudY, List<Commission> commissions) { CommsWidget cw = new CommsWidget(commissions, false); cw.setX(hudX); cw.setY(hudY); - cw.render(matrixStack, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); + cw.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); } - public static void renderFancy(MatrixStack matrixStack, int hudX, int hudY, List<Commission> commissions) { + public static void renderFancy(DrawContext context, int hudX, int hudY, List<Commission> commissions) { CommsWidget cw = new CommsWidget(commissions, true); cw.setX(hudX); cw.setY(hudY); - cw.render(matrixStack, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); + cw.render(context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); } public static void update() { @@ -121,4 +121,4 @@ public class DwarvenHud { // steamroller tactics to get visibility from outside classes (CommsWidget) public static record Commission(String commission, String progression){} -} +}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index 2d0ba892..f91ed921 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.RenderUtils; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @@ -19,11 +20,11 @@ public class DwarvenHudConfigScreen extends Screen { } @Override - public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { - super.render(matrices, mouseX, mouseY, delta); - renderBackground(matrices); - DwarvenHud.render(matrices, hudX, hudY, List.of(new DwarvenHud.Commission("Test Commission 1", "1%"), new DwarvenHud.Commission("Test Commission 2", "2%"))); - drawCenteredTextWithShadow(matrices, textRenderer, "Right Click To Reset Position", width / 2, height / 2, Color.GRAY.getRGB()); + public void render(DrawContext context, int mouseX, int mouseY, float delta) { + super.render(context, mouseX, mouseY, delta); + renderBackground(context); + DwarvenHud.render(context, hudX, hudY, List.of(new DwarvenHud.Commission("Test Commission 1", "1%"), new DwarvenHud.Commission("Test Commission 2", "2%"))); + context.drawCenteredTextWithShadow(textRenderer, "Right Click To Reset Position", width / 2, height / 2, Color.GRAY.getRGB()); } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java index d9acc75c..99715e29 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java @@ -5,12 +5,11 @@ import me.xmrvizzy.skyblocker.mixin.RecipeBookWidgetAccessor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.Drawable; -import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.Selectable; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.screen.AbstractRecipeScreenHandler; import net.minecraft.text.Text; @@ -46,27 +45,26 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select } @Override - public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + public void render(DrawContext context, int mouseX, int mouseY, float delta) { if (this.isOpen()) { - matrices.push(); + MatrixStack matrices = context.getMatrices(); + matrices.push(); matrices.translate(0.0D, 0.0D, 100.0D); - RenderSystem.setShader(GameRenderer::getPositionTexProgram); - RenderSystem.setShaderTexture(0, TEXTURE); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField(); int i = (this.parentWidth - 147) / 2 - this.leftOffset; int j = (this.parentHeight - 166) / 2; - DrawableHelper.drawTexture(matrices, i, j, 1, 1, 147, 166); + context.drawTexture(TEXTURE, i, j, 1, 1, 147, 166); this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField(); if (!ItemRegistry.filesImported && !this.searchField.isFocused() && this.searchField.getText().isEmpty()) { Text hintText = (Text.literal("Loading...")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY); - drawTextWithShadow(matrices, this.client.textRenderer, hintText, i + 25, j + 14, -1); + context.drawTextWithShadow(this.client.textRenderer, hintText, i + 25, j + 14, -1); } else if (!this.searchField.isFocused() && this.searchField.getText().isEmpty()) { Text hintText = (Text.translatable("gui.recipebook.search_hint")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY); - drawTextWithShadow(matrices, this.client.textRenderer, hintText, i + 25, j + 14, -1); + context.drawTextWithShadow(this.client.textRenderer, hintText, i + 25, j + 14, -1); } else { - this.searchField.render(matrices, mouseX, mouseY, delta); + this.searchField.render(context, mouseX, mouseY, delta); } if (ItemRegistry.filesImported){ if (results == null) { @@ -75,16 +73,16 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select this.results = new SearchResultsWidget(this.client, x, y); } this.updateSearchResult(); - this.results.render(matrices, mouseX, mouseY, delta); + this.results.render(context, mouseX, mouseY, delta); } matrices.pop(); } } @Override - public void drawTooltip(MatrixStack matrices, int x, int y, int mouseX, int mouseY) { + public void drawTooltip(DrawContext context, int x, int y, int mouseX, int mouseY) { if (this.isOpen() && ItemRegistry.filesImported && results != null) { - this.results.drawTooltip(matrices, mouseX, mouseY); + this.results.drawTooltip(context, mouseX, mouseY); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ResultButtonWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ResultButtonWidget.java index 41e5469d..8b0fe91d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ResultButtonWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ResultButtonWidget.java @@ -1,17 +1,21 @@ package me.xmrvizzy.skyblocker.skyblock.itemlist; import java.util.List; +import java.util.function.Function; +import java.util.ArrayList; +import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.text.OrderedText; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -36,23 +40,26 @@ public class ResultButtonWidget extends ClickableWidget { } @Override - public void renderButton(MatrixStack matrices, int mouseX, int mouseY, float delta) { + public void renderButton(DrawContext context, int mouseX, int mouseY, float delta) { MinecraftClient client = MinecraftClient.getInstance(); - RenderSystem.setShader(GameRenderer::getPositionTexProgram); - RenderSystem.setShaderTexture(0, BACKGROUND_TEXTURE); // this.drawTexture(matrices, this.x, this.y, 29, 206, this.width, this.height); - DrawableHelper.drawTexture(matrices, this.getX(), this.getY(), 29, 206, this.getWidth(), this.getHeight()); + context.drawTexture(BACKGROUND_TEXTURE, this.getX(), this.getY(), 29, 206, this.getWidth(), this.getHeight()); // client.getItemRenderer().renderInGui(this.itemStack, this.x + 4, this.y + 4); - client.getItemRenderer().renderInGui(matrices, this.itemStack, this.getX() + 4, this.getY() + 4); + context.drawItem(this.itemStack, this.getX() + 4, this.getY() + 4); // client.getItemRenderer().renderGuiItemOverlay(client.textRenderer, itemStack, this.x + 4, this.y + 4); - client.getItemRenderer().renderGuiItemOverlay(matrices, client.textRenderer, itemStack, this.getX() + 4, this.getY() + 4); + context.drawItemInSlot(client.textRenderer, itemStack, this.getX() + 4, this.getY() + 4); } - public void renderTooltip(MatrixStack matrices, int mouseX, int mouseY) { + public void renderTooltip(DrawContext context, int mouseX, int mouseY) { MinecraftClient client = MinecraftClient.getInstance(); - List<Text> tooltip = client.currentScreen.getTooltipFromItem(this.itemStack); + List<Text> tooltip = client.currentScreen.getTooltipFromItem(client, this.itemStack); + List<OrderedText> orderedTooltip = new ArrayList<>(); + + for(int i = 0; i < tooltip.size(); i++) orderedTooltip.add(tooltip.get(i).asOrderedText()); + // TODO : add null check with log error - client.currentScreen.renderTooltip(matrices, tooltip, mouseX, mouseY); + client.currentScreen.setTooltip(orderedTooltip); + client.currentScreen.renderWithTooltip(context, mouseX, mouseY, mouseY); } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/SearchResultsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/SearchResultsWidget.java index ce53112b..058495a2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/SearchResultsWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/SearchResultsWidget.java @@ -2,6 +2,8 @@ package me.xmrvizzy.skyblocker.skyblock.itemlist; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.Drawable; import net.minecraft.client.gui.widget.ToggleButtonWidget; import net.minecraft.client.util.math.MatrixStack; @@ -106,32 +108,33 @@ public class SearchResultsWidget implements Drawable { this.nextPageButton.active = this.currentPage < this.pageCount - 1; } - public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + public void render(DrawContext context, int mouseX, int mouseY, float delta) { + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; RenderSystem.disableDepthTest(); if (this.displayRecipes) { String craftText = this.recipeResults.get(this.currentPage).craftText; - this.client.textRenderer.drawWithShadow(matrices, craftText, this.parentX + 11, this.parentY + 31, 0xffffffff); + context.drawTextWithShadow(textRenderer, craftText, this.parentX + 11, this.parentY + 31, 0xffffffff); Text resultText = this.recipeResults.get(this.currentPage).result.getName(); - this.client.textRenderer.drawWithShadow(matrices, resultText, this.parentX + 11, this.parentY + 43, 0xffffffff); - this.client.textRenderer.drawWithShadow(matrices, "▶", this.parentX + 96, this.parentY + 90, 0xaaffffff); + context.drawTextWithShadow(textRenderer, resultText, this.parentX + 11, this.parentY + 43, 0xffffffff); + context.drawTextWithShadow(textRenderer, "▶", this.parentX + 96, this.parentY + 90, 0xaaffffff); } for (ResultButtonWidget button : resultButtons) - button.render(matrices, mouseX, mouseY, delta); + button.render(context, mouseX, mouseY, delta); if (this.pageCount > 1) { String string = (this.currentPage + 1) + "/" + this.pageCount; int dx = this.client.textRenderer.getWidth(string) / 2; - this.client.textRenderer.draw(matrices, string, this.parentX - dx + 73, this.parentY + 141, -1); + context.drawText(textRenderer, string, this.parentX - dx + 73, this.parentY + 141, -1, false); } - if (this.prevPageButton.active) this.prevPageButton.render(matrices, mouseX, mouseY, delta); - if (this.nextPageButton.active) this.nextPageButton.render(matrices, mouseX, mouseY, delta); + if (this.prevPageButton.active) this.prevPageButton.render(context, mouseX, mouseY, delta); + if (this.nextPageButton.active) this.nextPageButton.render(context, mouseX, mouseY, delta); RenderSystem.enableDepthTest(); } - public void drawTooltip(MatrixStack matrices, int mouseX, int mouseY) { + public void drawTooltip(DrawContext context, int mouseX, int mouseY) { RenderSystem.disableDepthTest(); for (ResultButtonWidget button : resultButtons) if (button.isMouseOver(mouseX, mouseY)) - button.renderTooltip(matrices, mouseX, mouseY); + button.renderTooltip(context, mouseX, mouseY); RenderSystem.enableDepthTest(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java index 7269840a..c02463a3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java @@ -7,7 +7,7 @@ import me.xmrvizzy.skyblocker.mixin.HandledScreenAccessor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; @@ -64,41 +64,41 @@ public class QuickNavButton extends ClickableWidget { } @Override - public void renderButton(MatrixStack matrices, int mouseX, int mouseY, float delta) { + public void renderButton(DrawContext context, int mouseX, int mouseY, float delta) { this.updateCoordinates(); - RenderSystem.setShaderTexture(0, BUTTON_TEXTURE); + MatrixStack matrices = context.getMatrices(); RenderSystem.disableDepthTest(); // render button background if (!this.toggled) { if (this.index >= 6) // this.drawTexture(matrices, this.x, this.y + 4, this.u, this.v + 4, this.width, this.height - 4); - DrawableHelper.drawTexture(matrices, this.getX(), this.getY() + 4, this.u, this.v + 4, this.width, this.height - 4); + context.drawTexture(BUTTON_TEXTURE, this.getX(), this.getY() + 4, this.u, this.v + 4, this.width, this.height - 4); else // this.drawTexture(matrices, this.x, this.y, this.u, this.v, this.width, this.height - 4); - DrawableHelper.drawTexture(matrices, this.getX(), this.getY() - 2, this.u, this.v, this.width, this.height - 4); + context.drawTexture(BUTTON_TEXTURE, this.getX(), this.getY() - 2, this.u, this.v, this.width, this.height - 4); // } else this.drawTexture(matrices, this.x, this.y, this.u, this.v, this.width, this.height); } else { matrices.push(); //Move the top buttons 2 pixels up if they're selected if (this.index < 6) matrices.translate(0f, -2f, 0f); - DrawableHelper.drawTexture(matrices, this.getX(), this.getY(), this.u, this.v, this.width, this.height); + context.drawTexture(BUTTON_TEXTURE, this.getX(), this.getY(), this.u, this.v, this.width, this.height); matrices.pop(); } // render button icon if (!this.toggled) { if (this.index >= 6) // CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 6); - CLIENT.getItemRenderer().renderInGui(matrices, this.icon,this.getX() + 5, this.getY() + 6); + context.drawItem(this.icon,this.getX() + 5, this.getY() + 6); else // CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 9); - CLIENT.getItemRenderer().renderInGui(matrices, this.icon,this.getX() + 5, this.getY() + 7); + context.drawItem(this.icon,this.getX() + 5, this.getY() + 7); } else { if (this.index >= 6) // CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 9); - CLIENT.getItemRenderer().renderInGui(matrices, this.icon,this.getX() + 5, this.getY() + 9); + context.drawItem(this.icon,this.getX() + 5, this.getY() + 9); else // CLIENT.getItemRenderer().renderInGui(this.icon,this.x + 6, this.y + 6); - CLIENT.getItemRenderer().renderInGui(matrices, this.icon,this.getX() + 5, this.getY() + 6); + context.drawItem(this.icon,this.getX() + 5, this.getY() + 6); } RenderSystem.enableDepthTest(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java index 43b7f956..2ed15f27 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java @@ -23,6 +23,7 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.HomePlayerScree import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.PlayerListScreen; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @@ -98,9 +99,9 @@ public class Screen { } } - public void render(MatrixStack ms) { + public void render(DrawContext context) { for (Widget w : widgets) { - w.render(ms); + w.render(context); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java index 6b96c151..33f77933 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java @@ -10,7 +10,7 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.MutableText; @@ -103,14 +103,15 @@ public abstract class Widget { /** * Draw this widget with a background */ - public final void render(MatrixStack ms) { - this.render(ms, true); + public final void render(DrawContext context) { + this.render(context, true); } /** * Draw this widget, possibly with a background */ - public final void render(MatrixStack ms, boolean hasBG) { + public final void render(DrawContext context, boolean hasBG) { + MatrixStack ms = context.getMatrices(); // not sure if this is the way to go, but it fixes Z-layer issues // like blocks being rendered behind the BG and the hotbar clipping into things @@ -123,9 +124,9 @@ public abstract class Widget { // move above other UI elements ms.translate(0, 0, 200); if (hasBG) { - DrawableHelper.fill(ms, x + 1, y, x + w - 1, y + h, COL_BG_BOX); - DrawableHelper.fill(ms, x, y + 1, x + 1, y + h - 1, COL_BG_BOX); - DrawableHelper.fill(ms, x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); + context.fill(x + 1, y, x + w - 1, y + h, COL_BG_BOX); + context.fill(x, y + 1, x + 1, y + h - 1, COL_BG_BOX); + context.fill(x + w - 1, y + 1, x + w, y + h - 1, COL_BG_BOX); } // move above background (if exists) ms.translate(0, 0, 100); @@ -133,19 +134,19 @@ public abstract class Widget { int strHeightHalf = Widget.txtRend.fontHeight / 2; int strAreaWidth = Widget.txtRend.getWidth(title) + 4; - txtRend.draw(ms, title, x + 8, y + 2, this.color); + context.drawText(txtRend, title, x + 8, y + 2, this.color, false); - this.drawHLine(ms, x + 2, y + 1 + strHeightHalf, 4); - this.drawHLine(ms, x + 2 + strAreaWidth + 4, y + 1 + strHeightHalf, w - 4 - 4 - strAreaWidth); - this.drawHLine(ms, x + 2, y + h - 2, w - 4); + this.drawHLine(context, x + 2, y + 1 + strHeightHalf, 4); + this.drawHLine(context, x + 2 + strAreaWidth + 4, y + 1 + strHeightHalf, w - 4 - 4 - strAreaWidth); + this.drawHLine(context, x + 2, y + h - 2, w - 4); - this.drawVLine(ms, x + 1, y + 2 + strHeightHalf, h - 4 - strHeightHalf); - this.drawVLine(ms, x + w - 2, y + 2 + strHeightHalf, h - 4 - strHeightHalf); + this.drawVLine(context, x + 1, y + 2 + strHeightHalf, h - 4 - strHeightHalf); + this.drawVLine(context, x + w - 2, y + 2 + strHeightHalf, h - 4 - strHeightHalf); int yOffs = y + BORDER_SZE_N; for (Component c : components) { - c.render(ms, x + BORDER_SZE_W, yOffs); + c.render(context, x + BORDER_SZE_W, yOffs); yOffs += c.getHeight() + Component.PAD_L; } // pop manipulations above @@ -153,12 +154,12 @@ public abstract class Widget { RenderSystem.disableDepthTest(); } - private void drawHLine(MatrixStack ms, int xpos, int ypos, int width) { - DrawableHelper.fill(ms, xpos, ypos, xpos + width, ypos + 1, this.color); + private void drawHLine(DrawContext context, int xpos, int ypos, int width) { + context.fill(xpos, ypos, xpos + width, ypos + 1, this.color); } - private void drawVLine(MatrixStack ms, int xpos, int ypos, int height) { - DrawableHelper.fill(ms, xpos, ypos, xpos + 1, ypos + height, this.color); + private void drawVLine(DrawContext context, int xpos, int ypos, int height) { + context.fill(xpos, ypos, xpos + 1, ypos + height, this.color); } /** diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java index 671b1f41..850cb3d2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java @@ -2,8 +2,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.item.ItemRenderer; -import net.minecraft.client.util.math.MatrixStack; /** * Abstract base class for a component that may be added to a Widget. @@ -15,12 +15,11 @@ public abstract class Component { public static final int PAD_L = 4; static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer; - static ItemRenderer itmRend = MinecraftClient.getInstance().getItemRenderer(); // these should always be the content dimensions without any padding. int width, height; - public abstract void render(MatrixStack ms, int x, int y); + public abstract void render(DrawContext context, int x, int y); public int getWidth() { return this.width; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java index f845eba5..afd05c26 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.DrawContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -36,10 +36,10 @@ public class IcoFatTextComponent extends Component { } @Override - public void render(MatrixStack ms, int x, int y) { - itmRend.renderGuiItemIcon(ms, ico, x, y + ICO_OFFS); - txtRend.draw(ms, line1, x + ICO_DIM + PAD_L, y, 0xffffffff); - txtRend.draw(ms, line2, x + ICO_DIM + PAD_L, y + txtRend.fontHeight + PAD_S, 0xffffffff); + public void render(DrawContext context, int x, int y) { + context.drawItem(ico, x, y + ICO_OFFS); + context.drawText(txtRend, line1, x + ICO_DIM + PAD_L, y, 0xffffffff, false); + context.drawText(txtRend, line2, x + ICO_DIM + PAD_L, y + txtRend.fontHeight + PAD_S, 0xffffffff, false); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java index 7a495a13..7ab92dd5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.DrawContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -32,9 +32,9 @@ public class IcoTextComponent extends Component { } @Override - public void render(MatrixStack ms, int x, int y) { - itmRend.renderGuiItemIcon(ms, ico, x, y); - txtRend.draw(ms, text, x + ICO_DIM + PAD_L, y + 5, 0xffffffff); + public void render(DrawContext context, int x, int y) { + context.drawItem(ico, x, y); + context.drawText(txtRend, text, x + ICO_DIM + PAD_L, y + 5, 0xffffffff, false); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java index 265d11f1..34e0268b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -23,8 +23,8 @@ public class PlainTextComponent extends Component { } @Override - public void render(MatrixStack ms, int x, int y) { - txtRend.draw(ms, text, x + PAD_S, y, 0xffffffff); + public void render(DrawContext context, int x, int y) { + context.drawText(txtRend, text, x + PAD_S, y, 0xffffffff, false); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java index 18859080..fd66ec73 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java @@ -1,10 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; -import com.mojang.blaze3d.systems.RenderSystem; - +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.PlayerSkinDrawer; import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; /** @@ -27,10 +25,9 @@ public class PlayerComponent extends Component { } @Override - public void render(MatrixStack ms, int x, int y) { - RenderSystem.setShaderTexture(0, tex); - PlayerSkinDrawer.draw(ms, x, y, SKIN_ICO_DIM); - txtRend.draw(ms, name, x + SKIN_ICO_DIM + PAD_S, y, 0xffffffff); + public void render(DrawContext context, int x, int y) { + PlayerSkinDrawer.draw(context, tex, x, y, SKIN_ICO_DIM); + context.drawText(txtRend, name, x + SKIN_ICO_DIM + PAD_S, y, 0xffffffff, false); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java index b9ebc0e9..a7cc8d12 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java @@ -1,8 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.Ico; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.DrawContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -55,16 +54,16 @@ public class ProgressComponent extends Component { } @Override - public void render(MatrixStack ms, int x, int y) { - itmRend.renderGuiItemIcon(ms, ico, x, y + ICO_OFFS); - txtRend.draw(ms, desc, x + ICO_DIM + PAD_L, y, 0xffffffff); + public void render(DrawContext context, int x, int y) { + context.drawItem(ico, x, y + ICO_OFFS); + context.drawText(txtRend, desc, x + ICO_DIM + PAD_L, y, 0xffffffff, false); int barX = x + ICO_DIM + PAD_L; int barY = y + txtRend.fontHeight + PAD_S; int endOffsX = ((int) (this.barW * (this.pcnt / 100f))); - DrawableHelper.fill(ms, barX + endOffsX, barY, barX + this.barW, barY + BAR_HEIGHT, COL_BG_BAR); - DrawableHelper.fill(ms, barX, barY, barX + endOffsX, barY + BAR_HEIGHT, + context.fill(barX + endOffsX, barY, barX + this.barW, barY + BAR_HEIGHT, COL_BG_BAR); + context.fill(barX, barY, barX + endOffsX, barY + BAR_HEIGHT, this.color); - txtRend.drawWithShadow(ms, bar, barX + 3, barY + 2, 0xffffffff); + context.drawTextWithShadow(txtRend, bar, barX + 3, barY + 2, 0xffffffff); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java index 5d49be2c..30287dc0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.DrawContext; /** * Meta-Component that consists of a grid of other components @@ -38,11 +37,11 @@ public class TableComponent extends Component { } @Override - public void render(MatrixStack ms, int xpos, int ypos) { + public void render(DrawContext context, int xpos, int ypos) { for (int x = 0; x < cols; x++) { for (int y = 0; y < rows; y++) { if (comps[x][y] != null) { - comps[x][y].render(ms, xpos + (x * cellW), ypos + y * cellH); + comps[x][y].render(context, xpos + (x * cellW), ypos + y * cellH); } } // add a line before the col if we're not drawing the first one @@ -51,7 +50,7 @@ public class TableComponent extends Component { int lineX2 = xpos + (x * cellW) - PAD_S; int lineY1 = ypos + 1; int lineY2 = ypos + this.height - PAD_S - 1; // not sure why but it looks correct - DrawableHelper.fill(ms, lineX1, lineY1, lineX2, lineY2, this.color); + context.fill(lineX1, lineY1, lineX2, lineY2, this.color); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java index 7a0ad754..919975b0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java @@ -3,11 +3,10 @@ package me.xmrvizzy.skyblocker.utils; import com.mojang.blaze3d.systems.RenderSystem; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.toast.Toast; import net.minecraft.client.toast.ToastManager; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @Environment(value= EnvType.CLIENT) @@ -21,14 +20,13 @@ public class ToastBuilder implements Toast { } @Override - public Toast.Visibility draw(MatrixStack matrices, ToastManager manager, long startTime) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); - RenderSystem.setShaderTexture(0, TEXTURE); + public Toast.Visibility draw(DrawContext context, ToastManager manager, long startTime) { + TextRenderer textRenderer = manager.getClient().textRenderer; RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - DrawableHelper.drawTexture(matrices, 0, 0, 0, 0, this.getWidth(), this.getHeight()); - manager.getClient().textRenderer.draw(matrices, title, 7.0f, 7.0f, -11534256); - manager.getClient().textRenderer.draw(matrices, description, 7.0f, 18.0f, -16777216); + context.drawTexture(TEXTURE, 0, 0, 0, 0, this.getWidth(), this.getHeight()); + context.drawText(textRenderer, title, 7, 7, -11534256, false); + context.drawText(textRenderer, description, 7, 18, -16777216, false); return startTime >= 3000L ? Toast.Visibility.HIDE : Toast.Visibility.SHOW; } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 14c1e6f1..b407b737 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,9 +30,9 @@ ], "depends": { "fabricloader": ">=0.14.19", - "fabric-api": ">=0.81.0+1.19.4", + "fabric-api": ">=0.80.2+1.20", "cloth-config2": "*", - "minecraft": "~1.19.4" + "minecraft": "~1.20-beta.1" }, "custom": { "modmenu": { diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index 6fa2596a..f8b39c93 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -6,20 +6,18 @@ "AccessorWorldRenderer", "ClientPlayerEntityMixin", "ClientPlayNetworkHandlerMixin", + "DrawContextMixin", "FarmlandBlockMixin", "GenericContainerScreenHandlerMixin", "HandledScreenAccessor", "HandledScreenMixin", "InGameHudMixin", "InventoryScreenMixin", - "ItemRendererMixin", "LeverBlockMixin", "MinecraftClientMixin", - "RecipeBookWidgetAccessor", - "HandledScreenAccessor", "PlayerListHudAccessor", "PlayerListHudMixin", - "ScreenMixin" + "RecipeBookWidgetAccessor" ], "injectors": { "defaultRequire": 1 |