Skip to content

Commit

Permalink
Patch mod identifier
Browse files Browse the repository at this point in the history
  • Loading branch information
kappa-maintainer committed Jun 6, 2024
1 parent 3911466 commit e675241
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.cleanroommc.fugue.transformer.loliasm.JavaFixesTransformer;
import com.cleanroommc.fugue.transformer.loliasm.LoliFMLCallHookTransformer;
import com.cleanroommc.fugue.transformer.loliasm.LoliReflectorTransformer;
import com.cleanroommc.fugue.transformer.loliasm.ModIdentifierTransformer;
import com.cleanroommc.fugue.transformer.nothirium.BufferBuilderTransformer;
import com.cleanroommc.fugue.transformer.nothirium.FreeSectorManagerTransformer;
import com.cleanroommc.fugue.transformer.nothirium.MixinBufferBuilderTransformer;
Expand Down Expand Up @@ -87,6 +88,7 @@ public class FugueLoadingPlugin implements IFMLLoadingPlugin {
TransformerDelegate.registerExplicitTransformerByInstance(new LoliReflectorTransformer(), "zone.rong.loliasm.LoliReflector");
TransformerDelegate.registerExplicitTransformerByInstance(new JavaFixesTransformer(), "zone.rong.loliasm.common.java.JavaFixes");
TransformerDelegate.registerExplicitTransformerByInstance(new LoliFMLCallHookTransformer(), "zone.rong.loliasm.core.LoliFMLCallHook");
TransformerDelegate.registerExplicitTransformerByInstance(new ModIdentifierTransformer(), "zone.rong.loliasm.common.crashes.ModIdentifier");
}
if (FugueConfig.modPatchConfig.enableZeroCore) {
TransformerDelegate.registerExplicitTransformerByInstance(new DisplayListTransformer(), "it.zerono.mods.zerocore.lib.client.render.DisplayList");
Expand Down
3 changes: 0 additions & 3 deletions src/main/java/com/cleanroommc/fugue/helper/HookHelper.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package com.cleanroommc.fugue.helper;

import com.cleanroommc.fugue.common.Fugue;
import net.minecraft.launchwrapper.IClassTransformer;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.launchwrapper.LaunchClassLoader;
import org.objectweb.asm.Opcodes;
import top.outlands.foundation.TransformerDelegate;
import top.outlands.foundation.boot.ActualClassLoader;
import top.outlands.foundation.boot.JVMDriverHolder;
import top.outlands.foundation.boot.UnsafeHolder;

import java.io.IOException;
import java.io.InputStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.cleanroommc.fugue.transformer.loliasm;

import com.cleanroommc.fugue.common.Fugue;
import javassist.ClassPool;
import javassist.CtClass;
import top.outlands.foundation.IExplicitTransformer;

import java.io.ByteArrayInputStream;

public class ModIdentifierTransformer implements IExplicitTransformer {
@Override
public byte[] transform(byte[] bytes) {
try {
var cp = ClassPool.getDefault();
CtClass cc = cp.makeClass(new ByteArrayInputStream(bytes));
var ifc = cc.getMethod("identifyFromClass", "(Ljava/lang/String;Ljava/util/Map;)Ljava/util/Set;");
ifc.insertAt(64, """
{
if (url.getProtocol().equals("jrt")) {
return java.util.Collections#emptySet();
}
}
""");
bytes = cc.toBytecode();
} catch (Throwable t) {
Fugue.LOGGER.error(t);
}
return bytes;
}
}

0 comments on commit e675241

Please sign in to comment.