9
0
mirror of https://github.com/SparklyPower/SparklyPaper.git synced 2025-12-19 15:09:27 +00:00

Fix merge conflicts

This commit is contained in:
MrPowerGamerBR
2024-10-01 23:27:54 -03:00
parent 40d189ffaa
commit 8c40f738c7
9 changed files with 68 additions and 67 deletions

View File

@@ -33,10 +33,10 @@ index be212b4fbeabab32a4dab6ae554768c368efaa88..fc885e551b1e8393569ec1391ee3decd
/** /**
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 54704da43cf9c429f3914f0580246dde99aa93c0..04ba1fa0eea60a8f01c89942cc8f3f8250192a72 100644 index de469f32dd9a01e0e2fde016044a783dde0c5b98..ea13aabe6e8cdf07698f96dc5264531e8a254529 100644
--- a/src/main/java/org/bukkit/Material.java --- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java
@@ -3676,6 +3676,22 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla @@ -3678,6 +3678,22 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
BIG_DRIPLEAF_STEM(13167, Dripleaf.class), BIG_DRIPLEAF_STEM(13167, Dripleaf.class),
POTTED_AZALEA_BUSH(20430), POTTED_AZALEA_BUSH(20430),
POTTED_FLOWERING_AZALEA_BUSH(10609), POTTED_FLOWERING_AZALEA_BUSH(10609),

View File

@@ -102,7 +102,7 @@ index 5b7245cd99593ee90e17c97e0104f3aba9ae05ea..03432d084f8ed0cb7716d612b35f7409
itemstack.consume(1, player); itemstack.consume(1, player);
} }
diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee821caab7b5 100644 index 6794466051dd4b725d579b2136c37844995a648e..95b2078d24c83e56760bc8be404df603a15b37c5 100644
--- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
+++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
@@ -80,6 +80,16 @@ public class MapItemSavedData extends SavedData { @@ -80,6 +80,16 @@ public class MapItemSavedData extends SavedData {
@@ -122,15 +122,16 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82
// CraftBukkit start // CraftBukkit start
public final CraftMapView mapView; public final CraftMapView mapView;
@@ -352,6 +362,7 @@ public class MapItemSavedData extends SavedData { @@ -351,7 +361,7 @@ public class MapItemSavedData extends SavedData {
--this.trackedDecorationCount;
} }
this.setDecorationsDirty(); - if (mapicon != null) this.setDecorationsDirty(); // Paper - only mark dirty if a change occurs
+ if (mapicon != null && mapicon.renderOnFrame()) this.dirtyFrameDecorations = true; // Paper + if (mapicon != null && mapicon.renderOnFrame()) this.dirtyFrameDecorations = true; // Paper
} }
public static void addTargetDecoration(ItemStack stack, BlockPos pos, String id, Holder<MapDecorationType> decorationType) { public static void addTargetDecoration(ItemStack stack, BlockPos pos, String id, Holder<MapDecorationType> decorationType) {
@@ -433,6 +444,7 @@ public class MapItemSavedData extends SavedData { @@ -433,6 +443,7 @@ public class MapItemSavedData extends SavedData {
} }
this.setDecorationsDirty(); this.setDecorationsDirty();
@@ -138,7 +139,7 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82
} }
} }
@@ -446,6 +458,20 @@ public class MapItemSavedData extends SavedData { @@ -446,6 +457,20 @@ public class MapItemSavedData extends SavedData {
public void setColorsDirty(int x, int z) { public void setColorsDirty(int x, int z) {
this.setDirty(); this.setDirty();
@@ -159,7 +160,7 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82
Iterator iterator = this.carriedBy.iterator(); Iterator iterator = this.carriedBy.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@@ -528,6 +554,7 @@ public class MapItemSavedData extends SavedData { @@ -528,6 +553,7 @@ public class MapItemSavedData extends SavedData {
public void removedFromFrame(BlockPos pos, int id) { public void removedFromFrame(BlockPos pos, int id) {
this.removeDecoration(MapItemSavedData.getFrameKey(id)); this.removeDecoration(MapItemSavedData.getFrameKey(id));
this.frameMarkers.remove(MapFrame.frameId(pos)); this.frameMarkers.remove(MapFrame.frameId(pos));
@@ -167,7 +168,7 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82
} }
public boolean updateColor(int x, int z, byte color) { public boolean updateColor(int x, int z, byte color) {
@@ -589,6 +616,93 @@ public class MapItemSavedData extends SavedData { @@ -589,6 +615,93 @@ public class MapItemSavedData extends SavedData {
return "frame-" + id; return "frame-" + id;
} }

View File

@@ -73,10 +73,10 @@ index c03608fec96b51e1867f43d8f42e5aefb1520e46..15b21fa3907db1b77ed5b5d1050a37f4
throw new IllegalStateException("Ticking retired scheduler"); throw new IllegalStateException("Ticking retired scheduler");
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 23ddd26af762c1cd7fb3920669abb96b3213ab37..7f2e25b2ebb8fb698a4adb12d77670e126549405 100644 index 696d075ca2883f3c37e35f983c4d020e5db89d16..1a7daaebdfd616e1417eb6aade727ca23fa77b18 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -323,7 +323,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -322,7 +322,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public volatile Thread shutdownThread; // Paper public volatile Thread shutdownThread; // Paper
public volatile boolean abnormalExit = false; // Paper public volatile boolean abnormalExit = false; // Paper
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
@@ -86,7 +86,7 @@ index 23ddd26af762c1cd7fb3920669abb96b3213ab37..7f2e25b2ebb8fb698a4adb12d77670e1
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) { public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
AtomicReference<S> atomicreference = new AtomicReference(); AtomicReference<S> atomicreference = new AtomicReference();
Thread thread = new ca.spottedleaf.moonrise.common.util.TickThread(() -> { // Paper - rewrite chunk system Thread thread = new ca.spottedleaf.moonrise.common.util.TickThread(() -> { // Paper - rewrite chunk system
@@ -1727,6 +1728,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1725,6 +1726,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper
// Paper start - Folia scheduler API // Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
@@ -105,7 +105,7 @@ index 23ddd26af762c1cd7fb3920669abb96b3213ab37..7f2e25b2ebb8fb698a4adb12d77670e1
getAllLevels().forEach(level -> { getAllLevels().forEach(level -> {
for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system
if (entity.isRemoved()) { if (entity.isRemoved()) {
@@ -1738,6 +1751,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1736,6 +1749,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
} }
}); });
@@ -115,7 +115,7 @@ index 23ddd26af762c1cd7fb3920669abb96b3213ab37..7f2e25b2ebb8fb698a4adb12d77670e1
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
this.profiler.push("commandFunctions"); this.profiler.push("commandFunctions");
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index cd789c235acf740ec29c30b180e7fbe1a140caa9..e3da31426e5fe2cf3b0c3cc6b665503cc88665a5 100644 index 89c8713d2c2206d1b0d8c0a392c9d13b3e736f0c..0495941a51c1dafa796c7f08a77d34bc377d3774 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -71,7 +71,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -71,7 +71,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {

View File

@@ -10,10 +10,10 @@ Caches when Bat's spooky season starts and ends, and when Skeleton and Zombies h
Avoids unnecessary date checks, even tho that this shouldn't really improve performance that much... unless you have a lot of bats/zombies/skeletons spawning. Avoids unnecessary date checks, even tho that this shouldn't really improve performance that much... unless you have a lot of bats/zombies/skeletons spawning.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 7f2e25b2ebb8fb698a4adb12d77670e126549405..b198e2b7a1a96972ecf761e1713085d618aadead 100644 index 1a7daaebdfd616e1417eb6aade727ca23fa77b18..3ad7a0a6b698ed2ff040fe1015b59e897a173811 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -324,7 +324,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -323,7 +323,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public volatile boolean abnormalExit = false; // Paper public volatile boolean abnormalExit = false; // Paper
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
public final Set<Entity> entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async) public final Set<Entity> entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async)
@@ -89,10 +89,10 @@ index 3b5cf6ffb74d11bea5eb21bd66d679734ff5000c..97bdeb56fee6fb4ae924973730e34dbf
this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F;
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 2280004638fd19ed018cb3e77d53a018b34ec516..fb15112f920174d7ea6a3bd683418772c0910780 100644 index 2b43337ac63d051718a2074fcc46e128a1d65129..896e253f349b0cf21fda0d798aca8a70942c8f86 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -553,10 +553,11 @@ public class Zombie extends Monster { @@ -550,10 +550,11 @@ public class Zombie extends Monster {
if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {
LocalDate localdate = LocalDate.now(); LocalDate localdate = LocalDate.now();

View File

@@ -14,10 +14,10 @@ This seems stupid, but it does seem that it improves the performance a bit, and
We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice.
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 1e0a6e5a3c907ab55ee6f2780a7d43bd455f2b7b..15bc677119ae394e0334e2570bc01d774fe1a264 100644 index af8cb316ac169aa8d98a88765b85bb013b9ba961..250f8ba3c77830ea0978fdeeb7748336ca150939 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java --- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1257,7 +1257,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -1258,7 +1258,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Paper end - Configurable entity tracking range by Y // Paper end - Configurable entity tracking range by Y
// CraftBukkit start - respect vanish API // CraftBukkit start - respect vanish API
@@ -27,7 +27,7 @@ index 1e0a6e5a3c907ab55ee6f2780a7d43bd455f2b7b..15bc677119ae394e0334e2570bc01d77
} }
// CraftBukkit end // CraftBukkit end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index a0d5082590ee03060f0dbb4770d196efc316c328..00c6e2ab7e79750a7eef8d25c03caa787b011b14 100644 index 42d7660efe5baa6f796f2a7606686c765b6f2478..d047114737164e12491223bc68a141efc1c389fe 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -200,7 +200,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -200,7 +200,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -39,7 +39,7 @@ index a0d5082590ee03060f0dbb4770d196efc316c328..00c6e2ab7e79750a7eef8d25c03caa78
private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player
private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>(); private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>();
private int hash = 0; private int hash = 0;
@@ -2248,9 +2248,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2252,9 +2252,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public boolean canSee(org.bukkit.entity.Entity entity) { public boolean canSee(org.bukkit.entity.Entity entity) {

View File

@@ -56,10 +56,10 @@ index 8b5293b0c696ef21d0101493ffa41b60bf0bc86b..601198a33adb29316b0617d5390d1620
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index b198e2b7a1a96972ecf761e1713085d618aadead..1633d2b2816d3cf958f13d2613812f582b2d1591 100644 index 3ad7a0a6b698ed2ff040fe1015b59e897a173811..f91374c44c392f9d28799fbf3538f99258d727b4 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1819,7 +1819,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1817,7 +1817,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
try { try {
worldserver.timings.doTick.startTiming(); // Spigot worldserver.timings.doTick.startTiming(); // Spigot
@@ -77,7 +77,7 @@ index b198e2b7a1a96972ecf761e1713085d618aadead..1633d2b2816d3cf958f13d2613812f58
} catch (Throwable throwable) { } catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world"); CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 2fe9d9b38c01d04416843fdd48d3e33899b7de63..f162a3639f55d20bb691e34b60a7c8c55a99daf6 100644 index f9abf63e12ea930275121b470e4e4906cff0fc12..7d3d46d693a0d0dd1c1932c29b18e98555d4e3da 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -497,6 +497,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -497,6 +497,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Add CraftItemRecipeEvent
Used when a player OR a crafter block crafts an item, as an alternative to PrepareItemCraftEvent and CraftItemEvent, because both events are not triggered when a item is crafted from a crafter Used when a player OR a crafter block crafts an item, as an alternative to PrepareItemCraftEvent and CraftItemEvent, because both events are not triggered when a item is crafted from a crafter
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index b13057c0792067cc6b0abdf0d64a9be2cc9389a4..56911919c531d2a4d5e89fbc628160617295b0bb 100644 index befeaac4786760f6847a5945da2296a3e68dbb17..d918f1fc104795be2a04c1f57265d27e20e9df09 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3180,6 +3180,21 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -3192,6 +3192,21 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
} else { } else {
event = new CraftItemEvent(recipe, inventory, type, packet.getSlotNum(), click, action); event = new CraftItemEvent(recipe, inventory, type, packet.getSlotNum(), click, action);
} }
@@ -50,7 +50,7 @@ index deb5b4fab94618c08a51e432c33e49b1627bd717..703fbeafc78889cbfea292847678207d
world.levelEvent(1050, pos, 0); world.levelEvent(1050, pos, 0);
} else { } else {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 44bec90466967933b5322a8ca8b5e86e0c96d443..6d166a6662ed2badfdc9cb42ca4374dc8d640404 100644 index b2760b9a66c1bcb848d43582c3a913c6fb43102b..beddb6a64e0ba5112d369794a066ca6b9f2ac303 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1467,6 +1467,24 @@ public class CraftEventFactory { @@ -1467,6 +1467,24 @@ public class CraftEventFactory {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Allow item version downgrades
The server WON'T convert the item data from a newer version to an older version, so proceed with caution The server WON'T convert the item data from a newer version to an older version, so proceed with caution
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 28dbe30a98a6730839949bc9a6a90b78619ff84d..48e0c6fec6f847ce030ec79655d866be47364c73 100644 index f78744b6d6075f584d9a88612661854f3f04aed1..395f98cf320e40cae0c2561bcc243e503def2dcd 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -75,6 +75,7 @@ import org.bukkit.potion.PotionType; @@ -75,6 +75,7 @@ import org.bukkit.potion.PotionType;
@@ -26,7 +26,7 @@ index 28dbe30a98a6730839949bc9a6a90b78619ff84d..48e0c6fec6f847ce030ec79655d866be
// Fastpath up to date materials // Fastpath up to date materials
if (version == this.getDataVersion()) { if (version == this.getDataVersion()) {
@@ -559,7 +560,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @@ -588,7 +589,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
throw new RuntimeException(ex); throw new RuntimeException(ex);
} }
int dataVersion = compound.getInt("DataVersion"); int dataVersion = compound.getInt("DataVersion");

View File

@@ -512,10 +512,10 @@ index cb308808906a8cdb127df8284e106e00553473ca..323d41e2bed5e83a26dfe4c88dfce7ed
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 1633d2b2816d3cf958f13d2613812f582b2d1591..2a17896600e4405e4b533e8cb1d3caa389a7d059 100644 index f91374c44c392f9d28799fbf3538f99258d727b4..6b7a6feba1508b9ec192c1eadc753b407f3a10f9 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -325,6 +325,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -324,6 +324,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
public final Set<Entity> entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async) public final Set<Entity> entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async)
public net.sparklypower.sparklypaper.HalloweenManager halloweenManager = new net.sparklypower.sparklypaper.HalloweenManager(); // SparklyPaper - Spooky month optimizations public net.sparklypower.sparklypaper.HalloweenManager halloweenManager = new net.sparklypower.sparklypaper.HalloweenManager(); // SparklyPaper - Spooky month optimizations
@@ -525,7 +525,7 @@ index 1633d2b2816d3cf958f13d2613812f582b2d1591..2a17896600e4405e4b533e8cb1d3caa3
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) { public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
AtomicReference<S> atomicreference = new AtomicReference(); AtomicReference<S> atomicreference = new AtomicReference();
@@ -1795,52 +1798,65 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1793,52 +1796,65 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
Iterator iterator = this.getAllLevels().iterator(); // Paper - Throw exception on world create while being ticked; move down Iterator iterator = this.getAllLevels().iterator(); // Paper - Throw exception on world create while being ticked; move down
@@ -674,7 +674,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e395ff78b651f74f1582b8ae581908f5
// Paper end - rewrite chunk system // Paper end - rewrite chunk system
} }
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index f162a3639f55d20bb691e34b60a7c8c55a99daf6..0090b494cc86202a197a0673b0ec1748e085c2c6 100644 index 7d3d46d693a0d0dd1c1932c29b18e98555d4e3da..1b8981f8121389adfb795fef8d70d9577dd9a031 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -222,6 +222,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -222,6 +222,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -737,7 +737,7 @@ index f162a3639f55d20bb691e34b60a7c8c55a99daf6..0090b494cc86202a197a0673b0ec1748
entity.generation = false; // Paper - Don't fire sync event during generation; Reset flag if it was added during a ServerLevel generation process entity.generation = false; // Paper - Don't fire sync event during generation; Reset flag if it was added during a ServerLevel generation process
// Paper start - extra debug info // Paper start - extra debug info
if (entity.valid) { if (entity.valid) {
@@ -2427,6 +2430,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -2429,6 +2432,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
public void close() throws IOException { public void close() throws IOException {
super.close(); super.close();
// Paper - rewrite chunk system // Paper - rewrite chunk system
@@ -746,7 +746,7 @@ index f162a3639f55d20bb691e34b60a7c8c55a99daf6..0090b494cc86202a197a0673b0ec1748
@Override @Override
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 6c280abdef5f80b668d6090f9d35283a33e21e0c..140615c669c3e50cba9985d8ec2d2d366029ce06 100644 index c396580a9cfd86ff261bed439bb4662ae88010b5..d20178a37b0bdd2e8acfa22adf78682e7fd0f6b1 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -332,6 +332,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -332,6 +332,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -773,7 +773,7 @@ index 6c280abdef5f80b668d6090f9d35283a33e21e0c..140615c669c3e50cba9985d8ec2d2d36
// CraftBukkit start // CraftBukkit start
/* /*
this.isChangingDimension = true; this.isChangingDimension = true;
@@ -1723,6 +1726,12 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1727,6 +1730,12 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
return OptionalInt.empty(); return OptionalInt.empty();
} else { } else {
// CraftBukkit start // CraftBukkit start
@@ -786,7 +786,7 @@ index 6c280abdef5f80b668d6090f9d35283a33e21e0c..140615c669c3e50cba9985d8ec2d2d36
this.containerMenu = container; this.containerMenu = container;
if (!this.isImmobile()) this.connection.send(new ClientboundOpenScreenPacket(container.containerId, container.getType(), Objects.requireNonNullElseGet(title, container::getTitle))); // Paper - Add titleOverride to InventoryOpenEvent if (!this.isImmobile()) this.connection.send(new ClientboundOpenScreenPacket(container.containerId, container.getType(), Objects.requireNonNullElseGet(title, container::getTitle))); // Paper - Add titleOverride to InventoryOpenEvent
// CraftBukkit end // CraftBukkit end
@@ -1786,6 +1795,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1790,6 +1799,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
} }
@Override @Override
public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) { public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
@@ -799,7 +799,7 @@ index 6c280abdef5f80b668d6090f9d35283a33e21e0c..140615c669c3e50cba9985d8ec2d2d36
// Paper end - Inventory close reason // Paper end - Inventory close reason
this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId)); this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId));
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 0368d6ba9cc9fe557d3c7172a87a7a5b15445e47..d9dd9f7902dae41b05ba604a829fbe81a8f69e38 100644 index c13922d2fb1c15f895b14d4cb6d5379b59ea1ef8..3cca73f56dfce320fee56146d7fb91ec0837e9a8 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -137,7 +137,7 @@ public abstract class PlayerList { @@ -137,7 +137,7 @@ public abstract class PlayerList {
@@ -851,7 +851,7 @@ index 0368d6ba9cc9fe557d3c7172a87a7a5b15445e47..d9dd9f7902dae41b05ba604a829fbe81
entityplayer1.connection = entityplayer.connection; entityplayer1.connection = entityplayer.connection;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index e0827d8bb3fa17d4f590a5342ff41a514f623e68..3d1558d6f40892a1998dd6ea06f86dfd958b0d03 100644 index 4b54d0ea31062972e68ee8fafe3cfaf68f65a5cd..d9cf7b115e1e8492229a45a71ed9259e5b6f8ba3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -851,7 +851,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -851,7 +851,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -863,7 +863,7 @@ index e0827d8bb3fa17d4f590a5342ff41a514f623e68..3d1558d6f40892a1998dd6ea06f86dfd
this.handlePortal(); this.handlePortal();
} }
} }
@@ -3992,6 +3992,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3996,6 +3996,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.teleportPassengers(); this.teleportPassengers();
this.setYHeadRot(yaw); this.setYHeadRot(yaw);
} else { } else {
@@ -904,7 +904,7 @@ index 647a4601deace52f8d855f512a73671f82b4762a..5b09aeb13537bb59017160cb4f4bffcc
} }
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index b6a2f3e4f22f36e75a1630bd456c2f471edbb398..8a480c92536b33d91b0399cc776ef46bfccb2a3c 100644 index eec0ec43590be7e8ae5b530a7404c98b5e23cb53..e8f20a0f2c36bac5a00b1f57b5547bf3c340dbfe 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java --- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -442,8 +442,8 @@ public final class ItemStack implements DataComponentHolder { @@ -442,8 +442,8 @@ public final class ItemStack implements DataComponentHolder {
@@ -932,7 +932,7 @@ index d524fcc191cb95d6ec7f12ae7fceeb8077bb08fc..451e5719613fc31bacf49c37978d4e49
} }
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629aa8910e2b 100644 index 7a50e3ecebee3c09052a52bb70504618bb3952e7..f1a2ff5252f19d8e69ab1e4200283a5049dc1e67 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -174,6 +174,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -174,6 +174,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@@ -969,7 +969,7 @@ index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629a
} }
// Paper start - Option to prevent armor stands from doing entity lookups // Paper start - Option to prevent armor stands from doing entity lookups
@Override @Override
@@ -1542,6 +1544,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -1559,6 +1561,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@Nullable @Nullable
public BlockEntity getBlockEntity(BlockPos blockposition, boolean validate) { public BlockEntity getBlockEntity(BlockPos blockposition, boolean validate) {
@@ -977,7 +977,7 @@ index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629a
// Paper start - Perf: Optimize capturedTileEntities lookup // Paper start - Perf: Optimize capturedTileEntities lookup
net.minecraft.world.level.block.entity.BlockEntity blockEntity; net.minecraft.world.level.block.entity.BlockEntity blockEntity;
if (!this.capturedTileEntities.isEmpty() && (blockEntity = this.capturedTileEntities.get(blockposition)) != null) { if (!this.capturedTileEntities.isEmpty() && (blockEntity = this.capturedTileEntities.get(blockposition)) != null) {
@@ -1553,6 +1556,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -1570,6 +1573,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
} }
public void setBlockEntity(BlockEntity blockEntity) { public void setBlockEntity(BlockEntity blockEntity) {
@@ -985,7 +985,7 @@ index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629a
BlockPos blockposition = blockEntity.getBlockPos(); BlockPos blockposition = blockEntity.getBlockPos();
if (!this.isOutsideBuildHeight(blockposition)) { if (!this.isOutsideBuildHeight(blockposition)) {
@@ -1638,6 +1642,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -1655,6 +1659,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@Override @Override
public List<Entity> getEntities(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate) { public List<Entity> getEntities(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate) {
@@ -993,7 +993,7 @@ index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629a
this.getProfiler().incrementCounter("getEntities"); this.getProfiler().incrementCounter("getEntities");
// Paper start - rewrite chunk system // Paper start - rewrite chunk system
final List<Entity> ret = new java.util.ArrayList<>(); final List<Entity> ret = new java.util.ArrayList<>();
@@ -1948,8 +1953,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -1965,8 +1970,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
public abstract RecipeManager getRecipeManager(); public abstract RecipeManager getRecipeManager();
public BlockPos getBlockRandomPos(int x, int y, int z, int l) { public BlockPos getBlockRandomPos(int x, int y, int z, int l) {
@@ -1004,7 +1004,7 @@ index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629a
return new BlockPos(x + (i1 & 15), y + (i1 >> 16 & l), z + (i1 >> 8 & 15)); return new BlockPos(x + (i1 & 15), y + (i1 >> 16 & l), z + (i1 >> 8 & 15));
} }
diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
index f6edfea463b3725d3a79aca38825e86dbf82175c..c62d576a94308dece71eaef451280456dd87861c 100644 index e1021d8be840f378568f28639c259182055c78ac..d8728bed4aaff697af2f4051afbe779481ae61dd 100644
--- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java --- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
@@ -51,7 +51,8 @@ public class DispenserBlock extends BaseEntityBlock { @@ -51,7 +51,8 @@ public class DispenserBlock extends BaseEntityBlock {
@@ -1017,7 +1017,7 @@ index f6edfea463b3725d3a79aca38825e86dbf82175c..c62d576a94308dece71eaef451280456
@Override @Override
public MapCodec<? extends DispenserBlock> codec() { public MapCodec<? extends DispenserBlock> codec() {
@@ -111,7 +112,7 @@ public class DispenserBlock extends BaseEntityBlock { @@ -110,7 +111,7 @@ public class DispenserBlock extends BaseEntityBlock {
if (idispensebehavior != DispenseItemBehavior.NOOP) { if (idispensebehavior != DispenseItemBehavior.NOOP) {
if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockPreDispenseEvent(world, pos, itemstack, i)) return; // Paper - Add BlockPreDispenseEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockPreDispenseEvent(world, pos, itemstack, i)) return; // Paper - Add BlockPreDispenseEvent
@@ -1301,10 +1301,10 @@ index 763b315b1d761bc3bd82d9b847ed3f64fd5ce991..b67dddabbae835cbe7261768fb14bfac
} }
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b189393000 100644 index 33e4818ba5a90d78d69baad9f6b1be1b1382e9f3..9ef3b66934e49cb492fd45cec50943ff4c7d2031 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -423,7 +423,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -474,7 +474,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
} }
private boolean unloadChunk0(int x, int z, boolean save) { private boolean unloadChunk0(int x, int z, boolean save) {
@@ -1313,7 +1313,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
if (!this.isChunkLoaded(x, z)) { if (!this.isChunkLoaded(x, z)) {
return true; return true;
} }
@@ -444,6 +444,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -495,6 +495,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!unloadChunk0(x, z, false)) { if (!unloadChunk0(x, z, false)) {
return false; return false;
} }
@@ -1321,7 +1321,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
warnUnsafeChunk("regenerating a faraway chunk", x, z); // Paper warnUnsafeChunk("regenerating a faraway chunk", x, z); // Paper
final long chunkKey = ChunkCoordIntPair.pair(x, z); final long chunkKey = ChunkCoordIntPair.pair(x, z);
@@ -465,6 +466,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -516,6 +517,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean refreshChunk(int x, int z) { public boolean refreshChunk(int x, int z) {
@@ -1329,7 +1329,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z)); ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z));
if (playerChunk == null) return false; if (playerChunk == null) return false;
@@ -525,7 +527,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -576,7 +578,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean loadChunk(int x, int z, boolean generate) { public boolean loadChunk(int x, int z, boolean generate) {
@@ -1338,7 +1338,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
warnUnsafeChunk("loading a faraway chunk", x, z); // Paper warnUnsafeChunk("loading a faraway chunk", x, z); // Paper
ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper
@@ -777,6 +779,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -828,6 +830,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
@@ -1346,7 +1346,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
this.world.captureTreeGeneration = true; this.world.captureTreeGeneration = true;
this.world.captureBlockStates = true; this.world.captureBlockStates = true;
boolean grownTree = this.generateTree(loc, type); boolean grownTree = this.generateTree(loc, type);
@@ -887,6 +890,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -938,6 +941,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) { public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) {
@@ -1354,15 +1354,15 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
net.minecraft.world.level.Level.ExplosionInteraction explosionType; net.minecraft.world.level.Level.ExplosionInteraction explosionType;
if (!breakBlocks) { if (!breakBlocks) {
explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks
@@ -901,6 +905,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -952,6 +956,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Paper start // Paper start
@Override @Override
public boolean createExplosion(Entity source, Location loc, float power, boolean setFire, boolean breakBlocks) { public boolean createExplosion(Entity source, Location loc, float power, boolean setFire, boolean breakBlocks, boolean excludeSourceFromDamage) {
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(world, loc.getX(), loc.getZ(), "Cannot create explosion asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs) + ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(world, loc.getX(), loc.getZ(), "Cannot create explosion asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
return !world.explode(source != null ? ((org.bukkit.craftbukkit.entity.CraftEntity) source).getHandle() : null, loc.getX(), loc.getY(), loc.getZ(), power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE).wasCanceled; return !world.explode(source != null ? ((org.bukkit.craftbukkit.entity.CraftEntity) source).getHandle() : null, loc.getX(), loc.getY(), loc.getZ(), power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE, explosion -> {
} explosion.excludeSourceFromDamage = excludeSourceFromDamage;
// Paper end }).wasCanceled;
@@ -977,6 +982,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -1030,6 +1035,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) { public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) {
@@ -1370,7 +1370,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper
// Transient load for this tick // Transient load for this tick
return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z); return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z);
@@ -1007,6 +1013,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -1060,6 +1066,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public void setBiome(int x, int y, int z, Holder<net.minecraft.world.level.biome.Biome> bb) { public void setBiome(int x, int y, int z, Holder<net.minecraft.world.level.biome.Biome> bb) {
BlockPos pos = new BlockPos(x, 0, z); BlockPos pos = new BlockPos(x, 0, z);
@@ -1378,7 +1378,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
if (this.world.hasChunkAt(pos)) { if (this.world.hasChunkAt(pos)) {
net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos);
@@ -2276,6 +2283,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -2329,6 +2336,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) { public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {
@@ -1386,7 +1386,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1
getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.registries.BuiltInRegistries.GAME_EVENT.getHolder(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())).orElseThrow(), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position)); getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.registries.BuiltInRegistries.GAME_EVENT.getHolder(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())).orElseThrow(), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position));
} }
// Paper end // Paper end
@@ -2404,7 +2412,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -2454,7 +2462,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Paper start // Paper start
public java.util.concurrent.CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen, boolean urgent) { public java.util.concurrent.CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen, boolean urgent) {
warnUnsafeChunk("getting a faraway chunk async", x, z); // Paper warnUnsafeChunk("getting a faraway chunk async", x, z); // Paper
@@ -1566,7 +1566,7 @@ index ac11f18690434922179b61ffcc3036dea025b0cb..59b8136ebd0100f0f8e6ded002486b37
this.getNMS().tick(level, this.position, level.random); this.getNMS().tick(level, this.position, level.random);
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
index cee3fe00cc662f095e7d726b5f1a913cd8199210..bf1be2997d72767f0e953e735a7c4812a6179260 100644 index 440b4c13121e3ac2bab937a83d20cc3fbf69bda1..7166ac09eaa855768e414904d3232bc3c92179e4 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
@@ -25,7 +25,7 @@ public abstract class CraftBlockEntityState<T extends BlockEntity> extends Craft @@ -25,7 +25,7 @@ public abstract class CraftBlockEntityState<T extends BlockEntity> extends Craft
@@ -1639,7 +1639,7 @@ index b7ff7af2513204b151340538d50a65c850bdb75f..45f9b2594e449926d7f00f64bf12fef2
// Paper end // Paper end
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 6d166a6662ed2badfdc9cb42ca4374dc8d640404..e09be2bd058d93b9e7828fc788398a480452cc61 100644 index beddb6a64e0ba5112d369794a066ca6b9f2ac303..5e29381a1077b1c997dfba4c9bedf85d6e583ca7 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -953,7 +953,7 @@ public class CraftEventFactory { @@ -953,7 +953,7 @@ public class CraftEventFactory {