P8: scaffold —— 反混淆 + MC 渲染栈离屏初始化 + 真渲染出图
实测链路(全绿): 1. 官方 ProGuard 映射 → SRG → SpecialSource 重映射 → client-named.jar 2. 反编译确认 MC 渲染器挂在 Minecraft 单例上,不能独立 new 3. 权威序列:tryDetectVersion → Bootstrap → RenderSystem → new Minecraft(cfg) 4. 渲 3 帧 + glReadPixels → PNG,画面是 Mojang 加载屏(真渲染,非清屏) 三个坑(实测证据): - 漏 tryDetectVersion → Game version not set - FolderData 参数顺序错 → icons/ 404 - assetIndex 用 id(5) 而非落盘名(1.20.1) → 资源全找不到 下一步:ClientLevel 构造只需 listener.registryAccess(), ClientChunkCache.replaceWithPacketData 接收 map_chunk 原始字节 (与 chunk.py 同格式)⇒ 这就是数据喂渲染器的落点。
This commit is contained in:
21
scaffold/GlProbe.java
Normal file
21
scaffold/GlProbe.java
Normal file
@ -0,0 +1,21 @@
|
||||
import org.lwjgl.glfw.*;
|
||||
import org.lwjgl.opengl.*;
|
||||
import static org.lwjgl.glfw.GLFW.*;
|
||||
import static org.lwjgl.opengl.GL11.*;
|
||||
import static org.lwjgl.system.MemoryUtil.NULL;
|
||||
|
||||
public class GlProbe {
|
||||
public static void main(String[] a) {
|
||||
GLFWErrorCallback.createPrint(System.err).set();
|
||||
if (!glfwInit()) { System.out.println("FAIL: glfwInit"); return; }
|
||||
glfwDefaultWindowHints();
|
||||
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
|
||||
long win = glfwCreateWindow(320, 240, "probe", NULL, NULL);
|
||||
if (win == NULL) { System.out.println("FAIL: createWindow"); return; }
|
||||
glfwMakeContextCurrent(win);
|
||||
GL.createCapabilities();
|
||||
System.out.println("OK gl=" + glGetString(GL_VERSION));
|
||||
System.out.println("OK renderer=" + glGetString(GL_RENDERER));
|
||||
glfwDestroyWindow(win); glfwTerminate();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user