Skip to content

Commit 337a4a5

Browse files
committedDec 1, 2023
Fix Mixin launch before obf map init, fix Mixin uses refmap on dev
1 parent 625485f commit 337a4a5

File tree

9 files changed

+69
-57
lines changed

9 files changed

+69
-57
lines changed
 

‎build.gradle

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ buildscript {
1212
}
1313
}
1414
dependencies {
15-
classpath 'net.minecraftforge.gradle:ForgeGradle:6.0.+'
15+
classpath 'net.minecraftforge.gradle:ForgeGradle:6.99.+'
1616
}
1717
}
1818

@@ -1126,6 +1126,7 @@ project(':cleanroom') {
11261126
artifact userdevJar
11271127
artifact universalJar
11281128
artifact sourcesJar
1129+
artifact installerJar
11291130
}
11301131
}
11311132
}

‎gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ patch_version = 0
99

1010
# MAJOR.SPEC_MAJOR.SPEC_MINOR.BUILD
1111
last_forge_version = 14.23.5.2860
12-
new_forge_version = 15.24.0.3013
12+
new_forge_version = 15.24.0.3014
1313

1414
# Minecraft & Mappings
1515
mapping_channel = stable
@@ -26,7 +26,7 @@ installer_tools_version = 1.3.0
2626
# Libraries
2727
asm_version = 9.6
2828
asm_deprecated = 7.1
29-
bouncepad_version = 0.4.10-cursed
29+
bouncepad_version = 0.4.11-cursed
3030
lwjgl_version = 3.3.2-22-CLEANROOM
3131

3232
# Sets default memory used for Gradle commands. Can be overridden by user or command line properties.

‎gradlew

100644100755
File mode changed.

‎src/main/java/net/minecraftforge/classloading/FMLForgePlugin.java

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import javax.annotation.Nullable;
2828

