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; } } 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;