Skip to content

Commit c08cd3f

Browse files
committed
Mixin Config
1 parent df7831e commit c08cd3f

File tree

4 files changed

+130
-0
lines changed

4 files changed

+130
-0
lines changed

src/main/java/com/ref/aea/AEA.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.mojang.logging.LogUtils;
55
import com.ref.aea.api.mirror.IMirrorPatternService;
66
import com.ref.aea.config.AEAClientConfig;
7+
import com.ref.aea.config.AEACommonConfig;
78
import com.ref.aea.config.AEAServerConfig;
89
import com.ref.aea.core.definitions.AEABlockEntityType;
910
import com.ref.aea.core.definitions.AEABlocks;
@@ -52,6 +53,7 @@ public AEA(FMLJavaModLoadingContext context) {
5253

5354
context.registerConfig(ModConfig.Type.CLIENT, AEAClientConfig.SPEC);
5455
context.registerConfig(ModConfig.Type.SERVER, AEAServerConfig.SPEC);
56+
context.registerConfig(ModConfig.Type.COMMON, AEACommonConfig.SPEC);
5557

5658
GridServices.register(IMirrorPatternService.class, MirrorPatternService.class);
5759
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.ref.aea.config;
2+
3+
import com.ref.aea.AEA;
4+
import net.minecraftforge.common.ForgeConfigSpec;
5+
import net.minecraftforge.fml.common.Mod;
6+
7+
@Mod.EventBusSubscriber(modid = AEA.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
8+
public class AEACommonConfig {
9+
private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
10+
11+
public static final ForgeConfigSpec.BooleanValue FTB_ULTIMINE;
12+
public static final ForgeConfigSpec.BooleanValue BUILDING_GADGETS2;
13+
public static final ForgeConfigSpec.BooleanValue AE_CRAFTING_BLOCKED;
14+
public static final ForgeConfigSpec.BooleanValue AE_CRAFTING_PATTERN_TIMES;
15+
public static final ForgeConfigSpec.BooleanValue AE_CRAFTING_COLOR;
16+
17+
static {
18+
BUILDER.push("mixin");
19+
20+
FTB_ULTIMINE = BUILDER.comment("Enable Mixins for FTB Ultimine").define("FTB_ULTIMINE", true);
21+
22+
BUILDING_GADGETS2 =
23+
BUILDER.comment("Enable Mixins for Building Gadgets 2").define("BUILDING_GADGETS2", true);
24+
25+
AE_CRAFTING_BLOCKED =
26+
BUILDER
27+
.comment("Enable Mixins for AE2 Crafting Blocked status")
28+
.define("AE_CRAFTING_BLOCKED", true);
29+
30+
AE_CRAFTING_PATTERN_TIMES =
31+
BUILDER
32+
.comment("Enable Mixins for AE2 Pattern processing times")
33+
.define("AE_CRAFTING_PATTERN_TIMES", true);
34+
35+
AE_CRAFTING_COLOR =
36+
BUILDER
37+
.comment("Enable Mixins for AE2 Crafting Color logic")
38+
.define("AE_CRAFTING_COLOR", true);
39+
40+
BUILDER.pop();
41+
}
42+
43+
public static final ForgeConfigSpec SPEC = BUILDER.build();
44+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package com.ref.aea.mixin;
2+
3+
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
4+
import java.nio.file.Path;
5+
import java.util.List;
6+
import java.util.Set;
7+
import net.minecraftforge.fml.loading.FMLPaths;
8+
import org.objectweb.asm.tree.ClassNode;
9+
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
10+
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
11+
12+
public class AEAMixinConfigPlugin implements IMixinConfigPlugin {
13+
14+
private static boolean enableFtbUltimine = true;
15+
private static boolean enableBuildingGadgets2 = true;
16+
private static boolean enableAeCraftingBlocked = true;
17+
private static boolean enableAeCraftingPatternTimes = true;
18+
private static boolean enableAeCraftingColor = true;
19+
20+
@Override
21+
public void onLoad(String mixinPackage) {
22+
final Path configPath = FMLPaths.CONFIGDIR.get().resolve("aea-common.toml");
23+
try {
24+
final CommentedFileConfig configData = CommentedFileConfig.builder(configPath).build();
25+
configData.load();
26+
enableFtbUltimine = configData.getOrElse("mixin.FTB_ULTIMINE", true);
27+
enableBuildingGadgets2 = configData.getOrElse("mixin.BUILDING_GADGETS2", true);
28+
enableAeCraftingBlocked = configData.getOrElse("mixin.AE_CRAFTING_BLOCKED", true);
29+
enableAeCraftingPatternTimes = configData.getOrElse("mixin.AE_CRAFTING_PATTERN_TIMES", true);
30+
enableAeCraftingColor = configData.getOrElse("mixin.AE_CRAFTING_COLOR", true);
31+
configData.close();
32+
} catch (Exception e) {
33+
System.err.println("[AEA] Failed to load mixin config manually: " + e.getMessage());
34+
}
35+
}
36+
37+
@Override
38+
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
39+
if (mixinClassName.startsWith("com.ref.aea.mixin.ftbultimine")) {
40+
return enableFtbUltimine;
41+
}
42+
43+
if (mixinClassName.startsWith("com.ref.aea.mixin.buildinggadgets2")) {
44+
return enableBuildingGadgets2;
45+
}
46+
47+
// AE2 相关的细分配置
48+
if (mixinClassName.startsWith("com.ref.aea.mixin.ae.crafting.blocked")) {
49+
return enableAeCraftingBlocked;
50+
}
51+
52+
if (mixinClassName.startsWith("com.ref.aea.mixin.ae.crafting.patterntimes")) {
53+
return enableAeCraftingPatternTimes;
54+
}
55+
56+
if (mixinClassName.startsWith("com.ref.aea.mixin.ae.crafting.color")) {
57+
return enableAeCraftingColor;
58+
}
59+
60+
return true;
61+
}
62+
63+
@Override
64+
public String getRefMapperConfig() {
65+
return null;
66+
}
67+
68+
@Override
69+
public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {}
70+
71+
@Override
72+
public List<String> getMixins() {
73+
return null;
74+
}
75+
76+
@Override
77+
public void preApply(
78+
String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {}
79+
80+
@Override
81+
public void postApply(
82+
String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {}
83+
}

src/main/resources/aea.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"package": "com.ref.aea.mixin",
55
"compatibilityLevel": "JAVA_8",
66
"refmap": "aea.refmap.json",
7+
"plugin": "com.ref.aea.mixin.AEAMixinConfigPlugin",
78
"mixins": [
89
"aae.AdvPatternProviderLogicMixin",
910
"ae.crafting.blocked.CraftingCpuLogicMixin",

0 commit comments

Comments
 (0)