From 30cb6588457c1d7defb5a46761d4aaf93335b217 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Wed, 19 Jun 2024 17:36:57 -0700 Subject: [PATCH] Move field initializations out of constructor injects They should be less fragile for breakages. Additionally, modify PoiManagerMixin to work around an issue where our getOrCreate() method is not being invoked _because_ its return type was PoiSection and not Object. Apparently, the JVM will search the superclass when a direct match (params+return type) is not found. --- .../mixin/chunk_system/ChunkHolderMixin.java | 4 +--- .../mixin/chunk_system/ChunkStatusMixin.java | 10 +++------ .../mixin/chunk_system/EntityMixin.java | 20 +++-------------- .../chunk_system/EntityTickListMixin.java | 3 +-- .../chunk_system/LevelChunkTicksMixin.java | 16 +------------- .../mixin/chunk_system/PoiManagerMixin.java | 22 +++++++++---------- .../mixin/chunk_system/PoiSectionMixin.java | 16 +------------- .../mixin/chunk_system/ServerLevelMixin.java | 6 ++--- .../mixin/chunk_system/ServerPlayerMixin.java | 16 +------------- .../mixin/collisions/BlockStateBaseMixin.java | 16 +++----------- .../collisions/DiscreteVoxelShapeMixin.java | 2 +- .../mixin/collisions/ExplosionMixin.java | 4 +++- .../mixin/poi_lookup/AcquirePoiMixin.java | 2 +- .../mixin/poi_lookup/PoiManagerMixin.java | 22 +++++++------------ .../render/SectionRenderDispatcherMixin.java | 1 - .../mixin/serverlist/ConnectionMixin.java | 16 +------------- .../scheduling/ChunkTaskScheduler.java | 2 +- .../patches/poi_lookup/PoiAccess.java | 2 ++ 18 files changed, 44 insertions(+), 136 deletions(-) diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkHolderMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkHolderMixin.java index f2548b2..36455dd 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkHolderMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkHolderMixin.java @@ -64,7 +64,7 @@ public abstract class ChunkHolderMixin extends GenerationChunkHolder implements private NewChunkHolder newChunkHolder; @Unique - private ReferenceList playersSentChunkTo; + private final ReferenceList playersSentChunkTo = new ReferenceList<>(EMPTY_PLAYER_ARRAY, 0); @Unique private ChunkMap getChunkMap() { @@ -134,8 +134,6 @@ public abstract class ChunkHolderMixin extends GenerationChunkHolder implements ) ) private void initFields(final CallbackInfo ci) { - this.playersSentChunkTo = new ReferenceList<>(EMPTY_PLAYER_ARRAY, 0); - this.fullChunkFuture = null; this.tickingChunkFuture = null; this.entityTickingChunkFuture = null; diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkStatusMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkStatusMixin.java index b182384..173d178 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkStatusMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkStatusMixin.java @@ -26,13 +26,13 @@ public abstract class ChunkStatusMixin implements ChunkSystemChunkStatus { private boolean emptyLoadTask; @Unique - private int writeRadius; + private int writeRadius = -1; @Unique - private ChunkStatus nextStatus; + private ChunkStatus nextStatus = (ChunkStatus)(Object)this; @Unique - private AtomicBoolean warnedAboutNoImmediateComplete; + private final AtomicBoolean warnedAboutNoImmediateComplete = new AtomicBoolean(); @Override public final boolean moonrise$isParallelCapable() { @@ -90,12 +90,8 @@ public abstract class ChunkStatusMixin implements ChunkSystemChunkStatus { ) ) private void initFields(ChunkStatus prevStatus, EnumSet enumSet, ChunkType chunkType, CallbackInfo ci) { - this.isParallelCapable = false; - this.writeRadius = -1; - this.nextStatus = (ChunkStatus)(Object)this; if (prevStatus != null) { ((ChunkStatusMixin)(Object)prevStatus).nextStatus = (ChunkStatus)(Object)this; } - this.warnedAboutNoImmediateComplete = new AtomicBoolean(); } } diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityMixin.java index ffa142d..1677c50 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityMixin.java @@ -50,13 +50,13 @@ public abstract class EntityMixin implements ChunkSystemEntity { private FullChunkStatus chunkStatus; @Unique - private int sectionX; + private int sectionX = Integer.MIN_VALUE; @Unique - private int sectionY; + private int sectionY = Integer.MIN_VALUE; @Unique - private int sectionZ; + private int sectionZ = Integer.MIN_VALUE; @Unique private boolean updatingSectionStatus; @@ -124,20 +124,6 @@ public abstract class EntityMixin implements ChunkSystemEntity { return this.getIndirectPassengersStream().anyMatch((entity) -> entity instanceof Player); } - /** - * @reason Initialise fields - * @author Spottedleaf - */ - @Inject( - method = "", - at = @At( - value = "RETURN" - ) - ) - private void initHook(final CallbackInfo ci) { - this.sectionX = this.sectionY = this.sectionZ = Integer.MIN_VALUE; - } - /** * @reason Stop bad mods from moving entities during section status updates, which otherwise would cause CMEs * @author Spottedleaf diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityTickListMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityTickListMixin.java index 621f13b..3094ae7 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityTickListMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/EntityTickListMixin.java @@ -26,7 +26,7 @@ public abstract class EntityTickListMixin { private Int2ObjectMap passive; @Unique - private IteratorSafeOrderedReferenceSet entities; + private final IteratorSafeOrderedReferenceSet entities = new IteratorSafeOrderedReferenceSet<>(); /** * @reason Initialise new fields and destroy old state @@ -41,7 +41,6 @@ public abstract class EntityTickListMixin { private void initHook(final CallbackInfo ci) { this.active = null; this.passive = null; - this.entities = new IteratorSafeOrderedReferenceSet<>(); } diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/LevelChunkTicksMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/LevelChunkTicksMixin.java index 8213464..3c1fa51 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/LevelChunkTicksMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/LevelChunkTicksMixin.java @@ -43,21 +43,7 @@ public abstract class LevelChunkTicksMixin implements ChunkSystemLevelChunkTi private boolean dirty; @Unique - private long lastSaved; - - /** - * @reason Hook to init fields - * @author Spottedleaf - */ - @Inject( - method = "()V", - at = @At( - value = "RETURN" - ) - ) - private void init(final CallbackInfo ci) { - this.lastSaved = Long.MIN_VALUE; - } + private long lastSaved = Long.MIN_VALUE; @Override public final boolean moonrise$isDirty(final long tick) { diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiManagerMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiManagerMixin.java index 3f0c719..6be00f0 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiManagerMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiManagerMixin.java @@ -34,7 +34,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - import java.io.IOException; import java.nio.file.Path; import java.util.Optional; @@ -44,7 +43,9 @@ import java.util.function.Predicate; import java.util.stream.Stream; @Mixin(PoiManager.class) -public abstract class PoiManagerMixin extends SectionStorage implements ChunkSystemPoiManager { +// Declare the generic type as Object so that our Overrides match the method signature of the superclass +// Specifically, getOrCreate must return Object so that existing invokes do not route to the superclass +public abstract class PoiManagerMixin extends SectionStorage implements ChunkSystemPoiManager { @Shadow abstract boolean isVillageCenter(long l); @@ -52,7 +53,7 @@ public abstract class PoiManagerMixin extends SectionStorage impleme @Shadow public abstract void checkConsistencyWithBlocks(SectionPos sectionPos, LevelChunkSection levelChunkSection); - public PoiManagerMixin(SimpleRegionStorage simpleRegionStorage, Function> function, Function function2, RegistryAccess registryAccess, ChunkIOErrorReporter chunkIOErrorReporter, LevelHeightAccessor levelHeightAccessor) { + public PoiManagerMixin(SimpleRegionStorage simpleRegionStorage, Function> function, Function function2, RegistryAccess registryAccess, ChunkIOErrorReporter chunkIOErrorReporter, LevelHeightAccessor levelHeightAccessor) { super(simpleRegionStorage, function, function2, registryAccess, chunkIOErrorReporter, levelHeightAccessor); } @@ -62,7 +63,7 @@ public abstract class PoiManagerMixin extends SectionStorage impleme // the vanilla tracker needs to be replaced because it does not support level removes, and we need level removes // to support poi unloading @Unique - private Delayed26WayDistancePropagator3D villageDistanceTracker; + private final Delayed26WayDistancePropagator3D villageDistanceTracker = new Delayed26WayDistancePropagator3D(); @Unique private static final int POI_DATA_SOURCE = 7; @@ -95,7 +96,6 @@ public abstract class PoiManagerMixin extends SectionStorage impleme RegistryAccess registryAccess, ChunkIOErrorReporter chunkIOErrorReporter, LevelHeightAccessor levelHeightAccessor, CallbackInfo ci) { this.world = (ServerLevel)levelHeightAccessor; - this.villageDistanceTracker = new Delayed26WayDistancePropagator3D(); } /** @@ -145,7 +145,7 @@ public abstract class PoiManagerMixin extends SectionStorage impleme } @Override - public Optional get(final long pos) { + public Optional get(final long pos) { final int chunkX = CoordinateUtils.getChunkSectionX(pos); final int chunkY = CoordinateUtils.getChunkSectionY(pos); final int chunkZ = CoordinateUtils.getChunkSectionZ(pos); @@ -155,11 +155,11 @@ public abstract class PoiManagerMixin extends SectionStorage impleme final ChunkHolderManager manager = ((ChunkSystemServerLevel)this.world).moonrise$getChunkTaskScheduler().chunkHolderManager; final PoiChunk ret = manager.getPoiChunkIfLoaded(chunkX, chunkZ, true); - return ret == null ? Optional.empty() : ret.getSectionForVanilla(chunkY); + return ret == null ? Optional.empty() : (Optional)ret.getSectionForVanilla(chunkY); } @Override - public Optional getOrLoad(final long pos) { + public Optional getOrLoad(final long pos) { final int chunkX = CoordinateUtils.getChunkSectionX(pos); final int chunkY = CoordinateUtils.getChunkSectionY(pos); final int chunkZ = CoordinateUtils.getChunkSectionZ(pos); @@ -171,9 +171,9 @@ public abstract class PoiManagerMixin extends SectionStorage impleme if (chunkY >= WorldUtil.getMinSection(this.world) && chunkY <= WorldUtil.getMaxSection(this.world)) { final PoiChunk ret = manager.getPoiChunkIfLoaded(chunkX, chunkZ, true); if (ret != null) { - return ret.getSectionForVanilla(chunkY); + return (Optional)ret.getSectionForVanilla(chunkY); } else { - return manager.loadPoiChunk(chunkX, chunkZ).getSectionForVanilla(chunkY); + return (Optional)manager.loadPoiChunk(chunkX, chunkZ).getSectionForVanilla(chunkY); } } // retain vanilla behavior: do not load section if out of bounds! @@ -181,7 +181,7 @@ public abstract class PoiManagerMixin extends SectionStorage impleme } @Override - protected PoiSection getOrCreate(final long pos) { + protected Object getOrCreate(final long pos) { final int chunkX = CoordinateUtils.getChunkSectionX(pos); final int chunkY = CoordinateUtils.getChunkSectionY(pos); final int chunkZ = CoordinateUtils.getChunkSectionZ(pos); diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiSectionMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiSectionMixin.java index 2ba9a64..7f68ac7 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiSectionMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/PoiSectionMixin.java @@ -34,21 +34,7 @@ public abstract class PoiSectionMixin implements ChunkSystemPoiSection { @Unique - private Optional noAllocOptional; - - /** - * @reason Initialise fields - * @author Spottedleaf - */ - @Inject( - method = "(Ljava/lang/Runnable;ZLjava/util/List;)V", - at = @At( - value = "RETURN" - ) - ) - private void init(final CallbackInfo ci) { - this.noAllocOptional = Optional.of((PoiSection)(Object)this); - } + private final Optional noAllocOptional = Optional.of((PoiSection)(Object)this);; @Override public final boolean moonrise$isEmpty() { diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerLevelMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerLevelMixin.java index 0b7b063..6079404 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerLevelMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerLevelMixin.java @@ -83,10 +83,10 @@ public abstract class ServerLevelMixin extends Level implements ChunkSystemServe private EntityDataController entityDataController; @Unique - private PoiDataController poiDataController; + private final PoiDataController poiDataController = new PoiDataController((ServerLevel)(Object)this); @Unique - private ChunkDataController chunkDataController; + private final ChunkDataController chunkDataController = new ChunkDataController((ServerLevel)(Object)this); @Unique private ChunkTaskScheduler chunkTaskScheduler; @@ -115,8 +115,6 @@ public abstract class ServerLevelMixin extends Level implements ChunkSystemServe minecraftServer.forceSynchronousWrites() ) ); - this.poiDataController = new PoiDataController((ServerLevel)(Object)this); - this.chunkDataController = new ChunkDataController((ServerLevel)(Object)this); this.moonrise$setEntityLookup(new ServerEntityLookup((ServerLevel)(Object)this, ((ServerLevel)(Object)this).new EntityCallbacks())); this.chunkTaskScheduler = new ChunkTaskScheduler((ServerLevel)(Object)this, MoonriseCommon.WORKER_POOL); } diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerPlayerMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerPlayerMixin.java index f4e22a9..e2f06c7 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerPlayerMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ServerPlayerMixin.java @@ -26,21 +26,7 @@ public abstract class ServerPlayerMixin extends Player implements ChunkSystemSer private RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; @Unique - private RegionizedPlayerChunkLoader.ViewDistanceHolder viewDistanceHolder; - - /** - * @reason Initialise fields - * @author Spottedleaf - */ - @Inject( - method = "", - at = @At( - value = "RETURN" - ) - ) - private void init(final CallbackInfo ci) { - this.viewDistanceHolder = new RegionizedPlayerChunkLoader.ViewDistanceHolder(); - } + private RegionizedPlayerChunkLoader.ViewDistanceHolder viewDistanceHolder = new RegionizedPlayerChunkLoader.ViewDistanceHolder(); @Override public final boolean moonrise$isRealPlayer() { diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/BlockStateBaseMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/BlockStateBaseMixin.java index 2f2f0c7..ee5f7b2 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/BlockStateBaseMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/BlockStateBaseMixin.java @@ -48,7 +48,9 @@ public abstract class BlockStateBaseMixin extends StateHolder private static final AtomicInteger ID_GENERATOR = new AtomicInteger(); @Unique - private int id1, id2; + private final int id1 = HashCommon.murmurHash3(HashCommon.murmurHash3(ID_GENERATOR.getAndIncrement() + RANDOM_OFFSET) + RANDOM_OFFSET); + @Unique + private final int id2 = HashCommon.murmurHash3(HashCommon.murmurHash3(ID_GENERATOR.getAndIncrement() + RANDOM_OFFSET) + RANDOM_OFFSET); @Unique private boolean occludesFullBlock; @@ -72,18 +74,6 @@ public abstract class BlockStateBaseMixin extends StateHolder } } - @Inject( - method = "", - at = @At( - value = "RETURN" - ) - ) - private void init(final CallbackInfo ci) { - // note: murmurHash3 has an inverse, so the field is still unique - this.id1 = HashCommon.murmurHash3(HashCommon.murmurHash3(ID_GENERATOR.getAndIncrement() + RANDOM_OFFSET) + RANDOM_OFFSET); - this.id2 = HashCommon.murmurHash3(HashCommon.murmurHash3(ID_GENERATOR.getAndIncrement() + RANDOM_OFFSET) + RANDOM_OFFSET); - } - /** * @reason Init collision state only after cache is set up * @author Spottedleaf diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/DiscreteVoxelShapeMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/DiscreteVoxelShapeMixin.java index 46314b7..ebbd12c 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/DiscreteVoxelShapeMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/DiscreteVoxelShapeMixin.java @@ -12,7 +12,7 @@ import java.util.Arrays; @Mixin(DiscreteVoxelShape.class) public abstract class DiscreteVoxelShapeMixin implements CollisionDiscreteVoxelShape { - // ignore race conditions here: the shape is static, so it doesn't matter + // ignore race conditions on field read/write: the shape is static, so it doesn't matter @Unique private CachedShapeData cachedShapeData; diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/ExplosionMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/ExplosionMixin.java index 9015a77..6e5738a 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/ExplosionMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/collisions/ExplosionMixin.java @@ -80,7 +80,9 @@ public abstract class ExplosionMixin { @Final private boolean fire; - @Shadow @Final private DamageSource damageSource; + @Shadow + @Final private DamageSource damageSource; + @Unique private static final double[] CACHED_RAYS; diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/AcquirePoiMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/AcquirePoiMixin.java index 44a88db..9ca3e4e 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/AcquirePoiMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/AcquirePoiMixin.java @@ -36,7 +36,7 @@ public abstract class AcquirePoiMixin { final List, BlockPos>> ret = new ArrayList<>(); PoiAccess.findNearestPoiPositions( - poiManager, predicate, predicate2, blockPos, i, Double.MAX_VALUE, occup, true, 5, ret + poiManager, predicate, predicate2, blockPos, i, Double.MAX_VALUE, occup, PoiAccess.LOAD_FOR_SEARCHING, 5, ret ); return ret.stream(); diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/PoiManagerMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/PoiManagerMixin.java index d7d2760..26d7192 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/PoiManagerMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/poi_lookup/PoiManagerMixin.java @@ -39,8 +39,7 @@ public abstract class PoiManagerMixin extends SectionStorage { @Overwrite public Optional find(Predicate> typePredicate, Predicate posPredicate, BlockPos pos, int radius, PoiManager.Occupancy occupationStatus) { - // Diff from Paper: use load=true - BlockPos ret = PoiAccess.findAnyPoiPosition((PoiManager)(Object)this, typePredicate, posPredicate, pos, radius, occupationStatus, true); + BlockPos ret = PoiAccess.findAnyPoiPosition((PoiManager)(Object)this, typePredicate, posPredicate, pos, radius, occupationStatus, PoiAccess.LOAD_FOR_SEARCHING); return Optional.ofNullable(ret); } @@ -51,8 +50,7 @@ public abstract class PoiManagerMixin extends SectionStorage { @Overwrite public Optional findClosest(Predicate> typePredicate, BlockPos pos, int radius, PoiManager.Occupancy occupationStatus) { - // Diff from Paper: use load=true - BlockPos ret = PoiAccess.findClosestPoiDataPosition((PoiManager)(Object)this, typePredicate, null, pos, radius, radius * radius, occupationStatus, true); + BlockPos ret = PoiAccess.findClosestPoiDataPosition((PoiManager)(Object)this, typePredicate, null, pos, radius, radius * radius, occupationStatus, PoiAccess.LOAD_FOR_SEARCHING); return Optional.ofNullable(ret); } @@ -63,9 +61,8 @@ public abstract class PoiManagerMixin extends SectionStorage { @Overwrite public Optional, BlockPos>> findClosestWithType(Predicate> typePredicate, BlockPos pos, int radius, PoiManager.Occupancy occupationStatus) { - // Diff from Paper: use load=true return Optional.ofNullable(PoiAccess.findClosestPoiDataTypeAndPosition( - (PoiManager)(Object)this, typePredicate, null, pos, radius, radius * radius, occupationStatus, true + (PoiManager)(Object)this, typePredicate, null, pos, radius, radius * radius, occupationStatus, PoiAccess.LOAD_FOR_SEARCHING )); } @@ -76,8 +73,7 @@ public abstract class PoiManagerMixin extends SectionStorage { @Overwrite public Optional findClosest(Predicate> typePredicate, Predicate posPredicate, BlockPos pos, int radius, PoiManager.Occupancy occupationStatus) { - // Diff from Paper: use load=true - BlockPos ret = PoiAccess.findClosestPoiDataPosition((PoiManager)(Object)this, typePredicate, posPredicate, pos, radius, radius * radius, occupationStatus, true); + BlockPos ret = PoiAccess.findClosestPoiDataPosition((PoiManager)(Object)this, typePredicate, posPredicate, pos, radius, radius * radius, occupationStatus, PoiAccess.LOAD_FOR_SEARCHING); return Optional.ofNullable(ret); } @@ -88,9 +84,8 @@ public abstract class PoiManagerMixin extends SectionStorage { @Overwrite public Optional take(Predicate> typePredicate, BiPredicate, BlockPos> biPredicate, BlockPos pos, int radius) { - // Diff from Paper: use load=true final PoiRecord closest = PoiAccess.findClosestPoiDataRecord( - (PoiManager)(Object)this, typePredicate, biPredicate, pos, radius, radius * radius, PoiManager.Occupancy.HAS_SPACE, true + (PoiManager)(Object)this, typePredicate, biPredicate, pos, radius, radius * radius, PoiManager.Occupancy.HAS_SPACE, PoiAccess.LOAD_FOR_SEARCHING ); return Optional.ofNullable(closest).map(poi -> { poi.acquireTicket(); @@ -106,9 +101,8 @@ public abstract class PoiManagerMixin extends SectionStorage { public Optional getRandom(Predicate> typePredicate, Predicate positionPredicate, PoiManager.Occupancy occupationStatus, BlockPos pos, int radius, RandomSource random) { List list = new ArrayList<>(); - // Diff from Paper: use load=true PoiAccess.findAnyPoiRecords( - (PoiManager)(Object)this, typePredicate, positionPredicate, pos, radius, occupationStatus, true, Integer.MAX_VALUE, list + (PoiManager)(Object)this, typePredicate, positionPredicate, pos, radius, occupationStatus, PoiAccess.LOAD_FOR_SEARCHING, Integer.MAX_VALUE, list ); // the old method shuffled the list and then tried to find the first element in it that @@ -131,7 +125,7 @@ public abstract class PoiManagerMixin extends SectionStorage { List, BlockPos>> ret = new ArrayList<>(); PoiAccess.findAnyPoiPositions( - (PoiManager)(Object)this, predicate, predicate2, blockPos, i, occupancy, true, + (PoiManager)(Object)this, predicate, predicate2, blockPos, i, occupancy, PoiAccess.LOAD_FOR_SEARCHING, Integer.MAX_VALUE, ret ); @@ -149,7 +143,7 @@ public abstract class PoiManagerMixin extends SectionStorage { List, BlockPos>> ret = new ArrayList<>(); PoiAccess.findNearestPoiPositions( - (PoiManager)(Object)this, predicate, predicate2, blockPos, i, Double.MAX_VALUE, occupancy, true, Integer.MAX_VALUE, ret + (PoiManager)(Object)this, predicate, predicate2, blockPos, i, Double.MAX_VALUE, occupancy, PoiAccess.LOAD_FOR_SEARCHING, Integer.MAX_VALUE, ret ); return ret.stream(); diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/render/SectionRenderDispatcherMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/render/SectionRenderDispatcherMixin.java index ec1a9d8..68f94f5 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/render/SectionRenderDispatcherMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/render/SectionRenderDispatcherMixin.java @@ -40,5 +40,4 @@ public abstract class SectionRenderDispatcherMixin { } ); } - } diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/serverlist/ConnectionMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/serverlist/ConnectionMixin.java index d05709c..c7b4271 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/serverlist/ConnectionMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/serverlist/ConnectionMixin.java @@ -28,21 +28,7 @@ public abstract class ConnectionMixin extends SimpleChannelInboundHandler max ? max : val)); }