diff --git a/nms-patches/net/minecraft/server/level/ChunkMapDistance.patch b/nms-patches/net/minecraft/server/level/ChunkMapDistance.patch index 100ddc4c4..274cbce89 100644 --- a/nms-patches/net/minecraft/server/level/ChunkMapDistance.patch +++ b/nms-patches/net/minecraft/server/level/ChunkMapDistance.patch @@ -56,7 +56,7 @@ } if (arraysetsorted.isEmpty()) { -@@ -188,16 +205,29 @@ +@@ -188,6 +205,7 @@ } this.ticketTracker.update(i, getTicketLevelAt(arraysetsorted), false); @@ -64,32 +64,43 @@ } public void addTicket(TicketType tickettype, ChunkCoordIntPair chunkcoordintpair, int i, T t0) { -- this.addTicket(chunkcoordintpair.toLong(), new Ticket<>(tickettype, i, t0)); -+ // CraftBukkit start -+ this.addTicketAtLevel(tickettype, chunkcoordintpair, i, t0); -+ } -+ -+ public boolean addTicketAtLevel(TicketType ticketType, ChunkCoordIntPair chunkcoordintpair, int level, T identifier) { -+ return this.addTicket(chunkcoordintpair.toLong(), new Ticket<>(ticketType, level, identifier)); -+ // CraftBukkit end - } - - public void removeTicket(TicketType tickettype, ChunkCoordIntPair chunkcoordintpair, int i, T t0) { -- Ticket ticket = new Ticket<>(tickettype, i, t0); -+ // CraftBukkit start -+ this.removeTicketAtLevel(tickettype, chunkcoordintpair, i, t0); -+ } - -- this.removeTicket(chunkcoordintpair.toLong(), ticket); -+ public boolean removeTicketAtLevel(TicketType ticketType, ChunkCoordIntPair chunkcoordintpair, int level, T identifier) { -+ Ticket ticket = new Ticket<>(ticketType, level, identifier); -+ -+ return this.removeTicket(chunkcoordintpair.toLong(), ticket); -+ // CraftBukkit end +@@ -201,19 +219,33 @@ } public void addRegionTicket(TicketType tickettype, ChunkCoordIntPair chunkcoordintpair, int i, T t0) { -@@ -252,6 +282,7 @@ ++ // CraftBukkit start ++ addRegionTicketAtDistance(tickettype, chunkcoordintpair, i, t0); ++ } ++ ++ public boolean addRegionTicketAtDistance(TicketType tickettype, ChunkCoordIntPair chunkcoordintpair, int i, T t0) { ++ // CraftBukkit end + Ticket ticket = new Ticket<>(tickettype, 33 - i, t0); + long j = chunkcoordintpair.toLong(); + +- this.addTicket(j, ticket); ++ boolean added = this.addTicket(j, ticket); // CraftBukkit + this.tickingTicketsTracker.addTicket(j, ticket); ++ return added; // CraftBukkit + } + + public void removeRegionTicket(TicketType tickettype, ChunkCoordIntPair chunkcoordintpair, int i, T t0) { ++ // CraftBukkit start ++ removeRegionTicketAtDistance(tickettype, chunkcoordintpair, i, t0); ++ } ++ ++ public boolean removeRegionTicketAtDistance(TicketType tickettype, ChunkCoordIntPair chunkcoordintpair, int i, T t0) { ++ // CraftBukkit end + Ticket ticket = new Ticket<>(tickettype, 33 - i, t0); + long j = chunkcoordintpair.toLong(); + +- this.removeTicket(j, ticket); ++ boolean removed = this.removeTicket(j, ticket); // CraftBukkit + this.tickingTicketsTracker.removeTicket(j, ticket); ++ return removed; // CraftBukkit + } + + private ArraySetSorted> getTickets(long i) { +@@ -252,6 +284,7 @@ ChunkCoordIntPair chunkcoordintpair = sectionposition.chunk(); long i = chunkcoordintpair.toLong(); ObjectSet objectset = (ObjectSet) this.playersPerChunk.get(i); @@ -97,7 +108,7 @@ objectset.remove(entityplayer); if (objectset.isEmpty()) { -@@ -347,6 +378,26 @@ +@@ -347,6 +380,26 @@ return this.tickingTicketsTracker; } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index d5a328df4..cce1e7f4b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -365,7 +365,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { ChunkMapDistance chunkDistanceManager = this.world.getChunkSource().chunkMap.distanceManager; - if (chunkDistanceManager.addTicketAtLevel(TicketType.PLUGIN_TICKET, new ChunkCoordIntPair(x, z), 31, plugin)) { // keep in-line with force loading, add at level 31 + if (chunkDistanceManager.addRegionTicketAtDistance(TicketType.PLUGIN_TICKET, new ChunkCoordIntPair(x, z), 2, plugin)) { // keep in-line with force loading, add at level 31 this.getChunkAt(x, z); // ensure loaded return true; } @@ -378,7 +378,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { Preconditions.checkNotNull(plugin, "null plugin"); ChunkMapDistance chunkDistanceManager = this.world.getChunkSource().chunkMap.distanceManager; - return chunkDistanceManager.removeTicketAtLevel(TicketType.PLUGIN_TICKET, new ChunkCoordIntPair(x, z), 31, plugin); // keep in-line with force loading, remove at level 31 + return chunkDistanceManager.removeRegionTicketAtDistance(TicketType.PLUGIN_TICKET, new ChunkCoordIntPair(x, z), 2, plugin); // keep in-line with force loading, remove at level 31 } @Override