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
version = 1.21-R0.1-SNAPSHOT
galeCommit = 0cb487e2e577a1b56a4605a8d1abf84cba0da56a
galeCommit = d95dc9d8a01fabe3851dd697ca379526049605f6
org.gradle.caching = 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
index 1647cf84bd8bb703967c6d4d8ac473291200c094..dfdbf7654db34487f7db2e568006642291b1c132 100644
index 08fa6018bcab38d8c9ca05c84e229d69184ce01b..f9351c15c8c6e2f4cbd2af0a15bdd5e1a90cb262 100644
--- a/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)
{
@@ -227,7 +227,7 @@ index 1647cf84bd8bb703967c6d4d8ac473291200c094..dfdbf7654db34487f7db2e5680066422
this.timeoutTime = timeoutTime;
this.restart = restart;
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,
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 )
{
@@ -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,
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
this.dumpTickingInfo(); // Paper - log detailed tick information
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,
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 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
new file mode 100644
index 0000000000000000000000000000000000000000..53aab67aea0a28c004c6106aa775443c30457141
@@ -65,194 +29,3 @@ index 0000000000000000000000000000000000000000..53aab67aea0a28c004c6106aa775443c
+ 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/>.
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
+++ 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
this.timings.entityTick.startTiming(); // Spigot
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
entity.discard();
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
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -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
index 8ac1a3b86bf0eee6a27985d6b9dbc98b6fedbb15..95d20cd10ef0b3da32a6168c5d4a9bc4abc63e22 100644
index 6fd5f65d8fb8830e000af6556c4009befa65b66f..6e01c7ba7720d6b08e4e98f59e0c086179e2ee0d 100644
--- a/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 {

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
index 06455d65c4605ce092bf5300d432087f24186741..750fd2809f6d5d5896904cad0f65029b03bda849 100644
index f7241c5292f1c012404eea11256813fbc2c2df1a..fad407d0cec0605e303e93a79752435f0b4646d7 100644
--- a/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 {
// TODO these kinda should be checked on each release, in case obfuscation changes
deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee");
@@ -699,7 +699,7 @@ index d2ea951c7e5899d0e2edb52064e35c23965c4230..b929842514a97ca993ead608d355a4af
Bootstrap.bootStrap();
Bootstrap.validate();
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
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -289,6 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -781,7 +781,7 @@ index 29c35af2dd3bbcc2527542d594316b9756c7c2a2..21d3c7cb818a5a61f5532b73f2b32066
this.startMeasuringTaskExecutionTime();
this.waitUntilNextTick();
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();
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
for (Player entityhuman : level.players()) {
@@ -790,7 +790,7 @@ index 29c35af2dd3bbcc2527542d594316b9756c7c2a2..21d3c7cb818a5a61f5532b73f2b32066
continue;
}
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
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
@@ -1098,7 +1098,7 @@ index c80be65d190c85e7f0ea8233ebbbdbc1ea67f276..97e793c971614299504605aeb4f99cad
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> 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
index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0dc2bc6f6e 100644
index 4c95cb6a53004157faac55540225da3e4f8eb82b..e3152dd90c5c58a8f40491fa3250f7e38c2eaa8b 100644
--- a/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.
@@ -1118,7 +1118,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
public LevelChunk getChunkIfLoaded(int x, int z) {
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.tickTime = flag1;
this.server = minecraftserver;
@@ -1144,7 +1144,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
this.serverLevelData = iworlddataserver;
ChunkGenerator chunkgenerator = worlddimension.generator();
// 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);
// Paper end - rewrite chunk system
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
@@ -1152,7 +1152,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
}
// 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);
long j;
@@ -1161,7 +1161,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
// CraftBukkit start
j = this.levelData.getDayTime() + 24000L;
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.getScheduledEvents().tick(this.server, i);
if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
@@ -1175,7 +1175,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
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) {
this.serverLevelData.setDayTime(timeOfDay);
@@ -1198,7 +1198,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) {
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
if (flag1) {
@@ -1219,7 +1219,7 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
entityhorseskeleton.setAge(0);
entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ());
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);
}, (blockposition1) -> {
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 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.getServer().isSingleplayer() || this.getServer().isPublished()) {
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));
}
@@ -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
public void resetWeatherCycle() {
// 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
// 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....
@@ -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);
}
// 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
// CraftBukkit start
// 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
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
@@ -1283,10 +1283,10 @@ index e6821a3a99eabfd6ea3d4f7fe98e25598c591f86..5c7fc68e5d1c33fd5151512582ba9a0d
}
// 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
index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff866bf3f6 100644
index a5ed3eef0f66a44a9ce1effff19dbde7c1caa4ab..c98389197ee11d4fb64625169f342f762287ee94 100644
--- a/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 @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
@@ -1297,7 +1297,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
// Paper start - rewrite chunk system
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
@@ -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
@@ -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.updatePlayerAttributes();
this.advancements.flushDirty(this);
@@ -1333,7 +1333,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
}
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();
@@ -1341,7 +1341,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
if (scoreboardteam != null && scoreboardteam.getDeathMessageVisibility() != Team.Visibility.ALWAYS) {
if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) {
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)) {
return false;
} else {
@@ -1358,7 +1358,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL);
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);
this.unsetRemoved();
// CraftBukkit end
@@ -1366,7 +1366,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
this.setServerLevel(worldserver);
this.connection.teleport(exit); // CraftBukkit - use internal teleport without event
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);
});
@@ -1375,7 +1375,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
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()) {
@@ -1396,7 +1396,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
}
((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
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 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
}
@@ -1431,7 +1431,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
@Override
public void displayClientMessage(Component message, boolean 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() {
this.lastActionTime = Util.getMillis();
@@ -1500,7 +1500,7 @@ index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff
public ServerStatsCounter getStats() {
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();
}
// 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
index 109106fb93dd2b05363a1d89d38a9ccf09ae5195..1ee16b9102aea1248f10a41b4bd4cddf5dc12928 100644
index b22fe825a8556a9ec6cb645b67a4335a6cb7f54e..173f4f3b046bb2566e33b5dc93c3e6e459410a43 100644
--- a/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;
@@ -14495,7 +14495,7 @@ index d6e43a9b061a45c8e785ab93bafc8a9721fca7d0..8c79bbd7dde436915f1aeedef1b71379
// 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
index 9da1b9e2afac5d6a82eeff66f685c032c19e0366..4a71075b673e2b9413d9797ddeeafc04d699ec5e 100644
index 00b001e279ed1e79ad4171a5d2cedb2745ea946d..3cb6faa071c6a743a845bc358ea411a165c4024b 100644
--- a/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
@@ -14580,7 +14580,7 @@ index 9da1b9e2afac5d6a82eeff66f685c032c19e0366..4a71075b673e2b9413d9797ddeeafc04
+ // Purpur end
}
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
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -251,7 +251,7 @@ public final class NaturalSpawner {
@@ -16975,7 +16975,7 @@ index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486c
+ // Purpur end - OfflinePlayer API
}
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
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -414,6 +414,20 @@ public final class CraftServer implements Server {
@@ -17115,7 +17115,7 @@ index 25cccb9796004891df59c15970b3e1ba391d4073..d10c10907cefc06afff7e0f4c4cbbca3
+ // Purpur end
}
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
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2338,6 +2338,48 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -17545,7 +17545,7 @@ index 351f42842b780d053cd2e5bad9ae299449141b10..4860574e7fad7a9527dda599703c573c
+ // Purpur end
}
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
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -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
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
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -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) {
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
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.repaint();
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
+++ 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;
// Gale start - MultiPaper - skip unnecessary mob spawning computations
} else {
@@ -100,10 +100,10 @@ index 3b81ba4c283e474493e9bc97bbfa230a7878cdbc..015780e88997cc0518e5626b3094770a
// 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
index 5c7fc68e5d1c33fd5151512582ba9a0dc2bc6f6e..c4ad1054ab6334ea33533396ed33e10b214c8721 100644
index e3152dd90c5c58a8f40491fa3250f7e38c2eaa8b..ac323393d7fe0b77bafb0728b7eb545930136e6e 100644
--- a/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);
long j;
@@ -113,7 +113,7 @@ index 5c7fc68e5d1c33fd5151512582ba9a0dc2bc6f6e..c4ad1054ab6334ea33533396ed33e10b
j = this.levelData.getDayTime() + 24000L;
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
index 1ee16b9102aea1248f10a41b4bd4cddf5dc12928..95d246ec3fded53f325bbeb8bf3244576aa9ca04 100644
index 173f4f3b046bb2566e33b5dc93c3e6e459410a43..b907a7231cbed1c7b95b0b57ee0ac68843e5b412 100644
--- a/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

