Archived
Fix merge conflicts
This commit is contained in:
1 parent
e0d5bc616f
commit
0e1d018537
2 files changed
+30
-14
No files matched your search
@@ -8,11 +8,8 @@ public class SubstAgent {
|
||||
|
||||
String version = SubstAgent.class.getPackage().getImplementationVersion();
|
||||
System.out.println("[SubstAgent] Loaded version " + version);
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
inst.addTransformer(new Transformer());
|
||||
>>>>>>> de6ecef (Add support for server.properties)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,15 +9,16 @@ import javassist.CtMethod;
|
||||
import javassist.LoaderClassPath;
|
||||
|
||||
class Transformer implements ClassFileTransformer {
|
||||
|
||||
@Override
|
||||
public byte[] transform(
|
||||
ClassLoader loader,
|
||||
String className,
|
||||
Class<?> classBeingRedefined,
|
||||
ProtectionDomain domain,
|
||||
byte[] classfileBuffer) {
|
||||
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain domain,
|
||||
byte[] classfileBuffer)
|
||||
{
|
||||
|
||||
try {
|
||||
|
||||
if ("java/io/BufferedReader".equals(className)) {
|
||||
|
||||
ClassPool cp = ClassPool.getDefault();
|
||||
cp.insertClassPath(new LoaderClassPath(loader));
|
||||
|
||||
@@ -25,42 +26,60 @@ class Transformer implements ClassFileTransformer {
|
||||
CtMethod readLineMethod = ctClass.getDeclaredMethod("readLine");
|
||||
readLineMethod.insertAfter("{ $_ = nl.skbotnl.substagent.Hook.substituteEnvVariables($_); }");
|
||||
|
||||
CtClass[] readParamTypes = {cp.get("char[]"), CtClass.intType, CtClass.intType};
|
||||
CtClass[] readParamTypes = { cp.get("char[]"), CtClass.intType, CtClass.intType };
|
||||
CtMethod readMethod = ctClass.getDeclaredMethod("read", readParamTypes);
|
||||
readMethod.insertAfter("{ cbuf = nl.skbotnl.substagent.Hook.substituteEnvVariables(cbuf); }");
|
||||
|
||||
byte[] byteCode = ctClass.toBytecode();
|
||||
ctClass.detach();
|
||||
return byteCode;
|
||||
|
||||
} else if ("net/minecraft/server/dedicated/PropertyManager".equals(className)) {
|
||||
|
||||
ClassPool cp = ClassPool.getDefault();
|
||||
cp.insertClassPath(new LoaderClassPath(loader));
|
||||
|
||||
CtClass ctClass = cp.get("net.minecraft.server.dedicated.PropertyManager");
|
||||
for (CtMethod cm : ctClass.getDeclaredMethods()) {
|
||||
|
||||
if (!Modifier.isPrivate(cm.getModifiers())) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
if (!cm.getReturnType().getName().equals("java.lang.String")) {
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
CtClass[] params = cm.getParameterTypes();
|
||||
if (params.length == 2
|
||||
&& params[0].getName().equals("java.lang.String")
|
||||
&& params[1].getName().equals("java.lang.String")) {
|
||||
if (params.length == 2 && params[0].getName().equals("java.lang.String")
|
||||
&& params[1].getName().equals("java.lang.String"))
|
||||
{
|
||||
|
||||
cm.insertAfter("{ $_ = nl.skbotnl.substagent.Hook.substituteEnvVariables($_); }");
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
byte[] byteCode = ctClass.toBytecode();
|
||||
ctClass.detach();
|
||||
return byteCode;
|
||||
|
||||
}
|
||||
|
||||
} catch (Throwable e) {
|
||||
|
||||
throw new RuntimeException(e);
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user