From 0403613b9bff2610f46d4453505590aeeee13238 Mon Sep 17 00:00:00 2001 From: 3arthqu4ke <56741599+3arthqu4ke@users.noreply.github.com> Date: Tue, 20 Jun 2023 22:03:55 +0200 Subject: [PATCH] [1.7.1] Add support for forge 1.20.1 --- .../ForgeDisplayWindowRedirections.java | 36 +++++++++++++++++++ .../lwjgl/redirections/LwjglRedirections.java | 3 ++ 2 files changed, 39 insertions(+) create mode 100644 headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/ForgeDisplayWindowRedirections.java diff --git a/headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/ForgeDisplayWindowRedirections.java b/headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/ForgeDisplayWindowRedirections.java new file mode 100644 index 00000000..9be69a40 --- /dev/null +++ b/headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/ForgeDisplayWindowRedirections.java @@ -0,0 +1,36 @@ +package me.earth.headlessmc.lwjgl.redirections; + +import me.earth.headlessmc.lwjgl.api.RedirectionManager; + +import java.nio.ByteBuffer; + +import static me.earth.headlessmc.lwjgl.api.Redirection.of; + +/** + * Forge 1.20.1 introduces the + * {@code net.minecraftforge.fml.earlydisplay.DisplayWindow} class. + */ +public class ForgeDisplayWindowRedirections { + public static void redirect(RedirectionManager manager) { + manager.redirect("Lorg/lwjgl/glfw/GLFW;glfwGetPrimaryMonitor()J", + of(1L)); + + manager.redirect("Lorg/lwjgl/glfw/GLFW;" + + "glfwCreateWindow(IILjava/lang/CharSequence;JJ)J", + of(1L)); + + // act like we compiled shader + manager.redirect("Lorg/lwjgl/opengl/GL20C;glGetShaderi(II)I", of(1)); + manager.redirect("Lorg/lwjgl/opengl/GL20C;glGetProgrami(II)I", of(1)); + + manager.redirect("Lorg/lwjgl/stb/STBTruetype;" + + "stbtt_InitFont(Lorg/lwjgl/stb/STBTTFontinfo;" + + "Ljava/nio/ByteBuffer;)Z", of(true)); + + manager.redirect("Lorg/lwjgl/opengl/GL30C;glMapBufferRange(IJJI)" + + "Ljava/nio/ByteBuffer;", + (obj, desc, type, args) -> + ByteBuffer.wrap(new byte[(int) ((long) args[2])])); + } + +} diff --git a/headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/LwjglRedirections.java b/headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/LwjglRedirections.java index 7a23eb39..36d23bd6 100644 --- a/headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/LwjglRedirections.java +++ b/headlessmc-lwjgl/src/main/java/me/earth/headlessmc/lwjgl/redirections/LwjglRedirections.java @@ -267,6 +267,9 @@ public static void register(RedirectionManager manager) { ); CustomBufferRedirection.redirect(manager); + + // 1.20.1 + ForgeDisplayWindowRedirections.redirect(manager); } }