View File

@@ -7,10 +7,10 @@ Original license: MIT
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
index ab1ac64066f43a3c14f788760c12fc964a3cc60f..e955f760abd27abb22cfd3b3c9627207a522300c 100644
index ddff5713a30d96e0b6876371f5936aa9b8ccf339..63f193a07d6cb455ca77c18fb6e59e067a09694a 100644
--- a/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
public String getServerModName() {

View File

@@ -801,7 +801,7 @@ index 0c3c82b28e581286b798ee58ca4193efc2faff4a..5a2a4f69995f23e799370c05f28f9353
// return true as command was handled
return 1;
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
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -1,6 +1,5 @@
@@ -811,7 +811,7 @@ index 4a215cec69f8fe81d55b497c0b5ff98d03f235ae..726d5cc3422368e7a2bbdb8fce7484da
import com.mojang.logging.LogUtils;
import io.papermc.paper.configuration.constraint.Constraints;
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;
}
@@ -820,10 +820,8 @@ index 4a215cec69f8fe81d55b497c0b5ff98d03f235ae..726d5cc3422368e7a2bbdb8fce7484da
-
- @Deprecated(forRemoval = true)
- public class Timings extends ConfigurationPart {
- // Gale start - recommend disabling timings on startup
- public boolean enabled = false; // Gale - set default value to false
- public boolean warnIfEnabled = true;
- // Gale end - recommend disabling timings on startup
- public boolean enabled = false;
- public boolean warnIfEnabled = true; // Gale - recommend disabling timings on startup
- public boolean verbose = true;
- public String url = "https://timin.gs/"; // Gale - use timin.gs by default
- public boolean serverNamePrivacy = false;
@@ -907,7 +905,7 @@ index e2c24813f59c2fd075c740ac1842a38f20ed8554..1f7f68aad97ee73763c042837f239bdc
} catch (Exception exception) {
if (exception instanceof ReportedException) {
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
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -187,8 +187,6 @@ import org.bukkit.craftbukkit.CraftRegistry;
@@ -953,20 +951,19 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
// Paper end
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
io.papermc.paper.util.CachedLists.reset(); // Paper
- // Paper start - move executeAll() into full server tick timing
- try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) {
- this.runAllTasks();
this.runAllTasks();
- }
- // Paper end
+ this.runAllTasks();
// Paper start - Server Tick Events
long endTime = System.nanoTime();
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
this.logTickMethodTime(i);
org.spigotmc.WatchdogThread.tick(); // Spigot
@@ -974,7 +971,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
}
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) -> {
entityplayer.connection.suspendFlushing();
});
@@ -984,7 +981,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
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
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.
// Paper start - Perf: Optimize time updates
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
@@ -1013,7 +1010,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
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
@@ -1803,9 +1785,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1802,9 +1784,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end */
try {
@@ -1023,7 +1020,7 @@ index e955f760abd27abb22cfd3b3c9627207a522300c..30f63049b254dd87df7d6bbb2415eb53
} catch (Throwable throwable) {
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
@@ -1099,7 +1096,7 @@ index ca31ceb08099324df560bfc4f7888a509ad75307..b38470108f0842ee65cb55ff7e376105
// Paper start
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
index 3af290825bbbc461354c6d76b61a0ebf8c8a3ee7..138bb26241ce67d1dd8447a7f1c737ba4c40b4dd 100644
index 41648e29c8f90d1a0a0ebc54be03890383ff15f1..d31a2c3f1ff62f60a058148760fb6dbf92e46a76 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1,6 +1,5 @@
@@ -1109,7 +1106,7 @@ index 3af290825bbbc461354c6d76b61a0ebf8c8a3ee7..138bb26241ce67d1dd8447a7f1c737ba
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
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> list1 = this.level.players();
ObjectIterator objectiterator = this.entityMap.values().iterator();
@@ -1117,7 +1114,7 @@ index 3af290825bbbc461354c6d76b61a0ebf8c8a3ee7..138bb26241ce67d1dd8447a7f1c737ba
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();
}
}
@@ -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
index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814bf36975f 100644
index 5f976c5aac125cfa802c4141b9ea07a204bb30f6..1f7906d2c5fbe6d732d773cbd0f36d28163f3a13 100644
--- a/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) {
// Paper - rewrite chunk system
@@ -1149,7 +1146,7 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
}
@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
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
@@ -1174,15 +1171,15 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
this.clearCache();
}
@@ -419,7 +411,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
if (!this.level.isDebug()) {
List<ServerChunkCache.ChunkAndHolder> list = Lists.newArrayListWithCapacity(this.chunkMap.size());
Iterator iterator = this.chunkMap.getChunks().iterator();
@@ -436,7 +428,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
}
// Paper end - chunk tick iteration optimisations
Iterator iterator = null; // Paper - chunk tick iteration optimisations
- if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper
while (iterator.hasNext()) {
ChunkHolder playerchunk = (ChunkHolder) iterator.next();
@@ -437,7 +428,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
// Paper - chunk tick iteration optimisations
@@ -447,7 +438,6 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
boolean flagAndHasNaturalSpawn = flag && this.anySpawnCategoryIsSpawnedThisTick();
if (flagAndHasNaturalSpawn) {
// Gale end - MultiPaper - skip unnecessary mob spawning computations
@@ -1190,7 +1187,7 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
int k = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - Optional per player mob spawns
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);
}
// Paper end - Optional per player mob spawns
@@ -1198,7 +1195,7 @@ index 015780e88997cc0518e5626b3094770a41669fd8..6324bb513d0d7a42f1a411cb6deb4814
this.lastSpawnState = spawnercreature_d;
// 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
chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk);
{
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
index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b952667443932 100644
index ac323393d7fe0b77bafb0728b7eb545930136e6e..b97f3ec10552941892b2b6edd53a873eaf72df86 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1,7 +1,6 @@
@@ -1230,7 +1233,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
import com.google.common.collect.Lists;
import com.mojang.datafixers.DataFixer;
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();
}
@@ -1258,7 +1261,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
}
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) {
@@ -1272,7 +1275,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
this.entityTickList.forEach((entity) -> {
entity.activatedPriorityReset = false; // Pufferfish - DAB
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();
}
@@ -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
@@ -1294,7 +1297,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
}
@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);
}
// Paper end - log detailed entity tick information
@@ -1326,7 +1329,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
Iterator iterator = entity.getPassengers().iterator();
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);
}
@@ -1334,7 +1337,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
// Paper start - log detailed entity tick information
} finally {
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)) {
// Paper - EAR 2
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger);
@@ -1344,7 +1347,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
passenger.setOldPosAndRot();
++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);
}
@@ -1353,7 +1356,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
}
} else {
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()));
}
@@ -1361,7 +1364,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
if (doFull) {
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());
}
// CraftBukkit end
@@ -1369,7 +1372,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
}
// 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) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit
@@ -1377,7 +1380,7 @@ index c4ad1054ab6334ea33533396ed33e10b214c8721..6b6a01ae372d88aee2853d96203b9526
if (progressListener != null) {
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"));
}
@@ -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
index 4a71075b673e2b9413d9797ddeeafc04d699ec5e..fd23063ef316d6f1930a565c601bdf5b72bcfda1 100644
index 3cb6faa071c6a743a845bc358ea411a165c4024b..24ed26286c7e3e45279b6b27cd0a432b37fda4b2 100644
--- a/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
@@ -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
index d490429ddbb8cd82aeda5e03540075c9167b095e..d556089907bb695a9d87df1961ef0b0ae4382cad 100644
index 1da91797ddbaf2cee7124b3dbd0970acb1a23073..e33b39d369386d677cc15247846790b498e37a82 100644
--- a/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 {
@@ -1660,10 +1663,10 @@ index cd0e43f4c53a746dd6183a8406269f9b11ad3571..54657ac895fb2fa9c58910d5421f0082
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
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
index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b79d79838 100644
index 36540053590c30a902b9986dcf2e74375157822d..fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157 100644
--- a/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
if (this.needsDecoration) {
@@ -1671,7 +1674,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b
this.needsDecoration = false;
java.util.Random random = new java.util.Random();
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));
@@ -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)) {
try {
@@ -1687,7 +1690,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);
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
LevelChunk.this.removeBlockEntity(this.getPos());
// Paper end - Prevent block entity and entity crashes
@@ -1703,7 +1706,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b
@Override
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
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -477,7 +477,6 @@ public final class CraftServer implements Server {
@@ -1714,6 +1717,17 @@ index d10c10907cefc06afff7e0f4c4cbbca352410c25..ec341e053e8eb539d4401161245039c9
this.overrideSpawnLimits();
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
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
index 006adb2adb27c497ede69f87e78bc3e34499cbf8..4ee1c3461d21feab3a54e76a7c2ab80b6ea2ab38 100644
--- 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
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
+++ 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 compassBar = 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 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
index ee1d4d83b856b9a7eba28a6f72256bb5dc33b67b..9325d2c676899fcedc360ea9183339c91af026dc 100644
index 6b285e068cc789fd49a8c0f22ebd98378b6dd86b..39cb0c26e1d7e246a5867ea0915dc87c43777cfe 100644
--- a/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 {

View File

@@ -51,10 +51,10 @@ index 1967c43ee3a12e63365cc40ee6565307e2fd73cf..6e376d0db5321d8e9b6e0b54617ffd17
assert isValidPath(path);
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
+++ 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();
}
@@ -109,7 +109,7 @@ index 442b5ccc446d0dfc69f2d2e88003a77647af78f6..d9652ab4f1090193b20d3218dd5dce16
org.purpurmc.purpur.task.BossBarTask.removeFromAll(entityplayer.getBukkitEntity()); // Purpur
ServerLevel worldserver = entityplayer.serverLevel();
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
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -491,6 +491,7 @@ public final class CraftServer implements Server {
@@ -120,7 +120,7 @@ index ec341e053e8eb539d4401161245039c90609138c..8e1bc7b117ac0766e3eb0f38cb33b71d
}
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
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");

View File

@@ -38,7 +38,7 @@ index a74732902c0494c67e6acf2fc04581ff9c46b832..8b60c922750e71f526976782a1f156e9
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
index db16be7db9d1df323f150dfd6f3d893b79d79838..a71d4b363eec79c55267d97549c5c8715459b95e 100644
index fb0ffd302ec87516cd7f28b8b4c6a8e9b1577157..a9fd817f42f2ec2e7393e2bd2009ac1fdf60f317 100644
--- a/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
@@ -70,7 +70,7 @@ index db16be7db9d1df323f150dfd6f3d893b79d79838..a71d4b363eec79c55267d97549c5c871
Heightmap.Types[] aheightmap_type = Heightmap.Types.values();
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;
if (world instanceof ServerLevel worldserver) {
@@ -97,7 +97,7 @@ index db16be7db9d1df323f150dfd6f3d893b79d79838..a71d4b363eec79c55267d97549c5c871
} else {
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) {

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).
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
+++ b/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java
@@ -36,6 +36,7 @@ public final class EntityScheduler {
@@ -75,7 +75,7 @@ index 62484ebf4550b05182f693a3180bbac5d5fd906d..67800e426445060a8343e27a7452b8d7
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
index e43250317c9373709ab5b7ba26bb85c75021604e..084651b2c911ce207fffd2a2c4ba788301376ebc 100644
index 7bb592292222c58f28545434981bc5743ddf5a49..9cf5a18a765924586d485cfc94e78c628688dcee 100644
--- a/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
@@ -86,7 +86,7 @@ index e43250317c9373709ab5b7ba26bb85c75021604e..084651b2c911ce207fffd2a2c4ba7883
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
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
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
@@ -105,7 +105,7 @@ index e43250317c9373709ab5b7ba26bb85c75021604e..084651b2c911ce207fffd2a2c4ba7883
getAllLevels().forEach(level -> {
for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system
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.
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
+++ 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
// CraftBukkit start - respect vanish API
@@ -29,7 +29,7 @@ index 138bb26241ce67d1dd8447a7f1c737ba4c40b4dd..2cd211122038e4f24f7ec7fa235134ee
}
// CraftBukkit end
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
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -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
index 8e1bc7b117ac0766e3eb0f38cb33b71d6a972fb8..86c0965f339a592afba363607fd457a13d8bd6eb 100644
index 24d40d615fd1c88aae826709317fee59c93a2a77..a3af7fa8d85bf09ae1a35e1fbc4fc9a1774aaff5 100644
--- a/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
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.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
index 000ee5bf7ef715511e4232d757e8360037bfe8f4..f02c1d7c583c326401ae93d16dbdd2bc075670c8 100644
index 55c3e652be4d45c2c36c3b2dcef931b63270718b..ca5e8d86ca046a63462362330960501e82bb98ae 100644
--- a/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
private boolean isAfk = false;
@@ -31,7 +31,7 @@ index 000ee5bf7ef715511e4232d757e8360037bfe8f4..f02c1d7c583c326401ae93d16dbdd2bc
@Override
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 suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, "");
if (afk) {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fix-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
index f02c1d7c583c326401ae93d16dbdd2bc075670c8..40f316214111365df3e15e72da77bcd6155964d0 100644
index ca5e8d86ca046a63462362330960501e82bb98ae..dc14cd61df226675d6c0d8e6d6ac387c0c07c80c 100644
--- a/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()));
if (gameMode == GameType.SPECTATOR) {
this.removeEntitiesOnShoulder();

View File

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