9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00

Updated Upstream (Paper/Gale)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@a6ceda1 distinguish between null and empty map in API (#10829)
PaperMC/Paper@506f165 Don't store removed components in multiple places (#11091)
PaperMC/Paper@ceeb8c1 Disable timings by default (#11095)
PaperMC/Paper@05ed6a6 Fix priority scheduling logic
PaperMC/Paper@967f98a Optimise chunk tick checking during chunk tick
PaperMC/Paper@00b949f Remove Moonrise utils to MCUtils, remove duplicated/unused utils
PaperMC/Paper@4efd24b Remove unused chunk system hooks in MCUtils
PaperMC/Paper@b653276 Finish chunk tick iteration optimisation port from Moonrise
PaperMC/Paper@2df5bba Log throwable when failing to save chunk/poi/entity data
PaperMC/Paper@44c3dd0 fix exact choice shapeless recipes (#10973)

Gale Changes:
Dreeam-qwq/Gale@004abb3 Fix auto update upstream
Dreeam-qwq/Gale@bbfd940 debug
Dreeam-qwq/Gale@52b68af Updated Upstream (Paper)
Dreeam-qwq/Gale@4a647c3 [ci skip] Remove debug commands in auto-update workflow
Dreeam-qwq/Gale@8241709 [ci skip] Update set output
Dreeam-qwq/Gale@d95dc9d Updated Upstream (Paper)
This commit is contained in:
Dreeam
2024-07-18 08:39:32 +08:00
parent 545d645c3d
commit 5d0794b477
17 changed files with 155 additions and 368 deletions

View File

@@ -2,7 +2,7 @@ group = cn.dreeam.leaf
mcVersion = 1.21 mcVersion = 1.21
version = 1.21-R0.1-SNAPSHOT version = 1.21-R0.1-SNAPSHOT
galeCommit = 0cb487e2e577a1b56a4605a8d1abf84cba0da56a galeCommit = d95dc9d8a01fabe3851dd697ca379526049605f6
org.gradle.caching = true org.gradle.caching = true
org.gradle.parallel = true org.gradle.parallel = true

View File

@@ -215,10 +215,10 @@ index 3d674eca7d20202d8f811c5c3e3946a12046028a..6fae3dedda0ce742e33040c7b85b5a59
} }
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index 1647cf84bd8bb703967c6d4d8ac473291200c094..dfdbf7654db34487f7db2e568006642291b1c132 100644 index 08fa6018bcab38d8c9ca05c84e229d69184ce01b..f9351c15c8c6e2f4cbd2af0a15bdd5e1a90cb262 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java --- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -96,7 +96,7 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - @@ -96,7 +96,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
private WatchdogThread(long timeoutTime, boolean restart) private WatchdogThread(long timeoutTime, boolean restart)
{ {
@@ -227,7 +227,7 @@ index 1647cf84bd8bb703967c6d4d8ac473291200c094..dfdbf7654db34487f7db2e5680066422
this.timeoutTime = timeoutTime; this.timeoutTime = timeoutTime;
this.restart = restart; this.restart = restart;
earlyWarningEvery = Math.min(io.papermc.paper.configuration.GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); // Paper earlyWarningEvery = Math.min(io.papermc.paper.configuration.GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); // Paper
@@ -160,15 +160,15 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - @@ -160,15 +160,15 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
We do not want people to report thread issues to Paper, We do not want people to report thread issues to Paper,
but we do want people to report thread issues to Gale. but we do want people to report thread issues to Gale.
*/ */
@@ -246,7 +246,7 @@ index 1647cf84bd8bb703967c6d4d8ac473291200c094..dfdbf7654db34487f7db2e5680066422
// //
if ( net.minecraft.world.level.Level.lastPhysicsProblem != null ) if ( net.minecraft.world.level.Level.lastPhysicsProblem != null )
{ {
@@ -195,13 +195,13 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - @@ -195,13 +195,13 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
We do not want people to report thread issues to Paper, We do not want people to report thread issues to Paper,
but we do want people to report thread issues to Gale. but we do want people to report thread issues to Gale.
*/ */
@@ -262,7 +262,7 @@ index 1647cf84bd8bb703967c6d4d8ac473291200c094..dfdbf7654db34487f7db2e5680066422
ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - rewrite chunk system ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - rewrite chunk system
this.dumpTickingInfo(); // Paper - log detailed tick information this.dumpTickingInfo(); // Paper - log detailed tick information
WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log ); WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -222,7 +222,7 @@ public class WatchdogThread extends io.papermc.paper.util.TickThread // Paper - @@ -222,7 +222,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre
We do not want people to report thread issues to Paper, We do not want people to report thread issues to Paper,
but we do want people to report thread issues to Gale. but we do want people to report thread issues to Gale.
*/ */

View File

@@ -6,42 +6,6 @@ Subject: [PATCH] Pufferfish: Utils
Original license: GPL v3 Original license: GPL v3
Original project: https://github.com/pufferfish-gg/Pufferfish Original project: https://github.com/pufferfish-gg/Pufferfish
diff --git a/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
index 41b9405d6759d865e0d14dd4f95163e9690e967d..091b1ae822e1c0517e59572e7a9bda11e998c0ee 100644
--- a/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
+++ b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
@@ -26,7 +26,7 @@ public abstract class AreaMap<E> {
// we use linked for better iteration.
// map of: coordinate to set of objects in coordinate
- protected final Long2ObjectOpenHashMap<PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<E>> areaMap = new Long2ObjectOpenHashMap<>(1024, 0.7f);
+ protected Long2ObjectOpenHashMap<PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<E>> areaMap = new Long2ObjectOpenHashMap<>(1024, 0.7f); // Pufferfish - not actually final
protected final PooledLinkedHashSets<E> pooledHashSets;
protected final ChangeCallback<E> addCallback;
@@ -160,7 +160,8 @@ public abstract class AreaMap<E> {
protected abstract PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<E> getEmptySetFor(final E object);
// expensive op, only for debug
- protected void validate(final E object, final int viewDistance) {
+ protected void validate0(final E object, final int viewDistance) { // Pufferfish - rename this thing just in case it gets used I'd rather a compile time error.
+ if (true) throw new UnsupportedOperationException(); // Pufferfish - not going to put in the effort to fix this if it doesn't ever get used.
int entiesGot = 0;
int expectedEntries = (2 * viewDistance + 1);
expectedEntries *= expectedEntries;
diff --git a/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java b/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java
index 46954db7ecd35ac4018fdf476df7c8020d7ce6c8..1ad890a244bdf6df48a8db68cb43450e08c788a6 100644
--- a/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java
+++ b/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java
@@ -5,7 +5,7 @@ import net.minecraft.server.level.ServerPlayer;
/**
* @author Spottedleaf
*/
-public final class PlayerAreaMap extends AreaMap<ServerPlayer> {
+public class PlayerAreaMap extends AreaMap<ServerPlayer> { // Pufferfish - not actually final
public PlayerAreaMap() {
super();
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishLogger.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishLogger.java diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishLogger.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishLogger.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..53aab67aea0a28c004c6106aa775443c30457141 index 0000000000000000000000000000000000000000..53aab67aea0a28c004c6106aa775443c30457141
@@ -65,194 +29,3 @@ index 0000000000000000000000000000000000000000..53aab67aea0a28c004c6106aa775443c
+ setLevel(Level.ALL); + setLevel(Level.ALL);
+ } + }
+} +}
diff --git a/src/main/java/gg/pufferfish/pufferfish/util/AsyncExecutor.java b/src/main/java/gg/pufferfish/pufferfish/util/AsyncExecutor.java
new file mode 100644
index 0000000000000000000000000000000000000000..a62d22dc4ae2cc82cf6763e8b0ce6d4611782a57
--- /dev/null
+++ b/src/main/java/gg/pufferfish/pufferfish/util/AsyncExecutor.java
@@ -0,0 +1,73 @@
+package gg.pufferfish.pufferfish.util;
+
+import com.google.common.collect.Queues;
+import gg.pufferfish.pufferfish.PufferfishLogger;
+
+import java.util.Queue;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Level;
+
+public class AsyncExecutor implements Runnable {
+
+ private final Queue<Runnable> jobs = Queues.newArrayDeque();
+ private final Lock mutex = new ReentrantLock();
+ private final Condition cond = mutex.newCondition();
+ private final Thread thread;
+ private volatile boolean killswitch = false;
+
+ public AsyncExecutor(String threadName) {
+ this.thread = new Thread(this, threadName);
+ }
+
+ public void start() {
+ thread.start();
+ }
+
+ public void kill() {
+ killswitch = true;
+ cond.signalAll();
+ }
+
+ public void submit(Runnable runnable) {
+ mutex.lock();
+ try {
+ jobs.offer(runnable);
+ cond.signalAll();
+ } finally {
+ mutex.unlock();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (!killswitch) {
+ try {
+ Runnable runnable = takeRunnable();
+ if (runnable != null) {
+ runnable.run();
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ } catch (Exception e) {
+ PufferfishLogger.LOGGER.log(Level.SEVERE, e, () -> "Failed to execute async job for thread " + thread.getName());
+ }
+ }
+ }
+
+ private Runnable takeRunnable() throws InterruptedException {
+ mutex.lock();
+ try {
+ while (jobs.isEmpty() && !killswitch) {
+ cond.await();
+ }
+
+ if (jobs.isEmpty()) return null; // We've set killswitch
+
+ return jobs.remove();
+ } finally {
+ mutex.unlock();
+ }
+ }
+}
diff --git a/src/main/java/gg/pufferfish/pufferfish/util/AsyncPlayerAreaMap.java b/src/main/java/gg/pufferfish/pufferfish/util/AsyncPlayerAreaMap.java
new file mode 100644
index 0000000000000000000000000000000000000000..a9052e71b943b2bc4f07732fa1c3712518dcd3e7
--- /dev/null
+++ b/src/main/java/gg/pufferfish/pufferfish/util/AsyncPlayerAreaMap.java
@@ -0,0 +1,32 @@
+package gg.pufferfish.pufferfish.util;
+
+import com.destroystokyo.paper.util.misc.PlayerAreaMap;
+import com.destroystokyo.paper.util.misc.PooledLinkedHashSets;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+import net.minecraft.server.level.ServerPlayer;
+
+public final class AsyncPlayerAreaMap extends PlayerAreaMap {
+
+ public AsyncPlayerAreaMap() {
+ super();
+ this.areaMap = new Long2ObjectOpenHashMapWrapper<>(new ConcurrentHashMap<>(1024, 0.7f));
+ }
+
+ public AsyncPlayerAreaMap(final PooledLinkedHashSets<ServerPlayer> pooledHashSets) {
+ super(pooledHashSets);
+ this.areaMap = new Long2ObjectOpenHashMapWrapper<>(new ConcurrentHashMap<>(1024, 0.7f));
+ }
+
+ public AsyncPlayerAreaMap(final PooledLinkedHashSets<ServerPlayer> pooledHashSets, final ChangeCallback<ServerPlayer> addCallback,
+ final ChangeCallback<ServerPlayer> removeCallback) {
+ this(pooledHashSets, addCallback, removeCallback, null);
+ }
+
+ public AsyncPlayerAreaMap(final PooledLinkedHashSets<ServerPlayer> pooledHashSets, final ChangeCallback<ServerPlayer> addCallback,
+ final ChangeCallback<ServerPlayer> removeCallback, final ChangeSourceCallback<ServerPlayer> changeSourceCallback) {
+ super(pooledHashSets, addCallback, removeCallback, changeSourceCallback);
+ this.areaMap = new Long2ObjectOpenHashMapWrapper<>(new ConcurrentHashMap<>(1024, 0.7f));
+ }
+}
diff --git a/src/main/java/gg/pufferfish/pufferfish/util/IterableWrapper.java b/src/main/java/gg/pufferfish/pufferfish/util/IterableWrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b4a51ae41e99d41a1095333c2036efcc9a38973
--- /dev/null
+++ b/src/main/java/gg/pufferfish/pufferfish/util/IterableWrapper.java
@@ -0,0 +1,20 @@
+package gg.pufferfish.pufferfish.util;
+
+import java.util.Iterator;
+
+import org.jetbrains.annotations.NotNull;
+
+public class IterableWrapper<T> implements Iterable<T> {
+
+ private final Iterator<T> iterator;
+
+ public IterableWrapper(Iterator<T> iterator) {
+ this.iterator = iterator;
+ }
+
+ @NotNull
+ @Override
+ public Iterator<T> iterator() {
+ return iterator;
+ }
+}
diff --git a/src/main/java/gg/pufferfish/pufferfish/util/Long2ObjectOpenHashMapWrapper.java b/src/main/java/gg/pufferfish/pufferfish/util/Long2ObjectOpenHashMapWrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5578acce073cea8a60619e634b3862624c8a1ae8
--- /dev/null
+++ b/src/main/java/gg/pufferfish/pufferfish/util/Long2ObjectOpenHashMapWrapper.java
@@ -0,0 +1,42 @@
+package gg.pufferfish.pufferfish.util;
+
+import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
+
+import java.util.Map;
+
+import org.jetbrains.annotations.Nullable;
+
+public class Long2ObjectOpenHashMapWrapper<V> extends Long2ObjectOpenHashMap<V> {
+
+ private final Map<Long, V> backingMap;
+
+ public Long2ObjectOpenHashMapWrapper(Map<Long, V> map) {
+ backingMap = map;
+ }
+
+ @Override
+ public V put(Long key, V value) {
+ return backingMap.put(key, value);
+ }
+
+ @Override
+ public V get(Object key) {
+ return backingMap.get(key);
+ }
+
+ @Override
+ public V remove(Object key) {
+ return backingMap.remove(key);
+ }
+
+ @Nullable
+ @Override
+ public V putIfAbsent(Long key, V value) {
+ return backingMap.putIfAbsent(key, value);
+ }
+
+ @Override
+ public int size() {
+ return backingMap.size();
+ }
+}

View File

@@ -32,10 +32,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
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 8bca5e1165e09e219386a787eb36fabcd948a0e6..3f787ea97480fa987cc1fc8d64268d46723fe1dd 100644 index 7e94dcbf3adb8954800a6d577b39616638d673e8..4c95cb6a53004157faac55540225da3e4f8eb82b 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
@@ -725,6 +725,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -744,6 +744,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
org.spigotmc.ActivationRange.activateEntities(this); // Spigot org.spigotmc.ActivationRange.activateEntities(this); // Spigot
this.timings.entityTick.startTiming(); // Spigot this.timings.entityTick.startTiming(); // Spigot
this.entityTickList.forEach((entity) -> { this.entityTickList.forEach((entity) -> {
@@ -44,7 +44,7 @@ index 8bca5e1165e09e219386a787eb36fabcd948a0e6..3f787ea97480fa987cc1fc8d64268d46
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
entity.discard(); entity.discard();
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 092074acfc53d422b92efbe16e492c26f43db1f9..bdd61610c9f1c380a8e5e068a5ad85dea86c26b9 100644 index ea0e44fa359f5fecbf1c3fc7fc5da62611e5565d..611cf8f85d479798858477dc5f657a567e32e04d 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
@@ -431,6 +431,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -431,6 +431,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -118,7 +118,7 @@ index 758f62416ca9c02351348ac0d41deeb4624abc0e..69130969c9a434ec2361e573c9a1ec9f
} }
} }
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
index 8ac1a3b86bf0eee6a27985d6b9dbc98b6fedbb15..95d20cd10ef0b3da32a6168c5d4a9bc4abc63e22 100644 index 6fd5f65d8fb8830e000af6556c4009befa65b66f..6e01c7ba7720d6b08e4e98f59e0c086179e2ee0d 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
@@ -39,9 +39,13 @@ public class GoalSelector { @@ -39,9 +39,13 @@ public class GoalSelector {

View File

@@ -149,10 +149,10 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a
+ } + }
+} +}
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
index 06455d65c4605ce092bf5300d432087f24186741..750fd2809f6d5d5896904cad0f65029b03bda849 100644 index f7241c5292f1c012404eea11256813fbc2c2df1a..fad407d0cec0605e303e93a79752435f0b4646d7 100644
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -137,6 +137,10 @@ public class MobGoalHelper { @@ -136,6 +136,10 @@ public class MobGoalHelper {
static { static {
// TODO these kinda should be checked on each release, in case obfuscation changes // TODO these kinda should be checked on each release, in case obfuscation changes
deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee"); deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee");
@@ -699,7 +699,7 @@ index d2ea951c7e5899d0e2edb52064e35c23965c4230..b929842514a97ca993ead608d355a4af
Bootstrap.bootStrap(); Bootstrap.bootStrap();
Bootstrap.validate(); Bootstrap.validate();
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 29c35af2dd3bbcc2527542d594316b9756c7c2a2..21d3c7cb818a5a61f5532b73f2b320665802ec0f 100644 index 333beb88e048daaaf44e67984bb17d5201a9ab21..dd6e71ac7d02fc0ce8c904a59c3d8924e1c3ca09 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
@@ -289,6 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -289,6 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -781,7 +781,7 @@ index 29c35af2dd3bbcc2527542d594316b9756c7c2a2..21d3c7cb818a5a61f5532b73f2b32066
this.startMeasuringTaskExecutionTime(); this.startMeasuringTaskExecutionTime();
this.waitUntilNextTick(); this.waitUntilNextTick();
this.finishMeasuringTaskExecutionTime(); this.finishMeasuringTaskExecutionTime();
@@ -1737,7 +1767,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1736,7 +1766,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
long worldTime = level.getGameTime(); long worldTime = level.getGameTime();
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
for (Player entityhuman : level.players()) { for (Player entityhuman : level.players()) {
@@ -790,7 +790,7 @@ index 29c35af2dd3bbcc2527542d594316b9756c7c2a2..21d3c7cb818a5a61f5532b73f2b32066
continue; continue;
} }
ServerPlayer entityplayer = (ServerPlayer) entityhuman; ServerPlayer entityplayer = (ServerPlayer) entityhuman;
@@ -1758,6 +1788,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1757,6 +1787,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
worldserver.updateLagCompensationTick(); // Paper - lag compensation worldserver.updateLagCompensationTick(); // Paper - lag compensation
@@ -1098,7 +1098,7 @@ index c80be65d190c85e7f0ea8233ebbbdbc1ea67f276..97e793c971614299504605aeb4f99cad
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) { public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) {
this.trackedPlayers = trackedPlayers; this.trackedPlayers = trackedPlayers;
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 e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0dc2bc6f6e 100644 index 4c95cb6a53004157faac55540225da3e4f8eb82b..e3152dd90c5c58a8f40491fa3250f7e38c2eaa8b 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
@@ -220,6 +220,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -220,6 +220,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -1118,7 +1118,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
public LevelChunk getChunkIfLoaded(int x, int z) { public LevelChunk getChunkIfLoaded(int x, int z) {
return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately
@@ -544,7 +547,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -563,7 +566,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.dragonParts = new Int2ObjectOpenHashMap(); this.dragonParts = new Int2ObjectOpenHashMap();
this.tickTime = flag1; this.tickTime = flag1;
this.server = minecraftserver; this.server = minecraftserver;
@@ -1144,7 +1144,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
this.serverLevelData = iworlddataserver; this.serverLevelData = iworlddataserver;
ChunkGenerator chunkgenerator = worlddimension.generator(); ChunkGenerator chunkgenerator = worlddimension.generator();
// CraftBukkit start // CraftBukkit start
@@ -615,6 +635,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -634,6 +654,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.chunkTaskScheduler = new ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler((ServerLevel)(Object)this, ca.spottedleaf.moonrise.common.util.MoonriseCommon.WORKER_POOL); this.chunkTaskScheduler = new ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler((ServerLevel)(Object)this, ca.spottedleaf.moonrise.common.util.MoonriseCommon.WORKER_POOL);
// Paper end - rewrite chunk system // Paper end - rewrite chunk system
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
@@ -1152,7 +1152,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
} }
// Paper start // Paper start
@@ -661,7 +682,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -680,7 +701,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
long j; long j;
@@ -1161,7 +1161,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
// CraftBukkit start // CraftBukkit start
j = this.levelData.getDayTime() + 24000L; j = this.levelData.getDayTime() + 24000L;
TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime());
@@ -783,6 +804,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -802,6 +823,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.serverLevelData.setGameTime(i); this.serverLevelData.setGameTime(i);
this.serverLevelData.getScheduledEvents().tick(this.server, i); this.serverLevelData.getScheduledEvents().tick(this.server, i);
if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
@@ -1175,7 +1175,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
this.setDayTime(this.levelData.getDayTime() + 1L); this.setDayTime(this.levelData.getDayTime() + 1L);
} }
@@ -791,8 +819,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -810,8 +838,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
public void setDayTime(long timeOfDay) { public void setDayTime(long timeOfDay) {
this.serverLevelData.setDayTime(timeOfDay); this.serverLevelData.setDayTime(timeOfDay);
@@ -1198,7 +1198,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) {
Iterator iterator = this.customSpawners.iterator(); Iterator iterator = this.customSpawners.iterator();
@@ -886,10 +928,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -905,10 +947,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses
if (flag1) { if (flag1) {
@@ -1219,7 +1219,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
entityhorseskeleton.setAge(0); entityhorseskeleton.setAge(0);
entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ());
this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
@@ -968,7 +1018,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -987,7 +1037,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
return holder.is(PoiTypes.LIGHTNING_ROD); return holder.is(PoiTypes.LIGHTNING_ROD);
}, (blockposition1) -> { }, (blockposition1) -> {
return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1;
@@ -1228,7 +1228,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
return optional.map((blockposition1) -> { return optional.map((blockposition1) -> {
return blockposition1.above(1); return blockposition1.above(1);
@@ -1017,11 +1067,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1036,11 +1086,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
if (this.canSleepThroughNights()) { if (this.canSleepThroughNights()) {
if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) {
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
@@ -1257,7 +1257,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
ichatmutablecomponent = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(i)); ichatmutablecomponent = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(i));
} }
@@ -1161,6 +1227,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1180,6 +1246,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@VisibleForTesting @VisibleForTesting
public void resetWeatherCycle() { public void resetWeatherCycle() {
// CraftBukkit start // CraftBukkit start
@@ -1265,7 +1265,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents
// If we stop due to everyone sleeping we should reset the weather duration to some other random value. // If we stop due to everyone sleeping we should reset the weather duration to some other random value.
// Not that everyone ever manages to get the whole server to sleep at the same time.... // Not that everyone ever manages to get the whole server to sleep at the same time....
@@ -1168,6 +1235,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1187,6 +1254,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.serverLevelData.setRainTime(0); this.serverLevelData.setRainTime(0);
} }
// CraftBukkit end // CraftBukkit end
@@ -1273,7 +1273,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents
// CraftBukkit start // CraftBukkit start
// If we stop due to everyone sleeping we should reset the weather duration to some other random value. // If we stop due to everyone sleeping we should reset the weather duration to some other random value.
@@ -2606,7 +2674,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -2625,7 +2693,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
// Spigot Start // Spigot Start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
// Paper start - Fix merchant inventory not closing on entity removal // Paper start - Fix merchant inventory not closing on entity removal
@@ -1283,10 +1283,10 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
} }
// Paper end - Fix merchant inventory not closing on entity removal // Paper end - Fix merchant inventory not closing on entity removal
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 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff866bf3f6 100644 index a5ed3eef0f66a44a9ce1effff19dbde7c1caa4ab..c98389197ee11d4fb64625169f342f762287ee94 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
@@ -303,6 +303,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -302,6 +302,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable String clientBrandName = null; // Paper - Brand support
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event
@@ -1297,7 +1297,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
// Paper start - rewrite chunk system // Paper start - rewrite chunk system
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
@@ -602,6 +606,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -599,6 +603,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
}); });
} }
@@ -1307,7 +1307,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
} }
@Override @Override
@@ -678,6 +685,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -675,6 +682,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
}); });
} }
@@ -1317,7 +1317,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
} }
// CraftBukkit start - World fallback code, either respawn location or global spawn // CraftBukkit start - World fallback code, either respawn location or global spawn
@@ -807,6 +817,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -804,6 +814,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
this.trackEnteredOrExitedLavaOnVehicle(); this.trackEnteredOrExitedLavaOnVehicle();
this.updatePlayerAttributes(); this.updatePlayerAttributes();
this.advancements.flushDirty(this); this.advancements.flushDirty(this);
@@ -1333,7 +1333,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
} }
private void updatePlayerAttributes() { private void updatePlayerAttributes() {
@@ -1072,6 +1091,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1069,6 +1088,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
})); }));
PlayerTeam scoreboardteam = this.getTeam(); PlayerTeam scoreboardteam = this.getTeam();
@@ -1341,7 +1341,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
if (scoreboardteam != null && scoreboardteam.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { if (scoreboardteam != null && scoreboardteam.getDeathMessageVisibility() != Team.Visibility.ALWAYS) {
if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) {
this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent);
@@ -1175,6 +1195,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1172,6 +1192,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
if (this.isInvulnerableTo(source)) { if (this.isInvulnerableTo(source)) {
return false; return false;
} else { } else {
@@ -1358,7 +1358,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL); boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL);
if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) {
@@ -1402,6 +1432,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1399,6 +1429,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
this.unsetRemoved(); this.unsetRemoved();
// CraftBukkit end // CraftBukkit end
@@ -1366,7 +1366,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
this.setServerLevel(worldserver); this.setServerLevel(worldserver);
this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.teleport(exit); // CraftBukkit - use internal teleport without event
this.connection.resetPosition(); this.connection.resetPosition();
@@ -1505,7 +1536,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1502,7 +1533,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
return entitymonster.isPreventingPlayerRest(this); return entitymonster.isPreventingPlayerRest(this);
}); });
@@ -1375,7 +1375,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
return Either.left(net.minecraft.world.entity.player.Player.BedSleepingProblem.NOT_SAFE); return Either.left(net.minecraft.world.entity.player.Player.BedSleepingProblem.NOT_SAFE);
} }
} }
@@ -1545,7 +1576,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1542,7 +1573,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
}); });
if (!this.serverLevel().canSleepThroughNights()) { if (!this.serverLevel().canSleepThroughNights()) {
@@ -1396,7 +1396,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
} }
((ServerLevel) this.level()).updateSleepingPlayerList(); ((ServerLevel) this.level()).updateSleepingPlayerList();
@@ -1667,6 +1710,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1664,6 +1707,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@Override @Override
public void openTextEdit(SignBlockEntity sign, boolean front) { public void openTextEdit(SignBlockEntity sign, boolean front) {
@@ -1404,7 +1404,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos())); this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos()));
this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front));
} }
@@ -2003,6 +2047,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -2000,6 +2044,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
this.lastSentExp = -1; // CraftBukkit - Added to reset this.lastSentExp = -1; // CraftBukkit - Added to reset
} }
@@ -1431,7 +1431,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
@Override @Override
public void displayClientMessage(Component message, boolean overlay) { public void displayClientMessage(Component message, boolean overlay) {
this.sendSystemMessage(message, overlay); this.sendSystemMessage(message, overlay);
@@ -2343,8 +2407,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -2340,8 +2404,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
public void resetLastActionTime() { public void resetLastActionTime() {
this.lastActionTime = Util.getMillis(); this.lastActionTime = Util.getMillis();
@@ -1500,7 +1500,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
public ServerStatsCounter getStats() { public ServerStatsCounter getStats() {
return this.stats; return this.stats;
} }
@@ -2948,4 +3072,50 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -2945,4 +3069,50 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
return (CraftPlayer) super.getBukkitEntity(); return (CraftPlayer) super.getBukkitEntity();
} }
// CraftBukkit end // CraftBukkit end
@@ -2228,7 +2228,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9
} }
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 109106fb93dd2b05363a1d89d38a9ccf09ae5195..1ee16b9102aea1248f10a41b4bd4cddf5dc12928 100644 index b22fe825a8556a9ec6cb645b67a4335a6cb7f54e..173f4f3b046bb2566e33b5dc93c3e6e459410a43 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
@@ -169,6 +169,7 @@ import org.bukkit.plugin.PluginManager; @@ -169,6 +169,7 @@ import org.bukkit.plugin.PluginManager;
@@ -14495,7 +14495,7 @@ index d6e43a9b061a45c8e785ab93bafc8a9721fca7d0..8c79bbd7dde436915f1aeedef1b71379
// Paper start - collision optimisations // Paper start - collision optimisations
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 9da1b9e2afac5d6a82eeff66f685c032c19e0366..4a71075b673e2b9413d9797ddeeafc04d699ec5e 100644 index 00b001e279ed1e79ad4171a5d2cedb2745ea946d..3cb6faa071c6a743a845bc358ea411a165c4024b 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
@@ -176,6 +176,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -176,6 +176,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@@ -14580,7 +14580,7 @@ index 9da1b9e2afac5d6a82eeff66f685c032c19e0366..4a71075b673e2b9413d9797ddeeafc04
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
index 7e707fe1d800debf1eef8800fe98eb4e1dbd800b..d490429ddbb8cd82aeda5e03540075c9167b095e 100644 index 2c992661d4864cf826464f840c9d13c09b26f86f..1da91797ddbaf2cee7124b3dbd0970acb1a23073 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -251,7 +251,7 @@ public final class NaturalSpawner { @@ -251,7 +251,7 @@ public final class NaturalSpawner {
@@ -16975,7 +16975,7 @@ index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486c
+ // Purpur end - OfflinePlayer API + // Purpur end - OfflinePlayer API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 25cccb9796004891df59c15970b3e1ba391d4073..d10c10907cefc06afff7e0f4c4cbbca352410c25 100644 index b77455f84acc4b17087b2f973bf9c26cd62fb117..4878f26e9daf98858e45e14abb37b27b6f3f9c0a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -414,6 +414,20 @@ public final class CraftServer implements Server { @@ -414,6 +414,20 @@ public final class CraftServer implements Server {
@@ -17115,7 +17115,7 @@ index 25cccb9796004891df59c15970b3e1ba391d4073..d10c10907cefc06afff7e0f4c4cbbca3
+ // Purpur end + // Purpur end
} }
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 f2aec38dc7a631e41983f2c21f93ee0b260058b0..ff62cfec3b15307b801e35666772be4b278e5252 100644 index 1f354c6c09bc49e57a69db7cfa4f2a331dd02bdb..b251b057ec6e0bb90d140be8f4d24a6c20ae97bf 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
@@ -2338,6 +2338,48 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -2338,6 +2338,48 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -17545,7 +17545,7 @@ index 351f42842b780d053cd2e5bad9ae299449141b10..4860574e7fad7a9527dda599703c573c
+ // Purpur end + // Purpur 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 d01b45a48d412e3cb591acee101730704574448a..6a3b023b0f60dbb350943bdd7f0bfead9e8e3ce0 100644 index 992437a6e838f653f32d33b5b3f702c484640a97..b9130d040acff1e5cb7a475be93b03cdbe229683 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
@@ -576,10 +576,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -576,10 +576,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@@ -27,7 +27,7 @@ index e94224ed280247ee69dfdff8dc960f2b8729be33..5b9725a9a81c0850dc2809c150529e5f
for (Component component : formatProviders(spigotPlugins, sender)) { // Purpur for (Component component : formatProviders(spigotPlugins, sender)) { // Purpur
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 21d3c7cb818a5a61f5532b73f2b320665802ec0f..ab1ac64066f43a3c14f788760c12fc964a3cc60f 100644 index dd6e71ac7d02fc0ce8c904a59c3d8924e1c3ca09..ddff5713a30d96e0b6876371f5936aa9b8ccf339 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
@@ -300,7 +300,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -300,7 +300,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -47,7 +47,7 @@ index 21d3c7cb818a5a61f5532b73f2b320665802ec0f..ab1ac64066f43a3c14f788760c12fc96
+ +
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 io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system Thread thread = new ca.spottedleaf.moonrise.common.util.TickThread(() -> { // Paper - rewrite chunk system
@@ -1030,6 +1032,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1030,6 +1032,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.error("[UPnP] Failed to close port {}", this.getPort()); LOGGER.error("[UPnP] Failed to close port {}", this.getPort());
} }
@@ -86,10 +86,10 @@ index 096c89bd01cec2abd151bf6fffc4847d1bcd548f..cd0a8a6a1be75cab8bbb8ee3ac17bb73
this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory()); this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory());
this.repaint(); this.repaint();
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 3b81ba4c283e474493e9bc97bbfa230a7878cdbc..015780e88997cc0518e5626b3094770a41669fd8 100644 index d2750fb7efbe8c1c77d4cb57f6ceec4fd968e326..5f976c5aac125cfa802c4141b9ea07a204bb30f6 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -466,7 +466,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -476,7 +476,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
this.lastSpawnState = spawnercreature_d; this.lastSpawnState = spawnercreature_d;
// Gale start - MultiPaper - skip unnecessary mob spawning computations // Gale start - MultiPaper - skip unnecessary mob spawning computations
} else { } else {
@@ -100,10 +100,10 @@ index 3b81ba4c283e474493e9bc97bbfa230a7878cdbc..015780e88997cc0518e5626b3094770a
// Gale end - MultiPaper - skip unnecessary mob spawning computations // Gale end - MultiPaper - skip unnecessary mob spawning computations
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 5c7fc68e5d1c33fd5151512582ba9a0dc2bc6f6e..c4ad1054ab6334ea33533396ed33e10b214c8721 100644 index e3152dd90c5c58a8f40491fa3250f7e38c2eaa8b..ac323393d7fe0b77bafb0728b7eb545930136e6e 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
@@ -682,7 +682,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -701,7 +701,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
long j; long j;
@@ -113,7 +113,7 @@ index 5c7fc68e5d1c33fd5151512582ba9a0dc2bc6f6e..c4ad1054ab6334ea33533396ed33e10b
j = this.levelData.getDayTime() + 24000L; j = this.levelData.getDayTime() + 24000L;
TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime());
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 1ee16b9102aea1248f10a41b4bd4cddf5dc12928..95d246ec3fded53f325bbeb8bf3244576aa9ca04 100644 index 173f4f3b046bb2566e33b5dc93c3e6e459410a43..b907a7231cbed1c7b95b0b57ee0ac68843e5b412 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
@@ -565,13 +565,29 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -565,13 +565,29 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
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 ab1ac64066f43a3c14f788760c12fc964a3cc60f..e955f760abd27abb22cfd3b3c9627207a522300c 100644 index ddff5713a30d96e0b6876371f5936aa9b8ccf339..63f193a07d6cb455ca77c18fb6e59e067a09694a 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
@@ -1932,7 +1932,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1931,7 +1931,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate @DontObfuscate
public String getServerModName() { public String getServerModName() {

View File

@@ -801,7 +801,7 @@ index 0c3c82b28e581286b798ee58ca4193efc2faff4a..5a2a4f69995f23e799370c05f28f9353
// return true as command was handled // return true as command was handled
return 1; return 1;
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
index 4a215cec69f8fe81d55b497c0b5ff98d03f235ae..726d5cc3422368e7a2bbdb8fce7484da30e24174 100644 index 65c7a798ae69602f586038ecb2c9ab4f7b968fce..726d5cc3422368e7a2bbdb8fce7484da30e24174 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
@@ -811,7 +811,7 @@ index 4a215cec69f8fe81d55b497c0b5ff98d03f235ae..726d5cc3422368e7a2bbdb8fce7484da
import com.mojang.logging.LogUtils; import com.mojang.logging.LogUtils;
import io.papermc.paper.configuration.constraint.Constraints; import io.papermc.paper.configuration.constraint.Constraints;
import io.papermc.paper.configuration.type.number.IntOr; import io.papermc.paper.configuration.type.number.IntOr;
@@ -91,39 +90,6 @@ public class GlobalConfiguration extends ConfigurationPart { @@ -91,37 +90,6 @@ public class GlobalConfiguration extends ConfigurationPart {
public boolean useDisplayNameInQuitMessage = false; public boolean useDisplayNameInQuitMessage = false;
} }
@@ -820,10 +820,8 @@ index 4a215cec69f8fe81d55b497c0b5ff98d03f235ae..726d5cc3422368e7a2bbdb8fce7484da
- -
- @Deprecated(forRemoval = true) - @Deprecated(forRemoval = true)
- public class Timings extends ConfigurationPart { - public class Timings extends ConfigurationPart {
- // Gale start - recommend disabling timings on startup - public boolean enabled = false;
- public boolean enabled = false; // Gale - set default value to false - public boolean warnIfEnabled = true; // Gale - recommend disabling timings on startup
- public boolean warnIfEnabled = true;
- // Gale end - recommend disabling timings on startup
- public boolean verbose = true; - public boolean verbose = true;
- public String url = "https://timin.gs/"; // Gale - use timin.gs by default - public String url = "https://timin.gs/"; // Gale - use timin.gs by default
- public boolean serverNamePrivacy = false; - public boolean serverNamePrivacy = false;
@@ -907,7 +905,7 @@ index e2c24813f59c2fd075c740ac1842a38f20ed8554..1f7f68aad97ee73763c042837f239bdc
} catch (Exception exception) { } catch (Exception exception) {
if (exception instanceof ReportedException) { if (exception instanceof ReportedException) {
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 e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53503e05a5 100644 index 63f193a07d6cb455ca77c18fb6e59e067a09694a..3a4aed08dbf8055cf0861bf3961706eb0de6e85d 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
@@ -187,8 +187,6 @@ import org.bukkit.craftbukkit.CraftRegistry; @@ -187,8 +187,6 @@ import org.bukkit.craftbukkit.CraftRegistry;
@@ -953,20 +951,19 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
// Paper end // Paper end
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events
@@ -1638,11 +1633,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1637,11 +1632,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.isSaving = false;
} }
// Paper end - Incremental chunk and player saving // Paper end - Incremental chunk and player saving
io.papermc.paper.util.CachedLists.reset(); // Paper
- // Paper start - move executeAll() into full server tick timing - // Paper start - move executeAll() into full server tick timing
- try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) { - try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) {
- this.runAllTasks(); this.runAllTasks();
- } - }
- // Paper end - // Paper end
+ this.runAllTasks();
// Paper start - Server Tick Events // Paper start - Server Tick Events
long endTime = System.nanoTime(); long endTime = System.nanoTime();
long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime; long remaining = (TICK_TIME - (endTime - lastTick)) - catchupTime;
@@ -1662,7 +1653,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1661,7 +1652,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - Add tick times API and /mspt command // Paper end - Add tick times API and /mspt command
this.logTickMethodTime(i); this.logTickMethodTime(i);
org.spigotmc.WatchdogThread.tick(); // Spigot org.spigotmc.WatchdogThread.tick(); // Spigot
@@ -974,7 +971,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
} }
private void logTickMethodTime(long tickStartTime) { private void logTickMethodTime(long tickStartTime) {
@@ -1733,9 +1723,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1732,9 +1722,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.getPlayerList().getPlayers().forEach((entityplayer) -> { this.getPlayerList().getPlayers().forEach((entityplayer) -> {
entityplayer.connection.suspendFlushing(); entityplayer.connection.suspendFlushing();
}); });
@@ -984,7 +981,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
// 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();
getAllLevels().forEach(level -> { getAllLevels().forEach(level -> {
@@ -1751,20 +1739,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1750,20 +1738,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}); });
// Paper end - Folia scheduler API // Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
@@ -1005,7 +1002,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
// Send time updates to everyone, it will get the right time from the world the player is in. // Send time updates to everyone, it will get the right time from the world the player is in.
// Paper start - Perf: Optimize time updates // Paper start - Perf: Optimize time updates
for (final ServerLevel level : this.getAllLevels()) { for (final ServerLevel level : this.getAllLevels()) {
@@ -1784,7 +1767,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1783,7 +1766,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
} }
// Paper end - Perf: Optimize time updates // Paper end - Perf: Optimize time updates
@@ -1013,7 +1010,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
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
@@ -1803,9 +1785,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1802,9 +1784,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end */ // CraftBukkit end */
try { try {
@@ -1023,7 +1020,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
} catch (Throwable throwable) { } catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world"); CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
@@ -1817,21 +1797,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1816,21 +1796,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
@@ -1099,7 +1096,7 @@ index ca31ceb08099324df560bfc4f7888a509ad75307..b38470108f0842ee65cb55ff7e376105
// Paper start // Paper start
if (waitableArray[0] != null) { if (waitableArray[0] != null) {
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 3af290825bbbc461354c6d76b61a0ebf8c8a3ee7..138bb26241ce67d1dd8447a7f1c737ba4c40b4dd 100644 index 41648e29c8f90d1a0a0ebc54be03890383ff15f1..d31a2c3f1ff62f60a058148760fb6dbf92e46a76 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
@@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
@@ -1109,7 +1106,7 @@ index 3af290825bbbc461354c6d76b61a0ebf8c8a3ee7..138bb26241ce67d1dd8447a7f1c737ba
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder; import com.google.common.collect.ImmutableList.Builder;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@@ -985,7 +984,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -952,7 +951,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
List<ServerPlayer> list = Lists.newArrayList(); List<ServerPlayer> list = Lists.newArrayList();
List<ServerPlayer> list1 = this.level.players(); List<ServerPlayer> list1 = this.level.players();
ObjectIterator objectiterator = this.entityMap.values().iterator(); ObjectIterator objectiterator = this.entityMap.values().iterator();
@@ -1117,7 +1114,7 @@ index 3af290825bbbc461354c6d76b61a0ebf8c8a3ee7..138bb26241ce67d1dd8447a7f1c737ba
ChunkMap.TrackedEntity playerchunkmap_entitytracker; ChunkMap.TrackedEntity playerchunkmap_entitytracker;
@@ -1010,17 +1008,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -977,17 +975,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
playerchunkmap_entitytracker.serverEntity.sendChanges(); playerchunkmap_entitytracker.serverEntity.sendChanges();
} }
} }
@@ -1136,10 +1133,10 @@ index 3af290825bbbc461354c6d76b61a0ebf8c8a3ee7..138bb26241ce67d1dd8447a7f1c737ba
} }
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814bf36975f 100644 index 5f976c5aac125cfa802c4141b9ea07a204bb30f6..1f7906d2c5fbe6d732d773cbd0f36d28163f3a13 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -356,9 +356,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -355,9 +355,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
public void save(boolean flush) { public void save(boolean flush) {
// Paper - rewrite chunk system // Paper - rewrite chunk system
@@ -1149,7 +1146,7 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
} }
@Override @Override
@@ -389,24 +387,18 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -388,24 +386,18 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@Override @Override
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
@@ -1174,15 +1171,15 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
this.clearCache(); this.clearCache();
} }
@@ -419,7 +411,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -436,7 +428,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
if (!this.level.isDebug()) { }
List<ServerChunkCache.ChunkAndHolder> list = Lists.newArrayListWithCapacity(this.chunkMap.size()); // Paper end - chunk tick iteration optimisations
Iterator iterator = this.chunkMap.getChunks().iterator(); Iterator iterator = null; // Paper - chunk tick iteration optimisations
- if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper - if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper
while (iterator.hasNext()) { // Paper - chunk tick iteration optimisations
ChunkHolder playerchunk = (ChunkHolder) iterator.next();
@@ -437,7 +428,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -447,7 +438,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
boolean flagAndHasNaturalSpawn = flag && this.anySpawnCategoryIsSpawnedThisTick(); boolean flagAndHasNaturalSpawn = flag && this.anySpawnCategoryIsSpawnedThisTick();
if (flagAndHasNaturalSpawn) { if (flagAndHasNaturalSpawn) {
// Gale end - MultiPaper - skip unnecessary mob spawning computations // Gale end - MultiPaper - skip unnecessary mob spawning computations
@@ -1190,7 +1187,7 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
int k = this.distanceManager.getNaturalSpawnChunkCount(); int k = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - Optional per player mob spawns // Paper start - Optional per player mob spawns
int naturalSpawnChunkCount = k; int naturalSpawnChunkCount = k;
@@ -461,7 +451,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -471,7 +461,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false);
} }
// Paper end - Optional per player mob spawns // Paper end - Optional per player mob spawns
@@ -1198,7 +1195,7 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
this.lastSpawnState = spawnercreature_d; this.lastSpawnState = spawnercreature_d;
// Gale start - MultiPaper - skip unnecessary mob spawning computations // Gale start - MultiPaper - skip unnecessary mob spawning computations
@@ -506,19 +495,14 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -516,17 +505,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
} }
} }
} }
@@ -1211,15 +1208,21 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
} }
} }
list.forEach((chunkproviderserver_a1) -> { // Paper start - chunk tick iteration optimisations
- this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing - this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing
chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); {
- this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing final it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder> chunks = (it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder>)list;
}); final ServerChunkCache.ChunkAndHolder[] raw = chunks.elements();
@@ -540,7 +525,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
holder.holder().broadcastChanges(holder.chunk());
}
}
- this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing
// Paper end - chunk tick iteration optimisations
} }
} }
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 c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b952667443932 100644 index ac323393d7fe0b77bafb0728b7eb545930136e6e..b97f3ec10552941892b2b6edd53a873eaf72df86 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
@@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
@@ -1230,7 +1233,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.mojang.datafixers.DataFixer; import com.mojang.datafixers.DataFixer;
import com.mojang.datafixers.util.Pair; import com.mojang.datafixers.util.Pair;
@@ -707,27 +706,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -726,27 +725,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.tickTime(); this.tickTime();
} }
@@ -1258,7 +1261,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
} }
this.handlingTick = false; this.handlingTick = false;
@@ -738,13 +729,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -757,13 +748,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
} }
if (flag1 || this.emptyTime++ < 300) { if (flag1 || this.emptyTime++ < 300) {
@@ -1272,7 +1275,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
this.entityTickList.forEach((entity) -> { this.entityTickList.forEach((entity) -> {
entity.activatedPriorityReset = false; // Pufferfish - DAB entity.activatedPriorityReset = false; // Pufferfish - DAB
if (!entity.isRemoved()) { if (!entity.isRemoved()) {
@@ -781,8 +770,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -800,8 +789,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
} }
} }
}); });
@@ -1281,7 +1284,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
this.tickBlockEntities(); this.tickBlockEntities();
} }
@@ -964,12 +951,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -983,12 +970,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
} }
} // Paper - Option to disable ice and snow } // Paper - Option to disable ice and snow
@@ -1294,7 +1297,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
} }
@VisibleForTesting @VisibleForTesting
@@ -1298,31 +1282,21 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1317,31 +1301,21 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
currentlyTickingEntity.lazySet(entity); currentlyTickingEntity.lazySet(entity);
} }
// Paper end - log detailed entity tick information // Paper end - log detailed entity tick information
@@ -1326,7 +1329,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
Iterator iterator = entity.getPassengers().iterator(); Iterator iterator = entity.getPassengers().iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@@ -1330,7 +1304,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1349,7 +1323,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.tickPassenger(entity, entity1); this.tickPassenger(entity, entity1);
} }
@@ -1334,7 +1337,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
// Paper start - log detailed entity tick information // Paper start - log detailed entity tick information
} finally { } finally {
if (currentlyTickingEntity.get() == entity) { if (currentlyTickingEntity.get() == entity) {
@@ -1345,9 +1318,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1364,9 +1337,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
if (passenger instanceof Player || this.entityTickList.contains(passenger)) { if (passenger instanceof Player || this.entityTickList.contains(passenger)) {
// Paper - EAR 2 // Paper - EAR 2
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger);
@@ -1344,7 +1347,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
passenger.setOldPosAndRot(); passenger.setOldPosAndRot();
++passenger.tickCount; ++passenger.tickCount;
@@ -1369,8 +1339,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1388,8 +1358,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.tickPassenger(passenger, entity2); this.tickPassenger(passenger, entity2);
} }
@@ -1353,7 +1356,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
} }
} else { } else {
passenger.stopRiding(); passenger.stopRiding();
@@ -1390,7 +1358,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1409,7 +1377,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld()));
} }
@@ -1361,7 +1364,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
if (doFull) { if (doFull) {
this.saveLevelData(true); this.saveLevelData(true);
} }
@@ -1407,7 +1374,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1426,7 +1393,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData());
} }
// CraftBukkit end // CraftBukkit end
@@ -1369,7 +1372,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
} }
// Paper end - Incremental chunk and player saving // Paper end - Incremental chunk and player saving
@@ -1421,7 +1387,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1440,7 +1406,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
if (!savingDisabled) { if (!savingDisabled) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit
@@ -1377,7 +1380,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
if (progressListener != null) { if (progressListener != null) {
progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel"));
} }
@@ -1431,10 +1396,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -1450,10 +1415,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
progressListener.progressStage(Component.translatable("menu.savingChunks")); progressListener.progressStage(Component.translatable("menu.savingChunks"));
} }
@@ -1556,7 +1559,7 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..ac67dd7a30616fe70f73426e332972b7
} }
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 4a71075b673e2b9413d9797ddeeafc04d699ec5e..fd23063ef316d6f1930a565c601bdf5b72bcfda1 100644 index 3cb6faa071c6a743a845bc358ea411a165c4024b..24ed26286c7e3e45279b6b27cd0a432b37fda4b2 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
@@ -177,7 +177,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -177,7 +177,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@@ -1602,7 +1605,7 @@ index 4a71075b673e2b9413d9797ddeeafc04d699ec5e..fd23063ef316d6f1930a565c601bdf5b
} }
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
index d490429ddbb8cd82aeda5e03540075c9167b095e..d556089907bb695a9d87df1961ef0b0ae4382cad 100644 index 1da91797ddbaf2cee7124b3dbd0970acb1a23073..e33b39d369386d677cc15247846790b498e37a82 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -127,7 +127,6 @@ public final class NaturalSpawner { @@ -127,7 +127,6 @@ public final class NaturalSpawner {
@@ -1660,10 +1663,10 @@ index cd0e43f4c53a746dd6183a8406269f9b11ad3571..54657ac895fb2fa9c58910d5421f0082
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
public CraftPersistentDataContainer persistentDataContainer; public CraftPersistentDataContainer persistentDataContainer;
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b79d79838 100644 index 36540053590c30a902b9986dcf2e74375157822d..fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -644,7 +644,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -655,7 +655,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system
if (this.needsDecoration) { if (this.needsDecoration) {
@@ -1671,7 +1674,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b
this.needsDecoration = false; this.needsDecoration = false;
java.util.Random random = new java.util.Random(); java.util.Random random = new java.util.Random();
random.setSeed(this.level.getSeed()); random.setSeed(this.level.getSeed());
@@ -664,7 +663,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -675,7 +674,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
} }
} }
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
@@ -1679,7 +1682,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b
} }
} }
} }
@@ -1001,7 +999,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -1012,7 +1010,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
if (LevelChunk.this.isTicking(blockposition)) { if (LevelChunk.this.isTicking(blockposition)) {
try { try {
@@ -1687,7 +1690,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);
if (this.blockEntity.getType().isValid(iblockdata)) { if (this.blockEntity.getType().isValid(iblockdata)) {
@@ -1024,14 +1021,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -1035,14 +1032,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
net.minecraft.world.level.chunk.LevelChunk.this.level.getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent net.minecraft.world.level.chunk.LevelChunk.this.level.getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent
LevelChunk.this.removeBlockEntity(this.getPos()); LevelChunk.this.removeBlockEntity(this.getPos());
// Paper end - Prevent block entity and entity crashes // Paper end - Prevent block entity and entity crashes
@@ -1703,7 +1706,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b
@Override @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index d10c10907cefc06afff7e0f4c4cbbca352410c25..ec341e053e8eb539d4401161245039c90609138c 100644 index 4878f26e9daf98858e45e14abb37b27b6f3f9c0a..6cd292c92486a807ab651f784171793d763e43d4 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -477,7 +477,6 @@ public final class CraftServer implements Server { @@ -477,7 +477,6 @@ public final class CraftServer implements Server {
@@ -1714,6 +1717,17 @@ index d10c10907cefc06afff7e0f4c4cbbca352410c25..ec341e053e8eb539d4401161245039c9
this.overrideSpawnLimits(); this.overrideSpawnLimits();
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave"); console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose")); this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose"));
@@ -1024,10 +1023,8 @@ public final class CraftServer implements Server {
commands.performCommand(results, commandLine, commandLine, true);
} catch (CommandException ex) {
this.pluginManager.callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper
- //target.timings.stopTiming(); // Spigot // Paper
throw ex;
} catch (Throwable ex) {
- //target.timings.stopTiming(); // Spigot // Paper
String msg = "Unhandled exception executing '" + commandLine + "' in " + target;
this.pluginManager.callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper
throw new CommandException(msg, ex);
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 006adb2adb27c497ede69f87e78bc3e34499cbf8..4ee1c3461d21feab3a54e76a7c2ab80b6ea2ab38 100644 index 006adb2adb27c497ede69f87e78bc3e34499cbf8..4ee1c3461d21feab3a54e76a7c2ab80b6ea2ab38 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/Cryptite/Slice Original project: https://github.com/Cryptite/Slice
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 5b645db318a73f352838d779e3be16ff866bf3f6..000ee5bf7ef715511e4232d757e8360037bfe8f4 100644 index c98389197ee11d4fb64625169f342f762287ee94..55c3e652be4d45c2c36c3b2dcef931b63270718b 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
@@ -307,6 +307,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -306,6 +306,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
private boolean tpsBar = false; // Purpur private boolean tpsBar = false; // Purpur
private boolean compassBar = false; // Purpur private boolean compassBar = false; // Purpur
private boolean ramBar = false; // Purpur private boolean ramBar = false; // Purpur
@@ -36,7 +36,7 @@ index d34e31c6f7591bfdd34a6f2fe9376a515f20c3b7..442b5ccc446d0dfc69f2d2e88003a776
entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked()));
entityplayer1.connection.send(new ClientboundSetExperiencePacket(entityplayer1.experienceProgress, entityplayer1.totalExperience, entityplayer1.experienceLevel)); entityplayer1.connection.send(new ClientboundSetExperiencePacket(entityplayer1.experienceProgress, entityplayer1.totalExperience, entityplayer1.experienceLevel));
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 ee1d4d83b856b9a7eba28a6f72256bb5dc33b67b..9325d2c676899fcedc360ea9183339c91af026dc 100644 index 6b285e068cc789fd49a8c0f22ebd98378b6dd86b..39cb0c26e1d7e246a5867ea0915dc87c43777cfe 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
@@ -1361,6 +1361,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1361,6 +1361,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@@ -51,10 +51,10 @@ index 1967c43ee3a12e63365cc40ee6565307e2fd73cf..6e376d0db5321d8e9b6e0b54617ffd17
assert isValidPath(path); assert isValidPath(path);
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 30f63049b254dd87df7d6bbb2415eb53503e05a5..e43250317c9373709ab5b7ba26bb85c75021604e 100644 index 3a4aed08dbf8055cf0861bf3961706eb0de6e85d..7bb592292222c58f28545434981bc5743ddf5a49 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
@@ -1803,6 +1803,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1802,6 +1802,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
GameTestTicker.SINGLETON.tick(); GameTestTicker.SINGLETON.tick();
} }
@@ -109,7 +109,7 @@ index 442b5ccc446d0dfc69f2d2e88003a77647af78f6..d9652ab4f1090193b20d3218dd5dce16
org.purpurmc.purpur.task.BossBarTask.removeFromAll(entityplayer.getBukkitEntity()); // Purpur org.purpurmc.purpur.task.BossBarTask.removeFromAll(entityplayer.getBukkitEntity()); // Purpur
ServerLevel worldserver = entityplayer.serverLevel(); ServerLevel worldserver = entityplayer.serverLevel();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index ec341e053e8eb539d4401161245039c90609138c..8e1bc7b117ac0766e3eb0f38cb33b71d6a972fb8 100644 index 6cd292c92486a807ab651f784171793d763e43d4..24d40d615fd1c88aae826709317fee59c93a2a77 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -491,6 +491,7 @@ public final class CraftServer implements Server { @@ -491,6 +491,7 @@ public final class CraftServer implements Server {
@@ -120,7 +120,7 @@ index ec341e053e8eb539d4401161245039c90609138c..8e1bc7b117ac0766e3eb0f38cb33b71d
} }
public boolean getCommandBlockOverride(String command) { public boolean getCommandBlockOverride(String command) {
@@ -1113,6 +1114,7 @@ public final class CraftServer implements Server { @@ -1111,6 +1112,7 @@ public final class CraftServer implements Server {
org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");

View File

@@ -38,7 +38,7 @@ index a74732902c0494c67e6acf2fc04581ff9c46b832..8b60c922750e71f526976782a1f156e9
LivingEntity entityliving1 = deadEntity.getLastHurtByMob(); LivingEntity entityliving1 = deadEntity.getLastHurtByMob();
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index db16be7db9d1df323f150dfd6f3d893b79d79838..a71d4b363eec79c55267d97549c5c8715459b95e 100644 index fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157..a9fd817f42f2ec2e7393e2bd2009ac1fdf60f317 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -81,7 +81,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -81,7 +81,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -70,7 +70,7 @@ index db16be7db9d1df323f150dfd6f3d893b79d79838..a71d4b363eec79c55267d97549c5c871
Heightmap.Types[] aheightmap_type = Heightmap.Types.values(); Heightmap.Types[] aheightmap_type = Heightmap.Types.values();
int j = aheightmap_type.length; int j = aheightmap_type.length;
@@ -219,9 +230,23 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -230,9 +241,23 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
Level world = this.level; Level world = this.level;
if (world instanceof ServerLevel worldserver) { if (world instanceof ServerLevel worldserver) {
@@ -97,7 +97,7 @@ index db16be7db9d1df323f150dfd6f3d893b79d79838..a71d4b363eec79c55267d97549c5c871
} else { } else {
return super.getListenerRegistry(ySectionCoord); return super.getListenerRegistry(ySectionCoord);
} }
@@ -605,7 +630,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -616,7 +641,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
} }
private void removeGameEventListenerRegistry(int ySectionCoord) { private void removeGameEventListenerRegistry(int ySectionCoord) {

View File

@@ -13,7 +13,7 @@ To avoid the hefty ArrayDeque's size() call, we check if we *really* need to exe
Most entities won't have any scheduled tasks, so this is a nice performance bonus. These optimizations, however, wouldn't work in a Folia environment, but because in SparklyPaper executeTick is always executed on the main thread, it ain't an issue for us (yay). Most entities won't have any scheduled tasks, so this is a nice performance bonus. These optimizations, however, wouldn't work in a Folia environment, but because in SparklyPaper executeTick is always executed on the main thread, it ain't an issue for us (yay).
diff --git a/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java b/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java diff --git a/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java b/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java
index 62484ebf4550b05182f693a3180bbac5d5fd906d..67800e426445060a8343e27a7452b8d7ed27ac5f 100644 index c03608fec96b51e1867f43d8f42e5aefb1520e46..15b21fa3907db1b77ed5b5d1050a37f42d27d5ab 100644
--- a/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java --- a/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java
+++ b/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java +++ b/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java
@@ -36,6 +36,7 @@ public final class EntityScheduler { @@ -36,6 +36,7 @@ public final class EntityScheduler {
@@ -75,7 +75,7 @@ index 62484ebf4550b05182f693a3180bbac5d5fd906d..67800e426445060a8343e27a7452b8d7
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 e43250317c9373709ab5b7ba26bb85c75021604e..084651b2c911ce207fffd2a2c4ba788301376ebc 100644 index 7bb592292222c58f28545434981bc5743ddf5a49..9cf5a18a765924586d485cfc94e78c628688dcee 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
@@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -86,7 +86,7 @@ index e43250317c9373709ab5b7ba26bb85c75021604e..084651b2c911ce207fffd2a2c4ba7883
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();
@@ -1726,6 +1727,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1725,6 +1726,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.server.getScheduler().mainThreadHeartbeat(this.tickCount); // CraftBukkit this.server.getScheduler().mainThreadHeartbeat(this.tickCount); // CraftBukkit
// 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 e43250317c9373709ab5b7ba26bb85c75021604e..084651b2c911ce207fffd2a2c4ba7883
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()) {
@@ -1737,6 +1750,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1736,6 +1749,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
} }
}); });

View File

@@ -16,10 +16,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 138bb26241ce67d1dd8447a7f1c737ba4c40b4dd..2cd211122038e4f24f7ec7fa235134ee740acfe1 100644 index d31a2c3f1ff62f60a058148760fb6dbf92e46a76..282f2ed157e514207c8b41a7fb355d3dba0917dd 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
@@ -1279,7 +1279,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -1246,7 +1246,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
@@ -29,7 +29,7 @@ index 138bb26241ce67d1dd8447a7f1c737ba4c40b4dd..2cd211122038e4f24f7ec7fa235134ee
} }
// 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 56c02c4e6ad55cc5757f1b227189ada513b2d560..0fa903d2a343d576ce12b22bb3c46c48930ba519 100644 index 8b100977de2aa5e1d7d68442e85584e351f4c03c..675b86360802a19eea84a72aec48392a95fbdb25 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 {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Including 5s in getTPS()
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 8e1bc7b117ac0766e3eb0f38cb33b71d6a972fb8..86c0965f339a592afba363607fd457a13d8bd6eb 100644 index 24d40d615fd1c88aae826709317fee59c93a2a77..a3af7fa8d85bf09ae1a35e1fbc4fc9a1774aaff5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3102,6 +3102,8 @@ public final class CraftServer implements Server { @@ -3100,6 +3100,8 @@ public final class CraftServer implements Server {
@Override @Override
public double[] getTPS() { public double[] getTPS() {

View File

@@ -19,10 +19,10 @@ index 919adb27e11e678b35bf045b8a5b07d15a7ab712..f55af712d3eaff809f4df62c49b8db07
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
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 000ee5bf7ef715511e4232d757e8360037bfe8f4..f02c1d7c583c326401ae93d16dbdd2bc075670c8 100644 index 55c3e652be4d45c2c36c3b2dcef931b63270718b..ca5e8d86ca046a63462362330960501e82bb98ae 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
@@ -2413,6 +2413,8 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -2410,6 +2410,8 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
// Purpur Start // Purpur Start
private boolean isAfk = false; private boolean isAfk = false;
@@ -31,7 +31,7 @@ index 000ee5bf7ef715511e4232d757e8360037bfe8f4..f02c1d7c583c326401ae93d16dbdd2bc
@Override @Override
public void setAfk(boolean afk) { public void setAfk(boolean afk) {
@@ -2450,6 +2452,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -2447,6 +2449,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, ""); String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, "");
String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, ""); String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, "");
if (afk) { if (afk) {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fix-MC-119417
Related MC issue: https://bugs.mojang.com/browse/MC-119417 Related MC issue: https://bugs.mojang.com/browse/MC-119417
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 f02c1d7c583c326401ae93d16dbdd2bc075670c8..40f316214111365df3e15e72da77bcd6155964d0 100644 index ca5e8d86ca046a63462362330960501e82bb98ae..dc14cd61df226675d6c0d8e6d6ac387c0c07c80c 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
@@ -2259,6 +2259,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -2256,6 +2256,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, (float) gameMode.getId())); this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, (float) gameMode.getId()));
if (gameMode == GameType.SPECTATOR) { if (gameMode == GameType.SPECTATOR) {
this.removeEntitiesOnShoulder(); this.removeEntitiesOnShoulder();

View File

@@ -58,8 +58,7 @@ logsuffix=""
# Paper updates # Paper updates
if [ -n "$paperHash" ]; then if [ -n "$paperHash" ]; then
newHash=$(git diff gradle.properties | awk '/^+paperCommit =/{print $NF}') paper=$(getCommits "PaperMC/Paper" "$paperHash" "HEAD")
paper=$(getCommits "PaperMC/Paper" "$paperHash" $(echo $newHash | grep . -q && echo $newHash || echo "HEAD"))
# Updates found # Updates found
if [ -n "$paper" ]; then if [ -n "$paper" ]; then
@@ -70,7 +69,8 @@ fi
# Gale updates # Gale updates
if [ -n "$galeHash" ]; then if [ -n "$galeHash" ]; then
gale=$(getCommits "Dreeam-qwq/Gale" "$galeHash" "HEAD") newHash=$(git diff gradle.properties | awk '/^+galeCommit =/{print $NF}')
gale=$(getCommits "Dreeam-qwq/Gale" "$galeHash" $(echo $newHash | grep . -q && echo $newHash || echo "HEAD"))
# Updates found # Updates found
if [ -n "$gale" ]; then if [ -n "$gale" ]; then