aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/mixin/Mixin.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/mixin/Mixin.java')
-rw-r--r--src/main/java/kubatech/mixin/Mixin.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/main/java/kubatech/mixin/Mixin.java b/src/main/java/kubatech/mixin/Mixin.java
new file mode 100644
index 0000000000..49332457ca
--- /dev/null
+++ b/src/main/java/kubatech/mixin/Mixin.java
@@ -0,0 +1,42 @@
+package kubatech.mixin;
+
+import static kubatech.mixin.TargetedMod.*;
+
+import cpw.mods.fml.relauncher.FMLLaunchHandler;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+
+public enum Mixin {
+ // Minecraft
+ EnchantmentHelperMixin("minecraft.EnchantmentHelperMixin", 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
+}