Remove the need for LegacyUtils

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad
2022-10-29 15:22:24 +01:00
parent a7b1700d42
commit ade7526f5f
2 changed files with 25 additions and 92 deletions

View File

@ -56,7 +56,6 @@
package org.prismlauncher.launcher.impl;
import org.prismlauncher.applet.LegacyFrame;
import org.prismlauncher.utils.LegacyUtils;
import org.prismlauncher.utils.Parameters;
import java.applet.Applet;
@ -65,6 +64,7 @@ import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
@ -101,7 +101,7 @@ public final class LegacyLauncher extends AbstractLauncher {
@Override
public void launch() throws Throwable {
Class<?> main = loadMain();
Field gameDirField = LegacyUtils.getMinecraftGameDirField(main);
Field gameDirField = getMinecraftGameDirField(main);
if (gameDirField == null) {
LOGGER.warning("Could not find Mineraft path field.");
@ -143,4 +143,27 @@ public final class LegacyLauncher extends AbstractLauncher {
invokeMain(main);
}
/**
* Finds a field that looks like a Minecraft base folder in a supplied class
* @param clazz the class to scan
* @return The found field.
*/
private static Field getMinecraftGameDirField(Class<?> clazz) {
// Field we're looking for is always
// private static File obfuscatedName = null;
for (Field field : clazz.getDeclaredFields()) {
// Has to be File
if (field.getType() != File.class)
continue;
// And Private Static.
if (!Modifier.isStatic(field.getModifiers()) || !Modifier.isPrivate(field.getModifiers()))
continue;
return field;
}
return null;
}
}