1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
package gregtech.mixin;
import static gregtech.mixin.TargetedMod.VANILLA;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import cpw.mods.fml.relauncher.FMLLaunchHandler;
public enum Mixin {
// Minecraft
WorldMixin("minecraft.WorldMixin", VANILLA),
StringTranslateMixin("minecraft.StringTranslateMixin", VANILLA),
LanguageRegistryMixin("minecraft.LanguageRegistryMixin", VANILLA),
LocaleMixin("minecraft.LocaleMixin", Side.CLIENT, VANILLA),
;
public final String mixinClass;
public final List<TargetedMod> targetedMods;
private final Side side;
Mixin(String mixinClass, Side side, TargetedMod... targetedMods) {
this.mixinClass = mixinClass;
this.targetedMods = Arrays.asList(targetedMods);
this.side = side;
}
Mixin(String mixinClass, TargetedMod... targetedMods) {
this.mixinClass = mixinClass;
this.targetedMods = Arrays.asList(targetedMods);
this.side = Side.BOTH;
}
public boolean shouldLoad(List<TargetedMod> loadedMods) {
return (side == Side.BOTH || side == Side.SERVER && FMLLaunchHandler.side()
.isServer()
|| side == Side.CLIENT && FMLLaunchHandler.side()
.isClient())
&& new HashSet<>(loadedMods).containsAll(targetedMods);
}
enum Side {
BOTH,
CLIENT,
SERVER
}
}
|