From 86ecd3dac5e2ae0eadfa653ae2effe2542b2c378 Mon Sep 17 00:00:00 2001 From: ah-OOG-ah <75745146+ah-OOG-ah@users.noreply.github.com> Date: Sun, 30 Nov 2025 02:43:56 -0500 Subject: [PATCH 1/2] Switch to MEV for better compat --- gradle.properties | 2 +- .../mixins/client/core/MixinIntegratedServer.java | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index cc52de1..e8d1ef6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -91,7 +91,7 @@ usesMixins = true separateMixinSourceSet = # Adds some debug arguments like verbose output and class export. -usesMixinDebug = false +usesMixinDebug = true # Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. mixinPlugin = diff --git a/src/main/java/org/embeddedt/archaicfix/mixins/client/core/MixinIntegratedServer.java b/src/main/java/org/embeddedt/archaicfix/mixins/client/core/MixinIntegratedServer.java index 56eb029..167b80e 100644 --- a/src/main/java/org/embeddedt/archaicfix/mixins/client/core/MixinIntegratedServer.java +++ b/src/main/java/org/embeddedt/archaicfix/mixins/client/core/MixinIntegratedServer.java @@ -1,23 +1,19 @@ package org.embeddedt.archaicfix.mixins.client.core; -import net.minecraft.client.settings.GameSettings; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.server.integrated.IntegratedServer; import org.embeddedt.archaicfix.config.ArchaicConfig; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(IntegratedServer.class) public class MixinIntegratedServer { /** * Force the integrated server to have a minimum view distance of 8, so mob spawning works correctly. */ - @Redirect(method = "tick", at = @At(value = "FIELD", opcode = Opcodes.GETFIELD, target = "Lnet/minecraft/client/settings/GameSettings;renderDistanceChunks:I")) - private int getRealRenderDistance(GameSettings settings) { - if(ArchaicConfig.fixMobSpawnsAtLowRenderDist) - return Math.max(settings.renderDistanceChunks, 8); - else - return settings.renderDistanceChunks; + @ModifyExpressionValue(method = "tick", at = @At(value = "FIELD", opcode = Opcodes.GETFIELD, target = "Lnet/minecraft/client/settings/GameSettings;renderDistanceChunks:I")) + private int getRealRenderDistance(int original) { + return ArchaicConfig.fixMobSpawnsAtLowRenderDist ? Math.max(original, 8) : original; } } From 1c1e26646a0a9e1373f95e91449cb35d64b52d04 Mon Sep 17 00:00:00 2001 From: ah-OOG-ah <75745146+ah-OOG-ah@users.noreply.github.com> Date: Sun, 30 Nov 2025 12:59:08 -0500 Subject: [PATCH 2/2] Fix RandomThings conflict --- .../archaicfix/mixins/common/core/MixinSpawnerAnimals.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/embeddedt/archaicfix/mixins/common/core/MixinSpawnerAnimals.java b/src/main/java/org/embeddedt/archaicfix/mixins/common/core/MixinSpawnerAnimals.java index 74abf40..3ecb552 100644 --- a/src/main/java/org/embeddedt/archaicfix/mixins/common/core/MixinSpawnerAnimals.java +++ b/src/main/java/org/embeddedt/archaicfix/mixins/common/core/MixinSpawnerAnimals.java @@ -1,5 +1,6 @@ package org.embeddedt.archaicfix.mixins.common.core; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.entity.Entity; import net.minecraft.world.SpawnerAnimals; import net.minecraft.world.World; @@ -10,14 +11,14 @@ @Mixin(SpawnerAnimals.class) public class MixinSpawnerAnimals { - @ModifyConstant(method = "findChunksForSpawning", constant = @Constant(doubleValue = 24.0D)) + @ModifyExpressionValue(method = "findChunksForSpawning", at = @At(value = "CONSTANT", args = "doubleValue=24.0")) private double lowerSpawnRange(double old) { return ArchaicConfig.fixMobSpawnsAtLowRenderDist ? 16 : old; } @Redirect(method = "performWorldGenSpawning", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;spawnEntityInWorld(Lnet/minecraft/entity/Entity;)Z")) private static boolean checkForCollision(World world, Entity instance) { - if(!ArchaicConfig.preventEntitySuffocationWorldgen || world.getCollidingBoundingBoxes(instance, instance.boundingBox).isEmpty()) { + if (!ArchaicConfig.preventEntitySuffocationWorldgen || world.getCollidingBoundingBoxes(instance, instance.boundingBox).isEmpty()) { return world.spawnEntityInWorld(instance); } return false;