gradle: injected-client things

Move injector goal to injected-client(ish)
Keep injected-client classes in the correct package
Remove placeholder class/duplicate vanilla jar
This commit is contained in:
Lucwousin
2019-07-28 13:39:15 +02:00
parent 81e99a2d9b
commit 8bdb204019
11 changed files with 54 additions and 144 deletions

View File

@@ -58,7 +58,6 @@ import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.graphics.ModelOutlineRenderer;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.PluginManager;
import net.runelite.client.rs.ClientLoader;
import net.runelite.client.rs.ClientUpdateCheckMode;
import net.runelite.client.task.Scheduler;
import net.runelite.client.ui.ClientUI;
@@ -179,8 +178,8 @@ public class RuneLite
parser.accepts("developer-mode", "Enable developer tools");
parser.accepts("debug", "Show extra debugging output");
parser.accepts("no-splash", "Do not show the splash screen");
parser.accepts("local-injected", "Use local injected-client");
parser.accepts("private-server", "Use a custom codebase");
parser.accepts("local-injected", "Use local injected-client - DEPRECATED");
parser.accepts("private-server", "Use a custom codebase - DEPRECATED: Use --rs=RSPS");
final ArgumentAcceptingOptionSpec<String> proxyInfo = parser
.accepts("proxy")
@@ -261,7 +260,7 @@ public class RuneLite
if (options.has("local-injected"))
{
ClientLoader.useLocalInjected = true;
log.warn("--local-injected has been deprecated and may get removed soon");
}
if (options.has("private-server"))

View File

@@ -26,23 +26,19 @@
*/
package net.runelite.client.rs;
import com.google.common.io.ByteStreams;
import lombok.extern.slf4j.Slf4j;
import java.net.URLClassLoader;
import java.applet.Applet;
import java.io.IOException;
import java.net.URL;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import java.applet.Applet;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Singleton
public class ClientLoader
{
public static boolean useLocalInjected = false;
private final ClientConfigLoader clientConfigLoader;
private final ClientUpdateCheckMode updateCheckMode;
@@ -55,60 +51,6 @@ public class ClientLoader
this.clientConfigLoader = clientConfigLoader;
}
private static Applet loadRLPlus(final RSConfig config)
throws ClassNotFoundException, InstantiationException, IllegalAccessException
{
ClassLoader rsClassLoader = new ClassLoader(ClientLoader.class.getClassLoader())
{
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException
{
String path = "/injected-client/".concat(name.replace('.', '/')).concat(".class");
InputStream inputStream = ClientLoader.class.getResourceAsStream(path);
if (inputStream == null)
{
throw new ClassNotFoundException(name + " " + path);
}
byte[] data;
try
{
data = ByteStreams.toByteArray(inputStream);
}
catch (IOException e)
{
e.printStackTrace();
throw new RuntimeException("Failed to load class: " + name + " " + path);
}
return defineClass(name, data, 0, data.length);
}
};
Class<?> clientClass = rsClassLoader.loadClass("client");
return loadFromClass(config, clientClass);
}
private static Applet loadVanilla(final RSConfig config)
throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException
{
final String codebase = config.getCodeBase();
final String initialJar = config.getInitialJar();
final String initialClass = config.getInitialClass();
final URL url = new URL(codebase + initialJar);
// Must set parent classloader to null, or it will pull from
// this class's classloader first
final URLClassLoader classloader = new URLClassLoader(new URL[]{url}, null);
final Class<?> clientClass = classloader.loadClass(initialClass);
return loadFromClass(config, clientClass);
}
private static Applet loadFromClass(final RSConfig config, final Class<?> clientClass)
throws IllegalAccessException, InstantiationException
{
final Applet rs = (Applet) clientClass.newInstance();
rs.setStub(new RSAppletStub(config));
return rs;
}
public Applet load()
{
try
@@ -141,4 +83,34 @@ public class ClientLoader
return null;
}
}
private static Applet loadRLPlus(final RSConfig config)
throws ClassNotFoundException, InstantiationException, IllegalAccessException
{
final Class<?> clientClass = ClientLoader.class.getClassLoader().loadClass(config.getInitialClass());
return loadFromClass(config, clientClass);
}
private static Applet loadVanilla(final RSConfig config)
throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException
{
final String codebase = config.getCodeBase();
final String initialJar = config.getInitialJar();
final String initialClass = config.getInitialClass();
final URL url = new URL(codebase + initialJar);
// Must set parent classloader to null, or it will pull from
// this class's classloader first
final URLClassLoader classloader = new URLClassLoader(new URL[]{url}, null);
final Class<?> clientClass = classloader.loadClass(initialClass);
return loadFromClass(config, clientClass);
}
private static Applet loadFromClass(final RSConfig config, final Class<?> clientClass)
throws IllegalAccessException, InstantiationException
{
final Applet rs = (Applet) clientClass.newInstance();
rs.setStub(new RSAppletStub(config));
return rs;
}
}

View File

@@ -29,6 +29,5 @@ public enum ClientUpdateCheckMode
AUTO,
NONE,
VANILLA,
CUSTOM,
PATCH
RSPS
}

View File

@@ -56,7 +56,9 @@ class RSAppletStub implements AppletStub
try
{
if (RuneLite.allowPrivateServer)
return new URL(StringFileUtils.readStringFromFile("./codebase"));
{
return new URL(StringFileUtils.readStringFromFile("./codebase"));
}
return new URL(config.getCodeBase());
}