From dc2583f255a4a464a3f5a3c31a08648ef161e031 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Tue, 15 Jul 2025 10:12:08 +0200 Subject: [PATCH 1/8] update bs --- gradle.properties | 2 +- settings.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 369f8d4..cc52de1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -151,7 +151,7 @@ modrinthProjectId = xTJanN3v # type can be one of [project, version], # and the name is the Modrinth project or version slug/id of the other mod. # Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech -# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true +# Note: UniMixins is automatically set as a required dependency if usesMixins = true. modrinthRelations = # Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens. diff --git a/settings.gradle b/settings.gradle index 017908f..7bc6413 100644 --- a/settings.gradle +++ b/settings.gradle @@ -33,7 +33,7 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.38' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.41' } From f2b3fb23031cea71fcc37ca3dbcdf86aeb1e19fd Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Tue, 15 Jul 2025 10:12:33 +0200 Subject: [PATCH 2/8] update deps --- dependencies.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 50ec935..2aefa8f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -10,7 +10,7 @@ dependencies { transitive = false } compileOnly "curse.maven:chunkpregen-267193:3756388" - compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.6.1-GTNH:dev') + compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.7.64-GTNH:dev') compileOnly("com.gregoriust.gregtech:gregtech_1.7.10:6.15.01:dev") { transitive = false } @@ -19,7 +19,7 @@ dependencies { compileOnly("curse.maven:thermalexpansion-69163:2388759") compileOnly("curse.maven:matteroverdrive-229694:2331162") compileOnly("curse.maven:projecte-226410:2340786") - compileOnly('com.github.GTNewHorizons:Botania:1.11.3-GTNH:dev') { + compileOnly('com.github.GTNewHorizons:Botania:1.12.16-GTNH:dev') { transitive = false } compileOnly("org.projectlombok:lombok:1.18.22") { @@ -46,6 +46,6 @@ dependencies { compileOnly(deobfMaven(curseMaven, "curse.maven:applied-energistics-2-223794:2296430")) // Provides deobf support like in FG2 - runtimeOnlyNonPublishable('com.github.GTNewHorizons:CodeChickenLib:1.2.1:dev') - runtimeOnlyNonPublishable('com.github.GTNewHorizons:CodeChickenCore:1.2.1:dev') + runtimeOnlyNonPublishable('com.github.GTNewHorizons:CodeChickenLib:1.3.0:dev') + runtimeOnlyNonPublishable('com.github.GTNewHorizons:CodeChickenCore:1.4.3:dev') } From 56540d234bf7da0ba9ea56a064128a3d8d880b7b Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:22:37 +0200 Subject: [PATCH 3/8] Convert to new IMixins and MixinsBuilder system --- .../org/embeddedt/archaicfix/ArchaicCore.java | 49 +-- .../archaicfix/asm/LateMixinPlugin.java | 29 +- .../org/embeddedt/archaicfix/asm/Mixin.java | 362 ++++++++++-------- .../embeddedt/archaicfix/asm/TargetedMod.java | 72 ++-- 4 files changed, 251 insertions(+), 261 deletions(-) diff --git a/src/main/java/org/embeddedt/archaicfix/ArchaicCore.java b/src/main/java/org/embeddedt/archaicfix/ArchaicCore.java index 75621a7..6a68f97 100644 --- a/src/main/java/org/embeddedt/archaicfix/ArchaicCore.java +++ b/src/main/java/org/embeddedt/archaicfix/ArchaicCore.java @@ -1,38 +1,41 @@ package org.embeddedt.archaicfix; -import com.google.common.collect.ImmutableMap; import com.gtnewhorizon.gtnhmixins.IEarlyMixinLoader; +import com.gtnewhorizon.gtnhmixins.builders.IMixins; import cpw.mods.fml.relauncher.IFMLLoadingPlugin; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.embeddedt.archaicfix.asm.Mixin; -import org.embeddedt.archaicfix.asm.TargetedMod; import org.embeddedt.archaicfix.asm.transformer.VampirismTransformer; import org.embeddedt.archaicfix.config.ArchaicConfig; import org.embeddedt.archaicfix.config.ConfigException; import org.embeddedt.archaicfix.config.ConfigurationManager; import org.embeddedt.archaicfix.helpers.LetsEncryptHelper; -import java.util.*; -import java.util.stream.Collectors; +import java.util.List; +import java.util.Map; +import java.util.Set; @IFMLLoadingPlugin.Name("ArchaicCore") @IFMLLoadingPlugin.MCVersion("1.7.10") public class ArchaicCore implements IFMLLoadingPlugin, IEarlyMixinLoader { + public static final Logger LOGGER = LogManager.getLogger("ArchaicCore"); + static { VampirismTransformer.init(); try { ConfigurationManager.registerConfig(ArchaicConfig.class); - } catch(ConfigException e) { + } catch (ConfigException e) { throw new RuntimeException(e); } LetsEncryptHelper.replaceSSLContext(); } + @Override public String[] getASMTransformerClass() { - return new String[] { - "org.embeddedt.archaicfix.asm.ArchaicTransformer" + return new String[]{ + "org.embeddedt.archaicfix.asm.ArchaicTransformer" }; } @@ -61,38 +64,8 @@ public String getMixinConfig() { return "mixins.archaicfix.early.json"; } - public static Set coreMods = new HashSet<>(); - - private static final ImmutableMap MODS_BY_CLASS = ImmutableMap.builder() - .put("optifine.OptiFineForgeTweaker", TargetedMod.OPTIFINE) - .put("fastcraft.Tweaker", TargetedMod.FASTCRAFT) - .put("cofh.asm.LoadingPlugin", TargetedMod.COFHCORE) - .put("com.mitchej123.hodgepodge.core.HodgepodgeCore", TargetedMod.HODGEPODGE) - .build(); - - private static void detectCoreMods(Set loadedCoreMods) { - MODS_BY_CLASS.forEach((key, value) -> { - if (loadedCoreMods.contains(key)) - coreMods.add(value); - }); - } - @Override public List getMixins(Set loadedCoreMods) { - List mixins = new ArrayList<>(); - detectCoreMods(loadedCoreMods); - LOGGER.info("Detected coremods: [{}]", coreMods.stream().map(TargetedMod::name).collect(Collectors.joining(", "))); - final List notLoading = new ArrayList<>(); - - for (Mixin mixin : Mixin.values()) { - if (mixin.getPhase() == Mixin.Phase.EARLY && mixin.shouldLoadSide() && mixin.getFilter().test(coreMods)) { - mixins.add(mixin.getMixin()); - } else { - notLoading.add(mixin.getMixin()); - } - } - - LOGGER.info("Not loading the following early mixins: [{}]", String.join(", ", notLoading)); - return mixins; + return IMixins.getEarlyMixins(Mixin.class, loadedCoreMods); } } diff --git a/src/main/java/org/embeddedt/archaicfix/asm/LateMixinPlugin.java b/src/main/java/org/embeddedt/archaicfix/asm/LateMixinPlugin.java index bf3790a..81cf951 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/LateMixinPlugin.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/LateMixinPlugin.java @@ -2,16 +2,14 @@ import com.gtnewhorizon.gtnhmixins.ILateMixinLoader; import com.gtnewhorizon.gtnhmixins.LateMixin; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.embeddedt.archaicfix.ArchaicCore; +import com.gtnewhorizon.gtnhmixins.builders.IMixins; -import java.util.*; -import java.util.stream.Collectors; +import java.util.List; +import java.util.Set; @LateMixin public class LateMixinPlugin implements ILateMixinLoader { - private static final Logger LOGGER = LogManager.getLogger(); + @Override public String getMixinConfig() { return "mixins.archaicfix.late.json"; @@ -19,23 +17,6 @@ public String getMixinConfig() { @Override public List getMixins(Set loadedMods) { - List mixins = new ArrayList<>(); - Set validMods = new HashSet<>(ArchaicCore.coreMods); - HashMap modById = new HashMap<>(); - for(TargetedMod t : TargetedMod.values()) { - if(t.getModId() != null) - modById.put(t.getModId(), t); - } - for(String modId : loadedMods) { - TargetedMod t = modById.get(modId); - if(t != null) - validMods.add(t); - } - LOGGER.info("Detected mods: [" + validMods.stream().map(TargetedMod::name).collect(Collectors.joining(", ")) + "]"); - for(Mixin mixin : Mixin.values()) { - if(mixin.getPhase() == Mixin.Phase.LATE && mixin.shouldLoadSide() && mixin.getFilter().test(validMods)) - mixins.add(mixin.getMixin()); - } - return mixins; + return IMixins.getLateMixins(Mixin.class, loadedMods); } } diff --git a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java index 8468d45..c3b6216 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java @@ -1,188 +1,218 @@ package org.embeddedt.archaicfix.asm; -import cpw.mods.fml.relauncher.FMLLaunchHandler; +import com.gtnewhorizon.gtnhmixins.builders.IMixins; +import com.gtnewhorizon.gtnhmixins.builders.MixinBuilder; import lombok.Getter; -import lombok.RequiredArgsConstructor; import org.embeddedt.archaicfix.config.ArchaicConfig; import org.embeddedt.archaicfix.helpers.DragonAPIHelper; -import java.util.Collection; import java.util.Locale; -import java.util.function.Predicate; - -@RequiredArgsConstructor -public enum Mixin { - // COMMON MIXINS - common_chickenchunks_MixinPlayerChunkViewerManager(Side.COMMON, Phase.EARLY, require(TargetedMod.CHICKENCHUNKS), "chickenchunks.MixinPlayerChunkViewerManager"), - common_core_AccessorEntityLiving(Side.COMMON, Phase.EARLY, always(), "core.AccessorEntityLiving"), - common_core_MixinEntityPlayerMP(Side.COMMON, Phase.EARLY, always(), "core.MixinEntityPlayerMP"), - common_core_MixinWorldServer(Side.COMMON, Phase.EARLY, always(), "core.MixinWorldServer"), - common_core_MixinMapGenStructure(Side.COMMON, Phase.EARLY, always(), "core.MixinMapGenStructure"), - common_core_MixinEntityVillager(Side.COMMON, Phase.EARLY, always(), "core.MixinEntityVillager"), - common_core_MixinMerchantRecipe(Side.COMMON, Phase.EARLY, always(), "core.MixinMerchantRecipe"), - common_core_MixinAxisAlignedBB(Side.COMMON, Phase.EARLY, always(), "core.MixinAxisAlignedBB"), - common_core_MixinMaterialLiquid(Side.COMMON, Phase.EARLY, always(), "core.MixinMaterialLiquid"), - common_core_MixinChunkProviderServer(Side.COMMON, Phase.EARLY, always(), "core.MixinChunkProviderServer"), - common_core_MixinChunkIOProvider(Side.COMMON, Phase.EARLY, always(), "core.MixinChunkIOProvider"), - common_core_MixinCraftingManager(Side.COMMON, Phase.EARLY, always(), "core.MixinCraftingManager"), - common_core_MixinSpawnerAnimals(Side.COMMON, Phase.EARLY, always(), "core.MixinSpawnerAnimals"), - common_core_MixinShapedOreRecipe(Side.COMMON, Phase.EARLY, always(), "core.MixinShapedOreRecipe"), - common_core_MixinLongHashMap(Side.COMMON, Phase.EARLY, always(), "core.MixinLongHashMap"), - common_core_MixinBlock(Side.COMMON, Phase.EARLY, always(), "core.MixinBlock"), - common_core_MixinBlock_Late(Side.COMMON, Phase.EARLY, always(), "core.MixinBlock_Late"), - common_core_MixinEnchantmentHelper(Side.COMMON, Phase.EARLY, always(), "core.MixinEnchantmentHelper"), - common_core_MixinWorldChunkManager(Side.COMMON, Phase.EARLY, always(), "core.MixinWorldChunkManager"), - common_core_MixinShapedRecipes(Side.COMMON, Phase.EARLY, always(), "core.MixinShapedRecipes"), - common_core_MixinShapelessOreRecipe(Side.COMMON, Phase.EARLY, always(), "core.MixinShapelessOreRecipe"), - common_core_MixinShapelessRecipes(Side.COMMON, Phase.EARLY, always(), "core.MixinShapelessRecipes"), - common_core_MixinEntityLiving(Side.COMMON, Phase.EARLY, always(), "core.MixinEntityLiving"), - common_core_MixinEntityLivingBase_EarlyXpDrop(Side.COMMON, Phase.EARLY, m -> ArchaicConfig.dropXpImmediatelyOnDeath, "core.MixinEntityLivingBase_EarlyXpDrop"), - common_core_MixinWorld(Side.COMMON, Phase.EARLY, always(), "core.MixinWorld"), - common_core_MixinWorld_UpdateEntities(Side.COMMON, Phase.EARLY, avoid(TargetedMod.HODGEPODGE), "core.MixinWorld_UpdateEntities"), - common_core_MixinEntityTrackerEntry(Side.COMMON, Phase.EARLY, always(), "core.MixinEntityTrackerEntry"), - common_core_MixinEntityXPOrb(Side.COMMON, Phase.EARLY, always(), "core.MixinEntityXPOrb"), - common_core_MixinEntityItem(Side.COMMON, Phase.EARLY, avoid(TargetedMod.SHIPSMOD).and(m -> ArchaicConfig.itemLagReduction), "core.MixinEntityItem"), - common_core_MixinEntity(Side.COMMON, Phase.EARLY, always(), "core.MixinEntity"), - common_core_MixinForgeChunkManager(Side.COMMON, Phase.EARLY, always(), "core.MixinForgeChunkManager"), - common_core_MixinChunk(Side.COMMON, Phase.EARLY, always(), "core.MixinChunk"), - common_core_MixinStructureStart(Side.COMMON, Phase.EARLY, always(), "core.MixinStructureStart"), - common_core_MixinOreDictionary(Side.COMMON, Phase.EARLY, always(), "core.MixinOreDictionary"), - common_core_MixinChunkProviderHell(Side.COMMON, Phase.EARLY, always(), "core.MixinChunkProviderHell"), - common_core_MixinASMData(Side.COMMON, Phase.EARLY, always(), "core.MixinASMData"), - common_core_MixinModCandidate(Side.COMMON, Phase.EARLY, avoid(TargetedMod.COFHCORE), "core.MixinModCandidate"), - common_core_MixinNetworkDispatcher(Side.COMMON, Phase.EARLY, m -> ArchaicConfig.fixLoginRaceCondition, "core.MixinNetworkDispatcher"), - common_core_MixinNetworkManager(Side.COMMON, Phase.EARLY, m -> ArchaicConfig.fixLoginRaceCondition, "core.MixinNetworkManager"), - common_core_MixinEmbeddedChannel(Side.COMMON, Phase.EARLY, m -> ArchaicConfig.fixLoginRaceCondition, "core.MixinEmbeddedChannel"), - common_core_MixinNetHandlerPlayServer(Side.COMMON, Phase.EARLY, always(), "core.MixinNetHandlerPlayServer"), - common_core_MixinSwampHut(Side.COMMON, Phase.EARLY, m -> ArchaicConfig.fixEntityStructurePersistence, "core.MixinSwampHut"), - common_gt6_MixinAdvancedCraftingXToY(Side.COMMON, Phase.LATE, require(TargetedMod.GREGTECH6), "gt6.MixinAdvancedCraftingXToY"), - common_gt6_MixinGT6_Main(Side.COMMON, Phase.LATE, require(TargetedMod.GREGTECH6), "gt6.MixinGT6_Main"), - common_gt6_MixinCR(Side.COMMON, Phase.LATE, require(TargetedMod.GREGTECH6), "gt6.MixinCR"), - common_lighting_MixinAnvilChunkLoader(Side.COMMON, Phase.EARLY, phosphor(), "lighting.MixinAnvilChunkLoader"), - common_lighting_MixinChunk(Side.COMMON, Phase.EARLY, phosphor(), "lighting.MixinChunk"), - common_lighting_MixinChunkProviderServer(Side.COMMON, Phase.EARLY, phosphor(), "lighting.MixinChunkProviderServer"), - common_lighting_MixinChunkVanilla(Side.COMMON, Phase.EARLY, phosphor(), "lighting.MixinChunkVanilla"), - common_lighting_MixinExtendedBlockStorage(Side.COMMON, Phase.EARLY, phosphor(), "lighting.MixinExtendedBlockStorage"), - common_lighting_MixinSPacketChunkData(Side.COMMON, Phase.EARLY, phosphor(), "lighting.MixinSPacketChunkData"), - common_lighting_MixinWorld(Side.COMMON, Phase.EARLY, phosphor(), "lighting.MixinWorld_Lighting"), - common_mo_MixinMatterRegistry(Side.COMMON, Phase.LATE, require(TargetedMod.MATTEROVERDRIVE), "mo.MixinMatterRegistry"), - common_mo_MixinMatterRegistrationHandler(Side.COMMON, Phase.LATE, require(TargetedMod.MATTEROVERDRIVE), "mo.MixinMatterRegistrationHandler"), - common_mo_MixinVersionCheckHandler(Side.COMMON, Phase.LATE, require(TargetedMod.MATTEROVERDRIVE), "mo.MixinVersionCheckHandler"), - common_mrtjp_MixinBlockUpdateHandler(Side.COMMON, Phase.LATE, require(TargetedMod.MRTJPCORE), "mrtjp.MixinBlockUpdateHandler"), - common_pregen_MixinChunkProcessor(Side.COMMON, Phase.LATE, require(TargetedMod.CHUNK_PREGENERATOR), "pregen.MixinChunkProcessor"), - common_pregen_MixinChunkHelper(Side.COMMON, Phase.LATE, require(TargetedMod.CHUNK_PREGENERATOR), "pregen.MixinChunkHelper"), - common_projecte_MixinRecipeShapelessHidden(Side.COMMON, Phase.LATE, require(TargetedMod.PROJECTE), "projecte.MixinRecipeShapelessHidden"), - common_tc4tweaks_MixinGenerateItemHash(Side.COMMON, Phase.LATE, require(TargetedMod.TC4TWEAKS).and(m -> ArchaicConfig.betterThaumcraftHashing), "tc4tweaks.MixinGenerateItemHash"), - common_tc4tweaks_MixinMappingThread(Side.COMMON, Phase.LATE, require(TargetedMod.TC4TWEAKS).and(m -> ArchaicConfig.betterThaumcraftHashing), "tc4tweaks.MixinMappingThread"), - common_thermal_MixinTECraftingHandler(Side.COMMON, Phase.LATE, require(TargetedMod.THERMALEXPANSION), "thermal.MixinTECraftingHandler"), - // CLIENT MIXINS - client_core_MixinThreadDownloadImageData(Side.CLIENT, Phase.EARLY, always(), "core.MixinThreadDownloadImageData"), - client_core_MixinBlockFence(Side.CLIENT, Phase.EARLY, always(), "core.MixinBlockFence"), - client_core_MixinEntityRenderer(Side.CLIENT, Phase.EARLY, always(), "core.MixinEntityRenderer"), - client_core_MixinGuiBeaconButton(Side.CLIENT, Phase.EARLY, always(), "core.MixinGuiBeaconButton"), - client_core_MixinGuiButton(Side.CLIENT, Phase.EARLY, always(), "core.MixinGuiButton"), - client_core_MixinGuiContainerCreative(Side.CLIENT, Phase.EARLY, always(), "core.MixinGuiContainerCreative"), - client_core_MixinIntegratedServer(Side.CLIENT, Phase.EARLY, always(), "core.MixinIntegratedServer"), - client_core_MixinSkinManager(Side.CLIENT, Phase.EARLY, m -> ArchaicConfig.fixSkinMemoryLeak, "core.MixinSkinManager"), - client_core_MixinChunkProviderClient(Side.CLIENT, Phase.EARLY, always(), "core.MixinChunkProviderClient"), - client_core_MixinWorldRenderer(Side.CLIENT, Phase.EARLY, m -> !Boolean.valueOf(System.getProperty("archaicFix.disableMC129", "false")), "core.MixinWorldRenderer"), - client_core_MixinMinecraft(Side.CLIENT, Phase.EARLY, always(), "core.MixinMinecraft"), - client_core_MixinNetHandlerPlayClient(Side.CLIENT, Phase.EARLY, always(), "core.MixinNetHandlerPlayClient"), - client_core_MixinGuiCreateWorld(Side.CLIENT, Phase.EARLY, always(), "core.MixinGuiCreateWorld"), - client_core_MixinGuiIngameForge(Side.CLIENT, Phase.EARLY, always(), "core.MixinGuiIngameForge"), - client_core_MixinFMLClientHandler(Side.CLIENT, Phase.EARLY, always(), "core.MixinFMLClientHandler"), - client_core_MixinNetHandlerLoginClient(Side.CLIENT, Phase.EARLY, m -> ArchaicConfig.fixLoginRaceCondition, "core.MixinNetHandlerLoginClient"), - client_core_MixinSplashProgress(Side.CLIENT, Phase.EARLY, always(), "core.MixinSplashProgress"), - client_core_AccessorSplashProgress(Side.CLIENT, Phase.EARLY, always(), "core.AccessorSplashProgress"), - client_core_MixinRenderItem(Side.CLIENT, Phase.EARLY, m -> ArchaicConfig.forceFancyItems, "core.MixinRenderItem"), - client_divinerpg_MixinEntitySparkler(Side.CLIENT, Phase.LATE, require(TargetedMod.DIVINERPG), "divinerpg.MixinEntitySparkler"), - client_gt6_MixinGT_API_Proxy_Client(Side.CLIENT, Phase.LATE, require(TargetedMod.GREGTECH6), "gt6.MixinGT_API_Proxy_Client"), - client_lighting_MixinMinecraft(Side.CLIENT, Phase.EARLY, phosphor(), "lighting.MixinMinecraft"), - client_lighting_MixinWorld(Side.CLIENT, Phase.EARLY, phosphor(), "lighting.MixinWorld"), - client_lighting_MixinChunkCache(Side.CLIENT, Phase.EARLY, phosphor(), "lighting.MixinChunkCache"), - - client_optifine_MixinVersionCheckThread(Side.CLIENT, Phase.EARLY, require(TargetedMod.OPTIFINE).and(m -> ArchaicConfig.disableOFVersionCheck), "optifine.MixinVersionCheckThread"), - - client_renderdistance_MixinGameSettings(Side.CLIENT, Phase.EARLY, avoid(TargetedMod.OPTIFINE).and(avoid(TargetedMod.FASTCRAFT)).and(m -> ArchaicConfig.raiseMaxRenderDistance), "renderdistance.MixinGameSettings"), - client_renderdistance_MixinRenderGlobal(Side.CLIENT, Phase.EARLY, avoid(TargetedMod.OPTIFINE).and(avoid(TargetedMod.FASTCRAFT)).and(m -> ArchaicConfig.raiseMaxRenderDistance), "renderdistance.MixinRenderGlobal"), - common_renderdistance_MixinPlayerManager(Side.COMMON, Phase.EARLY, avoid(TargetedMod.OPTIFINE).and(avoid(TargetedMod.FASTCRAFT)).and(m -> ArchaicConfig.raiseMaxRenderDistance), "renderdistance.MixinPlayerManager"), +import java.util.function.Supplier; + +@Getter +public enum Mixin implements IMixins { + + MINECRAFT(new MixinBuilder() + .setPhase(Phase.EARLY) + .addCommonMixins( + "common.core.AccessorEntityLiving", + "common.core.MixinEntityPlayerMP", + "common.core.MixinWorldServer", + "common.core.MixinMapGenStructure", + "common.core.MixinEntityVillager", + "common.core.MixinMerchantRecipe", + "common.core.MixinAxisAlignedBB", + "common.core.MixinMaterialLiquid", + "common.core.MixinChunkProviderServer", + "common.core.MixinChunkIOProvider", + "common.core.MixinCraftingManager", + "common.core.MixinSpawnerAnimals", + "common.core.MixinShapedOreRecipe", + "common.core.MixinLongHashMap", + "common.core.MixinBlock", + "common.core.MixinBlock_Late", + "common.core.MixinEnchantmentHelper", + "common.core.MixinWorldChunkManager", + "common.core.MixinShapedRecipes", + "common.core.MixinShapelessOreRecipe", + "common.core.MixinShapelessRecipes", + "common.core.MixinEntityLiving", + "common.core.MixinWorld", + "common.core.MixinEntityTrackerEntry", + "common.core.MixinEntityXPOrb", + "common.core.MixinEntity", + "common.core.MixinForgeChunkManager", + "common.core.MixinChunk", + "common.core.MixinStructureStart", + "common.core.MixinOreDictionary", + "common.core.MixinChunkProviderHell", + "common.core.MixinASMData", + "common.core.MixinNetHandlerPlayServer") + .addClientMixins( + "client.core.MixinThreadDownloadImageData", + "client.core.MixinBlockFence", + "client.core.MixinEntityRenderer", + "client.core.MixinGuiBeaconButton", + "client.core.MixinGuiButton", + "client.core.MixinGuiContainerCreative", + "client.core.MixinIntegratedServer", + "client.core.MixinChunkProviderClient", + "client.core.MixinMinecraft", + "client.core.MixinNetHandlerPlayClient", + "client.core.MixinGuiCreateWorld", + "client.core.MixinGuiIngameForge", + "client.core.MixinFMLClientHandler", + "client.core.MixinSplashProgress", + "client.core.AccessorSplashProgress")), + PHOSPHOR(new MixinBuilder() + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.enablePhosphor) + .addCommonMixins( + "common.lighting.MixinAnvilChunkLoader", + "common.lighting.MixinChunk", + "common.lighting.MixinChunkProviderServer", + "common.lighting.MixinChunkVanilla", + "common.lighting.MixinExtendedBlockStorage", + "common.lighting.MixinSPacketChunkData", + "common.lighting.MixinWorld_Lighting") + .addClientMixins( + "client.lighting.MixinMinecraft", + "client.lighting.MixinWorld", + "client.lighting.MixinChunkCache")), + PHOSPHOR_FASTCRAFT(new MixinBuilder() + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.enablePhosphor) + .addRequiredMod(TargetedMod.FASTCRAFT) + .addCommonMixins( + "common.lighting.fastcraft.MixinChunk", + "common.lighting.fastcraft.MixinChunkProviderServer", + "common.lighting.fastcraft.MixinWorld")), + + GREGTECH6(new MixinBuilder() + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.GREGTECH6) + .addCommonMixins( + "common.gt6.MixinAdvancedCraftingXToY", + "common.gt6.MixinGT6_Main", + "common.gt6.MixinCR") + .addClientMixins("client.gt6.MixinGT_API_Proxy_Client")), + + RACE_CONDITION_LOGGING(new MixinBuilder() + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.fixLoginRaceCondition) + .addCommonMixins( + "common.core.MixinNetworkDispatcher", + "common.core.MixinNetworkManager", + "common.core.MixinEmbeddedChannel") + .addClientMixins("client.core.MixinNetHandlerLoginClient")), + + MATTER_OVERDRIVE(new MixinBuilder() + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.MATTER_OVERDRIVE) + .addCommonMixins( + "common.mo.MixinMatterRegistry", + "common.mo.MixinMatterRegistrationHandler", + "common.mo.MixinVersionCheckHandler")), + + CHUNK_PREGENERATOR(new MixinBuilder() + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.CHUNK_PREGENERATOR) + .addCommonMixins( + "common.pregen.MixinChunkProcessor", + "common.pregen.MixinChunkHelper")), + + THAUMCRAFT_HASHING(new MixinBuilder() + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.TC4TWEAKS) + .setApplyIf(() -> ArchaicConfig.betterThaumcraftHashing) + .addCommonMixins( + "common.tc4tweaks.MixinGenerateItemHash", + "common.tc4tweaks.MixinMappingThread")), + + MAX_RENDER_DISTANCE(new MixinBuilder() + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.raiseMaxRenderDistance) + .addExcludedMod(TargetedMod.OPTIFINE) + .addExcludedMod(TargetedMod.FASTCRAFT) + .addCommonMixins("common.renderdistance.MixinPlayerManager") + .addClientMixins( + "client.renderdistance.MixinGameSettings", + "client.renderdistance.MixinRenderGlobal")), + + EXTRA_UTILS(new MixinBuilder() + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.EXTRAUTILS) + .addCommonMixins( + "common.extrautils.MixinEventHandlerSiege", + "common.extrautils.MixinEventHandlerServer", + "common.extrautils.MixinItemDivisionSigil", + "common.extrautils.MixinTileEntityTrashCan")), + + WORLD_UPDATE_ENTITIES(new MixinBuilder() + .setPhase(Phase.EARLY) + .addExcludedMod(TargetedMod.HODGEPODGE) + .addCommonMixins("common.core.MixinWorld_UpdateEntities")), + + ITEM_LAG_REDUCTION(new MixinBuilder() + .setPhase(Phase.EARLY) + .addExcludedMod(TargetedMod.SHIPSMOD) + .setApplyIf(() -> ArchaicConfig.itemLagReduction) + .addCommonMixins("common.core.MixinEntityItem")), + + MIXINMODCANDIDATE(new MixinBuilder() + .setPhase(Phase.EARLY) + .addExcludedMod(TargetedMod.COFHCORE) + .addCommonMixins("common.core.MixinModCandidate")), + + common_chickenchunks_MixinPlayerChunkViewerManager(Side.COMMON, Phase.EARLY, TargetedMod.CHICKENCHUNKS, "chickenchunks.MixinPlayerChunkViewerManager"), + common_core_MixinEntityLivingBase_EarlyXpDrop(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.dropXpImmediatelyOnDeath, "core.MixinEntityLivingBase_EarlyXpDrop"), + common_core_MixinSwampHut(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.fixEntityStructurePersistence, "core.MixinSwampHut"), + common_mrtjp_MixinBlockUpdateHandler(Side.COMMON, Phase.LATE, TargetedMod.MRTJPCORE, "mrtjp.MixinBlockUpdateHandler"), + common_projecte_MixinRecipeShapelessHidden(Side.COMMON, Phase.LATE, TargetedMod.PROJECTE, "projecte.MixinRecipeShapelessHidden"), + common_thermal_MixinTECraftingHandler(Side.COMMON, Phase.LATE, TargetedMod.THERMALEXPANSION, "thermal.MixinTECraftingHandler"), + + // CLIENT MIXINS, + client_core_MixinSkinManager(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.fixSkinMemoryLeak, "core.MixinSkinManager"), + client_core_MixinWorldRenderer(Side.CLIENT, Phase.EARLY, () -> !Boolean.parseBoolean(System.getProperty("archaicFix.disableMC129", "false")), "core.MixinWorldRenderer"), + client_core_MixinRenderItem(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.forceFancyItems, "core.MixinRenderItem"), + client_divinerpg_MixinEntitySparkler(Side.CLIENT, Phase.LATE, TargetedMod.DIVINERPG, "divinerpg.MixinEntitySparkler"), + client_optifine_MixinVersionCheckThread(Side.CLIENT, Phase.EARLY, TargetedMod.OPTIFINE, () -> ArchaicConfig.disableOFVersionCheck, "optifine.MixinVersionCheckThread"), // MOD-FILTERED MIXINS - common_lighting_fastcraft_MixinChunk(Side.COMMON, Phase.EARLY, require(TargetedMod.FASTCRAFT).and(phosphor()), "lighting.fastcraft.MixinChunk"), - common_lighting_fastcraft_MixinChunkProviderServer(Side.COMMON, Phase.EARLY, require(TargetedMod.FASTCRAFT).and(phosphor()), "lighting.fastcraft.MixinChunkProviderServer"), - common_lighting_fastcraft_MixinWorld(Side.COMMON, Phase.EARLY, require(TargetedMod.FASTCRAFT).and(phosphor()), "lighting.fastcraft.MixinWorld"), - - common_mekanism_MixinGenHandler(Side.COMMON, Phase.LATE, require(TargetedMod.MEKANISM), "mekanism.MixinGenHandler"), - - common_thermal_MixinBlockOre(Side.COMMON, Phase.LATE, require(TargetedMod.THERMALFOUNDATION), "thermal.MixinBlockOre"), - - common_botania_MixinBlockSpecialFlower(Side.COMMON, Phase.LATE, require(TargetedMod.BOTANIA), "botania.MixinBlockSpecialFlower"), - - common_extrautils_MixinEventHandlerSiege(Side.COMMON, Phase.LATE, require(TargetedMod.EXTRAUTILS), "extrautils.MixinEventHandlerSiege"), - common_extrautils_MixinEventHandlerServer(Side.COMMON, Phase.LATE, require(TargetedMod.EXTRAUTILS), "extrautils.MixinEventHandlerServer"), - common_extrautils_MixinItemDivisionSigil(Side.COMMON, Phase.LATE, require(TargetedMod.EXTRAUTILS), "extrautils.MixinItemDivisionSigil"), - common_extrautils_MixinTileEntityTrashCan(Side.COMMON, Phase.LATE, require(TargetedMod.EXTRAUTILS), "extrautils.MixinTileEntityTrashCan"), - - client_journeymap_MixinTileDrawStep(Side.CLIENT, Phase.LATE, require(TargetedMod.JOURNEYMAP).and(m -> ArchaicConfig.removeJourneymapDebug), "journeymap.MixinTileDrawStep"), - - client_aoa_MixinProjectileEntities(Side.CLIENT, Phase.LATE, require(TargetedMod.AOA), "aoa.MixinProjectileEntities"), - - common_am2_MixinPlayerTracker(Side.COMMON, Phase.LATE, require(TargetedMod.AM2), "am2.MixinPlayerTracker"), - - common_foodplus_MixinUpdater(Side.COMMON, Phase.LATE, require(TargetedMod.FOODPLUS).and(m -> ArchaicConfig.disableFoodPlusUpdates), "foodplus.MixinUpdater"), - - common_waystones_MixinItemWarpStone(Side.COMMON, Phase.LATE, require(TargetedMod.WAYSTONES), "waystones.MixinItemWarpStone"), - - client_ae2_MixinNEIItemRender(Side.CLIENT, Phase.LATE, require(TargetedMod.AE2).and(m -> ArchaicConfig.disableAE2NEIItemRendering), "ae2.MixinNEIItemRender"), - + common_mekanism_MixinGenHandler(Side.COMMON, Phase.LATE, TargetedMod.MEKANISM, "mekanism.MixinGenHandler"), + common_thermal_MixinBlockOre(Side.COMMON, Phase.LATE, TargetedMod.THERMALFOUNDATION, "thermal.MixinBlockOre"), + common_botania_MixinBlockSpecialFlower(Side.COMMON, Phase.LATE, TargetedMod.BOTANIA, "botania.MixinBlockSpecialFlower"), + client_journeymap_MixinTileDrawStep(Side.CLIENT, Phase.LATE, TargetedMod.JOURNEYMAP, () -> ArchaicConfig.removeJourneymapDebug, "journeymap.MixinTileDrawStep"), + client_aoa_MixinProjectileEntities(Side.CLIENT, Phase.LATE, TargetedMod.ADVENT_OF_ASCENSION, "aoa.MixinProjectileEntities"), + common_am2_MixinPlayerTracker(Side.COMMON, Phase.LATE, TargetedMod.ARS_MAGICA_2, "am2.MixinPlayerTracker"), + common_foodplus_MixinUpdater(Side.COMMON, Phase.LATE, TargetedMod.FOODPLUS, () -> ArchaicConfig.disableFoodPlusUpdates, "foodplus.MixinUpdater"), + common_waystones_MixinItemWarpStone(Side.COMMON, Phase.LATE, TargetedMod.WAYSTONES, "waystones.MixinItemWarpStone"), + client_ae2_MixinNEIItemRender(Side.CLIENT, Phase.LATE, TargetedMod.AE2, () -> ArchaicConfig.disableAE2NEIItemRendering, "ae2.MixinNEIItemRender"), /** This mixin will ostensibly be unnecessary after DragonAPI V31b */ - common_dragonapi_MixinReikaWorldHelper(Side.COMMON, Phase.LATE, m -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.valueOf(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")), "dragonapi.MixinReikaWorldHelper"), - - common_diversity_MixinServerHandler(Side.COMMON, Phase.LATE, require(TargetedMod.DIVERSITY), "diversity.MixinServerHandler") - - // The modFilter argument is a predicate, so you can also use the .and(), .or(), and .negate() methods to mix and match multiple predicates. - ; + common_dragonapi_MixinReikaWorldHelper(Side.COMMON, Phase.LATE, () -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.parseBoolean(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")), "dragonapi.MixinReikaWorldHelper"), + common_diversity_MixinServerHandler(Side.COMMON, Phase.LATE, TargetedMod.DIVERSITY, "diversity.MixinServerHandler"); - @Getter - public final Side side; - @Getter - public final Phase phase; - @Getter - public final Predicate> filter; - private final String mixin; - - static Predicate> phosphor() { - return m -> ArchaicConfig.enablePhosphor; - } - - static Predicate> require(TargetedMod in) { - return modList -> modList.contains(in); - } - - static Predicate> avoid(TargetedMod in) { - return modList -> !modList.contains(in); - } + private final MixinBuilder builder; - static Predicate> always() { - return m -> true; + Mixin(MixinBuilder builder) { + this.builder = builder; } - enum Side { - COMMON, - CLIENT + Mixin(Side side, Phase phase, TargetedMod requiredMod, String mixin) { + this(side, phase, requiredMod, null, mixin); } - public enum Phase { - EARLY, - LATE + Mixin(Side side, Phase phase, Supplier applyIf, String mixins) { + this(side, phase, null, applyIf, mixins); } - public boolean shouldLoadSide() { - return (side == Side.COMMON - || (side == Side.CLIENT && FMLLaunchHandler.side().isClient())); + Mixin(Side side, Phase phase, TargetedMod requiredMod, Supplier applyIf, String mixin) { + this.builder = new MixinBuilder().setPhase(phase).addSidedMixins(side, getMixinClass(side, mixin)); + if (requiredMod != null) this.builder.addRequiredMod(requiredMod); + if (applyIf != null) this.builder.setApplyIf(applyIf); } - public String getMixin() { - return side.name().toLowerCase(Locale.ROOT) + "." + mixin; + private static String getMixinClass(Side side, String s) { + return side.name().toLowerCase(Locale.ROOT) + "." + s; } } diff --git a/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java b/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java index 6110203..af8127d 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java @@ -1,40 +1,46 @@ package org.embeddedt.archaicfix.asm; +import com.gtnewhorizon.gtnhmixins.builders.ITargetMod; +import com.gtnewhorizon.gtnhmixins.builders.TargetModBuilder; import lombok.Getter; -import lombok.RequiredArgsConstructor; -@RequiredArgsConstructor -public enum TargetedMod { - CHICKENCHUNKS("ChickenChunks", "ChickenChunks"), - MRTJPCORE("MrTJPCore", "MrTJPCoreMod"), - CHUNK_PREGENERATOR("ChunkPregenerator", "chunkpregenerator"), - THERMALEXPANSION("ThermalExpansion", "ThermalExpansion"), - THERMALFOUNDATION("ThermalFoundation", "ThermalFoundation"), - GREGTECH6("GregTech", "gregapi"), - MATTEROVERDRIVE("MatterOverdrive", "mo"), - PROJECTE("ProjectE", "ProjectE"), - TC4TWEAKS("TC4Tweaks", "tc4tweak"), - FASTCRAFT("FastCraft", null), - OPTIFINE("OptiFine", null), - MEKANISM("Mekanism", "Mekanism"), - BOTANIA("Botania", "Botania"), - COFHCORE("CoFHCore", "CoFHCore"), - EXTRAUTILS("ExtraUtilities", "ExtraUtilities"), - DIVINERPG("DivineRPG", "divinerpg"), - SHIPSMOD("ShipsMod", "cuchaz.ships"), - JOURNEYMAP("JourneyMap", "journeymap"), - AM2("ArsMagica2", "arsmagica2"), - FOODPLUS("FoodPlus", "FoodPlus"), - DIVERSITY("Diversity", "diversity"), - WAYSTONES("Waystones", "waystones"), - AE2("AppliedEnergistics2", "appliedenergistics2"), - AOA("AdventOfAscension", "nevermine"), - HODGEPODGE("Hodgepodge", "hodgepodge") - ; +@Getter +public enum TargetedMod implements ITargetMod { - @Getter - private final String modName; - @Getter - private final String modId; + ADVENT_OF_ASCENSION("nevermine"), + AE2("appliedenergistics2"), + ARS_MAGICA_2("arsmagica2"), + BOTANIA("Botania"), + CHICKENCHUNKS("ChickenChunks"), + CHUNK_PREGENERATOR("chunkpregenerator"), + COFHCORE("cofh.asm.LoadingPlugin", "CoFHCore"), + DIVERSITY("diversity"), + DIVINERPG("divinerpg"), + EXTRAUTILS("ExtraUtilities"), + FASTCRAFT("fastcraft.Tweaker", null), + FOODPLUS("FoodPlus"), + GREGTECH6("gregapi"), + HODGEPODGE("com.mitchej123.hodgepodge.core.HodgepodgeCore", "hodgepodge"), + JOURNEYMAP("journeymap"), + MATTER_OVERDRIVE("mo"), + MEKANISM("Mekanism"), + MRTJPCORE("MrTJPCoreMod"), + OPTIFINE("optifine.OptiFineForgeTweaker", null), + PROJECTE("ProjectE"), + SHIPSMOD("cuchaz.ships"), + TC4TWEAKS("tc4tweak"), + THERMALEXPANSION("ThermalExpansion"), + THERMALFOUNDATION("ThermalFoundation"), + WAYSTONES("waystones"); + + private final TargetModBuilder builder; + + TargetedMod(String modId) { + this(null, modId); + } + + TargetedMod(String coremodClass, String modId) { + this.builder = new TargetModBuilder().setCoreModClass(coremodClass).setModId(modId); + } } From b346bdd6ba74e4c611408268d2c7b4be4b329e24 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:43:19 +0200 Subject: [PATCH 4/8] fix mixin targeting CHICKENCHUNKS declared as early instead of late --- src/main/java/org/embeddedt/archaicfix/asm/Mixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java index c3b6216..c177b7a 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java @@ -164,7 +164,7 @@ public enum Mixin implements IMixins { .addExcludedMod(TargetedMod.COFHCORE) .addCommonMixins("common.core.MixinModCandidate")), - common_chickenchunks_MixinPlayerChunkViewerManager(Side.COMMON, Phase.EARLY, TargetedMod.CHICKENCHUNKS, "chickenchunks.MixinPlayerChunkViewerManager"), + common_chickenchunks_MixinPlayerChunkViewerManager(Side.COMMON, Phase.LATE, TargetedMod.CHICKENCHUNKS, "chickenchunks.MixinPlayerChunkViewerManager"), common_core_MixinEntityLivingBase_EarlyXpDrop(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.dropXpImmediatelyOnDeath, "core.MixinEntityLivingBase_EarlyXpDrop"), common_core_MixinSwampHut(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.fixEntityStructurePersistence, "core.MixinSwampHut"), common_mrtjp_MixinBlockUpdateHandler(Side.COMMON, Phase.LATE, TargetedMod.MRTJPCORE, "mrtjp.MixinBlockUpdateHandler"), From da7f26c130c3fcc6820cd0ef5afcb79db1b7c0b0 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:43:35 +0200 Subject: [PATCH 5/8] fix SHIPSMOD not having enough info to target at early phase --- src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java b/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java index af8127d..2fbc16a 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/TargetedMod.java @@ -28,7 +28,7 @@ public enum TargetedMod implements ITargetMod { MRTJPCORE("MrTJPCoreMod"), OPTIFINE("optifine.OptiFineForgeTweaker", null), PROJECTE("ProjectE"), - SHIPSMOD("cuchaz.ships"), + SHIPSMOD("cuchaz.ships.core.CoreModPlugin","cuchaz.ships"), TC4TWEAKS("tc4tweak"), THERMALEXPANSION("ThermalExpansion"), THERMALFOUNDATION("ThermalFoundation"), From f61dd9e2905c2af574a970cc048f705ca1f5a062 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Wed, 16 Jul 2025 09:50:36 +0200 Subject: [PATCH 6/8] don't write client. and common. in the mixins --- .../org/embeddedt/archaicfix/asm/Mixin.java | 267 ++++++++++-------- 1 file changed, 142 insertions(+), 125 deletions(-) diff --git a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java index c177b7a..88dd8e9 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java @@ -6,191 +6,191 @@ import org.embeddedt.archaicfix.config.ArchaicConfig; import org.embeddedt.archaicfix.helpers.DragonAPIHelper; -import java.util.Locale; +import javax.annotation.Nonnull; import java.util.function.Supplier; @Getter public enum Mixin implements IMixins { - MINECRAFT(new MixinBuilder() + MINECRAFT(new ArchaicBuilder() .setPhase(Phase.EARLY) .addCommonMixins( - "common.core.AccessorEntityLiving", - "common.core.MixinEntityPlayerMP", - "common.core.MixinWorldServer", - "common.core.MixinMapGenStructure", - "common.core.MixinEntityVillager", - "common.core.MixinMerchantRecipe", - "common.core.MixinAxisAlignedBB", - "common.core.MixinMaterialLiquid", - "common.core.MixinChunkProviderServer", - "common.core.MixinChunkIOProvider", - "common.core.MixinCraftingManager", - "common.core.MixinSpawnerAnimals", - "common.core.MixinShapedOreRecipe", - "common.core.MixinLongHashMap", - "common.core.MixinBlock", - "common.core.MixinBlock_Late", - "common.core.MixinEnchantmentHelper", - "common.core.MixinWorldChunkManager", - "common.core.MixinShapedRecipes", - "common.core.MixinShapelessOreRecipe", - "common.core.MixinShapelessRecipes", - "common.core.MixinEntityLiving", - "common.core.MixinWorld", - "common.core.MixinEntityTrackerEntry", - "common.core.MixinEntityXPOrb", - "common.core.MixinEntity", - "common.core.MixinForgeChunkManager", - "common.core.MixinChunk", - "common.core.MixinStructureStart", - "common.core.MixinOreDictionary", - "common.core.MixinChunkProviderHell", - "common.core.MixinASMData", - "common.core.MixinNetHandlerPlayServer") + "core.AccessorEntityLiving", + "core.MixinEntityPlayerMP", + "core.MixinWorldServer", + "core.MixinMapGenStructure", + "core.MixinEntityVillager", + "core.MixinMerchantRecipe", + "core.MixinAxisAlignedBB", + "core.MixinMaterialLiquid", + "core.MixinChunkProviderServer", + "core.MixinChunkIOProvider", + "core.MixinCraftingManager", + "core.MixinSpawnerAnimals", + "core.MixinShapedOreRecipe", + "core.MixinLongHashMap", + "core.MixinBlock", + "core.MixinBlock_Late", + "core.MixinEnchantmentHelper", + "core.MixinWorldChunkManager", + "core.MixinShapedRecipes", + "core.MixinShapelessOreRecipe", + "core.MixinShapelessRecipes", + "core.MixinEntityLiving", + "core.MixinWorld", + "core.MixinEntityTrackerEntry", + "core.MixinEntityXPOrb", + "core.MixinEntity", + "core.MixinForgeChunkManager", + "core.MixinChunk", + "core.MixinStructureStart", + "core.MixinOreDictionary", + "core.MixinChunkProviderHell", + "core.MixinASMData", + "core.MixinNetHandlerPlayServer") .addClientMixins( - "client.core.MixinThreadDownloadImageData", - "client.core.MixinBlockFence", - "client.core.MixinEntityRenderer", - "client.core.MixinGuiBeaconButton", - "client.core.MixinGuiButton", - "client.core.MixinGuiContainerCreative", - "client.core.MixinIntegratedServer", - "client.core.MixinChunkProviderClient", - "client.core.MixinMinecraft", - "client.core.MixinNetHandlerPlayClient", - "client.core.MixinGuiCreateWorld", - "client.core.MixinGuiIngameForge", - "client.core.MixinFMLClientHandler", - "client.core.MixinSplashProgress", - "client.core.AccessorSplashProgress")), - PHOSPHOR(new MixinBuilder() + "core.MixinThreadDownloadImageData", + "core.MixinBlockFence", + "core.MixinEntityRenderer", + "core.MixinGuiBeaconButton", + "core.MixinGuiButton", + "core.MixinGuiContainerCreative", + "core.MixinIntegratedServer", + "core.MixinChunkProviderClient", + "core.MixinMinecraft", + "core.MixinNetHandlerPlayClient", + "core.MixinGuiCreateWorld", + "core.MixinGuiIngameForge", + "core.MixinFMLClientHandler", + "core.MixinSplashProgress", + "core.AccessorSplashProgress")), + PHOSPHOR(new ArchaicBuilder() .setPhase(Phase.EARLY) .setApplyIf(() -> ArchaicConfig.enablePhosphor) .addCommonMixins( - "common.lighting.MixinAnvilChunkLoader", - "common.lighting.MixinChunk", - "common.lighting.MixinChunkProviderServer", - "common.lighting.MixinChunkVanilla", - "common.lighting.MixinExtendedBlockStorage", - "common.lighting.MixinSPacketChunkData", - "common.lighting.MixinWorld_Lighting") + "lighting.MixinAnvilChunkLoader", + "lighting.MixinChunk", + "lighting.MixinChunkProviderServer", + "lighting.MixinChunkVanilla", + "lighting.MixinExtendedBlockStorage", + "lighting.MixinSPacketChunkData", + "lighting.MixinWorld_Lighting") .addClientMixins( - "client.lighting.MixinMinecraft", - "client.lighting.MixinWorld", - "client.lighting.MixinChunkCache")), - PHOSPHOR_FASTCRAFT(new MixinBuilder() + "lighting.MixinMinecraft", + "lighting.MixinWorld", + "lighting.MixinChunkCache")), + PHOSPHOR_FASTCRAFT(new ArchaicBuilder() .setPhase(Phase.EARLY) .setApplyIf(() -> ArchaicConfig.enablePhosphor) .addRequiredMod(TargetedMod.FASTCRAFT) .addCommonMixins( - "common.lighting.fastcraft.MixinChunk", - "common.lighting.fastcraft.MixinChunkProviderServer", - "common.lighting.fastcraft.MixinWorld")), + "lighting.fastcraft.MixinChunk", + "lighting.fastcraft.MixinChunkProviderServer", + "lighting.fastcraft.MixinWorld")), - GREGTECH6(new MixinBuilder() + GREGTECH6(new ArchaicBuilder() .setPhase(Phase.LATE) .addRequiredMod(TargetedMod.GREGTECH6) .addCommonMixins( - "common.gt6.MixinAdvancedCraftingXToY", - "common.gt6.MixinGT6_Main", - "common.gt6.MixinCR") - .addClientMixins("client.gt6.MixinGT_API_Proxy_Client")), + "gt6.MixinAdvancedCraftingXToY", + "gt6.MixinGT6_Main", + "gt6.MixinCR") + .addClientMixins("gt6.MixinGT_API_Proxy_Client")), - RACE_CONDITION_LOGGING(new MixinBuilder() + RACE_CONDITION_LOGGING(new ArchaicBuilder() .setPhase(Phase.EARLY) .setApplyIf(() -> ArchaicConfig.fixLoginRaceCondition) .addCommonMixins( - "common.core.MixinNetworkDispatcher", - "common.core.MixinNetworkManager", - "common.core.MixinEmbeddedChannel") - .addClientMixins("client.core.MixinNetHandlerLoginClient")), + "core.MixinNetworkDispatcher", + "core.MixinNetworkManager", + "core.MixinEmbeddedChannel") + .addClientMixins("core.MixinNetHandlerLoginClient")), - MATTER_OVERDRIVE(new MixinBuilder() + MATTER_OVERDRIVE(new ArchaicBuilder() .setPhase(Phase.LATE) .addRequiredMod(TargetedMod.MATTER_OVERDRIVE) .addCommonMixins( - "common.mo.MixinMatterRegistry", - "common.mo.MixinMatterRegistrationHandler", - "common.mo.MixinVersionCheckHandler")), + "mo.MixinMatterRegistry", + "mo.MixinMatterRegistrationHandler", + "mo.MixinVersionCheckHandler")), - CHUNK_PREGENERATOR(new MixinBuilder() + CHUNK_PREGENERATOR(new ArchaicBuilder() .setPhase(Phase.LATE) .addRequiredMod(TargetedMod.CHUNK_PREGENERATOR) .addCommonMixins( - "common.pregen.MixinChunkProcessor", - "common.pregen.MixinChunkHelper")), + "pregen.MixinChunkProcessor", + "pregen.MixinChunkHelper")), - THAUMCRAFT_HASHING(new MixinBuilder() + THAUMCRAFT_HASHING(new ArchaicBuilder() .setPhase(Phase.LATE) .addRequiredMod(TargetedMod.TC4TWEAKS) .setApplyIf(() -> ArchaicConfig.betterThaumcraftHashing) .addCommonMixins( - "common.tc4tweaks.MixinGenerateItemHash", - "common.tc4tweaks.MixinMappingThread")), + "tc4tweaks.MixinGenerateItemHash", + "tc4tweaks.MixinMappingThread")), - MAX_RENDER_DISTANCE(new MixinBuilder() + MAX_RENDER_DISTANCE(new ArchaicBuilder() .setPhase(Phase.EARLY) .setApplyIf(() -> ArchaicConfig.raiseMaxRenderDistance) .addExcludedMod(TargetedMod.OPTIFINE) .addExcludedMod(TargetedMod.FASTCRAFT) - .addCommonMixins("common.renderdistance.MixinPlayerManager") + .addCommonMixins("renderdistance.MixinPlayerManager") .addClientMixins( - "client.renderdistance.MixinGameSettings", - "client.renderdistance.MixinRenderGlobal")), + "renderdistance.MixinGameSettings", + "renderdistance.MixinRenderGlobal")), - EXTRA_UTILS(new MixinBuilder() + EXTRA_UTILS(new ArchaicBuilder() .setPhase(Phase.LATE) .addRequiredMod(TargetedMod.EXTRAUTILS) .addCommonMixins( - "common.extrautils.MixinEventHandlerSiege", - "common.extrautils.MixinEventHandlerServer", - "common.extrautils.MixinItemDivisionSigil", - "common.extrautils.MixinTileEntityTrashCan")), + "extrautils.MixinEventHandlerSiege", + "extrautils.MixinEventHandlerServer", + "extrautils.MixinItemDivisionSigil", + "extrautils.MixinTileEntityTrashCan")), - WORLD_UPDATE_ENTITIES(new MixinBuilder() + WORLD_UPDATE_ENTITIES(new ArchaicBuilder() .setPhase(Phase.EARLY) .addExcludedMod(TargetedMod.HODGEPODGE) - .addCommonMixins("common.core.MixinWorld_UpdateEntities")), + .addCommonMixins("core.MixinWorld_UpdateEntities")), - ITEM_LAG_REDUCTION(new MixinBuilder() + ITEM_LAG_REDUCTION(new ArchaicBuilder() .setPhase(Phase.EARLY) .addExcludedMod(TargetedMod.SHIPSMOD) .setApplyIf(() -> ArchaicConfig.itemLagReduction) - .addCommonMixins("common.core.MixinEntityItem")), + .addCommonMixins("core.MixinEntityItem")), - MIXINMODCANDIDATE(new MixinBuilder() + MIXINMODCANDIDATE(new ArchaicBuilder() .setPhase(Phase.EARLY) .addExcludedMod(TargetedMod.COFHCORE) - .addCommonMixins("common.core.MixinModCandidate")), + .addCommonMixins("core.MixinModCandidate")), - common_chickenchunks_MixinPlayerChunkViewerManager(Side.COMMON, Phase.LATE, TargetedMod.CHICKENCHUNKS, "chickenchunks.MixinPlayerChunkViewerManager"), - common_core_MixinEntityLivingBase_EarlyXpDrop(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.dropXpImmediatelyOnDeath, "core.MixinEntityLivingBase_EarlyXpDrop"), - common_core_MixinSwampHut(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.fixEntityStructurePersistence, "core.MixinSwampHut"), - common_mrtjp_MixinBlockUpdateHandler(Side.COMMON, Phase.LATE, TargetedMod.MRTJPCORE, "mrtjp.MixinBlockUpdateHandler"), - common_projecte_MixinRecipeShapelessHidden(Side.COMMON, Phase.LATE, TargetedMod.PROJECTE, "projecte.MixinRecipeShapelessHidden"), - common_thermal_MixinTECraftingHandler(Side.COMMON, Phase.LATE, TargetedMod.THERMALEXPANSION, "thermal.MixinTECraftingHandler"), + chickenchunks_MixinPlayerChunkViewerManager(Side.COMMON, Phase.LATE, TargetedMod.CHICKENCHUNKS, "chickenchunks.MixinPlayerChunkViewerManager"), + core_MixinEntityLivingBase_EarlyXpDrop(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.dropXpImmediatelyOnDeath, "core.MixinEntityLivingBase_EarlyXpDrop"), + core_MixinSwampHut(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.fixEntityStructurePersistence, "core.MixinSwampHut"), + mrtjp_MixinBlockUpdateHandler(Side.COMMON, Phase.LATE, TargetedMod.MRTJPCORE, "mrtjp.MixinBlockUpdateHandler"), + projecte_MixinRecipeShapelessHidden(Side.COMMON, Phase.LATE, TargetedMod.PROJECTE, "projecte.MixinRecipeShapelessHidden"), + thermal_MixinTECraftingHandler(Side.COMMON, Phase.LATE, TargetedMod.THERMALEXPANSION, "thermal.MixinTECraftingHandler"), // CLIENT MIXINS, - client_core_MixinSkinManager(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.fixSkinMemoryLeak, "core.MixinSkinManager"), - client_core_MixinWorldRenderer(Side.CLIENT, Phase.EARLY, () -> !Boolean.parseBoolean(System.getProperty("archaicFix.disableMC129", "false")), "core.MixinWorldRenderer"), - client_core_MixinRenderItem(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.forceFancyItems, "core.MixinRenderItem"), - client_divinerpg_MixinEntitySparkler(Side.CLIENT, Phase.LATE, TargetedMod.DIVINERPG, "divinerpg.MixinEntitySparkler"), - client_optifine_MixinVersionCheckThread(Side.CLIENT, Phase.EARLY, TargetedMod.OPTIFINE, () -> ArchaicConfig.disableOFVersionCheck, "optifine.MixinVersionCheckThread"), + core_MixinSkinManager(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.fixSkinMemoryLeak, "core.MixinSkinManager"), + core_MixinWorldRenderer(Side.CLIENT, Phase.EARLY, () -> !Boolean.parseBoolean(System.getProperty("archaicFix.disableMC129", "false")), "core.MixinWorldRenderer"), + core_MixinRenderItem(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.forceFancyItems, "core.MixinRenderItem"), + divinerpg_MixinEntitySparkler(Side.CLIENT, Phase.LATE, TargetedMod.DIVINERPG, "divinerpg.MixinEntitySparkler"), + optifine_MixinVersionCheckThread(Side.CLIENT, Phase.EARLY, TargetedMod.OPTIFINE, () -> ArchaicConfig.disableOFVersionCheck, "optifine.MixinVersionCheckThread"), // MOD-FILTERED MIXINS - common_mekanism_MixinGenHandler(Side.COMMON, Phase.LATE, TargetedMod.MEKANISM, "mekanism.MixinGenHandler"), - common_thermal_MixinBlockOre(Side.COMMON, Phase.LATE, TargetedMod.THERMALFOUNDATION, "thermal.MixinBlockOre"), - common_botania_MixinBlockSpecialFlower(Side.COMMON, Phase.LATE, TargetedMod.BOTANIA, "botania.MixinBlockSpecialFlower"), - client_journeymap_MixinTileDrawStep(Side.CLIENT, Phase.LATE, TargetedMod.JOURNEYMAP, () -> ArchaicConfig.removeJourneymapDebug, "journeymap.MixinTileDrawStep"), - client_aoa_MixinProjectileEntities(Side.CLIENT, Phase.LATE, TargetedMod.ADVENT_OF_ASCENSION, "aoa.MixinProjectileEntities"), - common_am2_MixinPlayerTracker(Side.COMMON, Phase.LATE, TargetedMod.ARS_MAGICA_2, "am2.MixinPlayerTracker"), - common_foodplus_MixinUpdater(Side.COMMON, Phase.LATE, TargetedMod.FOODPLUS, () -> ArchaicConfig.disableFoodPlusUpdates, "foodplus.MixinUpdater"), - common_waystones_MixinItemWarpStone(Side.COMMON, Phase.LATE, TargetedMod.WAYSTONES, "waystones.MixinItemWarpStone"), - client_ae2_MixinNEIItemRender(Side.CLIENT, Phase.LATE, TargetedMod.AE2, () -> ArchaicConfig.disableAE2NEIItemRendering, "ae2.MixinNEIItemRender"), + mekanism_MixinGenHandler(Side.COMMON, Phase.LATE, TargetedMod.MEKANISM, "mekanism.MixinGenHandler"), + thermal_MixinBlockOre(Side.COMMON, Phase.LATE, TargetedMod.THERMALFOUNDATION, "thermal.MixinBlockOre"), + botania_MixinBlockSpecialFlower(Side.COMMON, Phase.LATE, TargetedMod.BOTANIA, "botania.MixinBlockSpecialFlower"), + journeymap_MixinTileDrawStep(Side.CLIENT, Phase.LATE, TargetedMod.JOURNEYMAP, () -> ArchaicConfig.removeJourneymapDebug, "journeymap.MixinTileDrawStep"), + aoa_MixinProjectileEntities(Side.CLIENT, Phase.LATE, TargetedMod.ADVENT_OF_ASCENSION, "aoa.MixinProjectileEntities"), + am2_MixinPlayerTracker(Side.COMMON, Phase.LATE, TargetedMod.ARS_MAGICA_2, "am2.MixinPlayerTracker"), + foodplus_MixinUpdater(Side.COMMON, Phase.LATE, TargetedMod.FOODPLUS, () -> ArchaicConfig.disableFoodPlusUpdates, "foodplus.MixinUpdater"), + waystones_MixinItemWarpStone(Side.COMMON, Phase.LATE, TargetedMod.WAYSTONES, "waystones.MixinItemWarpStone"), + ae2_MixinNEIItemRender(Side.CLIENT, Phase.LATE, TargetedMod.AE2, () -> ArchaicConfig.disableAE2NEIItemRendering, "ae2.MixinNEIItemRender"), /** This mixin will ostensibly be unnecessary after DragonAPI V31b */ - common_dragonapi_MixinReikaWorldHelper(Side.COMMON, Phase.LATE, () -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.parseBoolean(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")), "dragonapi.MixinReikaWorldHelper"), - common_diversity_MixinServerHandler(Side.COMMON, Phase.LATE, TargetedMod.DIVERSITY, "diversity.MixinServerHandler"); + dragonapi_MixinReikaWorldHelper(Side.COMMON, Phase.LATE, () -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.parseBoolean(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")), "dragonapi.MixinReikaWorldHelper"), + diversity_MixinServerHandler(Side.COMMON, Phase.LATE, TargetedMod.DIVERSITY, "diversity.MixinServerHandler"); private final MixinBuilder builder; @@ -207,12 +207,29 @@ public enum Mixin implements IMixins { } Mixin(Side side, Phase phase, TargetedMod requiredMod, Supplier applyIf, String mixin) { - this.builder = new MixinBuilder().setPhase(phase).addSidedMixins(side, getMixinClass(side, mixin)); + this.builder = new ArchaicBuilder().setPhase(phase).addSidedMixins(side, mixin); if (requiredMod != null) this.builder.addRequiredMod(requiredMod); if (applyIf != null) this.builder.setApplyIf(applyIf); } - private static String getMixinClass(Side side, String s) { - return side.name().toLowerCase(Locale.ROOT) + "." + s; + static class ArchaicBuilder extends MixinBuilder { + @Override + public MixinBuilder addCommonMixins(@Nonnull String... mixins) { + for (int i = 0; i < mixins.length; i++) mixins[i] = "common." + mixins[i]; + return super.addCommonMixins(mixins); + } + + @Override + public MixinBuilder addClientMixins(@Nonnull String... mixins) { + for (int i = 0; i < mixins.length; i++) mixins[i] = "client." + mixins[i]; + return super.addClientMixins(mixins); + } + + @Override + public MixinBuilder addSidedMixins(@Nonnull Side side, @Nonnull String... mixins) { + if (side == Side.COMMON) return this.addCommonMixins(mixins); + if (side == Side.CLIENT) return this.addClientMixins(mixins); + return super.addSidedMixins(side, mixins); + } } } From d1d527491ac75c5c44b8c7cfd9663389f0f9c26f Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Thu, 17 Jul 2025 06:54:56 +0200 Subject: [PATCH 7/8] transfer all mixins to MixinBuilder --- .../org/embeddedt/archaicfix/asm/Mixin.java | 65 +++++++------------ 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java index 88dd8e9..ec7c71b 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java @@ -3,13 +3,14 @@ import com.gtnewhorizon.gtnhmixins.builders.IMixins; import com.gtnewhorizon.gtnhmixins.builders.MixinBuilder; import lombok.Getter; +import lombok.RequiredArgsConstructor; import org.embeddedt.archaicfix.config.ArchaicConfig; import org.embeddedt.archaicfix.helpers.DragonAPIHelper; import javax.annotation.Nonnull; -import java.util.function.Supplier; @Getter +@RequiredArgsConstructor public enum Mixin implements IMixins { MINECRAFT(new ArchaicBuilder() @@ -164,54 +165,36 @@ public enum Mixin implements IMixins { .addExcludedMod(TargetedMod.COFHCORE) .addCommonMixins("core.MixinModCandidate")), - chickenchunks_MixinPlayerChunkViewerManager(Side.COMMON, Phase.LATE, TargetedMod.CHICKENCHUNKS, "chickenchunks.MixinPlayerChunkViewerManager"), - core_MixinEntityLivingBase_EarlyXpDrop(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.dropXpImmediatelyOnDeath, "core.MixinEntityLivingBase_EarlyXpDrop"), - core_MixinSwampHut(Side.COMMON, Phase.EARLY, () -> ArchaicConfig.fixEntityStructurePersistence, "core.MixinSwampHut"), - mrtjp_MixinBlockUpdateHandler(Side.COMMON, Phase.LATE, TargetedMod.MRTJPCORE, "mrtjp.MixinBlockUpdateHandler"), - projecte_MixinRecipeShapelessHidden(Side.COMMON, Phase.LATE, TargetedMod.PROJECTE, "projecte.MixinRecipeShapelessHidden"), - thermal_MixinTECraftingHandler(Side.COMMON, Phase.LATE, TargetedMod.THERMALEXPANSION, "thermal.MixinTECraftingHandler"), + chickenchunks_MixinPlayerChunkViewerManager(new ArchaicBuilder().addCommonMixins("chickenchunks.MixinPlayerChunkViewerManager").setPhase(Phase.LATE).addRequiredMod(TargetedMod.CHICKENCHUNKS)), + core_MixinEntityLivingBase_EarlyXpDrop(new ArchaicBuilder().addCommonMixins("core.MixinEntityLivingBase_EarlyXpDrop").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.dropXpImmediatelyOnDeath)), + core_MixinSwampHut(new ArchaicBuilder().addCommonMixins("core.MixinSwampHut").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.fixEntityStructurePersistence)), + mrtjp_MixinBlockUpdateHandler(new ArchaicBuilder().addCommonMixins("mrtjp.MixinBlockUpdateHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.MRTJPCORE)), + projecte_MixinRecipeShapelessHidden(new ArchaicBuilder().addCommonMixins("projecte.MixinRecipeShapelessHidden").setPhase(Phase.LATE).addRequiredMod(TargetedMod.PROJECTE)), + thermal_MixinTECraftingHandler(new ArchaicBuilder().addCommonMixins("thermal.MixinTECraftingHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.THERMALEXPANSION)), // CLIENT MIXINS, - core_MixinSkinManager(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.fixSkinMemoryLeak, "core.MixinSkinManager"), - core_MixinWorldRenderer(Side.CLIENT, Phase.EARLY, () -> !Boolean.parseBoolean(System.getProperty("archaicFix.disableMC129", "false")), "core.MixinWorldRenderer"), - core_MixinRenderItem(Side.CLIENT, Phase.EARLY, () -> ArchaicConfig.forceFancyItems, "core.MixinRenderItem"), - divinerpg_MixinEntitySparkler(Side.CLIENT, Phase.LATE, TargetedMod.DIVINERPG, "divinerpg.MixinEntitySparkler"), - optifine_MixinVersionCheckThread(Side.CLIENT, Phase.EARLY, TargetedMod.OPTIFINE, () -> ArchaicConfig.disableOFVersionCheck, "optifine.MixinVersionCheckThread"), + core_MixinSkinManager(new ArchaicBuilder().addClientMixins("core.MixinSkinManager").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.fixSkinMemoryLeak)), + core_MixinWorldRenderer(new ArchaicBuilder().addClientMixins("core.MixinWorldRenderer").setPhase(Phase.EARLY).setApplyIf(() -> !Boolean.parseBoolean(System.getProperty("archaicFix.disableMC129", "false")))), + core_MixinRenderItem(new ArchaicBuilder().addClientMixins("core.MixinRenderItem").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.forceFancyItems)), + divinerpg_MixinEntitySparkler(new ArchaicBuilder().addClientMixins("divinerpg.MixinEntitySparkler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.DIVINERPG)), + optifine_MixinVersionCheckThread(new ArchaicBuilder().addClientMixins("optifine.MixinVersionCheckThread").setPhase(Phase.EARLY).addRequiredMod(TargetedMod.OPTIFINE).setApplyIf(() -> ArchaicConfig.disableOFVersionCheck)), // MOD-FILTERED MIXINS - mekanism_MixinGenHandler(Side.COMMON, Phase.LATE, TargetedMod.MEKANISM, "mekanism.MixinGenHandler"), - thermal_MixinBlockOre(Side.COMMON, Phase.LATE, TargetedMod.THERMALFOUNDATION, "thermal.MixinBlockOre"), - botania_MixinBlockSpecialFlower(Side.COMMON, Phase.LATE, TargetedMod.BOTANIA, "botania.MixinBlockSpecialFlower"), - journeymap_MixinTileDrawStep(Side.CLIENT, Phase.LATE, TargetedMod.JOURNEYMAP, () -> ArchaicConfig.removeJourneymapDebug, "journeymap.MixinTileDrawStep"), - aoa_MixinProjectileEntities(Side.CLIENT, Phase.LATE, TargetedMod.ADVENT_OF_ASCENSION, "aoa.MixinProjectileEntities"), - am2_MixinPlayerTracker(Side.COMMON, Phase.LATE, TargetedMod.ARS_MAGICA_2, "am2.MixinPlayerTracker"), - foodplus_MixinUpdater(Side.COMMON, Phase.LATE, TargetedMod.FOODPLUS, () -> ArchaicConfig.disableFoodPlusUpdates, "foodplus.MixinUpdater"), - waystones_MixinItemWarpStone(Side.COMMON, Phase.LATE, TargetedMod.WAYSTONES, "waystones.MixinItemWarpStone"), - ae2_MixinNEIItemRender(Side.CLIENT, Phase.LATE, TargetedMod.AE2, () -> ArchaicConfig.disableAE2NEIItemRendering, "ae2.MixinNEIItemRender"), + mekanism_MixinGenHandler(new ArchaicBuilder().addCommonMixins("mekanism.MixinGenHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.MEKANISM)), + thermal_MixinBlockOre(new ArchaicBuilder().addCommonMixins("thermal.MixinBlockOre").setPhase(Phase.LATE).addRequiredMod(TargetedMod.THERMALFOUNDATION)), + botania_MixinBlockSpecialFlower(new ArchaicBuilder().addCommonMixins("botania.MixinBlockSpecialFlower").setPhase(Phase.LATE).addRequiredMod(TargetedMod.BOTANIA)), + journeymap_MixinTileDrawStep(new ArchaicBuilder().addClientMixins("journeymap.MixinTileDrawStep").setPhase(Phase.LATE).addRequiredMod(TargetedMod.JOURNEYMAP).setApplyIf(() -> ArchaicConfig.removeJourneymapDebug)), + aoa_MixinProjectileEntities(new ArchaicBuilder().addClientMixins("aoa.MixinProjectileEntities").setPhase(Phase.LATE).addRequiredMod(TargetedMod.ADVENT_OF_ASCENSION)), + am2_MixinPlayerTracker(new ArchaicBuilder().addCommonMixins("am2.MixinPlayerTracker").setPhase(Phase.LATE).addRequiredMod(TargetedMod.ARS_MAGICA_2)), + foodplus_MixinUpdater(new ArchaicBuilder().addCommonMixins("foodplus.MixinUpdater").setPhase(Phase.LATE).addRequiredMod(TargetedMod.FOODPLUS).setApplyIf(() -> ArchaicConfig.disableFoodPlusUpdates)), + waystones_MixinItemWarpStone(new ArchaicBuilder().addCommonMixins("waystones.MixinItemWarpStone").setPhase(Phase.LATE).addRequiredMod(TargetedMod.WAYSTONES)), + ae2_MixinNEIItemRender(new ArchaicBuilder().addClientMixins("ae2.MixinNEIItemRender").setPhase(Phase.LATE).addRequiredMod(TargetedMod.AE2).setApplyIf(() -> ArchaicConfig.disableAE2NEIItemRendering)), /** This mixin will ostensibly be unnecessary after DragonAPI V31b */ - dragonapi_MixinReikaWorldHelper(Side.COMMON, Phase.LATE, () -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.parseBoolean(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")), "dragonapi.MixinReikaWorldHelper"), - diversity_MixinServerHandler(Side.COMMON, Phase.LATE, TargetedMod.DIVERSITY, "diversity.MixinServerHandler"); + dragonapi_MixinReikaWorldHelper(new ArchaicBuilder().addCommonMixins("dragonapi.MixinReikaWorldHelper").setPhase(Phase.LATE).setApplyIf(() -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.parseBoolean(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")))), + diversity_MixinServerHandler(new ArchaicBuilder().addCommonMixins("diversity.MixinServerHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.DIVERSITY)); private final MixinBuilder builder; - Mixin(MixinBuilder builder) { - this.builder = builder; - } - - Mixin(Side side, Phase phase, TargetedMod requiredMod, String mixin) { - this(side, phase, requiredMod, null, mixin); - } - - Mixin(Side side, Phase phase, Supplier applyIf, String mixins) { - this(side, phase, null, applyIf, mixins); - } - - Mixin(Side side, Phase phase, TargetedMod requiredMod, Supplier applyIf, String mixin) { - this.builder = new ArchaicBuilder().setPhase(phase).addSidedMixins(side, mixin); - if (requiredMod != null) this.builder.addRequiredMod(requiredMod); - if (applyIf != null) this.builder.setApplyIf(applyIf); - } - static class ArchaicBuilder extends MixinBuilder { @Override public MixinBuilder addCommonMixins(@Nonnull String... mixins) { From 593a0008299ab6a21c4eaf5163daae33a58b91a0 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Thu, 17 Jul 2025 06:56:11 +0200 Subject: [PATCH 8/8] format on new line --- .../org/embeddedt/archaicfix/asm/Mixin.java | 114 ++++++++++++++---- 1 file changed, 92 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java index ec7c71b..aba00a2 100644 --- a/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java +++ b/src/main/java/org/embeddedt/archaicfix/asm/Mixin.java @@ -165,33 +165,103 @@ public enum Mixin implements IMixins { .addExcludedMod(TargetedMod.COFHCORE) .addCommonMixins("core.MixinModCandidate")), - chickenchunks_MixinPlayerChunkViewerManager(new ArchaicBuilder().addCommonMixins("chickenchunks.MixinPlayerChunkViewerManager").setPhase(Phase.LATE).addRequiredMod(TargetedMod.CHICKENCHUNKS)), - core_MixinEntityLivingBase_EarlyXpDrop(new ArchaicBuilder().addCommonMixins("core.MixinEntityLivingBase_EarlyXpDrop").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.dropXpImmediatelyOnDeath)), - core_MixinSwampHut(new ArchaicBuilder().addCommonMixins("core.MixinSwampHut").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.fixEntityStructurePersistence)), - mrtjp_MixinBlockUpdateHandler(new ArchaicBuilder().addCommonMixins("mrtjp.MixinBlockUpdateHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.MRTJPCORE)), - projecte_MixinRecipeShapelessHidden(new ArchaicBuilder().addCommonMixins("projecte.MixinRecipeShapelessHidden").setPhase(Phase.LATE).addRequiredMod(TargetedMod.PROJECTE)), - thermal_MixinTECraftingHandler(new ArchaicBuilder().addCommonMixins("thermal.MixinTECraftingHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.THERMALEXPANSION)), + chickenchunks_MixinPlayerChunkViewerManager(new ArchaicBuilder() + .addCommonMixins("chickenchunks.MixinPlayerChunkViewerManager") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.CHICKENCHUNKS)), + core_MixinEntityLivingBase_EarlyXpDrop(new ArchaicBuilder() + .addCommonMixins("core.MixinEntityLivingBase_EarlyXpDrop") + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.dropXpImmediatelyOnDeath)), + core_MixinSwampHut(new ArchaicBuilder() + .addCommonMixins("core.MixinSwampHut") + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.fixEntityStructurePersistence)), + mrtjp_MixinBlockUpdateHandler(new ArchaicBuilder() + .addCommonMixins("mrtjp.MixinBlockUpdateHandler") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.MRTJPCORE)), + projecte_MixinRecipeShapelessHidden(new ArchaicBuilder() + .addCommonMixins("projecte.MixinRecipeShapelessHidden") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.PROJECTE)), + thermal_MixinTECraftingHandler(new ArchaicBuilder() + .addCommonMixins("thermal.MixinTECraftingHandler") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.THERMALEXPANSION)), // CLIENT MIXINS, - core_MixinSkinManager(new ArchaicBuilder().addClientMixins("core.MixinSkinManager").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.fixSkinMemoryLeak)), - core_MixinWorldRenderer(new ArchaicBuilder().addClientMixins("core.MixinWorldRenderer").setPhase(Phase.EARLY).setApplyIf(() -> !Boolean.parseBoolean(System.getProperty("archaicFix.disableMC129", "false")))), - core_MixinRenderItem(new ArchaicBuilder().addClientMixins("core.MixinRenderItem").setPhase(Phase.EARLY).setApplyIf(() -> ArchaicConfig.forceFancyItems)), - divinerpg_MixinEntitySparkler(new ArchaicBuilder().addClientMixins("divinerpg.MixinEntitySparkler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.DIVINERPG)), - optifine_MixinVersionCheckThread(new ArchaicBuilder().addClientMixins("optifine.MixinVersionCheckThread").setPhase(Phase.EARLY).addRequiredMod(TargetedMod.OPTIFINE).setApplyIf(() -> ArchaicConfig.disableOFVersionCheck)), + core_MixinSkinManager(new ArchaicBuilder() + .addClientMixins("core.MixinSkinManager") + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.fixSkinMemoryLeak)), + core_MixinWorldRenderer(new ArchaicBuilder() + .addClientMixins("core.MixinWorldRenderer") + .setPhase(Phase.EARLY) + .setApplyIf(() -> !Boolean.parseBoolean(System.getProperty("archaicFix.disableMC129", "false")))), + core_MixinRenderItem(new ArchaicBuilder() + .addClientMixins("core.MixinRenderItem") + .setPhase(Phase.EARLY) + .setApplyIf(() -> ArchaicConfig.forceFancyItems)), + divinerpg_MixinEntitySparkler(new ArchaicBuilder() + .addClientMixins("divinerpg.MixinEntitySparkler") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.DIVINERPG)), + optifine_MixinVersionCheckThread(new ArchaicBuilder() + .addClientMixins("optifine.MixinVersionCheckThread") + .setPhase(Phase.EARLY) + .addRequiredMod(TargetedMod.OPTIFINE) + .setApplyIf(() -> ArchaicConfig.disableOFVersionCheck)), // MOD-FILTERED MIXINS - mekanism_MixinGenHandler(new ArchaicBuilder().addCommonMixins("mekanism.MixinGenHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.MEKANISM)), - thermal_MixinBlockOre(new ArchaicBuilder().addCommonMixins("thermal.MixinBlockOre").setPhase(Phase.LATE).addRequiredMod(TargetedMod.THERMALFOUNDATION)), - botania_MixinBlockSpecialFlower(new ArchaicBuilder().addCommonMixins("botania.MixinBlockSpecialFlower").setPhase(Phase.LATE).addRequiredMod(TargetedMod.BOTANIA)), - journeymap_MixinTileDrawStep(new ArchaicBuilder().addClientMixins("journeymap.MixinTileDrawStep").setPhase(Phase.LATE).addRequiredMod(TargetedMod.JOURNEYMAP).setApplyIf(() -> ArchaicConfig.removeJourneymapDebug)), - aoa_MixinProjectileEntities(new ArchaicBuilder().addClientMixins("aoa.MixinProjectileEntities").setPhase(Phase.LATE).addRequiredMod(TargetedMod.ADVENT_OF_ASCENSION)), - am2_MixinPlayerTracker(new ArchaicBuilder().addCommonMixins("am2.MixinPlayerTracker").setPhase(Phase.LATE).addRequiredMod(TargetedMod.ARS_MAGICA_2)), - foodplus_MixinUpdater(new ArchaicBuilder().addCommonMixins("foodplus.MixinUpdater").setPhase(Phase.LATE).addRequiredMod(TargetedMod.FOODPLUS).setApplyIf(() -> ArchaicConfig.disableFoodPlusUpdates)), - waystones_MixinItemWarpStone(new ArchaicBuilder().addCommonMixins("waystones.MixinItemWarpStone").setPhase(Phase.LATE).addRequiredMod(TargetedMod.WAYSTONES)), - ae2_MixinNEIItemRender(new ArchaicBuilder().addClientMixins("ae2.MixinNEIItemRender").setPhase(Phase.LATE).addRequiredMod(TargetedMod.AE2).setApplyIf(() -> ArchaicConfig.disableAE2NEIItemRendering)), + mekanism_MixinGenHandler(new ArchaicBuilder() + .addCommonMixins("mekanism.MixinGenHandler") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.MEKANISM)), + thermal_MixinBlockOre(new ArchaicBuilder() + .addCommonMixins("thermal.MixinBlockOre") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.THERMALFOUNDATION)), + botania_MixinBlockSpecialFlower(new ArchaicBuilder() + .addCommonMixins("botania.MixinBlockSpecialFlower") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.BOTANIA)), + journeymap_MixinTileDrawStep(new ArchaicBuilder() + .addClientMixins("journeymap.MixinTileDrawStep") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.JOURNEYMAP) + .setApplyIf(() -> ArchaicConfig.removeJourneymapDebug)), + aoa_MixinProjectileEntities(new ArchaicBuilder() + .addClientMixins("aoa.MixinProjectileEntities") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.ADVENT_OF_ASCENSION)), + am2_MixinPlayerTracker(new ArchaicBuilder() + .addCommonMixins("am2.MixinPlayerTracker") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.ARS_MAGICA_2)), + foodplus_MixinUpdater(new ArchaicBuilder() + .addCommonMixins("foodplus.MixinUpdater") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.FOODPLUS) + .setApplyIf(() -> ArchaicConfig.disableFoodPlusUpdates)), + waystones_MixinItemWarpStone(new ArchaicBuilder() + .addCommonMixins("waystones.MixinItemWarpStone") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.WAYSTONES)), + ae2_MixinNEIItemRender(new ArchaicBuilder() + .addClientMixins("ae2.MixinNEIItemRender") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.AE2) + .setApplyIf(() -> ArchaicConfig.disableAE2NEIItemRendering)), /** This mixin will ostensibly be unnecessary after DragonAPI V31b */ - dragonapi_MixinReikaWorldHelper(new ArchaicBuilder().addCommonMixins("dragonapi.MixinReikaWorldHelper").setPhase(Phase.LATE).setApplyIf(() -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.parseBoolean(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")))), - diversity_MixinServerHandler(new ArchaicBuilder().addCommonMixins("diversity.MixinServerHandler").setPhase(Phase.LATE).addRequiredMod(TargetedMod.DIVERSITY)); + dragonapi_MixinReikaWorldHelper(new ArchaicBuilder() + .addCommonMixins("dragonapi.MixinReikaWorldHelper") + .setPhase(Phase.LATE) + .setApplyIf(() -> DragonAPIHelper.isVersionInInclusiveRange(0, 'a', 31, 'b') && !Boolean.parseBoolean(System.getProperty("archaicFix.disableFastReikaWorldHelper", "false")))), + diversity_MixinServerHandler(new ArchaicBuilder() + .addCommonMixins("diversity.MixinServerHandler") + .setPhase(Phase.LATE) + .addRequiredMod(TargetedMod.DIVERSITY)); private final MixinBuilder builder;