Skip to content

Commit

Permalink
Add optifine check in nothirium patch, add patch for two other mods
Browse files Browse the repository at this point in the history
  • Loading branch information
kappa-maintainer committed May 1, 2024
1 parent 9e2ba21 commit ba5adbd
Show file tree
Hide file tree
Showing 12 changed files with 130 additions and 14 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ https://github.com/CleanroomMC/Fugue/releases/latest
* Survival Inc.
* Subauqatic (Temporary)
* Nothirium
* IC2C Extra
* Simply Hot Spring

## Note
Add + to start of the file if it's not there.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ repositories {
}

dependencies {
minecraft "com.cleanroommc:cleanroom:15.24.0.3038"
minecraft "com.cleanroommc:cleanroom:15.24.0.3039"

//Charset Lib
compileOnly(fg.deobf("curse.maven:charset-284523:3656492"))
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ mappings_version=39-1.12
mod_id=fugue
mod_name=Fugue
mod_main_class=Fugue
mod_version=0.14.3-beta
mod_version=0.14.4-beta
mod_base_package=com.cleanroommc.fugue
mod_authors=kappa_maintainer
mod_description=A mod that patch dead mods for Cleanroom
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.cleanroommc.fugue.common;

import com.cleanroommc.fugue.config.FugueConfig;
import com.cleanroommc.fugue.modifiers.IC2ExtraFixer;
import com.cleanroommc.fugue.transformer.*;
import com.cleanroommc.fugue.transformer.groovyscript.GroovyClassLoaderTransformer;
import com.cleanroommc.fugue.transformer.logisticpipes.LogisticPipesTransformer;
Expand All @@ -19,13 +20,16 @@
import net.minecraft.launchwrapper.Launch;
import net.minecraftforge.common.config.ConfigManager;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
import org.spongepowered.asm.mixin.transformer.Config;
import org.spongepowered.asm.service.mojang.MixinServiceLaunchWrapper;
import top.outlands.foundation.TransformerDelegate;
import top.outlands.foundation.boot.ActualClassLoader;

import javax.annotation.Nullable;
import java.util.Map;

@IFMLLoadingPlugin.MCVersion("1.12.2")
@IFMLLoadingPlugin.Name("Fugue")
public class FugueLoadingPlugin implements IFMLLoadingPlugin {

static {
Expand Down Expand Up @@ -100,13 +104,20 @@ public class FugueLoadingPlugin implements IFMLLoadingPlugin {
}
if (FugueConfig.modPatchConfig.enableNothirium){
TransformerDelegate.registerExplicitTransformerByInstance(new NothiriumClassTransformerTransformer(), "meldexun.nothirium.mc.asm.NothiriumClassTransformer");
TransformerDelegate.registerTransformerByInstance(new MixinBufferBuilderTransformer());
MixinServiceLaunchWrapper.registerMixinClassTransformer(new MixinBufferBuilderTransformer(), "meldexun.nothirium.mc.mixin.vertex.MixinBufferBuilder");
TransformerDelegate.registerExplicitTransformerByInstance(new BufferBuilderTransformer(), "net.minecraft.client.renderer.BufferBuilder");
TransformerDelegate.registerExplicitTransformerByInstance(new FreeSectorManagerTransformer(), "meldexun.nothirium.util.FreeSectorManager$AVL", "meldexun.nothirium.util.FreeSectorManager$RB");
}
if (FugueConfig.modPatchConfig.enableGroovyScript) {
TransformerDelegate.registerExplicitTransformerByInstance(new GroovyClassLoaderTransformer(), "groovy.lang.GroovyClassLoader$ClassCollector");
}
if (FugueConfig.modPatchConfig.enableIC2CE) {
Config.registerConfigModifier(new IC2ExtraFixer(), "mixins.ic2c_extras.json");
TransformerDelegate.registerExplicitTransformerByInstance(new Ic2cExtrasLoadingPluginTransformer(), "trinsdar.ic2c_extras.asm.Ic2cExtrasLoadingPlugin");
}
if (FugueConfig.modPatchConfig.enableSimplyHotSpring) {
TransformerDelegate.registerExplicitTransformerByInstance(new SimplyHotSpringsConfigTransformer(), "connor135246.simplyhotsprings.util.SimplyHotSpringsConfig");
}
if (FugueConfig.getCodeSourcePatchTargets.length > 0) {
TransformerDelegate.registerExplicitTransformerByInstance(new ITweakerTransformer(), FugueConfig.getCodeSourcePatchTargets);
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/cleanroommc/fugue/config/FugueConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ public class FugueConfig {
"com.noobanidus.variegated.compat.vanilla.handlers.MansionBiomeTypesHandler",
"youyihj.zenutils.ZenUtils",
"com.codetaylor.mc.athenaeum.util.Injector",
"org.valkyrienskies.mod.common.ValkyrienSkiesMod",
"com.legacy.lostaether.client.LostClientEvents",
};

@Config.Comment(
Expand Down Expand Up @@ -99,6 +101,9 @@ public class FugueConfig {
"net.silentchaos512.lib.tile.SyncVariable",
"appeng.me.GridStorage",
"net.creeperhost.minetogether.misc.Callbacks",
"com.matez.wildnature.util.IProxy",
"com.matez.wildnature.proxy.ClientProxy",
"com.matez.wildnature.proxy.ServerProxy",
};

@Config.Comment(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,8 @@ public class ModPatchConfig {
public boolean enableNothirium = true;
@Config.Name("Enable GroovyScript Patch")
public boolean enableGroovyScript = true;
@Config.Name("Enable IC2C Extra Patch")
public boolean enableIC2CE = true;
@Config.Name("Enable SimplyHotSpring Patch")
public boolean enableSimplyHotSpring = true;
}
38 changes: 38 additions & 0 deletions src/main/java/com/cleanroommc/fugue/modifiers/IC2ExtraFixer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.cleanroommc.fugue.modifiers;

import com.cleanroommc.fugue.common.Fugue;
import org.spongepowered.asm.mixin.MixinEnvironment;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigModifier;

import java.util.List;

public class IC2ExtraFixer implements IMixinConfigModifier {
@Override
public void injectConfig(String s) {
}

@Override
public List<String> modifyMixinClasses(List<String> list) {
return list;
}

@Override
public List<String> modifyMixinClassesClient(List<String> list) {
return list;
}

@Override
public List<String> modifyMixinClassesServer(List<String> list) {
return list;
}

@Override
public MixinEnvironment modifyEnvironment(MixinEnvironment mixinEnvironment) {
return MixinEnvironment.getEnvironment(MixinEnvironment.Phase.MOD);
}

@Override
public boolean shouldAddMixinConfig(boolean b) {
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.cleanroommc.fugue.transformer;

import com.cleanroommc.fugue.common.Fugue;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.tree.*;
import top.outlands.foundation.IExplicitTransformer;

public class Ic2cExtrasLoadingPluginTransformer implements IExplicitTransformer {
@Override
public byte[] transform(byte[] bytes) {
ClassNode classNode = new ClassNode();
ClassReader classReader = new ClassReader(bytes);
classReader.accept(classNode, 0);
for (AnnotationNode anno : classNode.visibleAnnotations) {
if (anno.desc.equals("Lnet/minecraftforge/fml/relauncher/IFMLLoadingPlugin$TransformerExclusions;")) {
classNode.visibleAnnotations.remove(anno);
}
}
ClassWriter classWriter = new ClassWriter(0);

classNode.accept(classWriter);
return classWriter.toByteArray();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.cleanroommc.fugue.transformer;

import com.cleanroommc.fugue.common.Fugue;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.expr.ExprEditor;
import javassist.expr.NewExpr;
import top.outlands.foundation.IExplicitTransformer;

import java.io.ByteArrayInputStream;

public class SimplyHotSpringsConfigTransformer implements IExplicitTransformer {
@Override
public byte[] transform(byte[] bytes) {
try {
CtClass cc = ClassPool.getDefault().makeClass(new ByteArrayInputStream(bytes));
cc.getClassInitializer().instrument(new ExprEditor(){
public void edit(NewExpr e) throws CannotCompileException {
if (e.getClassName().equals("it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap")) {
e.replace("$_ = $proceed(255, 0.75F);");
}
}
});
bytes = cc.toBytecode();
} catch (Throwable t) {
Fugue.LOGGER.error(t);
}
return bytes;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ public class LoliFMLCallHookTransformer implements IExplicitTransformer {
@Override
public byte[] transform(byte[] bytes) {
ClassReader reader = new ClassReader(bytes);
Fugue.LOGGER.info(reader.getClassName());
ClassNode classNode = new ClassNode();
reader.accept(classNode, 0);
classNode.methods.forEach(methodNode -> methodNode.instructions.forEach(abstractInsnNode -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,20 @@
import javassist.ClassPool;
import javassist.CtClass;
import net.minecraft.launchwrapper.IClassTransformer;
import top.outlands.foundation.IExplicitTransformer;

import java.io.ByteArrayInputStream;

public class MixinBufferBuilderTransformer implements IClassTransformer {
public class MixinBufferBuilderTransformer implements IExplicitTransformer {

@Override
public byte[] transform(String s, String s1, byte[] bytes) {
if (s1.equals("meldexun.nothirium.mc.mixin.vertex.MixinBufferBuilder")) {
try {
CtClass cc = ClassPool.getDefault().makeClass(new ByteArrayInputStream(bytes));
cc.removeMethod(cc.getDeclaredMethod("growBuffer"));
bytes = cc.toBytecode();
} catch (Throwable t) {
Fugue.LOGGER.error(t);
}
public byte[] transform(byte[] bytes) {
try {
CtClass cc = ClassPool.getDefault().makeClass(new ByteArrayInputStream(bytes));
cc.removeMethod(cc.getDeclaredMethod("growBuffer"));
bytes = cc.toBytecode();
} catch (Throwable t) {
Fugue.LOGGER.error(t);
}
return bytes;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.cleanroommc.fugue.transformer.nothirium;

import net.minecraft.launchwrapper.Launch;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.Opcodes;
Expand All @@ -9,6 +10,7 @@
public class NothiriumClassTransformerTransformer implements IExplicitTransformer {
@Override
public byte[] transform(byte[] bytes) {
if (Launch.classLoader.isClassExist("Config")) return bytes;
ClassNode classNode = new ClassNode();
ClassReader classReader = new ClassReader(bytes);
classReader.accept(classNode, 0);
Expand Down

0 comments on commit ba5adbd

Please sign in to comment.