diff options
Diffstat (limited to 'src/main/java/kubatech/mixin/Mixin.java')
-rw-r--r-- | src/main/java/kubatech/mixin/Mixin.java | 42 |
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 +} |