From 670c8949b651a1e677f88940aaeec4079fbd88e3 Mon Sep 17 00:00:00 2001 From: craisinlord Date: Tue, 23 Jun 2026 00:28:39 -0500 Subject: [PATCH] Added mixin to fix Alex's caves incompat with infinite dimensions corrupting player data --- .../infinity/ConfigGenInvocationMixin.java | 37 +++++++++++++++++++ .../resources/antarchy-neoforge.mixins.json | 1 + 2 files changed, 38 insertions(+) create mode 100644 neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/ConfigGenInvocationMixin.java diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/ConfigGenInvocationMixin.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/ConfigGenInvocationMixin.java new file mode 100644 index 00000000..3e00b4a2 --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/mixins/infinity/ConfigGenInvocationMixin.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.neoforge.mixins.infinity; + +import com.craisinlord.antarchy.Antarchy; +import net.lerariemann.infinity.util.config.ConfigGenInvocation; +import net.lerariemann.infinity.util.config.ConfigGenerator; +import net.minecraft.server.MinecraftServer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(value = ConfigGenInvocation.class, remap = false) +/* + * Guards against a NPE in Infinite Dimensions' SurfaceRuleScanner when another mod + * registers a surface rule with a missing "biome_is" field. Without this, the crash + * propagates up through PlayerList.placeNewPlayer and kicks the player on login + */ +public class ConfigGenInvocationMixin { + + @Redirect( + method = "run", + at = @At( + value = "INVOKE", + target = "Lnet/lerariemann/infinity/util/config/ConfigGenerator;generateAll(Lnet/minecraft/server/MinecraftServer;)V" + ), + remap = false + ) + private void antarchy$safeGenerateAll(MinecraftServer server) { + try { + ConfigGenerator.generateAll(server); + } catch (Exception e) { + Antarchy.LOGGER.error( + "[Antarchy] Infinite Dimensions surface rule scan crashed — likely a mod has a malformed surface rule (null 'biome_is' entry). Player login will continue.", + e + ); + } + } +} diff --git a/neoforge/src/main/resources/antarchy-neoforge.mixins.json b/neoforge/src/main/resources/antarchy-neoforge.mixins.json index 14623a58..f84d3e8e 100644 --- a/neoforge/src/main/resources/antarchy-neoforge.mixins.json +++ b/neoforge/src/main/resources/antarchy-neoforge.mixins.json @@ -9,6 +9,7 @@ "entity.MultipartEntityBridgeMixin", "entity.MultipartEntityLevelRegistryMixin", "entity.ParalyzedMobFreezeMixin", + "infinity.ConfigGenInvocationMixin", "infinity.PortalCreatorMixin", "infinity.RandomSpringMixin", "level.ClientLevelPartEntitiesAccessor",