Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@046466f Re-arrange most chunk system patches to front (#8338)
PaperMC/Paper@e8c2c3b Fix World#refreshChunk not working for chunks in no-tick range
This commit is contained in:
BillyGalbreath
2022-09-01 21:51:05 -05:00
parent be681220d6
commit ff8e329e9d
29 changed files with 160 additions and 161 deletions

View File

@@ -1,7 +1,7 @@
group = org.purpurmc.purpur
version = 1.19.2-R0.1-SNAPSHOT
paperCommit = eff22eb0541559f05cf9a8c370d70c3b346f80f6
paperCommit = e8c2c3bfda97143e33dbd35bd9dee528bb51d93c
org.gradle.caching = true
org.gradle.parallel = true

View File

@@ -2770,10 +2770,10 @@ index 47b5f75d9f27cf3ab947fd1f69cbd609fb9f2749..85882eeb86d7b74db0219aa65783946d
public ChunkHolder.FullChunkStatus status;
diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
index 7034af8ad42940c5af6b9032b9873ce36c55a2a7..c0fdc5a79107f8694a514a12d5526bd431fc45e9 100644
index 6939ef9b1fe782980e77c351d8a385a573d6a8e6..e9f0ddf1a34bf3b0d868b53e4439d9d9851ad4d6 100644
--- a/src/main/java/net/minecraft/server/MCUtil.java
+++ b/src/main/java/net/minecraft/server/MCUtil.java
@@ -209,7 +209,7 @@ public final class MCUtil {
@@ -207,7 +207,7 @@ public final class MCUtil {
}
public static long getCoordinateKey(final Entity entity) {
@@ -2834,7 +2834,7 @@ index bdd6560fe85950b0a857a949cb38c044da44ca6b..519883c5549744e047a8a96afee14274
}
}
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682eb02f820 100644
index c2c01988bf3b6fbb0a7a4716373c2ff0cffce27d..5fdef81245cb3cc686225cfd7c5ce13b011503ef 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -471,7 +471,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2846,7 +2846,7 @@ index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682
// Paper start - use distance map to optimise entity tracker
this.playerEntityTrackerTrackMaps = new com.destroystokyo.paper.util.misc.PlayerAreaMap[TRACKING_RANGE_TYPES.length];
this.entityTrackerTrackRanges = new int[TRACKING_RANGE_TYPES.length];
@@ -2079,8 +2079,36 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2077,8 +2077,36 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
entity.tracker = null; // Paper - We're no longer tracked
}
@@ -2883,7 +2883,7 @@ index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682
this.level.timings.tracker1.startTiming();
try {
for (TrackedEntity tracker : this.entityMap.values()) {
@@ -2351,11 +2379,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2349,11 +2377,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
public class TrackedEntity {
@@ -2898,7 +2898,7 @@ index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682
public TrackedEntity(Entity entity, int i, int j, boolean flag) {
this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit
@@ -2367,7 +2395,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2365,7 +2393,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Paper start - use distance map to optimise tracker
com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> lastTrackerCandidates;
@@ -2907,7 +2907,7 @@ index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682
com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> oldTrackerCandidates = this.lastTrackerCandidates;
this.lastTrackerCandidates = newTrackerCandidates;
@@ -2439,7 +2467,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2437,7 +2465,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
public void removePlayer(ServerPlayer player) {
@@ -2916,7 +2916,7 @@ index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682
if (this.seenBy.remove(player.connection)) {
this.serverEntity.removePairing(player);
}
@@ -2447,7 +2475,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2445,7 +2473,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
public void updatePlayer(ServerPlayer player) {
@@ -2925,7 +2925,7 @@ index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682
if (player != this.entity) {
// Paper start - remove allocation of Vec3D here
// Vec3 vec3d = player.position().subtract(this.entity.position());
@@ -2479,8 +2507,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2477,8 +2505,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance);
}
@@ -2954,7 +2954,7 @@ index 649355158ed435e242a48f4aaa4578bcc2a808dd..df4a6288e23df19706112cea5058d682
Iterator iterator = this.entity.getIndirectPassengers().iterator();
while (iterator.hasNext()) {
@@ -2492,6 +2540,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2490,6 +2538,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
i = j;
}
}
@@ -2978,7 +2978,7 @@ index ca42c2642a729b90d22b968af7258f3aee72e14b..7613510e5f4c22ee15651f162fe1bca1
public boolean visible = true;
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 59acbf6249f8f5285504c0ddea448a3433d1d68d..378cc1f9e19eb9b18037ab8af92f65897e15a405 100644
index ea1b8f4fd49678f39b1036ae6be880bacc6997f8..40094f8ed5e04eed0378c68120c918af05090601 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -75,6 +75,9 @@ public class ServerChunkCache extends ChunkSource {
@@ -2991,7 +2991,7 @@ index 59acbf6249f8f5285504c0ddea448a3433d1d68d..378cc1f9e19eb9b18037ab8af92f6589
private static int getChunkCacheKey(int x, int z) {
return x & 3 | ((z & 3) << 2);
@@ -962,6 +965,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -783,6 +786,7 @@ public class ServerChunkCache extends ChunkSource {
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
gameprofilerfiller.push("pollingChunks");
@@ -2999,7 +2999,7 @@ index 59acbf6249f8f5285504c0ddea448a3433d1d68d..378cc1f9e19eb9b18037ab8af92f6589
int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING);
boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
@@ -971,18 +975,25 @@ public class ServerChunkCache extends ChunkSource {
@@ -792,18 +796,25 @@ public class ServerChunkCache extends ChunkSource {
// Paper start - per player mob spawning
NaturalSpawner.SpawnState spawnercreature_d; // moved down
if ((this.spawnFriendlies || this.spawnEnemies) && this.chunkMap.playerMobDistanceMap != null) { // don't count mobs when animals and monsters are disabled
@@ -3031,7 +3031,7 @@ index 59acbf6249f8f5285504c0ddea448a3433d1d68d..378cc1f9e19eb9b18037ab8af92f6589
gameprofilerfiller.popPush("filteringLoadedChunks");
// Paper - moved down
this.level.timings.chunkTicks.startTiming(); // Paper
@@ -1020,8 +1031,8 @@ public class ServerChunkCache extends ChunkSource {
@@ -841,8 +852,8 @@ public class ServerChunkCache extends ChunkSource {
if ((true || this.level.isNaturalSpawningAllowed(chunkcoordintpair)) && this.chunkMap.anyPlayerCloseEnoughForSpawning(holder, chunkcoordintpair, false)) { // Paper - optimise anyPlayerCloseEnoughForSpawning // Paper - replace player chunk loader system
chunk1.incrementInhabitedTime(j);
@@ -3042,7 +3042,7 @@ index 59acbf6249f8f5285504c0ddea448a3433d1d68d..378cc1f9e19eb9b18037ab8af92f6589
}
if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - replace player chunk loader system
@@ -1083,6 +1094,30 @@ public class ServerChunkCache extends ChunkSource {
@@ -904,6 +915,30 @@ public class ServerChunkCache extends ChunkSource {
}
// Paper end - controlled flush for entity tracker packets
}
@@ -3145,10 +3145,10 @@ index 3b144c820531122eb37d41be06c182b5f5dc0724..88152988425b7b02ec5ce229ba4c24b4
set.clear();
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 3d986805c89d22330d6ad1e09760940b2f399214..0c71d72fb04eb00e159ddd456df82376fc912b4e 100644
index 96bb0e56f12437037b598cd7baabf369e5994517..8ed9f14f1ca71111a8215b28821bd5e398c0d0a6 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -693,7 +693,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -695,7 +695,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
gameprofilerfiller.push("tick");
@@ -3170,7 +3170,7 @@ index 3d986805c89d22330d6ad1e09760940b2f399214..0c71d72fb04eb00e159ddd456df82376
gameprofilerfiller.pop();
}
}
@@ -760,9 +773,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -762,9 +775,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper start - optimise random block ticking
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();
@@ -3183,7 +3183,7 @@ index 3d986805c89d22330d6ad1e09760940b2f399214..0c71d72fb04eb00e159ddd456df82376
public void tickChunk(LevelChunk chunk, int randomTickSpeed) {
ChunkPos chunkcoordintpair = chunk.getPos();
boolean flag = this.isRaining();
@@ -773,7 +788,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -775,7 +790,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
gameprofilerfiller.push("thunder");
final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
@@ -3192,7 +3192,7 @@ index 3d986805c89d22330d6ad1e09760940b2f399214..0c71d72fb04eb00e159ddd456df82376
blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper
if (this.isRainingAt(blockposition)) {
DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition);
@@ -797,7 +812,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -799,7 +814,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
gameprofilerfiller.popPush("iceandsnow");

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Fix pufferfish issues
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 0c71d72fb04eb00e159ddd456df82376fc912b4e..da146b6e30a97ed27732165e3defa747bef7c14b 100644
index 8ed9f14f1ca71111a8215b28821bd5e398c0d0a6..42c88ef31474690c95f7cfe7c3075e1f854c4005 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -773,7 +773,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -775,7 +775,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper start - optimise random block ticking
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();

View File

@@ -43,10 +43,10 @@ index 3d4e0be647f48a33d1afcdbec62c6624f2086294..5d8f2eedb1c2acc82e61a4adc3c68880
try {
byte[] data = new byte[packet.data.readableBytes()];
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 067d64ce06f626ce90b3ccf608d98f3c64fce335..6260f4246b24f5037e3cf718a50be3a70680132e 100644
index 41258fcfa0505500665c2f185b9ef6d050213355..df8d22fb0bb5212ea410f6f6e2d6f4facb7f573d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2897,4 +2897,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2887,4 +2887,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.spigot;
}
// Spigot end

View File

@@ -36,10 +36,10 @@ index 266a26d73dd5aec427b64a638693decf70ea36cb..2049fa1008be5208d9bb168dd6548361
public void displayClientMessage(Component message, boolean overlay) {
this.sendSystemMessage(message, overlay);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index e1b6017953edffcea0be81b70cf7b22ce8c0570d..41c00d0fad32f2e6b7928e9ecc054217529819ce 100644
index 5999d85e38951503fc83b40cfe39671921ae5088..263e61b655d0ec58b63da859df46f0962de45ec7 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1077,6 +1077,20 @@ public abstract class PlayerList {
@@ -1074,6 +1074,20 @@ public abstract class PlayerList {
}
// CraftBukkit end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 41c00d0fad32f2e6b7928e9ecc054217529819ce..3fd73a7fe1ac10edeb3e688149820682e7f20f7b 100644
index 263e61b655d0ec58b63da859df46f0962de45ec7..0c05466b1265a22009781d469f8d324e3d42e0d3 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1202,6 +1202,27 @@ public abstract class PlayerList {
@@ -1199,6 +1199,27 @@ public abstract class PlayerList {
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
this.server.getCommands().sendCommands(player);
} // Paper

View File

@@ -213,7 +213,7 @@ index 3f458ddd4dc04ed28510a212be76bb19e7f6a61e..a36469186f72eccf8c4428d920d0583b
if (range < 0.0D || d < range * range) {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 6260f4246b24f5037e3cf718a50be3a70680132e..c57264e4f4284550d674a9c4083cc9cfbeb355bb 100644
index df8d22fb0bb5212ea410f6f6e2d6f4facb7f573d..ba474fb6992c4427c8819a1ba4f3b692545e0957 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -442,10 +442,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -233,7 +233,7 @@ index 6260f4246b24f5037e3cf718a50be3a70680132e..c57264e4f4284550d674a9c4083cc9cf
for (ServerPlayer player : (List<ServerPlayer>) server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) {
player.connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_DISPLAY_NAME, this.getHandle()));
@@ -2903,5 +2908,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2893,5 +2898,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean usesPurpurClient() {
return getHandle().purpurClient;
}

View File

@@ -108,10 +108,10 @@ index 575839fb7bd54d6a34cf8bfa59cf1086eaf22834..8d13fad0bd574cf9cd01d7aa5754023a
this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit
// Paper end
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 3fd73a7fe1ac10edeb3e688149820682e7f20f7b..3c2f5ab8f566dadcc16d63eec754f057bca7444c 100644
index 0c05466b1265a22009781d469f8d324e3d42e0d3..dae6334ad480bc6323fa47421a22598e58e56684 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1017,6 +1017,8 @@ public abstract class PlayerList {
@@ -1014,6 +1014,8 @@ public abstract class PlayerList {
}
// Paper end
@@ -121,10 +121,10 @@ index 3fd73a7fe1ac10edeb3e688149820682e7f20f7b..3c2f5ab8f566dadcc16d63eec754f057
return entityplayer1;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index c57264e4f4284550d674a9c4083cc9cfbeb355bb..28ee76ac0df38787274a0c2e84738ece7537f5be 100644
index ba474fb6992c4427c8819a1ba4f3b692545e0957..d206dacbfe0f8b7b5eeaf23a855d95e721dcaecd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2923,5 +2923,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2913,5 +2913,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void resetIdleTimer() {
getHandle().resetLastActionTime();
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index e79963efa8781ec8189255a44e8789ec279b0a61..2230bd2eae69b850c3f6dafd56edb8835a158a4c 100644
index 738ffcc9f8ec1b34e7e1357ae48283e3245d906f..7cc90afe9fe9d2ce95905c19f3bcf026a04c614c 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -796,9 +796,15 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -798,9 +798,15 @@ public class ServerLevel extends Level implements WorldGenLevel {
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
if (flag1) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 3c2f5ab8f566dadcc16d63eec754f057bca7444c..a71f315dfedc4e5856f0955b6f97ae5c374e020f 100644
index dae6334ad480bc6323fa47421a22598e58e56684..69721d4facc90ae64d6a4e2f080bd80f4862874d 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1196,6 +1196,7 @@ public abstract class PlayerList {
@@ -1193,6 +1193,7 @@ public abstract class PlayerList {
} else {
b0 = (byte) (24 + permissionLevel);
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world
In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 2230bd2eae69b850c3f6dafd56edb8835a158a4c..67bc56e2abbaeed93591eb3ec6242fe1e09cdfae 100644
index 7cc90afe9fe9d2ce95905c19f3bcf026a04c614c..b99350a3522dc768d1a337c5691923c0b3fbba0e 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -509,7 +509,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -511,7 +511,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.dragonParts = new Int2ObjectOpenHashMap();
this.tickTime = flag1;
this.server = minecraftserver;

View File

@@ -31,7 +31,7 @@ index b1098555ea7c96815dc85ab440544d9db7fee978..eb12fed7ee6d7d3a5f5b9e99d8f11b38
}
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 67bc56e2abbaeed93591eb3ec6242fe1e09cdfae..cc486f43325bc8910e5366cc8a473891e2176461 100644
index b99350a3522dc768d1a337c5691923c0b3fbba0e..827bc3d177d1d8e37d936720e939f3fe03b1ff83 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -212,6 +212,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -43,7 +43,7 @@ index 67bc56e2abbaeed93591eb3ec6242fe1e09cdfae..cc486f43325bc8910e5366cc8a473891
public long lastMidTickExecuteFailure; // Paper - execute chunk tasks mid tick
// CraftBukkit start
@@ -588,6 +590,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -590,6 +592,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper
@@ -51,7 +51,7 @@ index 67bc56e2abbaeed93591eb3ec6242fe1e09cdfae..cc486f43325bc8910e5366cc8a473891
}
public void setWeatherParameters(int clearDuration, int rainDuration, boolean raining, boolean thundering) {
@@ -758,6 +761,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -760,6 +763,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.serverLevelData.setGameTime(i);
this.serverLevelData.getScheduledEvents().tick(this.server, i);
if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
@@ -65,7 +65,7 @@ index 67bc56e2abbaeed93591eb3ec6242fe1e09cdfae..cc486f43325bc8910e5366cc8a473891
this.setDayTime(this.levelData.getDayTime() + 1L);
}
@@ -766,7 +776,21 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -768,7 +778,21 @@ public class ServerLevel extends Level implements WorldGenLevel {
public void setDayTime(long timeOfDay) {
this.serverLevelData.setDayTime(timeOfDay);

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Spread out and optimise player list ticksSpread out and
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index a71f315dfedc4e5856f0955b6f97ae5c374e020f..80be27593ce08a0acb01fde04994ed60975a7a7f 100644
index 69721d4facc90ae64d6a4e2f080bd80f4862874d..08aa692b8f80ace6ce552e78476a76220d6d00eb 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1031,22 +1031,22 @@ public abstract class PlayerList {
@@ -1028,22 +1028,22 @@ public abstract class PlayerList {
}
public void tick() {
@@ -46,10 +46,10 @@ index a71f315dfedc4e5856f0955b6f97ae5c374e020f..80be27593ce08a0acb01fde04994ed60
public void broadcastAll(Packet<?> packet) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 28ee76ac0df38787274a0c2e84738ece7537f5be..711f47c3d897027613ed1010011a0be1efcc073b 100644
index d206dacbfe0f8b7b5eeaf23a855d95e721dcaecd..55c558197e7d940b2169b26c07ce7259bd8fac74 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1848,7 +1848,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1838,7 +1838,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean canSee(org.bukkit.entity.Entity entity) {

View File

@@ -83,10 +83,10 @@ index 725358518b73b908c8150bdbabed68909c91f4d4..b858ce2ad443f6690dd71e56fb9eea14
// Purpur end
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 80be27593ce08a0acb01fde04994ed60975a7a7f..b82000ecb5c5f61422e1a9c34ef1d2924d447d4b 100644
index 08aa692b8f80ace6ce552e78476a76220d6d00eb..3d777aae5a91190e1c3bde234bc53a56fdf3c414 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -506,6 +506,7 @@ public abstract class PlayerList {
@@ -503,6 +503,7 @@ public abstract class PlayerList {
scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam);
}
// Paper end
@@ -94,7 +94,7 @@ index 80be27593ce08a0acb01fde04994ed60975a7a7f..b82000ecb5c5f61422e1a9c34ef1d292
// CraftBukkit - Moved from above, added world
PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
}
@@ -616,6 +617,8 @@ public abstract class PlayerList {
@@ -613,6 +614,8 @@ public abstract class PlayerList {
}
public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) {
// Paper end

View File

@@ -78,10 +78,10 @@ index 5c7e30eb5e8a2a1ab18750a2cd2ec7364e8c52e0..ecd0ba252feb57cb1d60745e7750a676
blockEntity.teleportCooldown = 100;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 11d51beb52c326a9fc040322a79d3916a8ddd0a2..240d7cfc0c5f5e3d3c53388f034a1b1faf9a4dfe 100644
index 18e0b4d9a4ba8189e6b431c52f46bbc461386f58..7bbddc36be634744c98a4ce1d1e71f2691af4535 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -593,6 +593,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -562,6 +562,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
// Paper end
if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API
@@ -93,10 +93,10 @@ index 11d51beb52c326a9fc040322a79d3916a8ddd0a2..240d7cfc0c5f5e3d3c53388f034a1b1f
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 6cb6f091d83f02a8e19261ffd4986336d996ba84..e98b1512de9fa68ced782fdd8455434a213931e6 100644
index 55c558197e7d940b2169b26c07ce7259bd8fac74..7b650a3e340a73ed865b5b8afe1aef2607e5c33b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1265,6 +1265,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1255,6 +1255,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index cc486f43325bc8910e5366cc8a473891e2176461..d96880201101e4024c0926d9aef22ed453c386b6 100644
index 827bc3d177d1d8e37d936720e939f3fe03b1ff83..a37365e3cd58e4a39060cf1145a5ae7eb735955a 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -629,7 +629,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -631,7 +631,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
long j;

View File

@@ -26,10 +26,10 @@ index 45dc5eeb3794492324bd316719524ea797f7ef6a..bbfb5f8f88e972a770d0ce5373c67ffe
} else {
if (fallDistance >= 2.0F) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index e98b1512de9fa68ced782fdd8455434a213931e6..d1d8f45565b6dcdca73b2cc6fd09917b7d89e08f 100644
index 7b650a3e340a73ed865b5b8afe1aef2607e5c33b..76f4d471af65589072c901dd5156f3b5ab140b79 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2948,5 +2948,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2938,5 +2938,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setSpawnInvulnerableTicks(int spawnInvulnerableTime) {
getHandle().spawnInvulnerableTime = spawnInvulnerableTime;
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index d96880201101e4024c0926d9aef22ed453c386b6..4ba8fe5b4f9fdaa11a66611ec91c789071a77fe8 100644
index a37365e3cd58e4a39060cf1145a5ae7eb735955a..cf89dde659141a2a78e9b2d2b007b4c54db4b1ed 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -939,7 +939,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -941,7 +941,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
return holder.is(PoiTypes.LIGHTNING_ROD);
}, (blockposition1) -> {
return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow player join full server by permission
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index b82000ecb5c5f61422e1a9c34ef1d2924d447d4b..d9153b04b242e22d6e8894bfd45c92ea6466df00 100644
index 3d777aae5a91190e1c3bde234bc53a56fdf3c414..9ed964da70a17afbe26c513f67b2d911f2c9e7c5 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -786,7 +786,7 @@ public abstract class PlayerList {
@@ -783,7 +783,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure
} else {
// return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 4ba8fe5b4f9fdaa11a66611ec91c789071a77fe8..ca73ce8aa96c581c50dcc1f0d870e78b0c69ee05 100644
index cf89dde659141a2a78e9b2d2b007b4c54db4b1ed..4b55a46033089e27462b7a8d87cc5631cbcee6a6 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -988,11 +988,27 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -990,11 +990,27 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (this.canSleepThroughNights()) {
if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) {
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);

View File

@@ -223,10 +223,10 @@ index 6d2ba650f53de8a460857f1846401a20b50cc43c..8ed695fd64feb3c2411ed46d9c326eb2
+ // Purpur end - OfflinePlayer API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index d1d8f45565b6dcdca73b2cc6fd09917b7d89e08f..e05955bb255b0bad396fe93b7225350f73d7d623 100644
index 76f4d471af65589072c901dd5156f3b5ab140b79..5e755977b49e4874cf489bddb5be6b1fdc55152f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2222,6 +2222,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2212,6 +2212,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f;
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index ca73ce8aa96c581c50dcc1f0d870e78b0c69ee05..e9f4e6aa5a1ad464eaf3e0beebd21fd577d2fe3c 100644
index 4b55a46033089e27462b7a8d87cc5631cbcee6a6..9d22e2acfcec99f7cf9e763c3a185479c970f552 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1147,6 +1147,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1149,6 +1149,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
private void resetWeatherCycle() {
// CraftBukkit start
@@ -16,7 +16,7 @@ index ca73ce8aa96c581c50dcc1f0d870e78b0c69ee05..e9f4e6aa5a1ad464eaf3e0beebd21fd5
this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night
// 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....
@@ -1154,6 +1155,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1156,6 +1157,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.serverLevelData.setRainTime(0);
}
// CraftBukkit end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index e9f4e6aa5a1ad464eaf3e0beebd21fd577d2fe3c..fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf 100644
index 9d22e2acfcec99f7cf9e763c3a185479c970f552..0df97cf932f8bd315e3ae645368ae8df6c51fc25 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -2677,7 +2677,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -2679,7 +2679,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// 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

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Dont eat blocks in non ticking chunks
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 87518f6ff223ca211727c3002d107bc9bcaa36f9..b9d4878dd629886c4ef3e29ff1b729571d81d785 100644
index 5fdef81245cb3cc686225cfd7c5ce13b011503ef..cec58f0d7ac6bf73a0f7b418a595704b8b807425 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1823,7 +1823,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1821,7 +1821,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return this.anyPlayerCloseEnoughForSpawning(this.getUpdatingChunkIfPresent(chunkcoordintpair.toLong()), chunkcoordintpair, reducedRange);
}

View File

@@ -5,20 +5,19 @@ Subject: [PATCH] Add local difficulty api
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index f0b14914438840bd819fa7da8b76f4fcc13704d0..824c12db04aaaa750de54fce8a15b386dec1cc08 100644
index 1b6ae90acffa06502902e11473b65c8431616b05..4b9d57a63a0eb922f77d34e4d2d7f3b0aa364337 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2255,6 +2255,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public DragonBattle getEnderDragonBattle() {
@@ -2247,6 +2247,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return (this.getHandle().dragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().dragonFight());
}
+
+ // Purpur start
+ public float getLocalDifficultyAt(Location location) {
+ return getHandle().getCurrentDifficultyAt(net.minecraft.server.MCUtil.toBlockPosition(location)).getEffectiveDifficulty();
+ }
+ // Purpur end
+
// Paper start
@Override
public java.util.concurrent.CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen, boolean urgent) {
public PersistentDataContainer getPersistentDataContainer() {
return this.persistentDataContainer;

View File

@@ -286,10 +286,10 @@ index 5de95ba778e4a0cd1467e7392aa80eda1bd21a03..0bfdc4247a651f6c1caf7a95114be68b
@Override
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812dabb52a90 100644
index cec58f0d7ac6bf73a0f7b418a595704b8b807425..56ec684bac1c29c99bac117e38d82db2b4dc20e8 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1002,15 +1002,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1000,15 +1000,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
protected void tick(BooleanSupplier shouldKeepTicking) {
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
@@ -309,7 +309,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
gameprofilerfiller.pop();
@@ -1169,7 +1169,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1161,7 +1161,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
private CompletableFuture<Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> scheduleChunkLoad(ChunkPos pos) {
// Paper start - Async chunk io
final java.util.function.BiFunction<ChunkSerializer.InProgressChunkHolder, Throwable, Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> syncLoadComplete = (chunkHolder, ioThrowable) -> {
@@ -318,7 +318,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
this.level.getProfiler().incrementCounter("chunkLoad");
if (ioThrowable != null) {
return this.handleChunkLoadFailure(ioThrowable, pos);
@@ -1360,7 +1360,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1352,7 +1352,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
ChunkStatus chunkstatus = ChunkHolder.getStatus(chunkHolder.getTicketLevel());
return !chunkstatus.isOrAfter(ChunkStatus.FULL) ? ChunkHolder.UNLOADED_CHUNK : either.mapLeft((ichunkaccess) -> {
@@ -327,7 +327,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
ChunkPos chunkcoordintpair = chunkHolder.getPos();
ProtoChunk protochunk = (ProtoChunk) ichunkaccess;
LevelChunk chunk;
@@ -1385,7 +1385,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1377,7 +1377,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
return chunk;
@@ -336,7 +336,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
});
}, (runnable) -> {
ProcessorHandle mailbox = this.mainThreadMailbox;
@@ -1511,9 +1511,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1509,9 +1509,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
private void asyncSave(ChunkAccess chunk) {
ChunkPos chunkPos = chunk.getPos();
CompoundTag poiData;
@@ -348,7 +348,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE.scheduleSave(this.level, chunkPos.x, chunkPos.z,
poiData, null, com.destroystokyo.paper.io.PrioritizedTaskQueue.NORMAL_PRIORITY);
@@ -1533,9 +1533,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1531,9 +1531,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
ChunkSerializer.AsyncSaveData asyncSaveData;
@@ -360,7 +360,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
this.level.asyncChunkTaskManager.scheduleChunkSave(chunkPos.x, chunkPos.z, com.destroystokyo.paper.io.PrioritizedTaskQueue.NORMAL_PRIORITY,
asyncSaveData, chunk);
@@ -1546,7 +1546,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1544,7 +1544,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Paper end
public boolean save(ChunkAccess chunk) {
@@ -369,7 +369,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
this.poiManager.flush(chunk.getPos());
if (!chunk.isUnsaved()) {
return false;
@@ -1570,9 +1570,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1568,9 +1568,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
this.level.getProfiler().incrementCounter("chunkSave");
CompoundTag nbttagcompound;
@@ -381,7 +381,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
// Paper start - async chunk io
com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE.scheduleSave(this.level, chunkcoordintpair.x, chunkcoordintpair.z,
@@ -1586,7 +1586,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1584,7 +1584,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return false;
}
}
@@ -390,7 +390,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
private boolean isExistingChunkFull(ChunkPos pos) {
@@ -2109,24 +2109,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2107,24 +2107,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
// Pufferfish end
@@ -419,7 +419,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
}
// Paper end - optimised tracker
@@ -2141,7 +2141,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2139,7 +2139,7 @@ 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();
@@ -428,7 +428,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
ChunkMap.TrackedEntity playerchunkmap_entitytracker;
@@ -2166,17 +2166,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2164,17 +2164,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
playerchunkmap_entitytracker.serverEntity.sendChanges();
}
}
@@ -450,10 +450,10 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55289d651e 100644
index 40094f8ed5e04eed0378c68120c918af05090601..6b4c502cf549996411ac21251e22849be2ed7a23 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -660,10 +660,10 @@ public class ServerChunkCache extends ChunkSource {
@@ -481,10 +481,10 @@ public class ServerChunkCache extends ChunkSource {
com.destroystokyo.paper.io.chunk.ChunkTaskManager.pushChunkWait(this.level, x1, z1);
// Paper end
com.destroystokyo.paper.io.SyncLoadFinder.logSyncLoad(this.level, x1, z1); // Paper - sync load info
@@ -466,7 +466,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
this.distanceManager.clearPriorityTickets(pair); // Paper - Chunk priority
this.distanceManager.clearUrgent(pair); // Paper - Chunk priority
} // Paper
@@ -827,7 +827,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -648,7 +648,7 @@ public class ServerChunkCache extends ChunkSource {
public boolean runDistanceManagerUpdates() {
if (distanceManager.delayDistanceManagerTick) return false; // Paper - Chunk priority
if (this.chunkMap.unloadingPlayerChunk) { LOGGER.error("Cannot tick distance manager while unloading playerchunks", new Throwable()); throw new IllegalStateException("Cannot tick distance manager while unloading playerchunks"); } // Paper
@@ -475,7 +475,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
boolean flag = this.distanceManager.runAllUpdates(this.chunkMap);
boolean flag1 = this.chunkMap.promoteChunkMap();
@@ -837,7 +837,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -658,7 +658,7 @@ public class ServerChunkCache extends ChunkSource {
this.clearCache();
return true;
}
@@ -484,7 +484,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
}
// Paper start
@@ -855,17 +855,17 @@ public class ServerChunkCache extends ChunkSource {
@@ -676,17 +676,17 @@ public class ServerChunkCache extends ChunkSource {
public void save(boolean flush) {
this.runDistanceManagerUpdates();
@@ -506,7 +506,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
}
// Paper end
@@ -900,22 +900,22 @@ public class ServerChunkCache extends ChunkSource {
@@ -721,22 +721,22 @@ public class ServerChunkCache extends ChunkSource {
@Override
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
this.level.getProfiler().push("purge");
@@ -535,7 +535,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
this.level.getProfiler().pop();
this.clearCache();
}
@@ -970,7 +970,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -791,7 +791,7 @@ public class ServerChunkCache extends ChunkSource {
boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
gameprofilerfiller.push("naturalSpawnCount");
@@ -544,7 +544,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
int l = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - per player mob spawning
NaturalSpawner.SpawnState spawnercreature_d; // moved down
@@ -991,12 +991,12 @@ public class ServerChunkCache extends ChunkSource {
@@ -812,12 +812,12 @@ public class ServerChunkCache extends ChunkSource {
// Pufferfish end
}
// Paper end
@@ -559,7 +559,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
// Paper - moved down
@@ -1050,17 +1050,17 @@ public class ServerChunkCache extends ChunkSource {
@@ -871,17 +871,17 @@ public class ServerChunkCache extends ChunkSource {
}
}
// Paper end - optimise chunk tick iteration
@@ -581,7 +581,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) {
ReferenceOpenHashSet<ChunkHolder> copy = this.chunkMap.needsChangeBroadcasting.clone();
this.chunkMap.needsChangeBroadcasting.clear();
@@ -1072,7 +1072,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -893,7 +893,7 @@ public class ServerChunkCache extends ChunkSource {
}
}
}
@@ -591,10 +591,10 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
// Paper end - use set of chunks requiring updates, rather than iterating every single one loaded
// Paper start - controlled flush for entity tracker packets
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e52642a8e 100644
index 0df97cf932f8bd315e3ae645368ae8df6c51fc25..207f07dfd0d2fd0ff5fdb3952966d069ca184123 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -652,7 +652,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -654,7 +654,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.updateSkyBrightness();
this.tickTime();
gameprofilerfiller.popPush("tickPending");
@@ -603,7 +603,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (!this.isDebug()) {
j = this.getGameTime();
gameprofilerfiller.push("blockTicks");
@@ -661,20 +661,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -663,20 +663,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.fluidTicks.tick(j, 65536, this::tickFluid);
gameprofilerfiller.pop();
}
@@ -631,7 +631,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
this.handlingTick = false;
gameprofilerfiller.pop();
boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players
@@ -685,7 +685,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -687,7 +687,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (flag || this.emptyTime++ < 300) {
gameprofilerfiller.push("entities");
@@ -640,7 +640,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (this.dragonFight != null) {
gameprofilerfiller.push("dragonFight");
this.dragonFight.tick();
@@ -693,7 +693,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -695,7 +695,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
@@ -649,7 +649,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
this.entityTickList.forEach((entity) -> {
if (!entity.isRemoved()) {
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
@@ -733,8 +733,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -735,8 +735,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
});
@@ -660,7 +660,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
gameprofilerfiller.pop();
this.tickBlockEntities();
}
@@ -896,7 +896,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -898,7 +898,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Paper start - optimise random block ticking
gameprofilerfiller.popPush("randomTick");
@@ -669,7 +669,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (randomTickSpeed > 0) {
LevelChunkSection[] sections = chunk.getSections();
int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this);
@@ -930,7 +930,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -932,7 +932,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
// Paper end - optimise random block ticking
@@ -678,7 +678,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
gameprofilerfiller.pop();
}
@@ -1224,8 +1224,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1226,8 +1226,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Spigot end
// Paper start- timings
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity);
@@ -689,7 +689,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
// Paper end - timings
entity.setOldPosAndRot();
ProfilerFiller gameprofilerfiller = this.getProfiler();
@@ -1241,7 +1241,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1243,7 +1243,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
entity.postTick(); // CraftBukkit
} else { entity.inactiveTick(); } // Paper - EAR 2
this.getProfiler().pop();
@@ -698,7 +698,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
Iterator iterator = entity.getPassengers().iterator();
while (iterator.hasNext()) {
@@ -1264,8 +1264,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1266,8 +1266,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (passenger instanceof Player || this.entityTickList.contains(passenger)) {
// Paper - EAR 2
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger);
@@ -709,7 +709,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
@@ -1295,7 +1295,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1297,7 +1297,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.tickPassenger(passenger, entity2);
}
@@ -718,7 +718,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
}
} else {
passenger.stopRiding();
@@ -1315,14 +1315,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1317,14 +1317,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld()));
}
@@ -736,7 +736,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
// Copied from save()
// CraftBukkit start - moved from MinecraftServer.saveChunks
@@ -1334,7 +1334,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1336,7 +1336,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.convertable.saveDataTag(this.server.registryHolder, this.serverLevelData, this.server.getPlayerList().getSingleplayerData());
}
// CraftBukkit end
@@ -745,7 +745,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
}
// Paper end
@@ -1343,7 +1343,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1345,7 +1345,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (!savingDisabled) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit
@@ -754,7 +754,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (progressListener != null) {
progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel"));
}
@@ -1353,10 +1353,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1355,10 +1355,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
progressListener.progressStage(Component.translatable("menu.savingChunks"));
}
@@ -800,10 +800,10 @@ index 0bc14bd2252705bd08ced10db3ed8dfbdc59893d..166fd17d03d84cd3ea5917c17e6b9549
}
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index d9153b04b242e22d6e8894bfd45c92ea6466df00..1da509127582618d6ced45e6e8a310304e9ecc16 100644
index 9ed964da70a17afbe26c513f67b2d911f2c9e7c5..138b2c1a21b9ceb60030d10e24c78e09533937a0 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1290,7 +1290,7 @@ public abstract class PlayerList {
@@ -1287,7 +1287,7 @@ public abstract class PlayerList {
public void saveAll(int interval) {
net.minecraft.server.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main
@@ -812,7 +812,7 @@ index d9153b04b242e22d6e8894bfd45c92ea6466df00..1da509127582618d6ced45e6e8a31030
int numSaved = 0;
long now = MinecraftServer.currentTick;
for (int i = 0; i < this.players.size(); ++i) {
@@ -1301,7 +1301,7 @@ public abstract class PlayerList {
@@ -1298,7 +1298,7 @@ public abstract class PlayerList {
}
// Paper end
}

View File

@@ -371,10 +371,10 @@ index 30093cd8bd35f0bbc8f26eca370622ee12a046b6..2986f110348b376bcdc64fa39b688855
++j;
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 01a6751f096eec3e7b2f854550fd812dabb52a90..4dac83e54c82272f0f73663e9367bdaf7a49355b 100644
index 56ec684bac1c29c99bac117e38d82db2b4dc20e8..e4cec79dc5911e1f000c63fe333eea04050aa542 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1000,20 +1000,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -998,20 +998,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
protected void tick(BooleanSupplier shouldKeepTicking) {
@@ -399,7 +399,7 @@ index 01a6751f096eec3e7b2f854550fd812dabb52a90..4dac83e54c82272f0f73663e9367bdaf
}
public boolean hasWork() {
@@ -1170,7 +1170,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1162,7 +1162,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Paper start - Async chunk io
final java.util.function.BiFunction<ChunkSerializer.InProgressChunkHolder, Throwable, Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> syncLoadComplete = (chunkHolder, ioThrowable) -> {
try /*(Timing ignored = this.level.timings.chunkLoad.startTimingIfSync())*/ { // Paper // Purpur
@@ -408,7 +408,7 @@ index 01a6751f096eec3e7b2f854550fd812dabb52a90..4dac83e54c82272f0f73663e9367bdaf
if (ioThrowable != null) {
return this.handleChunkLoadFailure(ioThrowable, pos);
}
@@ -1266,9 +1266,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1258,9 +1258,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return this.getDependencyStatus(requiredStatus, i);
});
@@ -420,7 +420,7 @@ index 01a6751f096eec3e7b2f854550fd812dabb52a90..4dac83e54c82272f0f73663e9367bdaf
Executor executor = (runnable) -> {
// Paper start - optimize chunk status progression without jumping through thread pool
if (holder.canAdvanceStatus()) {
@@ -1568,7 +1568,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1566,7 +1566,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
}
@@ -430,10 +430,10 @@ index 01a6751f096eec3e7b2f854550fd812dabb52a90..4dac83e54c82272f0f73663e9367bdaf
//try (co.aikar.timings.Timing ignored1 = this.level.timings.chunkSaveDataSerialization.startTiming()) { // Paper // Purpur
nbttagcompound = ChunkSerializer.write(this.level, chunk);
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22fa13faee 100644
index 6b4c502cf549996411ac21251e22849be2ed7a23..25b9f739abba986264e9f59b5125c1cc9a5bf74c 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -631,9 +631,9 @@ public class ServerChunkCache extends ChunkSource {
@@ -452,9 +452,9 @@ public class ServerChunkCache extends ChunkSource {
return ifLoaded;
}
// Paper end
@@ -445,7 +445,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
long k = ChunkPos.asLong(x, z);
ChunkAccess ichunkaccess;
@@ -647,7 +647,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -468,7 +468,7 @@ public class ServerChunkCache extends ChunkSource {
}
}
@@ -454,7 +454,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
CompletableFuture<Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper
ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor;
@@ -746,13 +746,13 @@ public class ServerChunkCache extends ChunkSource {
@@ -567,13 +567,13 @@ public class ServerChunkCache extends ChunkSource {
this.distanceManager.addTicket(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Paper - prevent plugin unloads from removing our ticket
if (isUrgent) this.distanceManager.markUrgent(chunkcoordintpair); // Paper - Chunk priority
if (this.chunkAbsent(playerchunk, l)) {
@@ -471,7 +471,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
if (this.chunkAbsent(playerchunk, l)) {
this.distanceManager.removeTicket(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Paper
throw (IllegalStateException) Util.pauseInIde(new IllegalStateException("No chunk holder after ticket has been added"));
@@ -887,24 +887,24 @@ public class ServerChunkCache extends ChunkSource {
@@ -708,24 +708,24 @@ public class ServerChunkCache extends ChunkSource {
// CraftBukkit start - modelled on below
public void purgeUnload() {
if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system
@@ -501,7 +501,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
if (tickChunks) {
//this.level.timings.chunks.startTiming(); // Paper - timings // Purpur
this.chunkMap.playerChunkManager.tick(); // Paper - this is mostly is to account for view distance changes
@@ -913,10 +913,10 @@ public class ServerChunkCache extends ChunkSource {
@@ -734,10 +734,10 @@ public class ServerChunkCache extends ChunkSource {
}
//this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur
@@ -514,7 +514,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
this.clearCache();
}
@@ -962,14 +962,14 @@ public class ServerChunkCache extends ChunkSource {
@@ -783,14 +783,14 @@ public class ServerChunkCache extends ChunkSource {
}
// Paper end - optimize isOutisdeRange
LevelData worlddata = this.level.getLevelData();
@@ -532,7 +532,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
//this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur
int l = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - per player mob spawning
@@ -994,13 +994,13 @@ public class ServerChunkCache extends ChunkSource {
@@ -815,13 +815,13 @@ public class ServerChunkCache extends ChunkSource {
//this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur
//this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously
@@ -548,7 +548,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit
// Paper - only shuffle if per-player mob spawning is disabled
@@ -1051,15 +1051,15 @@ public class ServerChunkCache extends ChunkSource {
@@ -872,15 +872,15 @@ public class ServerChunkCache extends ChunkSource {
}
// Paper end - optimise chunk tick iteration
//this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur
@@ -567,7 +567,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
//this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur
if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) {
ReferenceOpenHashSet<ChunkHolder> copy = this.chunkMap.needsChangeBroadcasting.clone();
@@ -1073,7 +1073,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -894,7 +894,7 @@ public class ServerChunkCache extends ChunkSource {
}
}
//this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur
@@ -576,7 +576,7 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
// Paper end - use set of chunks requiring updates, rather than iterating every single one loaded
// Paper start - controlled flush for entity tracker packets
List<net.minecraft.network.Connection> disabledFlushes = new java.util.ArrayList<>(this.level.players.size());
@@ -1279,7 +1279,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -1100,7 +1100,7 @@ public class ServerChunkCache extends ChunkSource {
@Override
protected void doRunTask(Runnable task) {
@@ -586,10 +586,10 @@ index de4b8001ff0ddb1603fcca2b6829bb55289d651e..1c49aec79581c6bbeaeb87e42f98ed22
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a9e708146 100644
index 207f07dfd0d2fd0ff5fdb3952966d069ca184123..6859e2054e8eb4fc8ac005e0bf646a30defa47a6 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -619,12 +619,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -621,12 +621,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
// Paper end - optimise checkDespawn
@@ -605,7 +605,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
this.advanceWeatherCycle();
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
long j;
@@ -651,32 +651,32 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -653,32 +653,32 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.updateSkyBrightness();
this.tickTime();
@@ -646,7 +646,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players
if (flag) {
@@ -684,12 +684,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -686,12 +686,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
if (flag || this.emptyTime++ < 300) {
@@ -662,7 +662,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
}
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
@@ -699,9 +699,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -701,9 +701,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
entity.discard();
} else {
@@ -674,7 +674,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list
Entity entity1 = entity.getVehicle();
@@ -713,7 +713,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -715,7 +715,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
entity.stopRiding();
}
@@ -683,7 +683,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
// Pufferfish start - copied from this.guardEntityTick
try {
this.tickNonPassenger(entity); // Pufferfish - changed
@@ -728,22 +728,22 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -730,22 +730,22 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Paper end
}
// Pufferfish end
@@ -711,7 +711,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
}
@Override
@@ -825,9 +825,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -827,9 +827,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
boolean flag = this.isRaining();
int j = chunkcoordintpair.getMinBlockX();
int k = chunkcoordintpair.getMinBlockZ();
@@ -723,7 +723,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning
@@ -859,7 +859,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -861,7 +861,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
@@ -732,7 +732,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking
// Paper start - optimise chunk ticking
this.getRandomBlockPosition(j, 0, k, 15, blockposition);
@@ -895,7 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -897,7 +897,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper start - optimise random block ticking
@@ -741,7 +741,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
//timings.chunkTicksBlocks.startTiming(); // Paper // Purpur
if (randomTickSpeed > 0) {
LevelChunkSection[] sections = chunk.getSections();
@@ -931,7 +931,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -933,7 +933,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper end - optimise random block ticking
//timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur
@@ -750,7 +750,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
}
public Optional<BlockPos> findLightningRod(BlockPos pos) {
@@ -1228,19 +1228,19 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1230,19 +1230,19 @@ public class ServerLevel extends Level implements WorldGenLevel {
//try { // Purpur
// Paper end - timings
entity.setOldPosAndRot();
@@ -775,7 +775,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
//} finally { timer.stopTiming(); } // Paper - timings // Purpur
Iterator iterator = entity.getPassengers().iterator();
@@ -1269,12 +1269,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1271,12 +1271,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
@@ -792,7 +792,7 @@ index 5a800731927ca20e95fbcd0e8b94999e52642a8e..f561fa1acfcfc78fc2a3a5fe1c12d43a
// Paper start - EAR 2
if (isActive) {
passenger.rideTick();
@@ -1286,7 +1286,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1288,7 +1288,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
vehicle.positionRider(passenger);
}
// Paper end - EAR 2

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 2e257704af6dc016303876cf39de971982b21db2..0afdaebb071061bc26ae302bfe0d86149227850c 100644
index 3806d4dbc846e75b3c4d1808b28f82eb638a3dce..d182eac78879b5e124bb62aded8a405b327275b4 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1463,6 +1463,42 @@ public final class CraftServer implements Server {
@@ -52,10 +52,10 @@ index 2e257704af6dc016303876cf39de971982b21db2..0afdaebb071061bc26ae302bfe0d8614
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 824c12db04aaaa750de54fce8a15b386dec1cc08..01313fdd9d5a1909bfbcbf8f613030e7727f1c36 100644
index 4b9d57a63a0eb922f77d34e4d2d7f3b0aa364337..42058ebca02f1ae7fdf970b9fdf36afc4d486e87 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2260,6 +2260,42 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2251,6 +2251,42 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public float getLocalDifficultyAt(Location location) {
return getHandle().getCurrentDifficultyAt(net.minecraft.server.MCUtil.toBlockPosition(location)).getEffectiveDifficulty();
}
@@ -97,12 +97,12 @@ index 824c12db04aaaa750de54fce8a15b386dec1cc08..01313fdd9d5a1909bfbcbf8f613030e7
+ }
// Purpur end
// Paper start
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 6d7947e0d4dd1bae45d5a9ca4adbd4d49a28ee71..6cc714d4044926a84feb5c084f2d15db1c29b21e 100644
index 5e755977b49e4874cf489bddb5be6b1fdc55152f..44ad108729a0cf434de14b60d979920988ae3e7d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2979,5 +2979,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2969,5 +2969,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean hasFlyingFallDamage() {
return getHandle().flyingFallDamage;
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] add Player#showCreditScreen
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 284624683d0e593bc7996fa90a6eee2b6a22ad9e..9fbac26b30f89b94f1ac686fce14c7d1c78d7043 100644
index 44ad108729a0cf434de14b60d979920988ae3e7d..cac6bd2f6ee4e9603a860ca7ddabbe7d002daa53 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2610,6 +2610,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2600,6 +2600,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.DEMO_EVENT, ClientboundGameEventPacket.DEMO_PARAM_INTRO));
}