mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-04 16:34:44 +01:00
6e71f41536
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: 65247583f SPIGOT-7857: Improve ItemMeta block data deserialization 05d80500d SPIGOT-7857: Fix spurious internal NBT tag when deserializing BlockStateMeta cebb58e9a SPIGOT-7804: Fix written book serialization efcdd5d38 SPIGOT-7794: Cancelling InventoryItemMoveEvent destroys items b568ba572 SPIGOT-7789: Fix NPE in CraftMetaFirework applyToItem f057cf449 Remove outdated build delay Spigot Changes: f6a48054 SPIGOT-7835: Fix issue with custom hopper settings bb63b137 Rebuild patches e1142b4d Rebuild patches
63 lines
2.9 KiB
Diff
63 lines
2.9 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/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
|
|
index ee58c67cb2bd78159cce19ec75f13dc6168a0e7a..149cfb0587299f72fcfddf395fb71b70438986c1 100644
|
|
--- a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
|
|
+++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
|
|
@@ -1048,6 +1048,11 @@ public class RegionizedPlayerChunkLoader {
|
|
|
|
// now all tickets should be removed, which is all of our external state
|
|
}
|
|
+
|
|
+ // For external checks
|
|
+ public it.unimi.dsi.fastutil.longs.LongOpenHashSet getSentChunksRaw() {
|
|
+ return this.sentChunks;
|
|
+ }
|
|
}
|
|
|
|
// TODO rebase into util patch
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index 9aec6efef4094bbdb920101df1a7a5a2a6070dde..815bcfd90218b932ca004c0f18db8b4de5d35c19 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -3455,6 +3455,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().chunkLoader.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().chunkLoader.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().chunkLoader.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().chunkLoader.getSentChunksRaw().contains(chunkKey);
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
public Player.Spigot spigot()
|
|
{
|
|
return this.spigot;
|