From a0588bc0fce38990f06e66b5be9c89417217408f Mon Sep 17 00:00:00 2001
From: Aaron <51387595+AzureAaron@users.noreply.github.com>
Date: Mon, 5 Feb 2024 22:09:46 -0500
Subject: 24w05a/b
---
.../skyblocker/utils/render/MatrixHelper.java | 30 ++++++++++++++++++++++
.../skyblocker/utils/render/RenderHelper.java | 25 ++++++++----------
2 files changed, 40 insertions(+), 15 deletions(-)
create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/MatrixHelper.java
(limited to 'src/main/java/de/hysky/skyblocker/utils/render')
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/MatrixHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/MatrixHelper.java
new file mode 100644
index 00000000..220dbf86
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/utils/render/MatrixHelper.java
@@ -0,0 +1,30 @@
+package de.hysky.skyblocker.utils.render;
+
+import org.joml.Matrix4f;
+
+import net.minecraft.client.util.math.MatrixStack;
+
+/**
+ * Matrix helper methods
+ */
+public interface MatrixHelper {
+
+ /**
+ * Copies the {@code matrix} into a new {@link Matrix4f}. This is necessary otherwise
+ * any transformations applied will affect other uses of the same matrix.
+ */
+ static Matrix4f copyOf(Matrix4f matrix) {
+ return new Matrix4f(matrix);
+ }
+
+ /**
+ * Creates a blank {@link MatrixStack} and sets it's position matrix to the supplied
+ * {@code positionMatrix}.
+ */
+ static MatrixStack toStack(Matrix4f positionMatrix) {
+ MatrixStack matrices = new MatrixStack();
+ matrices.peek().getPositionMatrix().set(positionMatrix);
+
+ return matrices;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
index da179d0e..4d97e733 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
@@ -26,6 +26,7 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Vec3d;
+
import org.joml.Matrix3f;
import org.joml.Matrix4f;
import org.joml.Vector3f;
@@ -243,15 +244,13 @@ public class RenderHelper {
}
public static void renderQuad(WorldRenderContext context, Vec3d[] points, float[] colorComponents, float alpha, boolean throughWalls) {
+ Matrix4f positionMatrix = new Matrix4f();
Vec3d camera = context.camera().getPos();
- MatrixStack matrices = context.matrixStack();
- matrices.push();
- matrices.translate(-camera.x, -camera.y, -camera.z);
+ positionMatrix.translate((float) -camera.x, (float) -camera.y, (float) -camera.z);
Tessellator tessellator = RenderSystem.renderThreadTesselator();
BufferBuilder buffer = tessellator.getBuffer();
- Matrix4f positionMatrix = matrices.peek().getPositionMatrix();
RenderSystem.setShader(GameRenderer::getPositionColorProgram);
RenderSystem.setShaderColor(1f, 1f, 1f, 1f);
@@ -268,8 +267,6 @@ public class RenderHelper {
RenderSystem.enableCull();
RenderSystem.depthFunc(GL11.GL_LEQUAL);
-
- matrices.pop();
}
public static void renderText(WorldRenderContext context, Text text, Vec3d pos, boolean throughWalls) {
@@ -290,19 +287,18 @@ public class RenderHelper {
* @param throughWalls whether the text should be able to be seen through walls or not.
*/
public static void renderText(WorldRenderContext context, OrderedText text, Vec3d pos, float scale, float yOffset, boolean throughWalls) {
- MatrixStack matrices = context.matrixStack();
- Vec3d camera = context.camera().getPos();
+ Matrix4f positionMatrix = new Matrix4f();
+ Camera camera = context.camera();
+ Vec3d cameraPos = camera.getPos();
TextRenderer textRenderer = client.textRenderer;
scale *= 0.025f;
- matrices.push();
- matrices.translate(pos.getX() - camera.getX(), pos.getY() - camera.getY(), pos.getZ() - camera.getZ());
- matrices.peek().getPositionMatrix().mul(RenderSystem.getModelViewMatrix());
- matrices.multiply(context.camera().getRotation());
- matrices.scale(-scale, -scale, scale);
+ positionMatrix
+ .translate((float) (pos.getX() - cameraPos.getX()), (float) (pos.getY() - cameraPos.getY()), (float) (pos.getZ() - cameraPos.getZ()))
+ .rotate(camera.getRotation())
+ .scale(-scale, -scale, scale);
- Matrix4f positionMatrix = matrices.peek().getPositionMatrix();
float xOffset = -textRenderer.getWidth(text) / 2f;
Tessellator tessellator = RenderSystem.renderThreadTesselator();
@@ -315,7 +311,6 @@ public class RenderHelper {
consumers.draw();
RenderSystem.depthFunc(GL11.GL_LEQUAL);
- matrices.pop();
}
/**
--
cgit
From cc00542e78fd87e0b554ab2a74d1cb193feabbb2 Mon Sep 17 00:00:00 2001
From: Aaron <51387595+AzureAaron@users.noreply.github.com>
Date: Sun, 18 Feb 2024 02:40:37 -0500
Subject: Migrate to HudRenderEvents
The Dwarven HUD & End HUD will be moved later due to the tab hud doing
stuff with the z value.
---
.../java/de/hysky/skyblocker/utils/render/title/TitleContainer.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/main/java/de/hysky/skyblocker/utils/render')
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java b/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java
index 487e3d8b..a115bb2b 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java
@@ -2,10 +2,10 @@ package de.hysky.skyblocker.utils.render.title;
import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.events.HudRenderEvents;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
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.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
@@ -26,7 +26,7 @@ public class TitleContainer {
private static final Set
titles = new LinkedHashSet<>();
public static void init() {
- HudRenderCallback.EVENT.register(TitleContainer::render);
+ HudRenderEvents.BEFORE_CHAT.register(TitleContainer::render);
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("skyblocker")
.then(ClientCommandManager.literal("hud")
.then(ClientCommandManager.literal("titleContainer")
@@ -148,7 +148,7 @@ public class TitleContainer {
//Translate the matrix to the texts position and scale
context.getMatrices().push();
- context.getMatrices().translate(title.x, title.y, 200);
+ context.getMatrices().translate(title.x, title.y, 0);
context.getMatrices().scale(scale, scale, scale);
//Draw text
--
cgit
From 12070a41687893c564e4d2c1ad9b6ed379f92cae Mon Sep 17 00:00:00 2001
From: Aaron <51387595+AzureAaron@users.noreply.github.com>
Date: Thu, 25 Apr 2024 21:28:22 -0400
Subject: Fix "What starts with" terminal solver
---
.../hysky/skyblocker/utils/render/gui/ContainerSolver.java | 9 ++++++---
.../utils/render/gui/ContainerSolverManager.java | 14 ++++++++++----
2 files changed, 16 insertions(+), 7 deletions(-)
(limited to 'src/main/java/de/hysky/skyblocker/utils/render')
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java
index 80a1ba9d..16fa7411 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java
@@ -1,11 +1,11 @@
package de.hysky.skyblocker.utils.render.gui;
import de.hysky.skyblocker.SkyblockerMod;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
import net.minecraft.item.ItemStack;
import java.util.List;
-import java.util.Map;
import java.util.regex.Pattern;
/**
@@ -34,9 +34,12 @@ public abstract class ContainerSolver {
SkyblockerMod.getInstance().containerSolverManager.markDirty();
}
- protected abstract List getColors(String[] groups, Map slots);
+ protected void onClickSlot(int slot, ItemStack stack, ItemStack cursorStack, String[] groups) {
+ }
+
+ protected abstract List getColors(String[] groups, Int2ObjectMap slots);
- protected void trimEdges(Map slots, int rows) {
+ protected void trimEdges(Int2ObjectMap slots, int rows) {
for (int i = 0; i < rows; i++) {
slots.remove(9 * i);
slots.remove(9 * i + 8);
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
index e5b2dddb..40e36622 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
@@ -13,6 +13,8 @@ import de.hysky.skyblocker.skyblock.experiment.ChronomatronSolver;
import de.hysky.skyblocker.skyblock.experiment.SuperpairsSolver;
import de.hysky.skyblocker.skyblock.experiment.UltrasequencerSolver;
import de.hysky.skyblocker.utils.Utils;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
@@ -22,8 +24,6 @@ import net.minecraft.screen.slot.Slot;
import org.jetbrains.annotations.NotNull;
import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -107,6 +107,12 @@ public class ContainerSolverManager {
highlights = null;
}
+ public void onSlotClick(int slot, ItemStack stack, ItemStack cursorStack) {
+ if (currentSolver != null) {
+ currentSolver.onClickSlot(slot, stack, cursorStack, groups);
+ }
+ }
+
public void onDraw(DrawContext context, List slots) {
if (currentSolver == null)
return;
@@ -122,8 +128,8 @@ public class ContainerSolverManager {
RenderSystem.colorMask(true, true, true, true);
}
- private Map slotMap(List slots) {
- Map slotMap = new TreeMap<>();
+ private Int2ObjectMap slotMap(List slots) {
+ Int2ObjectMap slotMap = new Int2ObjectRBTreeMap<>();
for (int i = 0; i < slots.size(); i++) {
slotMap.put(i, slots.get(i).getStack());
}
--
cgit
From 625b6b92e338f79e7b4f3a90a656d2f3e997f912 Mon Sep 17 00:00:00 2001
From: Aaron <51387595+AzureAaron@users.noreply.github.com>
Date: Fri, 26 Apr 2024 16:03:24 -0400
Subject: Rework terminal click marking to fix an edge case
---
.../de/hysky/skyblocker/utils/render/gui/ContainerSolver.java | 2 +-
.../skyblocker/utils/render/gui/ContainerSolverManager.java | 10 ++++++++--
2 files changed, 9 insertions(+), 3 deletions(-)
(limited to 'src/main/java/de/hysky/skyblocker/utils/render')
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java
index 16fa7411..e2e057b3 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java
@@ -34,7 +34,7 @@ public abstract class ContainerSolver {
SkyblockerMod.getInstance().containerSolverManager.markDirty();
}
- protected void onClickSlot(int slot, ItemStack stack, ItemStack cursorStack, String[] groups) {
+ protected void onClickSlot(int slot, ItemStack stack, int screenId, String[] groups) {
}
protected abstract List getColors(String[] groups, Int2ObjectMap slots);
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
index 40e36622..440809d9 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
@@ -36,6 +36,10 @@ public class ContainerSolverManager {
private ContainerSolver currentSolver = null;
private String[] groups;
private List highlights;
+ /**
+ * Useful for keeping track of a solver's state in a Screen instance, such as if Hypixel closes & reopens a screen after every click (as they do with terminals).
+ */
+ private int screenId = 0;
public ContainerSolverManager() {
solvers = new ContainerSolver[]{
@@ -82,6 +86,7 @@ public class ContainerSolverManager {
matcher.usePattern(solver.getName());
matcher.reset();
if (matcher.matches()) {
+ ++screenId;
currentSolver = solver;
groups = new String[matcher.groupCount()];
for (int i = 0; i < groups.length; i++) {
@@ -89,6 +94,7 @@ public class ContainerSolverManager {
}
currentSolver.start(screen);
markDirty();
+
return;
}
}
@@ -107,9 +113,9 @@ public class ContainerSolverManager {
highlights = null;
}
- public void onSlotClick(int slot, ItemStack stack, ItemStack cursorStack) {
+ public void onSlotClick(int slot, ItemStack stack) {
if (currentSolver != null) {
- currentSolver.onClickSlot(slot, stack, cursorStack, groups);
+ currentSolver.onClickSlot(slot, stack, screenId, groups);
}
}
--
cgit
From d24bac4d728d8ea9264e08934fb863771bcca5e2 Mon Sep 17 00:00:00 2001
From: Aaron <51387595+AzureAaron@users.noreply.github.com>
Date: Fri, 26 Apr 2024 20:00:18 -0400
Subject: Pluralize the mixin and accessor packages
---
src/main/java/de/hysky/skyblocker/utils/render/FrustumUtils.java | 4 ++--
src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java | 4 ++--
.../hysky/skyblocker/utils/render/gui/AbstractCustomHypixelGUI.java | 2 +-
.../de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java | 3 ++-
4 files changed, 7 insertions(+), 6 deletions(-)
(limited to 'src/main/java/de/hysky/skyblocker/utils/render')
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/FrustumUtils.java b/src/main/java/de/hysky/skyblocker/utils/render/FrustumUtils.java
index 3fe79e43..d82b4497 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/FrustumUtils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/FrustumUtils.java
@@ -1,7 +1,7 @@
package de.hysky.skyblocker.utils.render;
-import de.hysky.skyblocker.mixin.accessor.FrustumInvoker;
-import de.hysky.skyblocker.mixin.accessor.WorldRendererAccessor;
+import de.hysky.skyblocker.mixins.accessors.FrustumInvoker;
+import de.hysky.skyblocker.mixins.accessors.WorldRendererAccessor;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.Frustum;
import net.minecraft.util.math.Box;
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
index 4d97e733..a6772fb2 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
@@ -3,8 +3,8 @@ package de.hysky.skyblocker.utils.render;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.logging.LogUtils;
import de.hysky.skyblocker.SkyblockerMod;
-import de.hysky.skyblocker.mixin.accessor.BeaconBlockEntityRendererInvoker;
-import de.hysky.skyblocker.mixin.accessor.DrawContextInvoker;
+import de.hysky.skyblocker.mixins.accessors.BeaconBlockEntityRendererInvoker;
+import de.hysky.skyblocker.mixins.accessors.DrawContextInvoker;
import de.hysky.skyblocker.utils.render.culling.OcclusionCulling;
import de.hysky.skyblocker.utils.render.title.Title;
import de.hysky.skyblocker.utils.render.title.TitleContainer;
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractCustomHypixelGUI.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractCustomHypixelGUI.java
index 4f648b8c..ef2e6bf9 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractCustomHypixelGUI.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractCustomHypixelGUI.java
@@ -1,6 +1,6 @@
package de.hysky.skyblocker.utils.render.gui;
-import de.hysky.skyblocker.mixin.accessor.HandledScreenAccessor;
+import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
import de.hysky.skyblocker.skyblock.auction.AuctionHouseScreenHandler;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.entity.player.PlayerInventory;
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
index 440809d9..b37c57a4 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java
@@ -1,7 +1,8 @@
package de.hysky.skyblocker.utils.render.gui;
import com.mojang.blaze3d.systems.RenderSystem;
-import de.hysky.skyblocker.mixin.accessor.HandledScreenAccessor;
+
+import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
import de.hysky.skyblocker.skyblock.accessories.newyearcakes.NewYearCakeBagHelper;
import de.hysky.skyblocker.skyblock.accessories.newyearcakes.NewYearCakesHelper;
import de.hysky.skyblocker.skyblock.dungeon.CroesusHelper;
--
cgit