From 2d5fb18af34fae24c1a3a5fd2657a65386166852 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Sun, 14 Jul 2024 19:03:31 -0700 Subject: [PATCH] Slightly improve getNoiseBiome See reason note --- .../mixin/random_ticking/LevelMixin.java | 34 +++++++++++++++++++ src/main/resources/moonrise.mixins.json | 1 + 2 files changed, 35 insertions(+) create mode 100644 src/main/java/ca/spottedleaf/moonrise/mixin/random_ticking/LevelMixin.java diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/random_ticking/LevelMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/random_ticking/LevelMixin.java new file mode 100644 index 0000000..8c8b82b --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/random_ticking/LevelMixin.java @@ -0,0 +1,34 @@ +package ca.spottedleaf.moonrise.mixin.random_ticking; + +import net.minecraft.core.Holder; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.status.ChunkStatus; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(Level.class) +public abstract class LevelMixin implements LevelAccessor, AutoCloseable { + + @Shadow + @Nullable + public abstract ChunkAccess getChunk(int i, int j, ChunkStatus chunkStatus, boolean bl); + + @Override + public abstract Holder getUncachedNoiseBiome(final int x, final int y, final int z); + + /** + * @reason Make getChunk and getUncachedNoiseBiome virtual calls instead of interface calls + * by implementing the superclass method in this class. + * @author Spottedleaf + */ + @Override + public Holder getNoiseBiome(final int x, final int y, final int z) { + final ChunkAccess chunk = this.getChunk(x >> 2, z >> 2, ChunkStatus.BIOMES, false); + + return chunk != null ? chunk.getNoiseBiome(x, y, z) : this.getUncachedNoiseBiome(x, y, z); + } +} diff --git a/src/main/resources/moonrise.mixins.json b/src/main/resources/moonrise.mixins.json index 51729a5..a72a262 100644 --- a/src/main/resources/moonrise.mixins.json +++ b/src/main/resources/moonrise.mixins.json @@ -89,6 +89,7 @@ "poi_lookup.PoiManagerMixin", "poi_lookup.PortalForcerMixin", "random_ticking.BiomeMixin", + "random_ticking.LevelMixin", "random_ticking.ServerLevelMixin", "serverlist.ConnectionMixin", "starlight.blockstate.BlockStateBaseMixin",