From fbde4948d5e10d0cb922ba9defecfe1fcd0a1abb Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Mon, 17 Jan 2022 08:18:06 +0700 Subject: [PATCH] Various bug fixes - Input cursor movement seems too fast, attempt to reduce it by setting larger font size in the hidden text field. - latestlog.txt doesn't log in 1.12+ since Log4j patch. Fixed by adding some config lines. - Makefile: building is broken when run make from a path with space(s). Fixed by handling spaces with backslashes. - text2speech is not overridden properly. Fixed by excluding it from download list and adding launcher.jar itself to the classpath. - XML log output in < 1.12 since Log4j patch. Fixed by using our own configuration file. Some more changes: - Commented out a debug line in LWJGLX - Fix a typo. - JavaLauncher: use (ObjC)BOOL instead of (std)bool. --- .../com/mojang/text2speech/Text2Speech.java | 11 ------- .../java/net/kdt/pojavlaunch/PLaunchApp.java | 2 ++ .../main/java/net/kdt/pojavlaunch/Tools.java | 5 ++-- .../lwjgl/opengl/GLFWInputImplementation.java | 2 +- Makefile | 2 +- Natives/JavaLauncher.h | 4 +-- Natives/JavaLauncher.m | 4 +-- Natives/SurfaceViewController.m | 1 + Natives/resources/log4j-rce-patch-1.12.xml | 7 +++++ Natives/resources/log4j-rce-patch-1.7.xml | 29 +++++++++++++++++++ 10 files changed, 48 insertions(+), 19 deletions(-) create mode 100755 Natives/resources/log4j-rce-patch-1.7.xml diff --git a/JavaApp/src/main/java/com/mojang/text2speech/Text2Speech.java b/JavaApp/src/main/java/com/mojang/text2speech/Text2Speech.java index 3d503e77..959d7083 100644 --- a/JavaApp/src/main/java/com/mojang/text2speech/Text2Speech.java +++ b/JavaApp/src/main/java/com/mojang/text2speech/Text2Speech.java @@ -2,16 +2,5 @@ package com.mojang.text2speech; public class Text2Speech { public static void main(final String[] args) { - System.setProperty("jna.library.path", "./src/natives/resources/"); - final Narrator narrator = Narrator.getNarrator(); - narrator.say("This is a test", false); - - while (true) { - try { - Thread.sleep(100); - } catch (final InterruptedException e) { - e.printStackTrace(); - } - } } } diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java index 4765b69a..ed7870a3 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java @@ -65,6 +65,8 @@ public class PLaunchApp { if (mVersion.logging != null) { if (mVersion.logging.client.file.id.equals("client-1.12.xml")) { configPath = Tools.DIR_BUNDLE + "/log4j-rce-patch-1.12.xml"; + } else if (mVersion.logging.client.file.id.equals("client-1.7.xml")) { + configPath = Tools.DIR_BUNDLE + "/log4j-rce-patch-1.7.xml"; } else { configPath = Tools.DIR_GAME_NEW + "/" + mVersion.logging.client.file.id; } diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java index 74758024..ad7fe162 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -150,7 +150,8 @@ public final class Tools // URLClassLoader loader = new URLClassLoader(urlList.toArray(new URL[0]), ClassLoader.getSystemClassLoader()); PojavClassLoader loader = (PojavClassLoader) ClassLoader.getSystemClassLoader(); - + // add launcher.jar itself + loader.addURL(Tools.class.getProtectionDomain().getCodeSource().getLocation().toURI().toURL()); for (String s : launchClassPath.split(":")) { if (!s.isEmpty()) { loader.addURL(new File(s).toURI().toURL()); @@ -417,7 +418,7 @@ public final class Tools // Support for text2speech is not planned, so skip it for now. for (int i = 0; i < libraries.length; i++) { DependentLibrary libItem = libraries[i]; - if (libItem.name.startsWith("com.mojang.text2speech") || + if (libItem.name.startsWith("com.mojang:text2speech") || libItem.name.startsWith("net.java.jinput") || libItem.name.startsWith("net.java.dev.jna:platform:") || libItem.name.startsWith("org.lwjgl") || diff --git a/JavaApp/src/main/java/org/lwjgl/opengl/GLFWInputImplementation.java b/JavaApp/src/main/java/org/lwjgl/opengl/GLFWInputImplementation.java index 25c387eb..308899cf 100644 --- a/JavaApp/src/main/java/org/lwjgl/opengl/GLFWInputImplementation.java +++ b/JavaApp/src/main/java/org/lwjgl/opengl/GLFWInputImplementation.java @@ -178,7 +178,7 @@ public class GLFWInputImplementation implements InputImplementation { last_event_nanos = nanos; } public void putKeyboardEvent(int keycode, byte state, int ch, long nanos, boolean repeat) { - System.out.println("LWJGL2: debug keyboard=" + keycode + ", state=" + state + ", repeat=" + repeat); + //System.out.println("LWJGL2: debug keyboard=" + keycode + ", state=" + state + ", repeat=" + repeat); key_down_buffer[keycode] = state; keyboardEvent.clear(); keyboardEvent.putInt(keycode).put(state).putInt(ch).putLong(nanos).put(repeat ? (byte)1 : (byte)0); diff --git a/Makefile b/Makefile index f0df00b6..59db4b29 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ SHELL := /bin/bash .SHELLFLAGS = -ec # Prerequisite variables -SOURCEDIR := $(shell pwd) +SOURCEDIR := $(shell printf "%q\n" "$(shell pwd)") OUTPUTDIR := $(SOURCEDIR)/artifacts WORKINGDIR := $(SOURCEDIR)/Natives/build DETECTPLAT := $(shell uname -s) diff --git a/Natives/JavaLauncher.h b/Natives/JavaLauncher.h index df52ab8d..ce0e43b1 100644 --- a/Natives/JavaLauncher.h +++ b/Natives/JavaLauncher.h @@ -1,7 +1,7 @@ #pragma once -#include +#include -static bool started = false; +static BOOL started = NO; int launchJVM(int argc, char *argv[]); diff --git a/Natives/JavaLauncher.m b/Natives/JavaLauncher.m index 277c723a..e224bd39 100644 --- a/Natives/JavaLauncher.m +++ b/Natives/JavaLauncher.m @@ -329,7 +329,7 @@ int launchJVM(int argc, char *argv[]) { mkdir(dirname(log_path), 755); if (!started) { - debug("[Pre-init] Staring logging STDIO as jrelog:V\n"); + debug("[Pre-init] Starting logging STDIO as jrelog:V\n"); // Redirect stdio to latestlog.txt char newname[2048]; sprintf(newname, "%s/latestlog.old.txt", homeDir); @@ -654,7 +654,7 @@ int launchJVM(int argc, char *argv[]) { char **targv = started ? argv : margv; if (!started) { - started = true; + started = YES; } /* debug: for (int i = 0; i < targc; i++) { diff --git a/Natives/SurfaceViewController.m b/Natives/SurfaceViewController.m index d7339ea4..5ba04459 100644 --- a/Natives/SurfaceViewController.m +++ b/Natives/SurfaceViewController.m @@ -228,6 +228,7 @@ const void * _CGDataProviderGetBytePointerCallbackOSMESA(void *info) { #else self.inputView = [[TrackedTextField alloc] initWithFrame:CGRectMake(5 * 2 + 160.0, 5 * 2 + 30.0, 200.0, 30.0)]; self.inputView.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.5f]; + self.inputView.font = [self.inputView.font fontWithSize:20]; inputLengthView = [[UILabel alloc] initWithFrame:CGRectMake(5 * 2 + 80.0, 5 * 2 + 30.0, 80.0, 30.0)]; inputLengthView.text = @"length=?"; diff --git a/Natives/resources/log4j-rce-patch-1.12.xml b/Natives/resources/log4j-rce-patch-1.12.xml index 7b69954e..1cf0fd92 100644 --- a/Natives/resources/log4j-rce-patch-1.12.xml +++ b/Natives/resources/log4j-rce-patch-1.12.xml @@ -1,6 +1,13 @@ + + + + + + + diff --git a/Natives/resources/log4j-rce-patch-1.7.xml b/Natives/resources/log4j-rce-patch-1.7.xml new file mode 100755 index 00000000..784eca3d --- /dev/null +++ b/Natives/resources/log4j-rce-patch-1.7.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file