From f21069ab2e50b36d65d137585fa850838404b6b9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 3 May 2021 19:43:52 -0700 Subject: [PATCH] fix cache misses --- .../implementations/world/ChunkRegionMixin.java | 14 ++++++++++++++ .../implementations/world/ServerWorldMixin.java | 15 +++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 904f941b4..da87f4048 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -14,6 +14,7 @@ import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ChunkRegion; +import net.minecraft.world.ServerWorldAccess; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -80,4 +81,17 @@ public abstract class ChunkRegionMixin { public int hashCode() { return world.hashCode(); } + + /** + * Overridden in the same manner as {@link #hashCode()} + * + * @param other Another object + * @return Whether this world is the same as other. + * @see #hashCode() + */ + @Override + public boolean equals(Object other) { + if(!(other instanceof ServerWorldAccess)) return false; + return world.equals(((ServerWorldAccess) other).toServerWorld()); + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 2211bc90b..3569444c8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -13,6 +13,7 @@ import com.dfsek.terra.fabric.world.block.FabricBlock; import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ServerWorldAccess; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; import org.spongepowered.asm.mixin.Mixin; @@ -58,4 +59,18 @@ public abstract class ServerWorldMixin { public TerraChunkGenerator terra$getTerraGenerator() { return ((FabricChunkGeneratorWrapper) terra$getGenerator()).getHandle(); } + + /** + * Overridden in the same manner as {@link ChunkRegionMixin#hashCode()} + * + * @param other Another object + * @return Whether this world is the same as other. + * @see ChunkRegionMixin#hashCode() + */ + @SuppressWarnings("ConstantConditions") + @Override + public boolean equals(Object other) { + if(!(other instanceof ServerWorldAccess)) return false; + return (ServerWorldAccess) this == (((ServerWorldAccess) other).toServerWorld()); + } }