chore: Update mixins to V2 api

This commit is contained in:
FalsePattern committed 2025-09-25 19:02:27 +02:00
1 parent e74df49271
commit f673dba88b
8 files changed
+716 -528

No files matched your search

+1 -2
View File
@@ -13,7 +13,6 @@ minecraft_fp {
mixin {
pkg = "mixin.mixins"
pluginClass = "mixin.plugin.MixinPlugin"
}
core {
@@ -64,7 +63,7 @@ repositories {
dependencies {
// region Our deps
implementationSplit("com.falsepattern:falsepatternlib-mc1.7.10:1.8.1")
implementationSplit("com.falsepattern:falsepatternlib-mc1.7.10:1.9.0")
compileOnly("it.unimi.dsi:fastutil:8.5.16")
implementationSplit("com.falsepattern:chunkapi-mc1.7.10:0.6.4")
// endregion
@@ -24,7 +24,9 @@ package com.falsepattern.endlessids.asm;
import com.falsepattern.endlessids.Tags;
import com.falsepattern.endlessids.config.GeneralConfig;
import com.falsepattern.endlessids.util.ConfigFixUtil;
import com.falsepattern.endlessids.mixin.plugin.Mixin;
import com.gtnewhorizon.gtnhmixins.IEarlyMixinLoader;
import com.gtnewhorizon.gtnhmixins.builders.IMixins;
import lombok.SneakyThrows;
import lombok.val;
@@ -33,7 +35,7 @@ import net.minecraft.launchwrapper.LaunchClassLoader;
import cpw.mods.fml.relauncher.FMLInjectionData;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -46,7 +48,7 @@ import static cpw.mods.fml.relauncher.IFMLLoadingPlugin.TransformerExclusions;
@Name(Tags.MODID + "_core")
@TransformerExclusions({"com.falsepattern.endlessids.asm", "com.falsepattern.endlessids.config.GeneralConfig"})
@DependsOn("falsepatternlib")
public class EndlessIDsCore implements IFMLLoadingPlugin {
public class EndlessIDsCore implements IFMLLoadingPlugin, IEarlyMixinLoader {
public static boolean deobfuscated;
static {
if (GeneralConfig.extendBlockItem) {
@@ -125,4 +127,14 @@ public class EndlessIDsCore implements IFMLLoadingPlugin {
public String getAccessTransformerClass() {
return null;
}
@Override
public String getMixinConfig() {
return "mixins.endlessids.early.json";
}
@Override
public List<String> getMixins(Set<String> loadedCoreMods) {
return IMixins.getEarlyMixins(Mixin.class, loadedCoreMods);
}
}
@@ -4,7 +4,7 @@
* Copyright (C) 2022-2025 FalsePattern, The MEGA Team
* All Rights Reserved
*
* The above copyright notice, this permission notice and the words "MEGA"
* The above copyright notice, this permission notice and the word "MEGA"
* shall be included in all copies or substantial portions of the Software.
*
* This program is free software: you can redistribute it and/or modify
@@ -22,31 +22,24 @@
package com.falsepattern.endlessids.mixin.plugin;
import com.falsepattern.endlessids.Tags;
import com.falsepattern.lib.mixin.IMixin;
import com.falsepattern.lib.mixin.IMixinPlugin;
import com.falsepattern.lib.mixin.ITargetedMod;
import lombok.Getter;
import org.apache.logging.log4j.Logger;
import com.gtnewhorizon.gtnhmixins.ILateMixinLoader;
import com.gtnewhorizon.gtnhmixins.LateMixin;
import com.gtnewhorizon.gtnhmixins.builders.IMixins;
import org.jetbrains.annotations.NotNull;
public class MixinPlugin implements IMixinPlugin {
public static final Logger LOG = IMixinPlugin.createLogger(Tags.MODNAME);
@Getter
private final Logger logger = LOG;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@LateMixin
public class LateMixins implements ILateMixinLoader {
@Override
public IMixin[] getMixinEnumValues() {
return Mixin.values();
public String getMixinConfig() {
return "mixins.endlessids.late.json";
}
@Override
public ITargetedMod[] getTargetedModEnumValues() {
return TargetedMod.values();
}
@Override
public boolean useNewFindJar() {
return true;
public @NotNull List<String> getMixins(Set<String> loadedMods) {
return IMixins.getLateMixins(Mixin.class, loadedMods);
}
}
@@ -4,7 +4,7 @@
* Copyright (C) 2022-2025 FalsePattern, The MEGA Team
* All Rights Reserved
*
* The above copyright notice, this permission notice and the words "MEGA"
* The above copyright notice, this permission notice and the word "MEGA"
* shall be included in all copies or substantial portions of the Software.
*
* This program is free software: you can redistribute it and/or modify
@@ -22,417 +22,584 @@
package com.falsepattern.endlessids.mixin.plugin;
import com.falsepattern.endlessids.Tags;
import com.falsepattern.endlessids.config.GeneralConfig;
import com.falsepattern.lib.mixin.IMixin;
import com.falsepattern.lib.mixin.ITargetedMod;
import com.falsepattern.lib.mixin.v2.MixinHelper;
import com.falsepattern.lib.mixin.v2.SidedMixins;
import com.falsepattern.lib.mixin.v2.TaggedMod;
import com.gtnewhorizon.gtnhmixins.builders.IMixins;
import com.gtnewhorizon.gtnhmixins.builders.MixinBuilder;
import lombok.Getter;
import lombok.val;
import lombok.RequiredArgsConstructor;
import org.intellij.lang.annotations.Language;
import java.util.List;
import java.util.function.Predicate;
import java.util.function.BooleanSupplier;
import java.util.function.Supplier;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.ABYSSALCRAFT;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.AM2;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.ANTIIDCONFLICT;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.ANTIQUEATLAS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.ATG;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.BIOMETWEAKER;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.BIOMEWAND;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.BLOCKPHYSICS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.BOP;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.BUILDCRAFT;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.CLIMATECONTROL;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.COFHLIB;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.COMPACTMACHINES;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.DARKWORLD;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.DIMDOORS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.DRAGONAPI;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.EB;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.ENDERLICIOUS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.EREBUS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.EXTENDEDPLANETS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.EXTRAPLANETS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.EXTRAUTILITIES;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.FACTORIZATION;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.FASTCRAFT;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.FUTUREPACK;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.GADOMANCY;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.GALACTICRAFTCORE;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.GALAXYSPACE;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.HBM_NTM;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.HIGHLANDS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.ICG;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.IR3;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.JAS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.LOTR;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.MATTERMEGADRIVE;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.MATTEROVERDRIVE;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.MFQM;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.MYSTCRAFT;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.NATURESCOMPASS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.NETHERLICIOUS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.NOMADICTENTS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.OWG;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.RANDOMTHINGS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.RESTRUCTURED;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.RTG;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.RUINS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.RWG;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.TARDIS;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.THAUMCRAFT;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.THUTCORE;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.TMOR;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.TROPICRAFT;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.TWILIGHTFOREST;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.UBC;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.WITCHERY;
import static com.falsepattern.endlessids.mixin.plugin.TargetedMod.WORLDEDIT;
import static com.falsepattern.lib.mixin.IMixin.PredicateHelpers.avoid;
import static com.falsepattern.lib.mixin.IMixin.PredicateHelpers.condition;
import static com.falsepattern.lib.mixin.IMixin.PredicateHelpers.require;
public class Mixin {
private Mixin() {
}
public enum Common implements IMixin {
//region antiidconflict
antiidconflict_AntiIdConflictBaseMixin(require(ANTIIDCONFLICT)),
antiidconflict_BiomeGenBasePlaceholderMixin(require(ANTIIDCONFLICT)),
antiidconflict_BiomesManagerMixin(require(ANTIIDCONFLICT)),
antiidconflict_DimensionsManagerMixin(require(ANTIIDCONFLICT)),
antiidconflict_EnchantementsManagerMixin(require(ANTIIDCONFLICT)),
antiidconflict_EntitiesManagerMixin(require(ANTIIDCONFLICT)),
antiidconflict_PotionsManagerMixin(require(ANTIIDCONFLICT)),
//endregion
//region biome
biome_vanilla_BiomeDictionaryMixin(EXT_BIOME),
biome_vanilla_BiomeGenBaseMixin(EXT_BIOME),
biome_vanilla_BiomeGenBasePlaceholderMixin(
all(EXT_BIOME, () -> GeneralConfig.biomeConflictAvoidancePlaceholders)),
biome_vanilla_ChunkMixin(EXT_BIOME),
biome_vanilla_GenLayerRiverMixMixin(EXT_BIOME, avoid(DRAGONAPI)),
biome_vanilla_GenLayerVoronoiZoomMixin(EXT_BIOME),
biome_abyssalcraft_AbyssalCraftMixin(EXT_BIOME, require(ABYSSALCRAFT)),
biome_antiqueatlas_BiomeDetectorBaseMixin(EXT_BIOME, require(ANTIQUEATLAS)),
biome_antiqueatlas_BiomeDetectorNetherMixin(EXT_BIOME, require(ANTIQUEATLAS)),
biome_atg_ATGBiomeConfigMixin(EXT_BIOME, require(ATG)),
biome_atg_ATGBiomeManagerMixin(EXT_BIOME, require(ATG)),
biome_atg_ATGWorldGenRocksMixin(EXT_BIOME, require(ATG)),
biome_biometweaker_BiomeEventHandlerMixin(EXT_BIOME, require(BIOMETWEAKER)),
biome_biomewand_BiomeWandItemMixin(EXT_BIOME, require(BIOMEWAND)),
biome_bop_BOPBiomeManagerMixin(EXT_BIOME, require(BOP)),
biome_bop_BOPBiomesMixin(EXT_BIOME, require(BOP)),
biome_buildcraft_BuildcraftEnergyMixin(EXT_BIOME, require(BUILDCRAFT)),
biome_climatecontrol_api_BiomeSettingsMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_api_ClimateControlRulesMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_customGenLayer_ConfirmBiomeMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_customGenLayer_GenLayerBiomeByClimateMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_customGenLayer_GenLayerBiomeByTaggedClimateMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_customGenLayer_GenLayerDefineClimateMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_customGenLayer_GenLayerLowlandRiverMixMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_customGenLayer_GenLayerSmoothCoastMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_customGenLayer_GenLayerSubBiomeMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_generator_AbstractWorldGeneratorMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_generator_BiomeSwapperMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_generator_SubBiomeChooserMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_genLayerPack_GenLayerHillsMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_genLayerPack_GenLayerPackMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_genLayerPack_GenLayerSmoothMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_genLayerPack_GenLayerVoronoiZoomMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_climatecontrol_genLayerPack_GenLayerZoomMixin(EXT_BIOME, require(CLIMATECONTROL)),
biome_compactmachines_CubeToolsMixin(EXT_BIOME, require(COMPACTMACHINES)),
biome_darkworld_ModBiomesMixin(EXT_BIOME, require(DARKWORLD)),
biome_dimdoors_DDBiomeGenBaseMixin(EXT_BIOME, require(DIMDOORS)),
biome_dragonapi_vanilla_GenLayerRiverMixMixin(EXT_BIOME, require(DRAGONAPI)),
biome_dragonapi_GenLayerRiverEventMixin(EXT_BIOME, require(DRAGONAPI)),
biome_dragonapi_IDTypeMixin(EXT_BIOME, require(DRAGONAPI)),
biome_dragonapi_ReikaChunkHelperMixin(EXT_BIOME, require(DRAGONAPI)),
biome_dragonapi_ReikaWorldHelperMixin(EXT_BIOME, require(DRAGONAPI)),
biome_eb_BiomeIDsMixin(EXT_BIOME, require(EB)),
biome_eb_GenLayerArchipelagoEdgeMixin(EXT_BIOME, require(EB)),
biome_eb_GenLayerEBHillsMixin(EXT_BIOME, require(EB)),
biome_eb_GenLayerEBRiverMixMixin(EXT_BIOME, require(EB)),
biome_eb_GenLayerEBVoronoiZoomMixin(EXT_BIOME, require(EB)),
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.AbyssalCraft;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.AdvancedRocketry;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.AlternateTerrainGeneration;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.AntiIDConflict;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.AntiqueAtlas;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.ArsMagica2;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.BiomeTweaker;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.BiomeWand;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.BiomesOPlenty;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.BlockPhysics;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.BuildCraft;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.ClimateControl;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.CoFHLib;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.CompactMachines;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.DarkWorld;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.DimDoors;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.DragonAPI;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Enderlicious;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.EnhancedBiomes;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Erebus;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.ExtendedPlanets;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.ExtraPlanets;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.ExtraUtilities;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Factorization;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.FastCraft;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Futurepack;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Gadomancy;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.GalactiCraftCore;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.GalaxySpace;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Highlands;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.ImmersiveCavegen;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.IndustrialRevolutionByRedstone;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.JustAnotherSpawner;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.LordOfTheRings;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.MatterOverdrive;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.MoreFunQuicksand;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Mystcraft;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.NaturesCompass;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Netherlicious;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.NomadicTents;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.NuclearTech;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.OldWorldGen;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.RandomThings;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.RealisticTerrainGeneration;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.RealisticWorldGen;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Restructured;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Ruins;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Tardis;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Thaumcraft;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.TheMistsOfRioV;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.ThutCore;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Tropicraft;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.TwilightForest;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.UndergroundBiomes;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.Witchery;
import static com.falsepattern.endlessids.mixin.plugin.TargetMod.WorldEdit;
import static com.falsepattern.lib.mixin.v2.MixinHelper.avoid;
import static com.falsepattern.lib.mixin.v2.MixinHelper.builder;
import static com.falsepattern.lib.mixin.v2.MixinHelper.require;
@SuppressWarnings("UnstableApiUsage")
@RequiredArgsConstructor
public enum Mixin implements IMixins {
// @formatter:off
AntiIDConflict_Compat(Phase.EARLY,
require(AntiIDConflict),
common("antiidconflict.AntiIdConflictBaseMixin",
"antiidconflict.BiomeGenBasePlaceholderMixin",
"antiidconflict.BiomesManagerMixin",
"antiidconflict.DimensionsManagerMixin",
"antiidconflict.EnchantementsManagerMixin",
"antiidconflict.EntitiesManagerMixin",
"antiidconflict.PotionsManagerMixin")),
// region Biome
Biome_Vanilla(Phase.EARLY,
Ext.Biome,
common("biome.vanilla.BiomeDictionaryMixin",
"biome.vanilla.BiomeGenBaseMixin",
"biome.vanilla.ChunkMixin",
"biome.vanilla.GenLayerRiverMixMixin",
"biome.vanilla.GenLayerVoronoiZoomMixin")),
Biome_Vanilla_Placeholders(Phase.EARLY,
() -> GeneralConfig.extendBiome && GeneralConfig.biomeConflictAvoidancePlaceholders,
common("biome.vanilla.BiomeGenBasePlaceholderMixin")),
Biome_AbyssalCraft(Phase.LATE,
Ext.Biome,
require(AbyssalCraft),
common("biome.abyssalcraft.AbyssalCraftMixin")),
Biome_AdvancedRocketry(Phase.EARLY,
Ext.Biome,
require(AdvancedRocketry),
common("biome.arocketry.AdvancedRocketryMixin",
"biome.arocketry.ChunkProviderSpaceMixin")),
Biome_AntiqueAtlas(Phase.LATE,
Ext.Biome,
require(AntiqueAtlas),
common("biome.antiqueatlas.BiomeDetectorBaseMixin",
"biome.antiqueatlas.BiomeDetectorNetherMixin")),
Biome_AlternateTerrainGeneration(Phase.LATE,
Ext.Biome,
require(AlternateTerrainGeneration),
common("biome.atg.ATGBiomeConfigMixin",
"biome.atg.ATGBiomeManagerMixin",
"biome.atg.ATGWorldGenRocksMixin")),
Biome_BiomeTweaker(Phase.EARLY,
Ext.Biome,
require(BiomeTweaker),
common("biome.biometweaker.BiomeEventHandlerMixin")),
Biome_BiomeWand(Phase.EARLY,
Ext.Biome,
require(BiomeWand),
common("biome.biomewand.BiomeWandItemMixin"),
client("biome.biomewand.BiomeWandItemMixin")),
Biome_BiomesOPlenty(Phase.LATE,
Ext.Biome,
require(BiomesOPlenty),
common("biome.bop.BOPBiomeManagerMixin",
"biome.bop.BOPBiomesMixin")),
Biome_BuildCraft(Phase.LATE,
Ext.Biome,
require(BuildCraft),
common("biome.buildcraft.BuildcraftEnergyMixin")),
Biome_ClimateControl(Phase.LATE,
Ext.Biome,
require(ClimateControl),
common("biome.climatecontrol.api.BiomeSettingsMixin",
"biome.climatecontrol.api.ClimateControlRulesMixin",
"biome.climatecontrol.customGenLayer.ConfirmBiomeMixin",
"biome.climatecontrol.customGenLayer.GenLayerBiomeByClimateMixin",
"biome.climatecontrol.customGenLayer.GenLayerBiomeByTaggedClimateMixin",
"biome.climatecontrol.customGenLayer.GenLayerDefineClimateMixin",
"biome.climatecontrol.customGenLayer.GenLayerLowlandRiverMixMixin",
"biome.climatecontrol.customGenLayer.GenLayerSmoothCoastMixin",
"biome.climatecontrol.customGenLayer.GenLayerSubBiomeMixin",
"biome.climatecontrol.generator.AbstractWorldGeneratorMixin",
"biome.climatecontrol.generator.BiomeSwapperMixin",
"biome.climatecontrol.generator.SubBiomeChooserMixin",
"biome.climatecontrol.genLayerPack.GenLayerHillsMixin",
"biome.climatecontrol.genLayerPack.GenLayerPackMixin",
"biome.climatecontrol.genLayerPack.GenLayerSmoothMixin",
"biome.climatecontrol.genLayerPack.GenLayerVoronoiZoomMixin",
"biome.climatecontrol.genLayerPack.GenLayerZoomMixin")),
Biome_CompactMachines(Phase.LATE,
Ext.Biome,
require(CompactMachines),
common("biome.compactmachines.CubeToolsMixin")),
Biome_DarkWorld(Phase.LATE,
Ext.Biome,
require(DarkWorld),
common("biome.darkworld.ModBiomesMixin")),
Biome_DimDoors(Phase.LATE,
Ext.Biome,
require(DimDoors),
common("biome.dimdoors.DDBiomeGenBaseMixin")),
Biome_DragonAPI(Phase.EARLY,
Ext.Biome,
require(DragonAPI),
common("biome.dragonapi.vanilla.GenLayerRiverMixMixin",
"biome.dragonapi.GenLayerRiverEventMixin",
"biome.dragonapi.IDTypeMixin",
"biome.dragonapi.ReikaChunkHelperMixin",
"biome.dragonapi.ReikaWorldHelperMixin")),
Biome_EnhancedBiomes(Phase.LATE,
Ext.Biome,
require(EnhancedBiomes),
common("biome.eb.BiomeIDsMixin",
"biome.eb.GenLayerArchipelagoEdgeMixin",
"biome.eb.GenLayerEBHillsMixin",
"biome.eb.GenLayerEBRiverMixMixin",
"biome.eb.GenLayerEBVoronoiZoomMixin")),
Biome_Enderlicious(Phase.LATE,
Ext.Biome,
require(Enderlicious),
common("biome.enderlicious.BiomeConfigurationMixin",
"biome.enderlicious.EndChunkProviderMixin")),
Biome_Erebus(Phase.LATE,
Ext.Biome,
require(Erebus),
common("biome.erebus.ModBiomesMixin")),
Biome_ExtendedPlanets(Phase.LATE,
Ext.Biome,
require(ExtendedPlanets),
common("biome.extendedplanets.ChunkProviderOceanMixin")),
Biome_ExtraPlanets(Phase.LATE,
Ext.Biome,
require(ExtraPlanets),
common("biome.extraplanets.ConfigMixin")),
Biome_ExtraUtilities(Phase.LATE,
Ext.Biome,
require(ExtraUtilities),
common("biome.extrautilities.ChunkProviderEndOfTimeMixin")),
Biome_Factorization(Phase.EARLY,
Ext.Biome,
require(Factorization),
common("biome.factorization.HammerChunkProviderMixin")),
Biome_Futurepack(Phase.LATE,
Ext.Biome,
require(Futurepack),
common("biome.futurepack.BiomeGenSpaceMixin")),
Biome_Gadomancy(Phase.EARLY,
Ext.Biome,
require(Gadomancy),
common("biome.gadomancy.ChunkProviderTCOuterMixin")),
Biome_GalactiCraft(Phase.LATE,
Ext.Biome,
require(GalactiCraftCore),
common("biome.galacticraft.ChunkProviderOrbitMixin",
"biome.galacticraft.ConfigManagerCoreMixin")),
Biome_GalaxySpace(Phase.EARLY,
Ext.Biome,
require(GalaxySpace),
common("biome.galaxyspace.ChunkProviderKuiperMixin",
"biome.galaxyspace.ChunkProviderMarsSSMixin",
"biome.galaxyspace.ChunkProviderSpaceLakesMixin",
"biome.galaxyspace.ChunkProviderVenusSSMixin")),
Biome_Highlands(Phase.LATE,
Ext.Biome,
require(Highlands),
common("biome.highlands.ConfigMixin")),
Biome_ImmersiveCavegen(Phase.LATE,
Ext.Biome,
require(ImmersiveCavegen),
common("biome.icg.MysteriumPatchesFixesCaveMixin")),
Biome_IndustrialRevolutionByRedstone(Phase.LATE,
Ext.Biome,
require(IndustrialRevolutionByRedstone),
common("biome.ir3.IR2Mixin")),
Biome_JustAnotherSpawner(Phase.LATE,
Ext.Biome,
require(JustAnotherSpawner),
common("biome.jas.LegacyCreatureTypeMixin",
"biome.jas.ModernCreatureTypeMixin")),
Biome_LordOfTheRings(Phase.EARLY,
Ext.Biome,
require(LordOfTheRings),
common("biome.lotr.LOTRBiomeVariantStorageMixin",
"biome.lotr.LOTRChunkProviderMixin",
"biome.lotr.LOTRChunkProviderUtumnoMixin",
"biome.lotr.LOTRDimensionMixin",
"biome.lotr.LOTRPacketBiomeVariantsWatchHandlerMixin",
"biome.lotr.LOTRWorldChunkManagerMixin",
"biome.lotr.LOTRWorldProviderMixin")),
Biome_Mystcraft(Phase.LATE,
Ext.Biome,
require(Mystcraft),
common("biome.mystcraft.BiomeReplacerMixin")),
Biome_NaturesCompass(Phase.LATE,
Ext.Biome,
require(NaturesCompass),
common("biome.naturescompass.BiomeUtilsMixin")),
Biome_Netherlicious(Phase.LATE,
Ext.Biome,
require(Netherlicious),
common("biome.netherlicious.BiomeConfigurationMixin")),
Biome_NomadicTents(Phase.LATE,
Ext.Biome,
require(NomadicTents),
common("biome.nomadictents.TentChunkProviderMixin")),
Biome_OldWorldGen(Phase.LATE,
Ext.Biome,
require(OldWorldGen),
common("biome.owg.ChunkGeneratorBetaMixin")),
Biome_RandomThings(Phase.EARLY,
Ext.Biome,
require(RandomThings),
common("biome.randomthings.ItemBiomePainterMixin",
"biome.randomthings.MessagePaintBiomeMixin")),
Biome_RealisticTerrainGeneration(Phase.LATE,
Ext.Biome,
require(RealisticTerrainGeneration),
common("biome.rtg.ChunkProviderRTGMixin",
"biome.rtg.LandscapeGeneratorMixin",
"biome.rtg.WorldChunkManagerRTGMixin")),
Biome_RealisticWorldGen(Phase.LATE,
Ext.Biome,
require(RealisticWorldGen),
common("biome.rwg.RealisticBiomeBaseMixin",
"biome.rwg.ChunkGeneratorRealisticMixin",
"biome.rwg.VillageMaterialsMixin")),
Biome_Restructured(Phase.LATE,
Ext.Biome,
require(Restructured),
common("biome.restructured.BiomeHelperMixin")),
Biome_Ruins(Phase.LATE,
Ext.Biome,
require(Ruins),
common("biome.ruins.FileHandlerMixin",
"biome.ruins.LoaderThreadMixin",
"biome.ruins.RuinGeneratorMixin")),
Biome_Tardis(Phase.LATE,
Ext.Biome,
require(Tardis),
common("biome.tardismod.TardisChunkProviderMixin")),
Biome_Thaumcraft(Phase.LATE,
Ext.Biome,
require(Thaumcraft),
common("biome.thaumcraft.UtilsMixin")),
Biome_TheMistsOfRioV(Phase.LATE,
Ext.Biome,
require(TheMistsOfRioV),
common("biome.tmor.ChunkProviderSanctuatiteMixin")),
Biome_ThutCore(Phase.LATE,
Ext.Biome,
require(ThutCore),
common("biome.thut.Vector3Mixin")),
Biome_Tropicraft(Phase.LATE,
Ext.Biome,
require(Tropicraft),
common("biome.tropicraft.GenLayerTropiVoronoiZoomMixin")),
Biome_TwilightForest(Phase.LATE,
Ext.Biome,
require(TwilightForest),
common("biome.twilightforest.TFBiomeBaseMixin")),
Biome_Witchery(Phase.LATE,
Ext.Biome,
require(Witchery),
common("biome.witchery.BrewActionBiomeChangeMixin",
"biome.witchery.WorldChunkManagerMirrorMixin")),
Biome_WorldEdit(Phase.LATE,
Ext.Biome,
require(WorldEdit),
common("biome.worldedit.ForgeWorldMixin")),
// endregion Biome
// region BlockItem
BlockItem_Vanilla(Phase.EARLY,
Ext.BlockItem,
common("blockitem.vanilla.BlockFireMixin",
"blockitem.vanilla.BlockMixin",
"blockitem.vanilla.ExtendedBlockStorageMixin",
"blockitem.vanilla.ItemInWorldManagerMixin",
"blockitem.vanilla.ItemStackMixin",
"blockitem.vanilla.PacketBufferMixin",
"blockitem.vanilla.S22PacketMultiBlockChangeMixin",
"blockitem.vanilla.S24PacketBlockActionMixin",
"blockitem.vanilla.StatListMixin",
"blockitem.vanilla.WorldMixin"),
client("blockitem.vanilla.NetHandlerPlayClientMixin",
"blockitem.vanilla.PlayerControllerMPMixin",
"blockitem.vanilla.RenderGlobalMixin")),
BlockItem_BlockPhysics(Phase.EARLY,
Ext.BlockItem,
require(BlockPhysics),
common("blockitem.blockphysics.DefinitionMapsMixin")),
BlockItem_CoFHLib(Phase.LATE,
Ext.BlockItem,
require(CoFHLib),
common("blockitem.cofhlib.BlockHelperMixin")),
BlockItem_DragonAPI(Phase.EARLY,
Ext.BlockItem,
require(DragonAPI),
common("blockitem.dragonapi.BlockPropertiesMixin",
"blockitem.dragonapi.IDTypeMixin")),
BlockItem_FastCraft(Phase.EARLY,
Ext.BlockItem,
require(FastCraft),
client("blockitem.fastcraft.EntityRendererMixin")),
BlockItem_NuclearTech(Phase.LATE,
Ext.BlockItem,
require(NuclearTech),
common("blockitem.ntm.ChunkRadiationHandlerPRISMMixin",
"blockitem.ntm.ChunkRadiationHandlerPRISMSubChunkMixin")),
BlockItem_MatterOverdrive(Phase.LATE,
Ext.BlockItem,
require(MatterOverdrive),
common("blockitem.matteroverdrive.InventoryMixin",
"blockitem.matteroverdrive.ItemPatternMixin")),
BlockItem_MoreFunQuicksand(Phase.LATE,
Ext.BlockItem,
require(MoreFunQuicksand),
common("blockitem.mfqm.MFQMMixin")),
BlockItem_UndergroundBiomes(Phase.LATE,
Ext.BlockItem,
require(UndergroundBiomes),
common("blockitem.ubc.BiomeUndergroundDecoratorMixin",
"blockitem.ubc.OreUBifierMixin")),
BlockItem_WorldEdit(Phase.LATE,
Ext.BlockItem,
require(WorldEdit),
common("blockitem.worldedit.BaseBlockMixin")),
// endregion BlockItem
// region DataWatcher
DataWatcher_Vanilla(Phase.EARLY,
Ext.DataWatcher,
common("datawatcher.vanilla.DataWatcherMixin")),
DataWatcher_MoreFunQuicksand(Phase.LATE,
Ext.DataWatcher,
common("datawatcher.mfqm.MFQMDataWatcherMixin")),
// endregion DataWatcher
// region Enchantment
Enchantment_Vanilla(Phase.EARLY,
Ext.Enchantment,
common("enchantment.vanilla.EnchantmentMixin")),
// endregion Enchantment
// region Entity
Entity_Vanilla(Phase.EARLY,
Ext.Entity,
common("entity.vanilla.EntityListMixin",
"entity.vanilla.EntityRegistryMixin",
"entity.vanilla.S0FPacketSpawnMobMixin")),
// endregion Entity
// region Potion
Potion_Vanilla(Phase.EARLY,
Ext.Potion,
common("potion.vanilla.PotionEffectMixin",
"potion.vanilla.PotionMixin")),
Potion_Vanilla_NoArsMagica2(Phase.EARLY,
Ext.Potion,
avoid(ArsMagica2),
common("potion.vanilla.network.S1DPacketEntityEffectMixin",
"potion.vanilla.network.S1EPacketRemoveEntityEffectMixin"),
client("potion.vanilla.NetHandlerPlayClientMixin")),
Potion_Thaumcraft(Phase.LATE,
Ext.Potion,
require(Thaumcraft),
common("potion.thaumcraft.ConfigMixin")),
biome_enderlicious_BiomeConfigurationMixin(EXT_BIOME, require(ENDERLICIOUS)),
biome_enderlicious_EndChunkProviderMixin(EXT_BIOME, require(ENDERLICIOUS)),
// endregion Potion
biome_erebus_ModBiomesMixin(EXT_BIOME, require(EREBUS)),
// region Redstone
biome_extendedplanets_ChunkProviderOceanMixin(EXT_BIOME, require(EXTENDEDPLANETS)),
Redstone_Vanilla(Phase.EARLY,
() -> GeneralConfig.extendBlockItem && GeneralConfig.extendRedstone,
common("redstone.BlockCompressedPoweredMixin",
"redstone.BlockRedstoneDiodeMixin",
"redstone.BlockRedstoneTorchMixin",
"redstone.WorldMixin"),
client("redstone.BlockRedstoneWireMixin",
"redstone.RenderBlocksMixin")),
biome_extraplanets_ConfigMixin(EXT_BIOME, require(EXTRAPLANETS)),
// endregion Redstone
biome_extrautilities_ChunkProviderEndOfTimeMixin(EXT_BIOME, require(EXTRAUTILITIES)),
biome_factorization_HammerChunkProviderMixin(EXT_BIOME, require(FACTORIZATION)),
biome_futurepack_BiomeGenSpaceMixin(EXT_BIOME, require(FUTUREPACK)),
biome_gadomancy_ChunkProviderTCOuterMixin(EXT_BIOME, require(GADOMANCY)),
biome_galacticraft_ConfigManagerCoreMixin(EXT_BIOME, require(GALACTICRAFTCORE)),
biome_galaxyspace_ChunkProviderKuiperMixin(EXT_BIOME, require(GALAXYSPACE)),
biome_galaxyspace_ChunkProviderMarsSSMixin(EXT_BIOME, require(GALAXYSPACE)),
biome_galaxyspace_ChunkProviderSpaceLakesMixin(EXT_BIOME, require(GALAXYSPACE)),
biome_galaxyspace_ChunkProviderVenusSSMixin(EXT_BIOME, require(GALAXYSPACE)),
biome_highlands_ConfigMixin(EXT_BIOME, require(HIGHLANDS)),
biome_icg_MysteriumPatchesFixesCaveMixin(EXT_BIOME, require(ICG)),
biome_ir3_IR2Mixin(EXT_BIOME, require(IR3)),
biome_jas_LegacyCreatureTypeMixin(EXT_BIOME, require(JAS)),
biome_jas_ModernCreatureTypeMixin(EXT_BIOME, require(JAS)),
biome_lotr_LOTRBiomeVariantStorageMixin(EXT_BIOME, require(LOTR)),
biome_lotr_LOTRChunkProviderMixin(EXT_BIOME, require(LOTR)),
biome_lotr_LOTRChunkProviderUtumnoMixin(EXT_BIOME, require(LOTR)),
biome_lotr_LOTRDimensionMixin(EXT_BIOME, require(LOTR)),
biome_lotr_LOTRPacketBiomeVariantsWatchHandlerMixin(EXT_BIOME, require(LOTR)),
biome_lotr_LOTRWorldChunkManagerMixin(EXT_BIOME, require(LOTR)),
biome_lotr_LOTRWorldProviderMixin(EXT_BIOME, require(LOTR)),
biome_mystcraft_BiomeReplacerMixin(EXT_BIOME, require(MYSTCRAFT)),
biome_naturescompass_BiomeUtilsMixin(EXT_BIOME, require(NATURESCOMPASS)),
biome_netherlicious_BiomeConfigurationMixin(EXT_BIOME, require(NETHERLICIOUS)),
biome_nomadictents_TentChunkProviderMixin(EXT_BIOME, require(NOMADICTENTS)),
biome_owg_ChunkGeneratorBetaMixin(EXT_BIOME, require(OWG)),
biome_randomthings_ItemBiomePainterMixin(EXT_BIOME, require(RANDOMTHINGS)),
biome_randomthings_MessagePaintBiomeMixin(EXT_BIOME, require(RANDOMTHINGS)),
biome_restructured_BiomeHelperMixin(EXT_BIOME, require(RESTRUCTURED)),
biome_rtg_ChunkProviderRTGMixin(EXT_BIOME, require(RTG)),
biome_rtg_LandscapeGeneratorMixin(EXT_BIOME, require(RTG)),
biome_rtg_WorldChunkManagerRTGMixin(EXT_BIOME, require(RTG)),
biome_ruins_FileHandlerMixin(EXT_BIOME, require(RUINS)),
biome_ruins_LoaderThreadMixin(EXT_BIOME, require(RUINS)),
biome_ruins_RuinGeneratorMixin(EXT_BIOME, require(RUINS)),
biome_rwg_ChunkGeneratorRealisticMixin(EXT_BIOME, require(RWG)),
biome_rwg_RealisticBiomeBaseMixin(EXT_BIOME, require(RWG)),
biome_rwg_VillageMaterialsMixin(EXT_BIOME, require(RWG)),
biome_tardismod_TardisChunkProviderMixin(EXT_BIOME, require(TARDIS)),
biome_thaumcraft_UtilsMixin(EXT_BIOME, require(THAUMCRAFT)),
biome_thut_Vector3Mixin(EXT_BIOME, require(THUTCORE)),
biome_tmor_ChunkProviderSanctuatiteMixin(EXT_BIOME, require(TMOR)),
biome_tropicraft_GenLayerTropiVoronoiZoomMixin(EXT_BIOME, require(TROPICRAFT)),
biome_twilightforest_TFBiomeBaseMixin(EXT_BIOME, require(TWILIGHTFOREST)),
biome_witchery_WorldChunkManagerMirrorMixin(EXT_BIOME, require(WITCHERY)),
biome_witchery_BrewActionBiomeChangeMixin(EXT_BIOME, require(WITCHERY)),
biome_worldedit_ForgeWorldMixin(EXT_BIOME, require(WORLDEDIT)),
//endregion
//region blockitem
blockitem_vanilla_BlockFireMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_BlockMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_ExtendedBlockStorageMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_ItemInWorldManagerMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_ItemStackMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_PacketBufferMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_S22PacketMultiBlockChangeMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_S24PacketBlockActionMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_StatListMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_WorldMixin(EXT_BLOCK_ITEM),
blockitem_blockphysics_DefinitionMapsMixin(EXT_BLOCK_ITEM, require(BLOCKPHYSICS)),
blockitem_cofhlib_BlockHelperMixin(EXT_BLOCK_ITEM, require(COFHLIB)),
blockitem_dragonapi_BlockPropertiesMixin(EXT_BLOCK_ITEM, require(DRAGONAPI)),
blockitem_dragonapi_IDTypeMixin(EXT_BLOCK_ITEM, require(DRAGONAPI)),
blockitem_ntm_ChunkRadiationHandlerPRISMMixin(EXT_BLOCK_ITEM, require(HBM_NTM)),
blockitem_ntm_ChunkRadiationHandlerPRISMSubChunkMixin(EXT_BLOCK_ITEM, require(HBM_NTM)),
blockitem_matteroverdrive_InventoryMixin(EXT_BLOCK_ITEM, require(MATTEROVERDRIVE).or(require(MATTERMEGADRIVE))),
blockitem_matteroverdrive_ItemPatternMixin(EXT_BLOCK_ITEM,
require(MATTEROVERDRIVE).or(require(MATTERMEGADRIVE))),
blockitem_mfqm_MFQMMixin(EXT_BLOCK_ITEM, require(MFQM)),
blockitem_worldedit_BaseBlockMixin(EXT_BLOCK_ITEM, require(WORLDEDIT)),
blockitem_ubc_OreUBifierMixin(EXT_BLOCK_ITEM, require(UBC)),
blockitem_ubc_BiomeUndergroundDecoratorMixin(EXT_BLOCK_ITEM, require(UBC)),
//endregion
//region datawatcher
datawatcher_vanilla_DataWatcherMixin(EXT_DATA_WATCHER),
datawatcher_mfqm_MFQMDataWatcherMixin(EXT_DATA_WATCHER, require(MFQM)),
//endregion
//region enchantment
enchantment_vanilla_EnchantmentMixin(EXT_ENCHANTMENT),
//endregion
//region entity
entity_vanilla_EntityListMixin(EXT_ENTITY),
entity_vanilla_EntityRegistryMixin(EXT_ENTITY),
entity_vanilla_S0FPacketSpawnMobMixin(EXT_ENTITY),
//endregion
//region potion
potion_vanilla_PotionEffectMixin(EXT_POTION),
potion_vanilla_PotionMixin(EXT_POTION),
potion_vanilla_network_S1DPacketEntityEffectMixin(EXT_POTION, avoid(AM2)),
potion_vanilla_network_S1EPacketRemoveEntityEffectMixin(EXT_POTION, avoid(AM2)),
potion_thaumcraft_ConfigMixin(EXT_POTION, require(THAUMCRAFT)),
//endregion
//region redstone
redstone_BlockCompressedPoweredMixin(all(EXT_BLOCK_ITEM, EXT_REDSTONE)),
redstone_BlockRedstoneDiodeMixin(all(EXT_BLOCK_ITEM, EXT_REDSTONE)),
redstone_BlockRedstoneTorchMixin(all(EXT_BLOCK_ITEM, EXT_REDSTONE)),
redstone_WorldMixin(all(EXT_BLOCK_ITEM, EXT_REDSTONE)),
//endregion
;
//region boilerplate
@Getter
private final Predicate<List<ITargetedMod>> filter;
@Getter
private final String mixin;
Common(Predicate<List<ITargetedMod>> predicate) {
filter = predicate;
mixin = buildMixin(name());
}
Common(Supplier<Boolean> condition) {
filter = buildPredicate(condition);
mixin = buildMixin(name());
}
Common(Supplier<Boolean> condition, Predicate<List<ITargetedMod>> predicate) {
filter = buildPredicate(condition).and(predicate);
mixin = buildMixin(name());
}
@Override
public Side getSide() {
return Side.COMMON;
}
//endregion
}
public enum Client implements IMixin {
//region biome
biome_biomewand_BiomeWandItemMixin(EXT_BIOME, require(BIOMEWAND)),
//endregion
//region blockitem
blockitem_vanilla_NetHandlerPlayClientMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_PlayerControllerMPMixin(EXT_BLOCK_ITEM),
blockitem_vanilla_RenderGlobalMixin(EXT_BLOCK_ITEM),
blockitem_fastcraft_EntityRendererMixin(EXT_BLOCK_ITEM, require(FASTCRAFT)),
//endregion
//region potion
potion_vanilla_NetHandlerPlayClientMixin(EXT_POTION, avoid(AM2)),
//endregion
//region redstone
redstone_BlockRedstoneWireMixin(all(EXT_BLOCK_ITEM, EXT_REDSTONE)),
redstone_RenderBlocksMixin(all(EXT_BLOCK_ITEM, EXT_REDSTONE)),
//endregion
;
//region boilerplate
@Getter
private final Predicate<List<ITargetedMod>> filter;
@Getter
private final String mixin;
Client(Supplier<Boolean> condition) {
filter = buildPredicate(condition);
mixin = buildMixin(name());
}
Client(Supplier<Boolean> condition, Predicate<List<ITargetedMod>> predicate) {
filter = buildPredicate(condition).and(predicate);
mixin = buildMixin(name());
}
@Override
public Side getSide() {
return Side.CLIENT;
}
//endregion
}
public static IMixin[] values() {
val common = Common.values();
val client = Client.values();
val result = new IMixin[common.length + client.length];
System.arraycopy(common, 0, result, 0, common.length);
System.arraycopy(client, 0, result, common.length, client.length);
return result;
}
// @formatter:on
//region boilerplate
private static Predicate<List<ITargetedMod>> buildPredicate(Supplier<Boolean> condition) {
return condition(condition);
;
@Getter
private final MixinBuilder builder;
Mixin(Phase phase, SidedMixins... mixins) {
this(builder(mixins).setPhase(phase));
}
private static String buildMixin(String name) {
return name.replace('_', '.');
Mixin(Phase phase, BooleanSupplier cond, SidedMixins... mixins) {
this(builder(cond, mixins).setPhase(phase));
}
private static final Supplier<Boolean> EXT_BIOME = () -> GeneralConfig.extendBiome;
private static final Supplier<Boolean> EXT_BLOCK_ITEM = () -> GeneralConfig.extendBlockItem;
private static final Supplier<Boolean> EXT_DATA_WATCHER = () -> GeneralConfig.extendDataWatcher;
private static final Supplier<Boolean> EXT_ENCHANTMENT = () -> GeneralConfig.extendEnchantment;
private static final Supplier<Boolean> EXT_POTION = () -> GeneralConfig.extendPotion;
private static final Supplier<Boolean> EXT_ENTITY = () -> GeneralConfig.extendEntity;
private static final Supplier<Boolean> EXT_REDSTONE = () -> GeneralConfig.extendRedstone;
Mixin(Phase phase, TaggedMod mod, SidedMixins... mixins) {
this(builder(mod, mixins).setPhase(phase));
}
@SafeVarargs
private static Supplier<Boolean> all(Supplier<Boolean>... conds) {
return () -> {
for (Supplier<Boolean> cond : conds) {
if (!cond.get()) {
return false;
}
}
return true;
};
Mixin(Phase phase, TaggedMod[] mods, SidedMixins... mixins) {
this(builder(mods, mixins).setPhase(phase));
}
Mixin(Phase phase, BooleanSupplier cond, TaggedMod mod, SidedMixins... mixins) {
this(builder(cond, mod, mixins).setPhase(phase));
}
Mixin(Phase phase, BooleanSupplier cond, TaggedMod[] mods, SidedMixins... mixins) {
this(builder(cond, mods, mixins).setPhase(phase));
}
private static SidedMixins common(@Language(value = "JAVA",
prefix = "import " + Tags.GROUPNAME + ".mixin.mixins.common.",
suffix = ";") String... mixins) {
return MixinHelper.common(mixins);
}
private static SidedMixins client(@Language(value = "JAVA",
prefix = "import " + Tags.GROUPNAME + ".mixin.mixins.client.",
suffix = ";") String... mixins) {
return MixinHelper.client(mixins);
}
private static SidedMixins server(@Language(value = "JAVA",
prefix = "import " + Tags.GROUPNAME + ".mixin.mixins.server.",
suffix = ";") String... mixins) {
return MixinHelper.server(mixins);
}
//endregion
}
private static class Ext {
public static final BooleanSupplier Biome = () -> GeneralConfig.extendBiome;
public static final BooleanSupplier BlockItem = () -> GeneralConfig.extendBlockItem;
public static final BooleanSupplier DataWatcher = () -> GeneralConfig.extendDataWatcher;
public static final BooleanSupplier Enchantment = () -> GeneralConfig.extendEnchantment;
public static final BooleanSupplier Potion = () -> GeneralConfig.extendPotion;
public static final BooleanSupplier Entity = () -> GeneralConfig.extendEntity;
}
}
@@ -0,0 +1,115 @@
/*
* EndlessIDs
*
* Copyright (C) 2022-2025 FalsePattern, The MEGA Team
* All Rights Reserved
*
* The above copyright notice, this permission notice and the word "MEGA"
* shall be included in all copies or substantial portions of the Software.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, only version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.falsepattern.endlessids.mixin.plugin;
import com.gtnewhorizon.gtnhmixins.builders.ITargetMod;
import com.gtnewhorizon.gtnhmixins.builders.TargetModBuilder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.function.Consumer;
@RequiredArgsConstructor
public enum TargetMod implements ITargetMod {
//coremods
AdvancedRocketry("zmaster587.advancedRocketry.AdvancedRocketry"),
ArsMagica2("am2.AMCore"),
AntiIDConflict("code.elix_x.coremods.antiidconflict.AntiIdConflictCore"),
BlockPhysics("com.bloodnbonesgaming.blockphysics.BlockPhysics"),
BiomeTweaker("me.superckl.biometweaker.BiomeTweaker"),
DragonAPI("Reika.DragonAPI.DragonAPICore"),
Factorization("factorization.coremod.LoadingPlugin"),
FastCraft("fastcraft.Tweaker"),
Gadomancy("makeo.gadomancy.common.Gadomancy"),
GalaxySpace("galaxyspace.GalaxySpace"),
LordOfTheRings("lotr.common.LOTRMod"),
RandomThings("lumien.randomthings.RandomThings"),
//regular mods
AbyssalCraft("com.shinoow.abyssalcraft.AbyssalCraft"),
AlternateTerrainGeneration("ttftcuts.atg.ATG"),
AntiqueAtlas("hunternif.mc.atlas.AntiqueAtlasMod"),
BiomesOPlenty("biomesoplenty.BiomesOPlenty"),
BiomeWand("com.spacechase0.minecraft.biomewand.BiomeWandMod"),
BuildCraft("buildcraft.BuildCraftCore"),
ClimateControl("climateControl.ClimateControl"),
CoFHLib("cofh.lib.CoFHLibProps"),
CompactMachines("org.dave.CompactMachines.CompactMachines"),
DarkWorld("matthbo.mods.darkworld.DarkWorld"),
DimDoors("StevenDimDoors.mod_pocketDim.mod_pocketDim"),
Enderlicious("DelirusCrux.Enderlicious.Enderlicious"),
EnhancedBiomes("enhancedbiomes.EnhancedBiomesMod"),
Erebus("erebus.Erebus"),
ExtendedPlanets("ExtendedPlanets.EPMain"),
ExtraPlanets("com.mjr.extraplanets.ExtraPlanets"),
ExtraUtilities("com.rwtema.extrautils.ExtraUtilsMod"),
Futurepack("futurepack.common.FPMain"),
GalactiCraftCore("micdoodle8.mods.galacticraft.core.GalacticraftCore"),
Highlands("highlands.Highlands"),
ImmersiveCavegen("net.tclproject.immersivecavegen.ImmersiveCavegen"),
IndustrialRevolutionByRedstone("jp.plusplus.ir2.IR2"),
JustAnotherSpawner("jas.common.JustAnotherSpawner"),
MatterOverdrive("matteroverdrive.MatterOverdrive"),
MoreFunQuicksand("MoreFunQuicksandMod.main.MFQM"),
Mystcraft("com.xcompwiz.mystcraft.Mystcraft"),
NaturesCompass("com.chaosthedude.naturescompass.NaturesCompass"),
Netherlicious("DelirusCrux.Netherlicious.Netherlicious"),
NomadicTents("com.yurtmod.main.NomadicTents"),
NuclearTech("com.hbm.main.MainRegistry"),
OldWorldGen("owg.OWG"),
Ruins("atomicstryker.ruins.common.RuinsMod"),
RealisticTerrainGeneration("rtg.RTG"),
RealisticWorldGen("rwg.RWG"),
Restructured("org.blockartistry.mod.Restructured.Restructured"),
Tardis("tardis.TardisMod"),
Thaumcraft("thaumcraft.common.Thaumcraft"),
TheMistsOfRioV("sheenrox82.RioV.src.base.TheMistsOfRioV"),
ThutCore("thut.api.ThutCore"),
Tropicraft("net.tropicraft.Tropicraft"),
TwilightForest("twilightforest.TwilightForestMod"),
UndergroundBiomes("exterminatorJeff.undergroundBiomes.common.UndergroundBiomes"),
Witchery("com.emoniph.witchery.Witchery"),
WorldEdit("com.sk89q.worldedit.forge.ForgeWorldEdit"),
;
@Getter
private final TargetModBuilder builder;
TargetMod(@Language(value = "JAVA",
prefix = "import ",
suffix = ";") @NotNull String className) {
this(className, null);
}
TargetMod(@Language(value = "JAVA",
prefix = "import ",
suffix = ";") @NotNull String className, @Nullable Consumer<TargetModBuilder> cfg) {
builder = new TargetModBuilder();
builder.setTargetClass(className);
if (cfg != null) {
cfg.accept(builder);
}
}
}
@@ -1,106 +0,0 @@
/*
* EndlessIDs
*
* Copyright (C) 2022-2025 FalsePattern, The MEGA Team
* All Rights Reserved
*
* The above copyright notice, this permission notice and the words "MEGA"
* shall be included in all copies or substantial portions of the Software.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, only version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.falsepattern.endlessids.mixin.plugin;
import com.falsepattern.lib.mixin.ITargetedMod;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.function.Predicate;
import static com.falsepattern.lib.mixin.ITargetedMod.PredicateHelpers.contains;
@RequiredArgsConstructor
public enum TargetedMod implements ITargetedMod {
ABYSSALCRAFT("AbyssalCraft", false, contains("abyssalcraft-")),
AROCKETRY("Advanced Rocketry", false, contains("advancedrocketry-")),
ATG("Alternate Terrain Generation", false, contains("atg")),
AM2("Ars Magica 2", false, contains("am2").or(contains("arsmagica2"))),
ANTIQUEATLAS("Antique Atlas", false, contains("antiqueatlas")),
ANTIIDCONFLICT("Anti ID Conflict", false, contains("antiidconflict")),
BLOCKPHYSICS("Block Physics", false, contains("blockphysics-")),
BOP("Biomes O' Plenty", false, contains("biomesoplenty-")),
BIOMETWEAKER("Biome Tweaker", false, contains("biometweaker-")),
BIOMEWAND("Biome Wand", false, contains("biome-wand")),
BUILDCRAFT("BuildCraft", false, contains("buildcraft-").and(contains("compat").negate())),
CLIMATECONTROL("Climate Control", false, contains("climatecontrol-")),
COFHLIB("CoFH Lib", false, contains("cofhlib-")),
COMPACTMACHINES("Compact Machines", false, contains("compactmachines-")),
DARKWORLD("Dark World", false, contains("darkworld-")),
DIMDOORS("Dimensional Doors", false, contains("dimensionaldoors-").or(contains("dimdoors-"))),
DRAGONAPI("DragonAPI", false, contains("dragonapi")),
EB("Enhanced Biomes", false, contains("Enhanced Biomes").or(contains("enhancedbiomes"))),
ENDERLICIOUS("Enderlicious", false, contains("enderlicious-")),
EREBUS("The Erebus", false, contains("theerebus")),
EXTENDEDPLANETS("Extended Planets", false, contains("extendedplanets-")),
EXTRAPLANETS("Extra Planets", false, contains("extraplanets-")),
EXTRAUTILITIES("Extra Utilities", false, contains("extrautilities-")),
FACTORIZATION("Factorization", false, contains("factorization-")),
FASTCRAFT("Fastcraft", false, contains("fastcraft-")),
FUTUREPACK("Futurepack", false, contains("futurepack")),
GADOMANCY("Gadomancy", false, contains("gadomancy-")),
GALACTICRAFTCORE("GalactiCraftCore", false, contains("galacticraftcore")),
GALAXYSPACE("GalaxySpace", false, contains("galaxyspace-")),
HBM_NTM("Hbm's Nuclear Tech Mod", false, contains("hbm-ntm")),
HIGHLANDS("Highlands", false, contains("highlands")),
ICG("Immersive Cavegen", false, contains("immersivecavegen")),
IR3("Industrial Revolution by Redstone Rebooted", false, contains("industrialrevolutionbyredstonerebooted-")),
JAS("Just Another Spawner", false, contains("justanotherspawner-")),
LOTR("LOTR Mod", false, contains("lotrmod")),
MATTEROVERDRIVE("Matter Overdrive", false, contains("matteroverdrive-")),
MATTERMEGADRIVE("Matter Megadrive", false, contains("mattermegadrive-")),
MYSTCRAFT("Mystcraft", false, contains("mystcraft-")),
MFQM("More Fun Quicksand Mod", false, contains("morefunquicksandmod-")),
NATURESCOMPASS("Nature's Compass", false, contains("naturescompass")),
NETHERLICIOUS("Netherlicious", false, contains("netherlicious-")),
NOMADICTENTS("Nomadic Tents", false, contains("nomadictents")),
OWG("Nostalgic world generation", false, contains("owg-").or(contains("nostalgiagenerator-"))),
RANDOMTHINGS("Random Things", false, contains("randomthings-")),
RUINS("Ruins", false, contains("ruins-")),
RESTRUCTURED("Restructured", false, contains("restructured-")),
RTG("Realistic Terrain Generation", false, contains("rtg-")),
RWG("Realistic World Gen", false, contains("rwg-")),
TARDIS("TARDIS Mod", false, contains("tardismod-")),
THAUMCRAFT("Thaumcraft", false, contains("thaumcraft")),
THUTCORE("ThutCore", false, contains("thutcore-").or(contains("thutmods-"))),
TMOR("The Mists Of RioV", false, contains("the mists of riov-").or(contains("the-mists-of-riov-"))),
TROPICRAFT("Tropicraft", false, contains("tropicraft-")),
TWILIGHTFOREST("Twilight Forest", false, contains("twilightforest")),
UBC("Underground Biomes Constructs", false, contains("undergroundbiomesconstructs-").or(contains("undergroundbiomes-"))),
WITCHERY("Witchery", false, contains("witchery-")),
WORLDEDIT("WorldEdit", false, contains("worldedit-")),
;
@Getter
private final String modName;
@Getter
private final boolean loadInDevelopment;
@Getter
private final Predicate<String> condition;
@Override
public String toString() {
return modName;
}
}
@@ -2,7 +2,6 @@
"required": true,
"minVersion": "0.8.5",
"package": "com.falsepattern.endlessids.mixin.mixins",
"plugin": "com.falsepattern.endlessids.mixin.plugin.MixinPlugin",
"refmap": "mixins.endlessids.refmap.json",
"target": "@env(DEFAULT)",
"compatibilityLevel": "JAVA_8"
@@ -0,0 +1,9 @@
{
"required": true,
"minVersion": "0.8.5",
"package": "com.falsepattern.endlessids.mixin.mixins",
"refmap": "mixins.endlessids.refmap.json",
"target": "@env(DEFAULT)",
"compatibilityLevel": "JAVA_8"
}