aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/mixin
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java (renamed from src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java)18
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java13
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java32
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java24
5 files changed, 40 insertions, 55 deletions
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();
- }
- }
-}