From 1f2bed2ef119094bdc156aa3a206b93dea5081d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Thu, 16 Jun 2016 02:20:23 +0200 Subject: NOISSUE implement direct java launch Just running the Java process and giving it params on the command line --- libraries/launcher/CMakeLists.txt | 1 - libraries/launcher/org/multimc/EntryPoint.java | 8 - libraries/launcher/org/multimc/Utils.java | 90 ----------- .../org/multimc/legacy/LegacyLauncher.java | 175 --------------------- .../org/multimc/onesix/OneSixLauncher.java | 112 ------------- 5 files changed, 386 deletions(-) delete mode 100644 libraries/launcher/org/multimc/legacy/LegacyLauncher.java (limited to 'libraries') diff --git a/libraries/launcher/CMakeLists.txt b/libraries/launcher/CMakeLists.txt index b62805e0..9c0e128b 100644 --- a/libraries/launcher/CMakeLists.txt +++ b/libraries/launcher/CMakeLists.txt @@ -17,7 +17,6 @@ set(SRC # legacy applet wrapper thing. # The launcher has to be there for silly FML/Forge relauncher. net/minecraft/Launcher.java - org/multimc/legacy/LegacyLauncher.java org/multimc/LegacyFrame.java # onesix launcher diff --git a/libraries/launcher/org/multimc/EntryPoint.java b/libraries/launcher/org/multimc/EntryPoint.java index d1fc54a8..1d46c023 100644 --- a/libraries/launcher/org/multimc/EntryPoint.java +++ b/libraries/launcher/org/multimc/EntryPoint.java @@ -14,7 +14,6 @@ package org.multimc;/* * limitations under the License. */ -import org.multimc.legacy.LegacyLauncher; import org.multimc.onesix.OneSixLauncher; import org.simplericity.macify.eawt.Application; import org.simplericity.macify.eawt.DefaultApplication; @@ -83,13 +82,6 @@ public class EntryPoint if(command.equals("launcher")) { - if(param.equals("legacy")) - { - m_launcher = new LegacyLauncher(); - Utils.log("Using legacy launcher."); - Utils.log(); - return Action.Proceed; - } if(param.equals("onesix")) { m_launcher = new OneSixLauncher(); diff --git a/libraries/launcher/org/multimc/Utils.java b/libraries/launcher/org/multimc/Utils.java index 32cf7919..86182831 100644 --- a/libraries/launcher/org/multimc/Utils.java +++ b/libraries/launcher/org/multimc/Utils.java @@ -186,95 +186,5 @@ public class Utils { System.out.println(); } - - /** - * Pushes bytes from in to out. Closes both streams no matter what. - * @param in the input stream - * @param out the output stream - * @throws IOException - */ - private static void copyStream(InputStream in, OutputStream out) throws IOException - { - try - { - byte[] buffer = new byte[4096]; - int len; - - while((len = in.read(buffer)) >= 0) - out.write(buffer, 0, len); - } finally - { - in.close(); - out.close(); - } - } - - /** - * Replace a 'target' string 'suffix' with 'replacement' - */ - public static String replaceSuffix (String target, String suffix, String replacement) - { - if (!target.endsWith(suffix)) - { - return target; - } - String prefix = target.substring(0, target.length() - suffix.length()); - return prefix + replacement; - } - - /** - * Unzip zip file with natives 'source' into the folder 'targetFolder' - * - * Contains a hack for OSX. Yay. - * @param source - * @param targetFolder - * @throws IOException - */ - public static void unzipNatives(File source, File targetFolder) throws IOException - { - ZipFile zip = new ZipFile(source); - - boolean applyHacks = false; - String[] javaVersionElements = System.getProperty("java.version").split("[.\\-+]"); - int major = Integer.parseInt(javaVersionElements[0]); - if(major == 1) - { - major = Integer.parseInt(javaVersionElements[1]); - } - if (major >= 8) - { - applyHacks = true; - } - - try - { - Enumeration entries = zip.entries(); - - while (entries.hasMoreElements()) - { - ZipEntry entry = (ZipEntry) entries.nextElement(); - - String entryName = entry.getName(); - String fileName = entryName; - if(applyHacks) - { - fileName = replaceSuffix(entryName, ".jnilib", ".dylib"); - } - File targetFile = new File(targetFolder, fileName); - if (targetFile.getParentFile() != null) - { - targetFile.getParentFile().mkdirs(); - } - - if (entry.isDirectory()) - continue; - - copyStream(zip.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(targetFile))); - } - } finally - { - zip.close(); - } - } } diff --git a/libraries/launcher/org/multimc/legacy/LegacyLauncher.java b/libraries/launcher/org/multimc/legacy/LegacyLauncher.java deleted file mode 100644 index 347bb1a2..00000000 --- a/libraries/launcher/org/multimc/legacy/LegacyLauncher.java +++ /dev/null @@ -1,175 +0,0 @@ -package org.multimc.legacy;/* - * Copyright 2012-2014 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.multimc.*; - -import java.applet.Applet; -import java.awt.*; -import java.io.File; -import java.lang.reflect.Field; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; - -public class LegacyLauncher implements Launcher -{ - @Override - public int launch(ParamBucket params) - { - String userName, sessionId, windowTitle, windowParams, lwjgl; - String mainClass = "net.minecraft.client.Minecraft"; - try - { - userName = params.first("userName"); - sessionId = params.first("sessionId"); - windowTitle = params.first("windowTitle"); - windowParams = params.first("windowParams"); - lwjgl = params.first("lwjgl"); - } catch (NotFoundException e) - { - System.err.println("Not enough arguments."); - return -1; - } - - String cwd = System.getProperty("user.dir"); - Dimension winSize = new Dimension(854, 480); - boolean maximize = false; - - String[] dimStrings = windowParams.split("x"); - - if (windowParams.equalsIgnoreCase("max")) - { - maximize = true; - } - else if (dimStrings.length == 2) - { - try - { - winSize = new Dimension(Integer.parseInt(dimStrings[0]), Integer.parseInt(dimStrings[1])); - } catch (NumberFormatException ignored) {} - } - - File binDir = new File(cwd, "bin"); - File lwjglDir; - if (lwjgl.equalsIgnoreCase("Mojang")) - { - lwjglDir = binDir; - } - else - { - lwjglDir = new File(lwjgl); - } - - URL[] classpath; - { - try - { - classpath = new URL[] - { - new File(binDir, "minecraft.jar").toURI().toURL(), - new File(lwjglDir, "lwjgl.jar").toURI().toURL(), - new File(lwjglDir, "lwjgl_util.jar").toURI().toURL(), - new File(lwjglDir, "jinput.jar").toURI().toURL(), - }; - } catch (MalformedURLException e) - { - System.err.println("Class path entry is badly formed:"); - e.printStackTrace(System.err); - return -1; - } - } - - String nativesDir = new File(lwjglDir, "natives").toString(); - - System.setProperty("org.lwjgl.librarypath", nativesDir); - System.setProperty("net.java.games.input.librarypath", nativesDir); - - // print the pretty things - { - Utils.log("Main Class:"); - Utils.log(" " + mainClass); - Utils.log(); - - Utils.log("Class Path:"); - for (URL s : classpath) - { - Utils.log(" " + s); - } - Utils.log(); - - Utils.log("Native Path:"); - Utils.log(" " + nativesDir); - Utils.log(); - } - - URLClassLoader cl = new URLClassLoader(classpath, LegacyLauncher.class.getClassLoader()); - - // Get the Minecraft Class and set the base folder - Class mc; - try - { - mc = cl.loadClass(mainClass); - - Field f = Utils.getMCPathField(mc); - - if (f == null) - { - System.err.println("Could not find Minecraft path field. Launch failed."); - return -1; - } - - f.setAccessible(true); - f.set(null, new File(cwd)); - } catch (Exception e) - { - System.err.println("Could not set base folder. Failed to find/access Minecraft main class:"); - e.printStackTrace(System.err); - return -1; - } - - System.setProperty("minecraft.applet.TargetDirectory", cwd); - - String[] mcArgs = new String[2]; - mcArgs[0] = userName; - mcArgs[1] = sessionId; - - Utils.log("Launching with applet wrapper..."); - try - { - Class MCAppletClass = cl.loadClass("net.minecraft.client.MinecraftApplet"); - Applet mcappl = (Applet) MCAppletClass.newInstance(); - LegacyFrame mcWindow = new LegacyFrame(windowTitle); - mcWindow.start(mcappl, userName, sessionId, winSize, maximize); - } catch (Exception e) - { - Utils.log("Applet wrapper failed:", "Error"); - e.printStackTrace(System.err); - Utils.log(); - Utils.log("Falling back to compatibility mode."); - try - { - mc.getMethod("main", String[].class).invoke(null, (Object) mcArgs); - } catch (Exception e1) - { - Utils.log("Failed to invoke the Minecraft main class:", "Fatal"); - e1.printStackTrace(System.err); - return -1; - } - } - - return 0; - } -} diff --git a/libraries/launcher/org/multimc/onesix/OneSixLauncher.java b/libraries/launcher/org/multimc/onesix/OneSixLauncher.java index 179df0ee..e3e4c283 100644 --- a/libraries/launcher/org/multimc/onesix/OneSixLauncher.java +++ b/libraries/launcher/org/multimc/onesix/OneSixLauncher.java @@ -30,9 +30,6 @@ public class OneSixLauncher implements Launcher { // parameters, separated from ParamBucket private List libraries; - private List extlibs; - private List extlibs32; - private List extlibs64; private List mcparams; private List mods; private List jarmods; @@ -56,28 +53,9 @@ public class OneSixLauncher implements Launcher private void processParams(ParamBucket params) throws NotFoundException { libraries = params.all("cp"); - extlibs = params.allSafe("ext", new ArrayList()); - extlibs32 = params.allSafe("ext32", new ArrayList()); - extlibs64 = params.allSafe("ext64", new ArrayList()); - - // Unify the extracted native libs according to actual system architecture - String property = System.getProperty("os.arch"); - boolean is_64 = property.equalsIgnoreCase("x86_64") || property.equalsIgnoreCase("amd64"); - if(is_64) - { - extlibs.addAll(extlibs64); - } - else - { - extlibs.addAll(extlibs32); - } - mcparams = params.allSafe("param", new ArrayList() ); mainClass = params.firstSafe("mainClass", "net.minecraft.client.Minecraft"); appletClass = params.firstSafe("appletClass", "net.minecraft.client.MinecraftApplet"); - mods = params.allSafe("mod", new ArrayList()); - jarmods = params.allSafe("jarmod", new ArrayList()); - coremods = params.allSafe("coremod", new ArrayList()); traits = params.allSafe("traits", new ArrayList()); nativePath = params.first("natives"); @@ -105,75 +83,6 @@ public class OneSixLauncher implements Launcher } } - private void printStats() - { - Utils.log("Main Class:"); - Utils.log(" " + mainClass); - Utils.log(); - - Utils.log("Native path:"); - Utils.log(" " + nativePath); - Utils.log(); - - Utils.log("Traits:"); - Utils.log(" " + traits); - Utils.log(); - - Utils.log("Libraries:"); - for (String s : libraries) - { - File f = new File(s); - if (f.exists()) - { - Utils.log(" " + s); - } - else - { - Utils.log(" " + s + " (missing)", "Warning"); - } - } - Utils.log(); - - if(mods.size() > 0) - { - Utils.log("Mods:"); - for (String s : mods) - { - Utils.log(" " + s); - } - Utils.log(); - } - - if(coremods.size() > 0) - { - Utils.log("Core Mods:"); - for (String s : coremods) - { - Utils.log(" " + s); - } - Utils.log(); - } - - if(jarmods.size() > 0) - { - Utils.log("Jar Mods:"); - for (String s : jarmods) - { - Utils.log(" " + s); - } - Utils.log(); - } - - Utils.log("Params:"); - Utils.log(" " + mcparams.toString()); - Utils.log(); - if(maximize) - Utils.log("Window size: max (if available)"); - else - Utils.log("Window size: " + Integer.toString(winSize.width) + " x " + Integer.toString(winSize.height)); - Utils.log(); - } - int legacyLaunch() { // Get the Minecraft Class and set the base folder @@ -310,27 +219,6 @@ public class OneSixLauncher implements Launcher return -1; } - // print the pretty things - printStats(); - - // extract native libs (depending on platform here... java!) - Utils.log("Preparing native libraries..."); - for(String extlib: extlibs) - { - try - { - File extlibf = new File(extlib); - Utils.log("Extracting " + extlibf.getName()); - Utils.unzipNatives(extlibf, new File(nativePath)); - } catch (IOException e) - { - System.err.println("Failed to extract native library:"); - e.printStackTrace(System.err); - return -1; - } - } - Utils.log(); - // set the native libs path... the brute force way try { -- cgit v1.2.3