diff --git a/src/main/java/com/ishland/vmp/mixins/chunkloading/portals/MixinServerPlayerEntity.java b/src/main/java/com/ishland/vmp/mixins/chunkloading/portals/MixinServerPlayerEntity.java deleted file mode 100644 index 5f7b647..0000000 --- a/src/main/java/com/ishland/vmp/mixins/chunkloading/portals/MixinServerPlayerEntity.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ishland.vmp.mixins.chunkloading.portals; - -import com.ishland.vmp.common.chunkloading.IEntityPortalInterface; -import com.mojang.authlib.GameProfile; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(ServerPlayerEntity.class) -public abstract class MixinServerPlayerEntity extends PlayerEntity implements IEntityPortalInterface { - - public MixinServerPlayerEntity(World world, BlockPos pos, float yaw, GameProfile profile) { - super(world, pos, yaw, profile); - } - -// @Unique -// @Nullable -// // actually overrides -// public CompletionStage getTeleportTargetAtAsync(ServerWorld destination) { -// return IEntityPortalInterface.super.getTeleportTargetAtAsync(destination).thenApply(teleportTarget -> { -// if (teleportTarget != null && this.world.getRegistryKey() == World.OVERWORLD && destination.getRegistryKey() == World.END) { -// Vec3d vec3d = teleportTarget.position.add(0.0, -1.0, 0.0); -// return new TeleportTarget(vec3d, Vec3d.ZERO, 90.0F, 0.0F); -// } else { -// return teleportTarget; -// } -// }); -// } - -} diff --git a/src/main/java/com/ishland/vmp/mixins/ticketsystem/ticketpropagator/MixinChunkTicketManager.java b/src/main/java/com/ishland/vmp/mixins/ticketsystem/ticketpropagator/MixinChunkTicketManager.java index e844c1b..31cf4ee 100644 --- a/src/main/java/com/ishland/vmp/mixins/ticketsystem/ticketpropagator/MixinChunkTicketManager.java +++ b/src/main/java/com/ishland/vmp/mixins/ticketsystem/ticketpropagator/MixinChunkTicketManager.java @@ -7,6 +7,7 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import it.unimi.dsi.fastutil.longs.LongSet; +import it.unimi.dsi.fastutil.objects.ObjectArrayFIFOQueue; import it.unimi.dsi.fastutil.objects.ObjectIterator; import net.minecraft.server.world.ChunkHolder; import net.minecraft.server.world.ChunkTaskPrioritySystem; @@ -65,7 +66,7 @@ protected static int getLevel(SortedArraySet> sortedArraySet) { protected io.papermc.paper.util.misc.Delayed8WayDistancePropagator2D ticketLevelPropagator; @Unique - private ArrayList pendingChunkHolderUpdates; + private ObjectArrayFIFOQueue pendingChunkHolderUpdates; // Paper distance map propagates level from max to 0 while vanilla // one propagate from 0 to max @@ -103,7 +104,7 @@ protected void rehash(int newN) { this.ticketLevelUpdates.putAndMoveToLast(coordinate, convertBetweenTicketLevels(newLevel)); } ); - this.pendingChunkHolderUpdates = new ArrayList<>(); + this.pendingChunkHolderUpdates = new ObjectArrayFIFOQueue<>(); } @Redirect(method = {"purge", "addTicket(JLnet/minecraft/server/world/ChunkTicket;)V", "removeTicket(JLnet/minecraft/server/world/ChunkTicket;)V", "removePersistentTickets"}, at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ChunkTicketManager$TicketDistanceLevelPropagator;updateLevel(JIZ)V"), require = 3, expect = 3) @@ -160,13 +161,12 @@ public int tickTickets(ChunkTicketManager.TicketDistanceLevelPropagator __, int continue; } - this.pendingChunkHolderUpdates.add(holder); + this.pendingChunkHolderUpdates.enqueue(holder); } - for (ChunkHolder holder : this.pendingChunkHolderUpdates) { - ((IChunkHolder) holder).invokeTick1(threadedAnvilChunkStorage, this.mainThreadExecutor); + while (!this.pendingChunkHolderUpdates.isEmpty()) { + ((IChunkHolder) this.pendingChunkHolderUpdates.dequeue()).invokeTick1(threadedAnvilChunkStorage, this.mainThreadExecutor); } - this.pendingChunkHolderUpdates.clear(); return hasUpdates ? distance - 1 : distance; } diff --git a/src/main/resources/vmp.mixins.json b/src/main/resources/vmp.mixins.json index 5d601f1..866191d 100644 --- a/src/main/resources/vmp.mixins.json +++ b/src/main/resources/vmp.mixins.json @@ -25,7 +25,6 @@ "chunkloading.commands.MixinSpreadPlayersCommand", "chunkloading.commands.MixinTeleportCommand", "chunkloading.portals.MixinEntity", - "chunkloading.portals.MixinServerPlayerEntity", "chunksending.MixinThreadedAnvilChunkStorage", "chunksending.c2me_notickvd_compat.MixinNoTickChunkSendingInterceptor", "entity.item.MixinEntity",