29+
@IFMLLoadingPlugin.SortingIndex(Integer.MIN_VALUE + 1)
2930
public class FMLForgePlugin implements IFMLLoadingPlugin
3031
{
3132
public static boolean RUNTIME_DEOBF = false;

‎src/main/java/net/minecraftforge/fml/common/LoadController.java

+17-32
Original file line numberDiff line numberDiff line change
@@ -19,57 +19,39 @@
1919

2020
package net.minecraftforge.fml.common;
2121

22-
import java.lang.reflect.Field;
23-
import java.lang.reflect.InvocationTargetException;
24-
import java.lang.reflect.Method;
25-
import java.net.MalformedURLException;
26-
import java.util.*;
27-
import java.util.stream.Collectors;
28-
import java.util.stream.Stream;
29-
30-
import com.cleanroommc.bouncepad.Bouncepad;
22+
import com.google.common.base.Throwables;
23+
import com.google.common.collect.*;
24+
import com.google.common.collect.ImmutableMap.Builder;
25+
import com.google.common.eventbus.EventBus;
26+
import com.google.common.eventbus.Subscribe;
3127
import net.minecraft.launchwrapper.Launch;
3228
import net.minecraftforge.common.util.TextTable;
3329
import net.minecraftforge.fml.common.LoaderState.ModState;
3430
import net.minecraftforge.fml.common.ProgressManager.ProgressBar;
3531
import net.minecraftforge.fml.common.discovery.ASMDataTable;
36-
import net.minecraftforge.fml.common.event.FMLEvent;
37-
import net.minecraftforge.fml.common.event.FMLLoadEvent;
38-
import net.minecraftforge.fml.common.event.FMLModDisabledEvent;
39-
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
40-
import net.minecraftforge.fml.common.event.FMLStateEvent;
32+
import net.minecraftforge.fml.common.event.*;
4133
import net.minecraftforge.fml.common.eventhandler.FMLThrowingEventBus;
4234
import net.minecraftforge.fml.common.versioning.ArtifactVersion;
43-
4435
import net.minecraftforge.fml.relauncher.MixinBooterPlugin;
4536
import net.minecraftforge.fml.relauncher.mixinfix.MixinFixer;
4637
import org.apache.logging.log4j.ThreadContext;
4738
import org.apache.logging.log4j.message.FormattedMessage;
48-
49-
import com.google.common.base.Throwables;
50-
import com.google.common.collect.ArrayListMultimap;
51-
import com.google.common.collect.BiMap;
52-
import com.google.common.collect.ImmutableBiMap;
53-
import com.google.common.collect.ImmutableMap;
54-
import com.google.common.collect.ImmutableMap.Builder;
55-
import com.google.common.collect.Iterables;
56-
import com.google.common.collect.ListMultimap;
57-
import com.google.common.collect.Lists;
58-
import com.google.common.collect.Maps;
59-
import com.google.common.collect.Multimap;
60-
import com.google.common.collect.MultimapBuilder;
61-
import com.google.common.eventbus.EventBus;
62-
import com.google.common.eventbus.Subscribe;
6339
import org.spongepowered.asm.mixin.MixinEnvironment;
6440
import org.spongepowered.asm.mixin.Mixins;
65-
import org.spongepowered.asm.mixin.extensibility.IMixinProcessor;
66-
import org.spongepowered.asm.mixin.transformer.IMixinTransformer;
6741
import org.spongepowered.asm.mixin.transformer.Proxy;
6842
import org.spongepowered.asm.service.MixinService;
6943
import org.spongepowered.asm.service.mojang.MixinServiceLaunchWrapper;
7044
import zone.rong.mixinbooter.ILateMixinLoader;
7145

7246
import javax.annotation.Nullable;
47+
import java.lang.reflect.InvocationTargetException;
48+
import java.lang.reflect.Method;
49+
import java.util.Collection;
50+
import java.util.HashMap;
51+
import java.util.HashSet;
52+
import java.util.List;
53+
import java.util.stream.Collectors;
54+
import java.util.stream.Stream;
7355

7456
public class LoadController
7557
{
@@ -203,6 +185,9 @@ public void distributeStateMessage(LoaderState state, Object... eventData)
203185
((MixinServiceLaunchWrapper) MixinService.getService()).setDelegatedTransformers(null);
204186
}
205187
MixinEnvironment current = MixinEnvironment.getCurrentEnvironment();
188+
if ((boolean)Launch.blackboard.get("fml.deobfuscatedEnvironment")) {
189+
current.setOption(MixinEnvironment.Option.DISABLE_REFMAP, true);
190+
}
206191
Proxy.transformer.processor.selectConfigs(current);
207192
Proxy.transformer.processor.prepareConfigs(current, Proxy.transformer.processor.extensions);
208193

‎src/main/java/net/minecraftforge/fml/relauncher/CoreModManager.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
import com.google.common.primitives.Ints;
7070
import org.apache.logging.log4j.LogManager;
7171
import org.apache.logging.log4j.core.LoggerContext;
72+
import org.spongepowered.asm.launch.MixinTweaker;
7273

7374
public class CoreModManager {
7475
private static final Attributes.Name COREMODCONTAINSFMLMOD = new Attributes.Name("FMLCorePluginContainsFMLMod");
@@ -656,7 +657,7 @@ public static void sortTweakList()
656657
// Basically a copy of Collections.sort pre 8u20, optimized as we know we're an array list.
657658
// Thanks unhelpful fixer of http://bugs.java.com/view_bug.do?bug_id=8032636
658659
ITweaker[] toSort = tweakers.toArray(new ITweaker[tweakers.size()]);
659-
ToIntFunction<ITweaker> getOrder = o -> o instanceof FMLInjectionAndSortingTweaker ? Integer.MIN_VALUE : o instanceof FMLPluginWrapper ? ((FMLPluginWrapper)o).sortIndex : tweakSorting.getOrDefault(o.getClass().getName(), 0);
660+
ToIntFunction<ITweaker> getOrder = o -> o instanceof FMLInjectionAndSortingTweaker ? Integer.MIN_VALUE : o instanceof FMLPluginWrapper ? ((FMLPluginWrapper)o).sortIndex : o instanceof MixinTweaker ? Integer.MIN_VALUE + 3 : tweakSorting.getOrDefault(o.getClass().getName(), 0);
660661
Arrays.sort(toSort, (o1, o2) -> Ints.saturatedCast((long)getOrder.applyAsInt(o1) - (long)getOrder.applyAsInt(o2)));
661662
for (int j = 0; j < toSort.length; j++) {
662663
tweakers.set(j, toSort[j]);

‎src/main/java/net/minecraftforge/fml/relauncher/FMLCorePlugin.java

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.util.Map;
2323

24+
@IFMLLoadingPlugin.SortingIndex(Integer.MIN_VALUE + 1)
2425
public class FMLCorePlugin implements IFMLLoadingPlugin
2526
{
2627
@Override

‎src/main/java/net/minecraftforge/fml/relauncher/MixinBooterPlugin.java

+6-21
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package net.minecraftforge.fml.relauncher;
22

33
import com.cleanroommc.bouncepad.Bouncepad;
4-
import com.llamalad7.mixinextras.MixinExtrasBootstrap;
54
import net.minecraft.launchwrapper.Launch;
65
import net.minecraftforge.common.ForgeVersion;
7-
import net.minecraftforge.fml.relauncher.mixinfix.MixinFixer;
86
import org.apache.logging.log4j.LogManager;
97
import org.apache.logging.log4j.Logger;
10-
import org.spongepowered.asm.launch.GlobalProperties;
11-
import org.spongepowered.asm.launch.MixinBootstrap;
128
import org.spongepowered.asm.mixin.MixinEnvironment;
139
import org.spongepowered.asm.mixin.Mixins;
1410
import org.spongepowered.asm.mixin.transformer.IMixinTransformer;
@@ -17,11 +13,14 @@
1713

1814
import java.lang.reflect.Field;
1915
import java.lang.reflect.Method;
20-
import java.util.*;
16+
import java.util.ArrayList;
17+
import java.util.Collections;
18+
import java.util.List;
19+
import java.util.Map;
2120

2221
@IFMLLoadingPlugin.Name("MixinBooter")
2322
@IFMLLoadingPlugin.MCVersion(ForgeVersion.mcVersion)
24-
@IFMLLoadingPlugin.SortingIndex(Integer.MIN_VALUE + 1)
23+
@IFMLLoadingPlugin.SortingIndex(Integer.MIN_VALUE + 2)
2524
public final class MixinBooterPlugin implements IFMLLoadingPlugin {
2625

2726
public static final Logger LOGGER = LogManager.getLogger("MixinBooter");
@@ -54,13 +53,6 @@ private static void registerExtension(IExtension extension) {
5453
}
5554

5655
public MixinBooterPlugin() {
57-
addTransformationExclusions();
58-
initialize();
59-
LOGGER.info("Initializing Mixins...");
60-
MixinBootstrap.init();
61-
LOGGER.info("Initializing MixinExtras...");
62-
MixinExtrasBootstrap.init();
63-
MixinFixer.patchAncientModMixinsLoadingMethod();
6456
}
6557

6658
@Override
@@ -75,7 +67,7 @@ public String getModContainerClass() {
7567

7668
@Override
7769
public String getSetupClass() {
78-
return null;
70+
return "net.minecraftforge.fml.relauncher.MixinSetup";
7971
}
8072

8173
@Override
@@ -119,13 +111,6 @@ public String getAccessTransformerClass() {
119111
return null;
120112
}
121113

122-
private void addTransformationExclusions() {
123-
Launch.classLoader.addTransformerExclusion("scala.");
124-
Launch.classLoader.addTransformerExclusion("com.llamalad7.mixinextras.");
125-
}
126114

127-
private void initialize() {
128-
GlobalProperties.put(GlobalProperties.Keys.CLEANROOM_DISABLE_MIXIN_CONFIGS, new HashSet<>());
129-
}
130115

131116
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package net.minecraftforge.fml.relauncher;
2+
3+
import com.llamalad7.mixinextras.MixinExtrasBootstrap;
4+
import net.minecraft.launchwrapper.Launch;
5+
import net.minecraftforge.fml.relauncher.mixinfix.MixinFixer;
6+
import org.spongepowered.asm.launch.GlobalProperties;
7+
import org.spongepowered.asm.launch.MixinBootstrap;
8+
9+
import java.util.HashSet;
10+
import java.util.Map;
11+
12+
public class MixinSetup implements IFMLCallHook {
13+
14+
@Override
15+
public void injectData(Map<String, Object> data) {
16+
addTransformationExclusions();
17+
initialize();
18+
MixinBooterPlugin.LOGGER.info("Initializing Mixins...");
19+
MixinBootstrap.init();
20+
MixinBooterPlugin.LOGGER.info("Initializing MixinExtras...");
21+
MixinExtrasBootstrap.init();
22+
MixinFixer.patchAncientModMixinsLoadingMethod();
23+
}
24+
25+
@Override
26+
public Void call() throws Exception {
27+
return null;
28+
}
29+
30+
private void addTransformationExclusions() {
31+
Launch.classLoader.addTransformerExclusion("scala.");
32+
Launch.classLoader.addTransformerExclusion("com.llamalad7.mixinextras.");
33+
}
34+
35+
private void initialize() {
36+
GlobalProperties.put(GlobalProperties.Keys.CLEANROOM_DISABLE_MIXIN_CONFIGS, new HashSet<>());
37+
}
38+
}

0 commit comments

Comments
 (0)
Please sign in to comment.