1
0
mirror of https://github.com/PaperMC/Folia.git synced 2025-03-02 03:41:18 +01:00

Update Paper

This commit is contained in:
Spottedleaf 2024-12-08 12:39:49 -08:00
parent d4bc33870b
commit 61aed65cce
9 changed files with 130 additions and 131 deletions

View File

@ -3,7 +3,7 @@ import io.papermc.paperweight.tasks.RebuildGitPatches
plugins {
java
`maven-publish`
id("io.papermc.paperweight.patcher") version "1.7.6"
id("io.papermc.paperweight.patcher") version "1.7.7"
}
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"

View File

@ -2,7 +2,7 @@ group=dev.folia
version=1.21.4-R0.1-SNAPSHOT
mcVersion=1.21.4
paperRef=416a73304809d94c11a2bf22bbb2ad438a0dd68c
paperRef=71a367ec8489c8a61a4c009f6a3c536438707158
org.gradle.caching=true
org.gradle.parallel=true

View File

@ -46,10 +46,10 @@ index 2da91ed6363c0851e4c459188f5e8ef5475e0c97..8d2b5fec6fe27dca3ce01ba1ce505061
standardInput = System.`in`
workingDir = rootProject.layout.projectDirectory
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
index 4b002e8b75d117b726b0de274a76d3596fce015b..cb60d58d4a7556dd896f31d0cd249f860bb3ef84 100644
index 8f62879582195d8ae4f64bd23f752fa133b1c973..f5ff71e31516327be71924926938f1c9f0e503df 100644
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
@@ -593,7 +593,7 @@ public class Metrics {
@@ -592,7 +592,7 @@ public class Metrics {
boolean logFailedRequests = config.getBoolean("logFailedRequests", false);
// Only start Metrics, if it's enabled in the config
if (config.getBoolean("enabled", true)) {
@ -58,7 +58,7 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..cb60d58d4a7556dd896f31d0cd249f86
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
String minecraftVersion = Bukkit.getVersion();
@@ -607,11 +607,11 @@ public class Metrics {
@@ -606,11 +606,11 @@ public class Metrics {
final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion();
if (implVersion != null) {
final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1);

View File

@ -1115,7 +1115,7 @@ index bd68139ae635f2ad7ec8e7a21e0056a139c4c62e..48a43341b17247355a531164019d5cc9
}
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
index 17e23ca4dd2bbfba49ea00aa2b719a95feb931be..7e906e8324280ef80222305812527886e7b7ce9e 100644
index 088b8fe5d144807f4da1e85b2fa34dfd21286f8c..4ed27c10b432ceebf4447ab8007bc3a1be09a06e 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -354,4 +354,18 @@ public class GlobalConfiguration extends ConfigurationPart {
@ -8489,7 +8489,7 @@ index 1f7f68aad97ee73763c042837f239bdc7167db55..d6eb8f495688a1b65a4c419aa3ee655c
}
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b033c3e2448 100644
index ae4ebf509837e8d44255781c61d02873f8b74be8..25b4b0d531f0698338ffeac686013a4631d60c00 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -216,7 +216,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@ -8521,8 +8521,8 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
public int autosavePeriod;
// Paper - don't store the vanilla dispatcher
@@ -334,6 +333,50 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public volatile boolean abnormalExit = false; // Paper
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
private final Set<String> pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping
+ // Folia start - regionised ticking
+ public final io.papermc.paper.threadedregions.RegionizedServer regionizedServer = new io.papermc.paper.threadedregions.RegionizedServer();
@ -8795,10 +8795,10 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
if (waitForShutdown) {
try {
this.serverThread.join();
@@ -1241,10 +1323,23 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.statusIcon = (ServerStatus.Favicon) this.loadStatusIcon().orElse(null); // CraftBukkit - decompile error
@@ -1242,10 +1324,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.status = this.buildServerStatus();
this.server.spark.enableBeforePlugins(); // Paper - spark
+ // Folia start - region threading
+ if (true) {
+ io.papermc.paper.threadedregions.RegionizedServer.getInstance().init(); // Folia - region threading - only after loading worlds
@ -8811,7 +8811,6 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
+ }
+ }
+ // Folia end - region threading
+
// Spigot start
// Paper start - Improved Watchdog Support
LOGGER.info("Running delayed init tasks");
@ -8820,7 +8819,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
// this is going to be the first thing the tick process does anyways, so move done and run it after
// everything is init before watchdog tick.
// anything at 3+ won't be caught here but also will trip watchdog....
@@ -1293,7 +1388,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1293,7 +1387,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Spigot start
// Paper start - further improve server tick loop
currentTime = Util.getNanos();
@ -8829,7 +8828,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
final long diff = currentTime - tickSection;
final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
tps1.add(currentTps, diff);
@@ -1313,7 +1408,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1313,7 +1407,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (this.debugCommandProfilerDelayStart) {
this.debugCommandProfilerDelayStart = false;
@ -8838,7 +8837,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
}
//MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit // Paper - don't overwrite current tick time
@@ -1328,9 +1423,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1328,9 +1422,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
gameprofilerfiller.push("tick");
this.tickFrame.start();
@ -8849,7 +8848,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
// Paper start - rewrite chunk system
final Throwable crash = this.chunkSystemCrash;
if (crash != null) {
@@ -1531,21 +1624,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1531,21 +1623,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@Override
public TickTask wrapRunnable(Runnable runnable) {
@ -8874,7 +8873,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
boolean flag = this.pollTaskInternal();
this.mayHaveDelayedTasks = flag;
@@ -1553,6 +1641,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1553,6 +1640,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
private boolean pollTaskInternal() {
@ -8882,7 +8881,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
if (super.pollTask()) {
this.moonrise$executeMidTickTasks(); // Paper - rewrite chunk system
return true;
@@ -1575,6 +1664,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1575,6 +1663,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void doRunTask(TickTask ticktask) { // CraftBukkit - decompile error
@ -8890,7 +8889,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
Profiler.get().incrementCounter("runTask");
super.doRunTask(ticktask);
}
@@ -1621,13 +1711,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1621,13 +1710,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return false;
}
@ -8910,7 +8909,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
if (this.playerList.getPlayerCount() == 0 && !this.tickRateManager.isSprinting() && this.pluginsBlockingSleep.isEmpty()) { // Paper - API to allow/disallow tick sleeping
++this.emptyTicks;
} else {
@@ -1652,24 +1745,59 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1652,24 +1744,59 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
level.getChunkSource().tick(() -> true, false);
}
// Paper end - avoid issues with certain tasks not processing during sleep
@ -8977,7 +8976,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
// Paper start - Incremental chunk and player saving
final ProfilerFiller profiler = Profiler.get();
int playerSaveInterval = io.papermc.paper.configuration.GlobalConfiguration.get().playerAutoSave.rate;
@@ -1677,15 +1805,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1677,15 +1804,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
playerSaveInterval = autosavePeriod;
}
profiler.push("save");
@ -8996,7 +8995,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
}
}
} finally {
@@ -1696,33 +1824,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1696,33 +1823,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
ProfilerFiller gameprofilerfiller = Profiler.get();
@ -9037,7 +9036,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
MinecraftServer.LOGGER.debug("Autosave started");
ProfilerFiller gameprofilerfiller = Profiler.get();
@@ -1739,28 +1855,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1739,28 +1854,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
@ -9068,7 +9067,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
}
@@ -1768,6 +1866,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1768,6 +1865,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public abstract boolean isTickTimeLoggingEnabled();
@ -9081,7 +9080,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
private ServerStatus buildServerStatus() {
ServerStatus.Players serverping_serverpingplayersample = this.buildPlayerStatus();
@@ -1775,7 +1879,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1775,7 +1878,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
private ServerStatus.Players buildPlayerStatus() {
@ -9090,7 +9089,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
int i = this.getMaxPlayers();
if (this.hidesOnlinePlayers()) {
@@ -1796,48 +1900,38 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1796,48 +1899,38 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
@ -9150,7 +9149,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
continue;
}
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
@@ -1849,14 +1943,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1849,14 +1942,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
@ -9168,7 +9167,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
gameprofilerfiller.push(() -> {
String s = String.valueOf(worldserver);
@@ -1874,7 +1965,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1874,7 +1964,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
gameprofilerfiller.push("tick");
try {
@ -9177,7 +9176,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
@@ -1884,28 +1975,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1884,28 +1974,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
gameprofilerfiller.pop();
gameprofilerfiller.pop();
@ -9213,7 +9212,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
entityplayer.connection.chunkSender.sendNextChunks(entityplayer);
@@ -2252,7 +2344,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2252,7 +2343,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public int getTickCount() {
@ -9222,7 +9221,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
}
public int getSpawnProtectionRadius() {
@@ -2307,6 +2399,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2307,6 +2398,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void invalidateStatus() {
@ -9238,7 +9237,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
this.lastServerStatus = 0L;
}
@@ -2321,6 +2422,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2321,6 +2421,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@Override
public void executeIfPossible(Runnable runnable) {
@ -9246,7 +9245,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
if (this.isStopped()) {
throw new io.papermc.paper.util.ServerStopRejectedExecutionException("Server already shutting down"); // Paper - do not prematurely disconnect players on stop
} else {
@@ -2628,7 +2730,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2628,7 +2729,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public long getAverageTickTimeNanos() {
@ -9260,7 +9259,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
}
public long[] getTickTimesNanos() {
@@ -2989,14 +3096,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2989,14 +3095,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public ProfileResults stopTimeProfiler() {
@ -9276,7 +9275,7 @@ index ab4f1bd1ebf0af54f3fa88ee9e2007d20445e7e9..9fa5c1628f2df441de47a38e732e7b03
}
public int getMaxChainedNeighborUpdates() {
@@ -3193,24 +3293,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -3193,24 +3292,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper start - API to check if the server is sleeping
public boolean isTickPaused() {
@ -12423,7 +12422,7 @@ index 1f898500d0e9b18a880645ceb0a8ff0fe75f4e48..e0ad5a7715949c281a94f000e2df5cb2
for (ServerPlayer player : ServerLevel.this.server.getPlayerList().players) { // Paper - call onEntityRemove for all online players
player.getBukkitEntity().onEntityRemove(entity);
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 8aff5b7dd14b835788348b22b1fec4d381df816f..ea3b3f624ab9f4fbdc6ff4e90076b5616728f6ca 100644
index fc7f7a34babd095a51b5321f600aef65a2a9d123..44c8d196b31c84ff6179d345808a10c0604206ad 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -220,7 +220,7 @@ import org.bukkit.inventory.MainHand;
@ -13245,7 +13244,7 @@ index 3a9e25b436f366fffe08c3b0c1fce11ed42ee646..ae88c6e2635b1608383f8c74813d723f
Collections.shuffle( this.connections );
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18c762d746 100644
index 84fa24880d02dc7ba1ec8bda3575be38447fd4b2..7783e023e84ab84e3903fc0371aad08a82cf69d0 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -312,7 +312,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@ -13392,7 +13391,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
} else if (!completions.isEmpty()) {
final com.mojang.brigadier.suggestion.SuggestionsBuilder builder0 = new com.mojang.brigadier.suggestion.SuggestionsBuilder(packet.getCommand(), stringreader.getTotalLength());
final com.mojang.brigadier.suggestion.SuggestionsBuilder builder = builder0.createOffset(builder0.getInput().lastIndexOf(' ') + 1);
@@ -1264,11 +1299,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1265,11 +1300,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
// Paper end - Book size limits
// CraftBukkit start
@ -13406,7 +13405,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
// CraftBukkit end
int i = packet.slot();
@@ -1285,7 +1320,22 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1286,7 +1321,22 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.updateBookContents(list1, i);
};
@ -13430,7 +13429,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
}
}
@@ -1433,9 +1483,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1434,9 +1484,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
int i = this.receivedMovePacketCount - this.knownMovePacketCount;
// CraftBukkit start - handle custom speeds and skipped ticks
@ -13443,7 +13442,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
if (i > Math.max(this.allowedPlayerTicks, 5)) {
ServerGamePacketListenerImpl.LOGGER.debug("{} is sending move packets too frequently ({} packets since last tick)", this.player.getName().getString(), i);
@@ -1627,7 +1678,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1628,7 +1679,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// If the event is cancelled we move the player back to their old location.
if (event.isCancelled()) {
@ -13452,7 +13451,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
return;
}
@@ -1635,7 +1686,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1636,7 +1687,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// there to avoid any 'Moved wrongly' or 'Moved too quickly' errors.
// We only do this if the Event was not cancelled.
if (!oldTo.equals(event.getTo()) && !event.isCancelled()) {
@ -13461,7 +13460,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
return;
}
@@ -1882,9 +1933,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1883,9 +1934,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
if (!this.player.isSpectator()) {
// limit how quickly items can be dropped
// If the ticks aren't the same then the count starts from 0 and we update the lastDropTick.
@ -13473,7 +13472,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
} else {
// Else we increment the drop count and check the amount.
this.dropCount++;
@@ -1912,7 +1963,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1913,7 +1964,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
case ABORT_DESTROY_BLOCK:
case STOP_DESTROY_BLOCK:
// Paper start - Don't allow digging into unloaded chunks
@ -13482,7 +13481,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
this.player.connection.ackBlockChangesUpTo(packet.getSequence());
return;
}
@@ -1997,7 +2048,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1998,7 +2049,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// Paper end - improve distance check
BlockPos blockposition = movingobjectpositionblock.getBlockPos();
@ -13491,7 +13490,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
Vec3 vec3d1 = vec3d.subtract(Vec3.atCenterOf(blockposition));
double d0 = 1.0000001D;
@@ -2131,7 +2182,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2132,7 +2183,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Entity entity = packet.getEntity(worldserver);
if (entity != null) {
@ -13500,7 +13499,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
return;
}
}
@@ -2166,7 +2217,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2167,7 +2218,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
// CraftBukkit end
ServerGamePacketListenerImpl.LOGGER.info("{} lost connection: {}", this.player.getName().getString(), info.reason().getString());
@ -13509,7 +13508,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
super.onDisconnect(info, quitMessage); // Paper - Fix kick event leave message not being sent
}
@@ -2175,6 +2226,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2176,6 +2227,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.removePlayerFromWorld(null);
}
@ -13518,7 +13517,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
private void removePlayerFromWorld(@Nullable net.kyori.adventure.text.Component quitMessage) {
// Paper end - Fix kick event leave message not being sent
this.chatMessageChain.close();
@@ -2187,6 +2240,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2188,6 +2241,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.player.disconnect();
// Paper start - Adventure
quitMessage = quitMessage == null ? this.server.getPlayerList().remove(this.player) : this.server.getPlayerList().remove(this.player, quitMessage); // Paper - pass in quitMessage to fix kick message not being used
@ -13527,7 +13526,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
if ((quitMessage != null) && !quitMessage.equals(net.kyori.adventure.text.Component.empty())) {
this.server.getPlayerList().broadcastSystemMessage(PaperAdventure.asVanilla(quitMessage), false);
// Paper end
@@ -2443,7 +2498,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2444,7 +2499,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.player.resetLastActionTime();
// CraftBukkit start
if (sync) {
@ -13536,7 +13535,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
} else {
runnable.run();
}
@@ -2501,7 +2556,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2502,7 +2557,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
String originalFormat = event.getFormat(), originalMessage = event.getMessage();
this.cserver.getPluginManager().callEvent(event);
@ -13545,7 +13544,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
// Evil plugins still listening to deprecated event
final PlayerChatEvent queueEvent = new PlayerChatEvent(player, event.getMessage(), event.getFormat(), event.getRecipients());
queueEvent.setCancelled(event.isCancelled());
@@ -2599,6 +2654,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2600,6 +2655,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
if (s.isEmpty()) {
ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send an empty message");
} else if (this.getCraftPlayer().isConversing()) {
@ -13553,7 +13552,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
final String conversationInput = s;
this.server.processQueue.add(new Runnable() {
@Override
@@ -2837,8 +2893,25 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2838,8 +2894,25 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// Spigot End
public void switchToConfig() {
@ -13580,7 +13579,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
this.send(ClientboundStartConfigurationPacket.INSTANCE);
this.connection.setupOutboundProtocol(ConfigurationProtocols.CLIENTBOUND);
}
@@ -2865,7 +2938,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2866,7 +2939,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.player.resetLastActionTime();
this.player.setShiftKeyDown(packet.isUsingSecondaryAction());
@ -13589,7 +13588,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
if (!worldserver.getWorldBorder().isWithinBounds(entity.blockPosition())) {
return;
}
@@ -3013,6 +3086,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -3014,6 +3087,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
switch (packetplayinclientcommand_enumclientcommand) {
case PERFORM_RESPAWN:
if (this.player.wonGame) {
@ -13602,7 +13601,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
this.player.wonGame = false;
this.player = this.server.getPlayerList().respawn(this.player, true, Entity.RemovalReason.CHANGED_DIMENSION, RespawnReason.END_PORTAL); // CraftBukkit
this.resetPosition();
@@ -3022,6 +3101,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -3023,6 +3102,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
return;
}
@ -13620,7 +13619,7 @@ index 2fbe3d8722eeacc3b27ce38145aeffa610f9daab..5a58b1218d787276d2ac95f77df78d18
this.player = this.server.getPlayerList().respawn(this.player, false, Entity.RemovalReason.KILLED, RespawnReason.DEATH); // CraftBukkit
this.resetPosition();
if (this.server.isHardcore()) {
@@ -3584,7 +3674,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -3585,7 +3675,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.filterTextPacket(list).thenAcceptAsync((list1) -> {
this.updateSignText(packet, list1);
@ -14351,7 +14350,7 @@ index e9df8f8541b8a1b85c7d2925ff3cba813007a1ef..d3f2775a68121ca80ef55ea4c280a0c9
return blockToFallLocation(blockState);
} else {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 27618d07d718cb2a5783536e11d56f712303487b..75929ae02677637500229b7b635479f92e3bd177 100644
index 1b547be0fe97119edf4f29666cfe0037e0c778e0..faa1135996a3afccbf45c84059090248703b98ac 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -186,7 +186,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@ -15503,7 +15502,7 @@ index 96b4fbe4a4655777ff10b32e3257e2fac2aba12a..e6871fb4b58910043e88ea45564363aa
while (!flag2 && blockposition.getY() > world.getMinY()) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 5a3059cadbc9735b4b48745c6b1b11196596b06d..92bda33a8d42150e66f3d2c24bdcce6b7c42471b 100644
index 5a0b51342f4a646101f4588697bcae7d1ca8a010..e48728723e9f765099fc1cea8e6a2baa48d7fc75 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -292,9 +292,21 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@ -15537,7 +15536,7 @@ index 5a3059cadbc9735b4b48745c6b1b11196596b06d..92bda33a8d42150e66f3d2c24bdcce6b
if (fireEvent) {
if (reason == EntityTargetEvent.TargetReason.UNKNOWN && this.getTarget() != null && entityliving == null) {
reason = this.getTarget().isAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED;
@@ -1777,16 +1789,22 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -1779,16 +1791,22 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
this.goalSelector.removeAllGoals(predicate);
}
@ -15938,7 +15937,7 @@ index 63a94b6068fdaef8bb26675c2927cb729ced1dac..f3f98e6276dda3bc4f290fc2d80569f7
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index ca706f1ac5f4248164daa613eef81e46b3e5a210..4690611c9db99156735dd60ebd180160bed61c5c 100644
index 0bafe14342c1acce131ad34717c18aed3718deed..63ee0cd25cf595196ad67d90737daf7826925b2a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -1129,6 +1129,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@ -15992,7 +15991,7 @@ index 7cb3d69a69e0e3ef4b7f9f9c8b1eb67edb5d116d..80590431ad85293effdde5fff6d0432d
BlockPos blockposition = this.blockPosition();
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
index bbdaaa1cc0b4aed28bc39385508d221055b99d4d..0db0dccecfd232a3c3f061063966abb867fc4444 100644
index 7d83ad8a61f6aafbc063506c1858554f9b700b70..ada70345efbb620c1df6e68ab16a3fb29df43129 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
@@ -262,7 +262,9 @@ public class ItemFrame extends HangingEntity {
@ -16314,7 +16313,7 @@ index 5b8b85a295a08ae495f729c595b3a78778965342..f2817f1c29431ef2c4a45dc9ef90f06d
return false;
}
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
index c4a8054666b1b28812a72c42755db8f1fb9348a0..ffb4a36cf14b8ce74c7f615f975fcdb027b32e61 100644
index f4513b1887f823b088dabe425be042b8fb2bde66..5d52f67b3e379e64d23a0429679c144373d20eac 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
@@ -198,6 +198,11 @@ public abstract class AbstractArrow extends Projectile {
@ -19810,7 +19809,7 @@ index 778e6476c86d823dc8efe603a95e589e8b2ea9d9..3fc6b4f93885fe447ed068bc5e0784da
LevelChunkTicks<T> levelChunkTicks = this.allContainers.get(l);
if (levelChunkTicks == null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index ac8af406180bc680d46e8edc3da0fc2e5211345a..7cc63a4a9759d3926f843cfedbc79986d1ece926 100644
index 97b5d6ba2b19a7c730730c74175a29157aed1840..26e1584557c8ba7b6bdf4a5ca7fc801d2f33fbdf 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -315,7 +315,7 @@ public final class CraftServer implements Server {
@ -19898,10 +19897,10 @@ index ac8af406180bc680d46e8edc3da0fc2e5211345a..7cc63a4a9759d3926f843cfedbc79986
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab355daecf 100644
index 92d9f0ea8f7810ae20d3996f49aefa539b4bcb69..f5412bdb4e80218de13b6beb62a50181fa2c3271 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -232,7 +232,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -233,7 +233,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public int getTickableTileEntityCount() {
@ -19910,7 +19909,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
}
@Override
@@ -299,7 +299,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -300,7 +300,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Paper start - per world spawn limits
for (SpawnCategory spawnCategory : SpawnCategory.values()) {
if (CraftSpawnCategory.isValidForLimits(spawnCategory)) {
@ -19919,7 +19918,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
}
}
// Paper end - per world spawn limits
@@ -369,6 +369,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -370,6 +370,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public Chunk getChunkAt(int x, int z) {
@ -19927,7 +19926,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
warnUnsafeChunk("getting a faraway chunk", x, z); // Paper
net.minecraft.world.level.chunk.LevelChunk chunk = (net.minecraft.world.level.chunk.LevelChunk) this.world.getChunk(x, z, ChunkStatus.FULL, true);
return new CraftChunk(chunk);
@@ -399,10 +400,10 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -400,10 +401,10 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean isChunkGenerated(int x, int z) {
// Paper start - Fix this method
@ -19940,7 +19939,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
}
ChunkAccess chunk = world.getChunkSource().getChunkAtImmediately(x, z);
if (chunk != null) {
@@ -459,7 +460,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -460,7 +461,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
}
private boolean unloadChunk0(int x, int z, boolean save) {
@ -19949,7 +19948,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
if (!this.isChunkLoaded(x, z)) {
return true;
}
@@ -476,7 +477,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -477,7 +478,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean regenerateChunk(int x, int z) {
@ -19958,7 +19957,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
throw new UnsupportedOperationException("Not supported in this Minecraft version! Unless you can fix it, this is not a bug :)");
/*
if (!unloadChunk0(x, z, false)) {
@@ -503,6 +504,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -504,6 +505,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean refreshChunk(int x, int z) {
@ -19966,7 +19965,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z));
if (playerChunk == null) return false;
@@ -563,7 +565,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -553,7 +555,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean loadChunk(int x, int z, boolean generate) {
@ -19975,7 +19974,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
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
@@ -604,7 +606,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -594,7 +596,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
DistanceManager chunkDistanceManager = this.world.getChunkSource().chunkMap.distanceManager;
if (chunkDistanceManager.addRegionTicketAtDistance(TicketType.PLUGIN_TICKET, new ChunkPos(x, z), 2, plugin)) { // keep in-line with force loading, add at level 31
@ -19984,7 +19983,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
return true;
}
@@ -815,13 +817,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -805,13 +807,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
@ -20005,7 +20004,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
BlockPos position = ((CraftBlockState) blockstate).getPosition();
net.minecraft.world.level.block.state.BlockState oldBlock = this.world.getBlockState(position);
int flag = ((CraftBlockState) blockstate).getFlag();
@@ -829,10 +833,10 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -819,10 +823,10 @@ public class CraftWorld extends CraftRegionAccessor implements World {
net.minecraft.world.level.block.state.BlockState newBlock = this.world.getBlockState(position);
this.world.notifyAndUpdatePhysics(position, null, oldBlock, newBlock, newBlock, flag, 512);
}
@ -20018,7 +20017,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
return false;
}
}
@@ -866,6 +870,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -856,6 +860,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setTime(long time) {
@ -20026,7 +20025,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
long margin = (time - this.getFullTime()) % 24000;
if (margin < 0) margin += 24000;
this.setFullTime(this.getFullTime() + margin);
@@ -878,6 +883,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -868,6 +873,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setFullTime(long time) {
@ -20034,7 +20033,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
// Notify anyone who's listening
TimeSkipEvent event = new TimeSkipEvent(this, TimeSkipEvent.SkipReason.CUSTOM, time - this.world.getDayTime());
this.server.getPluginManager().callEvent(event);
@@ -905,7 +911,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -895,7 +901,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public long getGameTime() {
@ -20043,7 +20042,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
}
@Override
@@ -930,6 +936,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -920,6 +926,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
}
public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, Consumer<net.minecraft.world.level.ServerExplosion> configurator) {
// Paper end - expand explosion API
@ -20051,7 +20050,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
net.minecraft.world.level.Level.ExplosionInteraction explosionType;
if (!breakBlocks) {
explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks
@@ -939,6 +946,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -929,6 +936,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
explosionType = net.minecraft.world.level.Level.ExplosionInteraction.MOB; // Respect mobGriefing gamerule
}
@ -20059,7 +20058,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
net.minecraft.world.entity.Entity entity = (source == null) ? null : ((CraftEntity) source).getHandle();
return !this.world.explode0(entity, Explosion.getDefaultDamageSource(this.world, entity), null, x, y, z, power, setFire, explosionType, ParticleTypes.EXPLOSION, ParticleTypes.EXPLOSION_EMITTER, SoundEvents.GENERIC_EXPLODE, configurator).wasCanceled; // Paper - expand explosion API
}
@@ -1021,6 +1029,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1011,6 +1019,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) {
@ -20067,7 +20066,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper
// Transient load for this tick
return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z);
@@ -1051,6 +1060,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1041,6 +1050,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setBiome(int x, int y, int z, Holder<net.minecraft.world.level.biome.Biome> bb) {
BlockPos pos = new BlockPos(x, 0, z);
@ -20075,7 +20074,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
if (this.world.hasChunkAt(pos)) {
net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos);
@@ -1361,6 +1371,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1351,6 +1361,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setStorm(boolean hasStorm) {
@ -20083,7 +20082,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.world.serverLevelData.setRaining(hasStorm, org.bukkit.event.weather.WeatherChangeEvent.Cause.PLUGIN); // Paper - Add cause to Weather/ThunderChangeEvents
this.setWeatherDuration(0); // Reset weather duration (legacy behaviour)
this.setClearWeatherDuration(0); // Reset clear weather duration (reset "/weather clear" commands)
@@ -1373,6 +1384,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1363,6 +1374,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setWeatherDuration(int duration) {
@ -20091,7 +20090,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.world.serverLevelData.setRainTime(duration);
}
@@ -1383,6 +1395,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1373,6 +1385,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setThundering(boolean thundering) {
@ -20099,7 +20098,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.world.serverLevelData.setThundering(thundering, org.bukkit.event.weather.ThunderChangeEvent.Cause.PLUGIN); // Paper - Add cause to Weather/ThunderChangeEvents
this.setThunderDuration(0); // Reset weather duration (legacy behaviour)
this.setClearWeatherDuration(0); // Reset clear weather duration (reset "/weather clear" commands)
@@ -1395,6 +1408,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1385,6 +1398,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setThunderDuration(int duration) {
@ -20107,7 +20106,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.world.serverLevelData.setThunderTime(duration);
}
@@ -1405,6 +1419,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1395,6 +1409,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setClearWeatherDuration(int duration) {
@ -20115,7 +20114,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.world.serverLevelData.setClearWeatherTime(duration);
}
@@ -1603,6 +1618,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1593,6 +1608,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setKeepSpawnInMemory(boolean keepLoaded) {
@ -20123,7 +20122,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
if (keepLoaded) {
this.setGameRule(GameRule.SPAWN_CHUNK_RADIUS, this.getGameRuleDefault(GameRule.SPAWN_CHUNK_RADIUS));
} else {
@@ -1671,6 +1687,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1661,6 +1677,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setHardcore(boolean hardcore) {
@ -20131,7 +20130,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.world.serverLevelData.settings.hardcore = hardcore;
}
@@ -1683,6 +1700,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1673,6 +1690,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setTicksPerAnimalSpawns(int ticksPerAnimalSpawns) {
@ -20139,7 +20138,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setTicksPerSpawns(SpawnCategory.ANIMAL, ticksPerAnimalSpawns);
}
@@ -1695,6 +1713,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1685,6 +1703,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setTicksPerMonsterSpawns(int ticksPerMonsterSpawns) {
@ -20147,7 +20146,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setTicksPerSpawns(SpawnCategory.MONSTER, ticksPerMonsterSpawns);
}
@@ -1707,6 +1726,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1697,6 +1716,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setTicksPerWaterSpawns(int ticksPerWaterSpawns) {
@ -20155,7 +20154,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setTicksPerSpawns(SpawnCategory.WATER_ANIMAL, ticksPerWaterSpawns);
}
@@ -1719,6 +1739,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1709,6 +1729,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setTicksPerWaterAmbientSpawns(int ticksPerWaterAmbientSpawns) {
@ -20163,7 +20162,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setTicksPerSpawns(SpawnCategory.WATER_AMBIENT, ticksPerWaterAmbientSpawns);
}
@@ -1731,6 +1752,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1721,6 +1742,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setTicksPerWaterUndergroundCreatureSpawns(int ticksPerWaterUndergroundCreatureSpawns) {
@ -20171,7 +20170,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setTicksPerSpawns(SpawnCategory.WATER_UNDERGROUND_CREATURE, ticksPerWaterUndergroundCreatureSpawns);
}
@@ -1743,11 +1765,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1733,11 +1755,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setTicksPerAmbientSpawns(int ticksPerAmbientSpawns) {
@ -20185,7 +20184,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
Preconditions.checkArgument(spawnCategory != null, "SpawnCategory cannot be null");
Preconditions.checkArgument(CraftSpawnCategory.isValidForLimits(spawnCategory), "SpawnCategory.%s are not supported", spawnCategory);
@@ -1764,21 +1788,25 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1754,21 +1778,25 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setMetadata(String metadataKey, MetadataValue newMetadataValue) {
@ -20211,7 +20210,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.server.getWorldMetadata().removeMetadata(this, metadataKey, owningPlugin);
}
@@ -1791,6 +1819,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1781,6 +1809,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setMonsterSpawnLimit(int limit) {
@ -20219,7 +20218,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setSpawnLimit(SpawnCategory.MONSTER, limit);
}
@@ -1803,6 +1832,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1793,6 +1822,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setAnimalSpawnLimit(int limit) {
@ -20227,7 +20226,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setSpawnLimit(SpawnCategory.ANIMAL, limit);
}
@@ -1815,6 +1845,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1805,6 +1835,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setWaterAnimalSpawnLimit(int limit) {
@ -20235,7 +20234,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setSpawnLimit(SpawnCategory.WATER_ANIMAL, limit);
}
@@ -1827,6 +1858,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1817,6 +1848,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setWaterAmbientSpawnLimit(int limit) {
@ -20243,7 +20242,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setSpawnLimit(SpawnCategory.WATER_AMBIENT, limit);
}
@@ -1839,6 +1871,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1829,6 +1861,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setWaterUndergroundCreatureSpawnLimit(int limit) {
@ -20251,7 +20250,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setSpawnLimit(SpawnCategory.WATER_UNDERGROUND_CREATURE, limit);
}
@@ -1851,6 +1884,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1841,6 +1874,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
@Deprecated
public void setAmbientSpawnLimit(int limit) {
@ -20259,7 +20258,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
this.setSpawnLimit(SpawnCategory.AMBIENT, limit);
}
@@ -1873,6 +1907,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1863,6 +1897,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setSpawnLimit(SpawnCategory spawnCategory, int limit) {
@ -20267,7 +20266,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
Preconditions.checkArgument(spawnCategory != null, "SpawnCategory cannot be null");
Preconditions.checkArgument(CraftSpawnCategory.isValidForLimits(spawnCategory), "SpawnCategory.%s are not supported", spawnCategory);
@@ -1955,7 +1990,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1945,7 +1980,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!(entity instanceof CraftEntity craftEntity) || entity.getWorld() != this || sound == null || category == null) return;
ClientboundSoundEntityPacket packet = new ClientboundSoundEntityPacket(CraftSound.bukkitToMinecraftHolder(sound), net.minecraft.sounds.SoundSource.valueOf(category.name()), craftEntity.getHandle(), volume, pitch, seed);
@ -20276,7 +20275,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
if (entityTracker != null) {
entityTracker.broadcastAndSend(packet);
}
@@ -1976,7 +2011,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1966,7 +2001,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!(entity instanceof CraftEntity craftEntity) || entity.getWorld() != this || sound == null || category == null) return;
ClientboundSoundEntityPacket packet = new ClientboundSoundEntityPacket(Holder.direct(SoundEvent.createVariableRangeEvent(ResourceLocation.parse(sound))), net.minecraft.sounds.SoundSource.valueOf(category.name()), craftEntity.getHandle(), volume, pitch, seed);
@ -20285,7 +20284,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
if (entityTracker != null) {
entityTracker.broadcastAndSend(packet);
}
@@ -2059,6 +2094,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2049,6 +2084,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean setGameRuleValue(String rule, String value) {
@ -20293,7 +20292,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
// No null values allowed
if (rule == null || value == null) return false;
@@ -2101,6 +2137,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2091,6 +2127,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public <T> boolean setGameRule(GameRule<T> rule, T newValue) {
@ -20301,7 +20300,7 @@ index a9f7ac8d1f5e184687d53ab3e8b348bb7f4f2ba0..ec70a4dcb9f12d55af039c008bfe47ab
Preconditions.checkArgument(rule != null, "GameRule cannot be null");
Preconditions.checkArgument(newValue != null, "GameRule value cannot be null");
@@ -2327,6 +2364,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2317,6 +2354,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {
@ -20696,10 +20695,10 @@ index b25b10c24a379097233e61bcc10add841b6a7115..5168cf0d58013aecfd80d37fb698014f
return java.util.Collections.emptySet();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 84c494ca81b8f58604b372ac7236147776817a4f..5ebcd6b8edc76572a3fffead4735fd5824a083f1 100644
index 20f64850cb42d986358f01ffcdb42187e1684bca..60053f73f1992f4a11edb6af89f31574bcc32fc7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -656,7 +656,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -657,7 +657,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kickPlayer(String message) {
@ -20708,7 +20707,7 @@ index 84c494ca81b8f58604b372ac7236147776817a4f..5ebcd6b8edc76572a3fffead4735fd58
this.getHandle().transferCookieConnection.kickPlayer(CraftChatMessage.fromStringOrEmpty(message, true), org.bukkit.event.player.PlayerKickEvent.Cause.PLUGIN); // Paper - kick event cause
}
@@ -1412,6 +1412,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1413,6 +1413,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean teleport(Location location, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause, io.papermc.paper.entity.TeleportFlag... flags) {
@ -20720,7 +20719,7 @@ index 84c494ca81b8f58604b372ac7236147776817a4f..5ebcd6b8edc76572a3fffead4735fd58
Set<io.papermc.paper.entity.TeleportFlag.Relative> relativeArguments;
Set<io.papermc.paper.entity.TeleportFlag> allFlags;
if (flags.length == 0) {
@@ -2076,7 +2081,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2077,7 +2082,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private void unregisterEntity(Entity other) {
// Paper end
ChunkMap tracker = ((ServerLevel) this.getHandle().level()).getChunkSource().chunkMap;
@ -20729,7 +20728,7 @@ index 84c494ca81b8f58604b372ac7236147776817a4f..5ebcd6b8edc76572a3fffead4735fd58
if (entry != null) {
entry.removePlayer(this.getHandle());
}
@@ -2173,7 +2178,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2174,7 +2179,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (original != null) otherPlayer.setUUID(original); // Paper - uuid override
}
@ -20738,7 +20737,7 @@ index 84c494ca81b8f58604b372ac7236147776817a4f..5ebcd6b8edc76572a3fffead4735fd58
if (entry != null && !entry.seenBy.contains(this.getHandle().connection)) {
entry.updatePlayer(this.getHandle());
}
@@ -3354,7 +3359,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -3355,7 +3360,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
{
if ( CraftPlayer.this.getHealth() <= 0 && CraftPlayer.this.isOnline() )
{

View File

@ -29,7 +29,7 @@ index 41bf71d116ffc5431586ce54abba7f8def6c1dcf..1cf9a7677449ab8f03fb23d835e3fadc
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 75929ae02677637500229b7b635479f92e3bd177..20fe53cc8e9edfc7b7d50f23379e0044e520c84d 100644
index faa1135996a3afccbf45c84059090248703b98ac..f86415bf2721835e6108408ebf05221fa17d854e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3244,6 +3244,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@ -2288,10 +2288,10 @@ index 2638c341bc02f201f7ab17fdebcdbdf3a7ec05bf..074b2919be2b5544b0a46e6cd32f6c57
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 5ebcd6b8edc76572a3fffead4735fd5824a083f1..95047bf77be54af6968a6e77f13dd01aa989b4d8 100644
index 60053f73f1992f4a11edb6af89f31574bcc32fc7..e88f197dfc0e4ec06f0360ebe18914cf57d5bdf8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -674,7 +674,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -675,7 +675,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kick(net.kyori.adventure.text.Component message, org.bukkit.event.player.PlayerKickEvent.Cause cause) {
@ -2300,7 +2300,7 @@ index 5ebcd6b8edc76572a3fffead4735fd5824a083f1..95047bf77be54af6968a6e77f13dd01a
final ServerGamePacketListenerImpl connection = this.getHandle().connection;
if (connection != null) {
connection.disconnect(message == null ? net.kyori.adventure.text.Component.empty() : message, cause);
@@ -2327,9 +2327,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2328,9 +2328,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this;
}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Throw UnsupportedOperationException() for broken APIs
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 7cc63a4a9759d3926f843cfedbc79986d1ece926..a8975cee866cf2c617b6d4976df71e5c20cf0e3d 100644
index 26e1584557c8ba7b6bdf4a5ca7fc801d2f33fbdf..567e12e24ece2cd823b73e7337b10eb89995da21 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1320,6 +1320,7 @@ public final class CraftServer implements Server {

View File

@ -9,7 +9,7 @@ data deserialization and is racey even in Vanilla. But in Folia,
some accesses may throw and as such we need to fix this directly.
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index ea3b3f624ab9f4fbdc6ff4e90076b5616728f6ca..759eb33a5b63cae7913907f06e67e0736f50dc13 100644
index 44c8d196b31c84ff6179d345808a10c0604206ad..93a341618bf53900d143f429b94ea295dd973f2c 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -794,7 +794,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple

View File

@ -7,7 +7,7 @@ This allows the player to be re-positioned before logging into
the world without causing thread checks to trip on Folia.
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 759eb33a5b63cae7913907f06e67e0736f50dc13..b6f3078fa688ca61cfd45d856b95c160cfe7b2da 100644
index 93a341618bf53900d143f429b94ea295dd973f2c..b7fe3a1119f927bf4fb4d5855f758a16a76ec779 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -920,7 +920,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple

View File

@ -1463,10 +1463,10 @@ index d6eb8f495688a1b65a4c419aa3ee655cd8eb322a..f338b273613840ed366ab13b528373e7
if (exception instanceof ReportedException) {
ReportedException reportedexception = (ReportedException) exception;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105e323089a 100644
index 25b4b0d531f0698338ffeac686013a4631d60c00..1676c4abb3f6f71bb7b25351aa58b4e127786fca 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1714,6 +1714,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1713,6 +1713,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Folia start - region threading
public void tickServer(long startTime, long scheduledEnd, long targetBuffer,
io.papermc.paper.threadedregions.TickRegions.TickRegionData region) {
@ -1474,7 +1474,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
// Folia end - region threading
org.spigotmc.WatchdogThread.tick(); // Spigot
long i = startTime; // Folia - region threading
@@ -1752,6 +1753,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1751,6 +1752,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
@ -1482,7 +1482,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
// Folia start - region threading
if (region != null) {
region.world.getCurrentWorldData().updateTickData();
@@ -1775,10 +1777,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1774,10 +1776,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
new com.destroystokyo.paper.event.server.ServerTickStartEvent((int)region.getCurrentTick()).callEvent(); // Paper - Server Tick Events // Folia - region threading
// Folia start - region threading
if (region != null) {
@ -1499,7 +1499,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
for (Entity entity : region.world.getCurrentWorldData().getLocalEntitiesCopy()) {
if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(entity) || entity.isRemoved()) {
continue;
@@ -1786,8 +1794,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1785,8 +1793,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
org.bukkit.craftbukkit.entity.CraftEntity bukkit = entity.getBukkitEntityRaw();
if (bukkit != null) {
bukkit.taskScheduler.executeTick();
@ -1511,7 +1511,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
}
// Folia end - region threading
if (region == null) this.tickRateManager.tick(); // Folia - region threading
@@ -1806,6 +1817,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1805,6 +1816,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
profiler.push("save");
final boolean fullSave = autosavePeriod > 0 && io.papermc.paper.threadedregions.RegionizedServer.getCurrentTick() % autosavePeriod == 0; // Folia - region threading
@ -1519,7 +1519,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
try {
this.isSaving = true;
if (playerSaveInterval > 0) {
@@ -1819,6 +1831,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1818,6 +1830,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} finally {
this.isSaving = false;
}
@ -1527,7 +1527,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
profiler.pop();
// Paper end - Incremental chunk and player saving
@@ -1901,6 +1914,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1900,6 +1913,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
protected void tickChildren(BooleanSupplier shouldKeepTicking, io.papermc.paper.threadedregions.TickRegions.TickRegionData region) { // Folia - region threading
@ -1535,7 +1535,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
final io.papermc.paper.threadedregions.RegionizedWorldData regionizedWorldData = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegionizedWorldData(); // Folia - regionised ticking
ProfilerFiller gameprofilerfiller = Profiler.get();
@@ -1965,7 +1979,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1964,7 +1978,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
gameprofilerfiller.push("tick");
try {
@ -1545,7 +1545,7 @@ index 9fa5c1628f2df441de47a38e732e7b033c3e2448..be6dc4c066efd66279301f5796451105
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
@@ -1980,8 +1996,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1979,8 +1995,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (region == null) this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked // Folia - region threading
gameprofilerfiller.popPush("connection");