Skip to content

Commit

Permalink
Patch 2 more mods
Browse files Browse the repository at this point in the history
  • Loading branch information
kappa-maintainer committed Apr 7, 2024
1 parent 05d9d97 commit fcca93b
Show file tree
Hide file tree
Showing 9 changed files with 74 additions and 4 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ https://github.com/CleanroomMC/Fugue/releases/latest
* XNet
* ZeroCore (ExtremeReactor)
* Smooth Font
* Water Power
* Survival Inc.

## Note
Add + to start of the file if it's not there.
5 changes: 5 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,11 @@ dependencies {
//customNPCs
compileOnly(fg.deobf("curse.maven:customnpc-221826:2996912"))

//Water Power
compileOnly(fg.deobf("curse.maven:waterpower-224579:2464789"))
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.9.23'


// Mixin and it's common libraries
annotationProcessor 'org.ow2.asm:asm:9.6'
annotationProcessor 'com.google.guava:guava:33.0.0-jre'
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.13.0-beta
mod_version=0.14.0-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
Expand Up @@ -85,6 +85,9 @@ public class FugueLoadingPlugin implements IFMLLoadingPlugin {
if (FugueConfig.modPatchConfig.enableCCL) {
TransformerDelegate.registerExplicitTransformerByInstance(new ClassHierarchyManagerTransformer(), "codechicken.asm.ClassHierarchyManager");
}
if (FugueConfig.modPatchConfig.enableSurvivialInc) {
TransformerDelegate.registerExplicitTransformerByInstance(new ForgeASMInjectorTransformer(), "enginecrafter77.survivalinc.util.ForgeASMInjector");
}
if (FugueConfig.getCodeSourcePatchTargets.length > 0) {
TransformerDelegate.registerExplicitTransformerByInstance(new ITweakerTransformer(), FugueConfig.getCodeSourcePatchTargets);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
case "theasm" -> Launch.classLoader.isClassExist("zone.rong.loliasm.common.crashes.ModIdentifier") && FugueConfig.modPatchConfig.enableTheASM;
case "howlingmoon" -> Loader.isModLoaded("howlingmoon") && FugueConfig.modPatchConfig.enableHowlingMoon;
case "customnpcs" -> Loader.isModLoaded("customnpcs") && FugueConfig.modPatchConfig.enableCustomNPC;
case "waterpower" -> Loader.isModLoaded("waterpower") && FugueConfig.modPatchConfig.enableWaterPower;
default -> true;
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,12 @@ public class ModPatchConfig {

@Config.Name("Enable XNet Patch")
public boolean enableXNet = true;
@Config.Name("Enable Howling Moon")
@Config.Name("Enable Howling Moon Patch")
public boolean enableHowlingMoon = true;
@Config.Name("Enable Custom NPCs")
@Config.Name("Enable Custom NPCs Patch")
public boolean enableCustomNPC = true;
@Config.Name("Enabel Survivial Inc. Patch")
public boolean enableSurvivialInc = true;
@Config.Name("Enable Water Power Patch")
public boolean enableWaterPower = true;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.cleanroommc.fugue.mixin.waterpower;

import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Coerce;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import waterpower.annotations.ClassEngine;

import java.lang.invoke.MethodHandles;

@Mixin(value = ClassEngine.class, remap = false)
public class ClassEngineMixin {
@Shadow @Final @Mutable
public static ClassEngine INSTANCE;

@Shadow @Final @Mutable
private static kotlin.Lazy lookup$delegate;

@Inject(method = "getLookup", at = @At("HEAD"), cancellable = true)
private void hackLookup(CallbackInfoReturnable<MethodHandles.Lookup> cir) {
cir.setReturnValue(MethodHandles.lookup());
}

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

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

import java.io.ByteArrayInputStream;

public class ForgeASMInjectorTransformer implements IExplicitTransformer {
@Override
public byte[] transform(byte[] bytes) {
try {
CtClass cc = ClassPool.getDefault().makeClass(new ByteArrayInputStream(bytes));
cc.getConstructors()[0].setBody("{}");
cc.getDeclaredMethod("injectClass").setBody(
"""
{return net.minecraft.launchwrapper.Launch#classLoader.defineClass($1, $2);}
""");
bytes = cc.toBytecode();
} catch (Throwable t) {
Fugue.LOGGER.error(t);
}
return bytes;
}
}
3 changes: 2 additions & 1 deletion src/main/resources/fugue.mixin.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"solarflux.INetworkSFMixin",
"solarflux.SolarFluxMixin",
"xaeroplus.ChunkHighlightSavingCacheMixin",
"xaeroplus.XaeroPlusSettingsReflectionHaxMixin"
"xaeroplus.XaeroPlusSettingsReflectionHaxMixin",
"waterpower.ClassEngineMixin"
],
"client": [
"custommainmenu.SlideshowMixin",
Expand Down

0 comments on commit fcca93b

Please sign in to comment.