mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 12:48:53 +01:00
64828f3a60
Using an unbound LinkedBlockingQueue means you *have* to set core and max core thread pool size the same, as they will never go above the minimum pool size by just passing them through. So this fixes the async command executor pool to actually use 2 threads, and also cleans up other usage to be explicitly "fixed" thread pool sizes, and splits off one more in Minecraft's Util class
46 lines
2.1 KiB
Diff
46 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Flo0 <flo.roma@web.de>
|
|
Date: Mon, 8 Apr 2024 16:43:16 +0200
|
|
Subject: [PATCH] API for checking sent chunks
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index e1f20b5b9ebc5d9870136aa2c77d887094bd4b6e..7aa3ba20f63be469ec82637e79f864262e41f3c6 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -3500,6 +3500,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
}
|
|
// Paper end
|
|
|
|
+ // Paper start - Add chunk view API
|
|
+ @Override
|
|
+ public Set<java.lang.Long> getSentChunkKeys() {
|
|
+ org.spigotmc.AsyncCatcher.catchOp("accessing sent chunks");
|
|
+ return it.unimi.dsi.fastutil.longs.LongSets.unmodifiable(
|
|
+ this.getHandle().moonrise$getChunkLoader().getSentChunksRaw().clone()
|
|
+ );
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public Set<org.bukkit.Chunk> getSentChunks() {
|
|
+ org.spigotmc.AsyncCatcher.catchOp("accessing sent chunks");
|
|
+ final it.unimi.dsi.fastutil.longs.LongOpenHashSet rawChunkKeys = this.getHandle().moonrise$getChunkLoader().getSentChunksRaw();
|
|
+ final it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<org.bukkit.Chunk> chunks = new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(rawChunkKeys.size());
|
|
+ final org.bukkit.World world = this.getWorld();
|
|
+
|
|
+ final it.unimi.dsi.fastutil.longs.LongIterator iter = this.getHandle().moonrise$getChunkLoader().getSentChunksRaw().longIterator();
|
|
+ while (iter.hasNext()) chunks.add(world.getChunkAt(iter.nextLong(), false));
|
|
+
|
|
+ return it.unimi.dsi.fastutil.objects.ObjectSets.unmodifiable(chunks);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isChunkSent(final long chunkKey) {
|
|
+ org.spigotmc.AsyncCatcher.catchOp("accessing sent chunks");
|
|
+ return this.getHandle().moonrise$getChunkLoader().getSentChunksRaw().contains(chunkKey);
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
public Player.Spigot spigot()
|
|
{
|
|
return this.spigot;
|