Skip to content

Commit

Permalink
Move ccl patch from mixin to transformer
Browse files Browse the repository at this point in the history
  • Loading branch information
kappa-maintainer committed Apr 4, 2024
1 parent 988cbda commit 7537fca
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 40 deletions.
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.12.4-beta
mod_version=0.12.5-beta
mod_base_package=com.cleanroommc.fugue
mod_authors=kappa_maintainer
mod_description=A mod that patch dead mods for Cleanroom
3 changes: 3 additions & 0 deletions src/main/java/com/cleanroommc/fugue/FugueLoadingPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@ public class FugueLoadingPlugin implements IFMLLoadingPlugin {
if (FugueConfig.modPatchConfig.enableXNet) {
TransformerDelegate.registerExplicitTransformerByInstance(new EnergyConnectorSettingsTransformer(), "mcjty.xnet.apiimpl.energy.EnergyConnectorSettings");
}
if (FugueConfig.modPatchConfig.enableCCL) {
TransformerDelegate.registerExplicitTransformerByInstance(new ClassHierarchyManagerTransformer(), "codechicken.asm.ClassHierarchyManager");
}
if (FugueConfig.getCodeSourcePatchTargets.length > 0) {
TransformerDelegate.registerExplicitTransformerByInstance(new ITweakerTransformer(), FugueConfig.getCodeSourcePatchTargets);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.cleanroommc.fugue.transformer;

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

import java.io.ByteArrayInputStream;

public class ClassHierarchyManagerTransformer implements IExplicitTransformer {
@Override
public byte[] transform(byte[] bytes) {
try {
CtClass cc = ClassPool.getDefault().makeClass(new ByteArrayInputStream(bytes));
cc.getMethod("getOrCreateCache", "(Ljava/lang/String;)Lcodechicken/asm/ClassHierarchyManager$SuperCache;").setBody(
"""
{
SuperCache cache;
if (!superclasses.containsKey(name)) {
cache = new SuperCache();
superclasses.put(name, cache);
} else {
cache = superclasses.get(name);
}
return cache;
}
""");
bytes = cc.toBytecode();
} catch (Throwable t) {
Fugue.LOGGER.error(t);
}
return bytes;
}
}
12 changes: 0 additions & 12 deletions src/main/resources/fugue.mixin.preinit.json

This file was deleted.

0 comments on commit 7537fca

Please sign in to comment.