Fix merge conflicts

This commit is contained in:
NotAlexNoyle committed 2025-11-12 13:42:47 -05:00
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;
}
}