aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-10-22 17:35:29 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-10-22 17:35:29 -0400
commite0e07ed86d9dadacc09c617f83ca663c66b46cce (patch)
tree5a6a8c7e4b27adcd60e345de97f05b3fe763a8a9 /src/main/java
parent47762af855ae29bd0742f2beff7c6b81523f9fec (diff)
downloadSkyblocker-e0e07ed86d9dadacc09c617f83ca663c66b46cce.tar.gz
Skyblocker-e0e07ed86d9dadacc09c617f83ca663c66b46cce.tar.bz2
Skyblocker-e0e07ed86d9dadacc09c617f83ca663c66b46cce.zip
Always use Vanilla render thread scheduling
Sodium abandoned their plans regarding this and deleted their API
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java36
1 files changed, 5 insertions, 31 deletions
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 9f24e2e7..8980f348 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
@@ -1,7 +1,7 @@
package de.hysky.skyblocker.utils.render;
+import com.mojang.blaze3d.systems.RenderCall;
import com.mojang.blaze3d.systems.RenderSystem;
-import com.mojang.logging.LogUtils;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.mixins.accessors.BeaconBlockEntityRendererInvoker;
@@ -37,17 +37,11 @@ import org.joml.Matrix3f;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.lwjgl.opengl.GL11;
-import org.slf4j.Logger;
import java.awt.*;
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodType;
public class RenderHelper {
- private static final Logger LOGGER = LogUtils.getLogger();
private static final Identifier TRANSLUCENT_DRAW = Identifier.of(SkyblockerMod.NAMESPACE, "translucent_draw");
- private static final MethodHandle SCHEDULE_DEFERRED_RENDER_TASK = getDeferredRenderTaskHandle();
private static final Vec3d ONE = new Vec3d(1, 1, 1);
private static final int MAX_OVERWORLD_BUILD_HEIGHT = 319;
private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
@@ -345,17 +339,11 @@ public class RenderHelper {
profiler.pop();
}
- public static void runOnRenderThread(Runnable runnable) {
+ public static void runOnRenderThread(RenderCall renderCall) {
if (RenderSystem.isOnRenderThread()) {
- runnable.run();
- } else if (SCHEDULE_DEFERRED_RENDER_TASK != null) { //Sodium
- try {
- SCHEDULE_DEFERRED_RENDER_TASK.invokeExact(runnable);
- } catch (Throwable t) {
- LOGGER.error("[Skyblocker] Failed to schedule a render task!", t);
- }
- } else { //Vanilla
- RenderSystem.recordRenderCall(runnable::run);
+ renderCall.execute();
+ } else {
+ RenderSystem.recordRenderCall(renderCall);
}
}
@@ -416,18 +404,4 @@ public class RenderHelper {
public static void renderNineSliceColored(DrawContext context, Identifier texture, int x, int y, int width, int height, Color color) {
renderNineSliceColored(context, texture, x, y, width, height, ColorHelper.getArgb(color.getAlpha(), color.getRed(), color.getGreen(), color.getBlue()));
}
-
- // TODO Get rid of reflection once the new Sodium is released
- private static MethodHandle getDeferredRenderTaskHandle() {
- try {
- Class<?> deferredTaskClass = Class.forName("me.jellysquid.mods.sodium.client.render.util.DeferredRenderTask");
-
- MethodHandles.Lookup lookup = MethodHandles.publicLookup();
- MethodType mt = MethodType.methodType(void.class, Runnable.class);
-
- return lookup.findStatic(deferredTaskClass, "schedule", mt);
- } catch (Throwable ignored) {}
-
- return null;
- }
}