diff --git a/gradle.properties b/gradle.properties index ee67f546..b3c991c9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = cn.dreeam.leaf mcVersion = 1.21 version = 1.21-R0.1-SNAPSHOT -galeCommit = 4ef476e1ab498a1c69d4114c7b031b83b99b0e6e +galeCommit = 65a5517ddefb8cb1a53f3d3c9984532526440f6f org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0004-Purpur-API-Changes.patch b/patches/api/0004-Purpur-API-Changes.patch index 5ce7caf3..3165b57c 100644 --- a/patches/api/0004-Purpur-API-Changes.patch +++ b/patches/api/0004-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 14136b85d13ca7235ad6e53a574aca392406deac +Commit: 87cf9f15dc468169a0350d678bf1fdc036eeaf33 Patches below are removed in this patch: Pufferfish-API-Changes.patch diff --git a/patches/generated-api/0001-Purpur-generated-api-Changes.patch b/patches/generated-api/0001-Purpur-generated-api-Changes.patch index f2ab88cc..11f06b50 100644 --- a/patches/generated-api/0001-Purpur-generated-api-Changes.patch +++ b/patches/generated-api/0001-Purpur-generated-api-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 14136b85d13ca7235ad6e53a574aca392406deac +Commit: 87cf9f15dc468169a0350d678bf1fdc036eeaf33 diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java index 3add91218dd3f07052aa932f0503d1f10ac3799b..3e41a4141095bce989c75e989293deb3f47e8e6d 100644 diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index f51584dc..53055572 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -149,19 +149,6 @@ index b24265573fdef5d9a964bcd76146f34542c420cf..aa25fd3ee043003f359b2c67a6d0f670 } public SystemReport getSystemReport() { -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d76d6a3b9ce126d588e5dca0fdc21059914d84f9..63d7678bf7eb847b3340b138a629cc93430d5540 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1019,7 +1019,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cbe5bd9902fa948a9c928c75961a6525404708b5..ef3d830c08c508cebd158c29ecaba11ad510d354 100644 +index 8bca5e1165e09e219386a787eb36fabcd948a0e6..3f787ea97480fa987cc1fc8d64268d46723fe1dd 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -734,6 +734,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -725,6 +725,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) -> { diff --git a/patches/server/0009-Purpur-Server-Changes.patch b/patches/server/0009-Purpur-Server-Changes.patch index e57f5297..de0c44bc 100644 --- a/patches/server/0009-Purpur-Server-Changes.patch +++ b/patches/server/0009-Purpur-Server-Changes.patch @@ -8,7 +8,7 @@ TODO - Dreeam: Check Fix-pufferfish-issues.patch Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 14136b85d13ca7235ad6e53a574aca392406deac +Commit: 87cf9f15dc468169a0350d678bf1fdc036eeaf33 Patches below are removed in this patch: Brand changes in Rebrand.patch @@ -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 208b9558d9019cd00f7ed270d2a36f9a28464e65..7f12e6fc9ff0c6f0e2659886f2cf1efb117f78d6 100644 +index 29c35af2dd3bbcc2527542d594316b9756c7c2a2..21d3c7cb818a5a61f5532b73f2b320665802ec0f 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 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> consumer, Set 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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a429bdce771 100644 +index 3f787ea97480fa987cc1fc8d64268d46723fe1dd..c4c5b6ce393f023117bd95d874be863a18984d3a 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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately -@@ -553,7 +556,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -544,7 +547,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 this.serverLevelData = iworlddataserver; ChunkGenerator chunkgenerator = worlddimension.generator(); // CraftBukkit start -@@ -624,6 +644,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -615,6 +635,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 } // Paper start -@@ -670,7 +691,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -661,7 +682,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 // CraftBukkit start j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); -@@ -792,6 +813,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -783,6 +804,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 this.setDayTime(this.levelData.getDayTime() + 1L); } -@@ -800,8 +828,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -791,8 +819,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. public void setDayTime(long timeOfDay) { this.serverLevelData.setDayTime(timeOfDay); @@ -1198,7 +1198,7 @@ index ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); -@@ -838,10 +880,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -888,10 +930,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 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 -@@ -946,7 +996,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -970,7 +1020,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 return optional.map((blockposition1) -> { return blockposition1.above(1); -@@ -995,11 +1045,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1019,11 +1069,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 ichatmutablecomponent = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(i)); } -@@ -1139,6 +1205,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1163,6 +1229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -1265,7 +1265,7 @@ index ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 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.... -@@ -1146,6 +1213,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1170,6 +1237,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -1273,7 +1273,7 @@ index ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 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. -@@ -2555,7 +2623,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -2608,7 +2676,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 ef3d830c08c508cebd158c29ecaba11ad510d354..0e97393e90e239628782d52851c55a42 } // 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 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161b3068933 100644 +index 4a69885e173cebc8ab427e02145e1020282ea95d..5b645db318a73f352838d779e3be16ff866bf3f6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -302,6 +302,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -303,6 +303,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 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -601,6 +605,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -602,6 +606,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple }); } @@ -1307,7 +1307,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 } @Override -@@ -677,6 +684,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -678,6 +685,9 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple }); } @@ -1317,7 +1317,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -806,6 +816,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -807,6 +817,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 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 } private void updatePlayerAttributes() { -@@ -1071,6 +1090,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1072,6 +1091,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple })); PlayerTeam scoreboardteam = this.getTeam(); @@ -1341,7 +1341,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 if (scoreboardteam != null && scoreboardteam.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); -@@ -1174,6 +1194,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1175,6 +1195,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple if (this.isInvulnerableTo(source)) { return false; } else { @@ -1358,7 +1358,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL); if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { -@@ -1401,6 +1431,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1402,6 +1432,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 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 this.setServerLevel(worldserver); this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1504,7 +1535,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1505,7 +1536,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return entitymonster.isPreventingPlayerRest(this); }); @@ -1375,7 +1375,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 return Either.left(net.minecraft.world.entity.player.Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1544,7 +1575,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1545,7 +1576,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple }); if (!this.serverLevel().canSleepThroughNights()) { @@ -1396,7 +1396,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 } ((ServerLevel) this.level()).updateSleepingPlayerList(); -@@ -1666,6 +1709,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1667,6 +1710,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 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); } -@@ -2002,6 +2046,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2003,6 +2047,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -1431,7 +1431,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 @Override public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); -@@ -2342,8 +2406,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2343,8 +2407,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -1500,7 +1500,7 @@ index 3993b360455361acf6c49495283285992d71d927..250b23672ff509f9972ad6c91112d161 public ServerStatsCounter getStats() { return this.stats; } -@@ -2947,4 +3071,50 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2948,4 +3072,50 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -1886,7 +1886,7 @@ index 1d11d0388b9763a0e0e5f3398425dafa2bb01488..72cf1372a7e685b3ff4cc852c3d38f7d } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 28354aa3ed55f7a86c210f805b1aecb5ae06b466..811a0c7ed06ecba3d6b4cd5d45a81c2d483bc53b 100644 +index 503eafc89cbbd7286108eb2edf32af01d5e5c57d..e3cc24c2c7eb9cc8928fe300137eb9baac70e91f 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -494,6 +494,7 @@ public abstract class PlayerList { @@ -1897,7 +1897,7 @@ index 28354aa3ed55f7a86c210f805b1aecb5ae06b466..811a0c7ed06ecba3d6b4cd5d45a81c2d if (GaleGlobalConfiguration.get().logToConsole.playerLoginLocations) { // Gale - JettPack - make logging login location configurable PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); // Gale start - JettPack - make logging login location configurable -@@ -610,6 +611,7 @@ public abstract class PlayerList { +@@ -611,6 +612,7 @@ public abstract class PlayerList { } public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent @@ -1905,7 +1905,7 @@ index 28354aa3ed55f7a86c210f805b1aecb5ae06b466..811a0c7ed06ecba3d6b4cd5d45a81c2d ServerLevel worldserver = entityplayer.serverLevel(); entityplayer.awardStat(Stats.LEAVE_GAME); -@@ -766,7 +768,7 @@ public abstract class PlayerList { +@@ -767,7 +769,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; @@ -1914,7 +1914,7 @@ index 28354aa3ed55f7a86c210f805b1aecb5ae06b466..811a0c7ed06ecba3d6b4cd5d45a81c2d event.disallow(PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -1078,6 +1080,20 @@ public abstract class PlayerList { +@@ -1079,6 +1081,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -1935,7 +1935,7 @@ index 28354aa3ed55f7a86c210f805b1aecb5ae06b466..811a0c7ed06ecba3d6b4cd5d45a81c2d public void broadcastAll(Packet packet, ResourceKey dimension) { Iterator iterator = this.players.iterator(); -@@ -1181,6 +1197,7 @@ public abstract class PlayerList { +@@ -1182,6 +1198,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } @@ -1943,7 +1943,7 @@ index 28354aa3ed55f7a86c210f805b1aecb5ae06b466..811a0c7ed06ecba3d6b4cd5d45a81c2d player.connection.send(new ClientboundEntityEventPacket(player, b0)); } -@@ -1189,6 +1206,27 @@ public abstract class PlayerList { +@@ -1190,6 +1207,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -14299,7 +14299,7 @@ index e314f36951e9ac15c57137e24fce8c410373130a..21dfb8e91c5427ac12133de2c05d923d int i = aitemstack.length; diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index fce49b17905ab97e691aa8499a5dfed67adf0c40..1abf54eeaad1b062f1465ee1a847bbfcba295665 100644 +index 986d0151aeeb2ce0f752c424c526fb0cc6849308..332500cb937f4a3eecb14e8daac44b33a15f9115 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java @@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; @@ -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 336c96a331c893a81509672d9898669061d545bb..0d1a3ceae8e7a464bf2adf9c71ad22683aad772b 100644 +index 9da1b9e2afac5d6a82eeff66f685c032c19e0366..4a71075b673e2b9413d9797ddeeafc04d699ec5e 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 @@ -14556,7 +14556,7 @@ index 336c96a331c893a81509672d9898669061d545bb..0d1a3ceae8e7a464bf2adf9c71ad2268 public CraftWorld getWorld() { return this.world; } -@@ -654,6 +698,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -698,6 +742,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.galeConfig = galeWorldConfigCreator.apply(this.spigotConfig); // Gale - Gale configuration @@ -14565,7 +14565,7 @@ index 336c96a331c893a81509672d9898669061d545bb..0d1a3ceae8e7a464bf2adf9c71ad2268 this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -1990,4 +2036,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -2034,4 +2080,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl return null; } // Paper end - optimize redstone (Alternate Current) diff --git a/patches/server/0010-Fix-Pufferfish-and-Purpur-patches.patch b/patches/server/0010-Fix-Pufferfish-and-Purpur-patches.patch index 99cc5d6d..ecdb2e7c 100644 --- a/patches/server/0010-Fix-Pufferfish-and-Purpur-patches.patch +++ b/patches/server/0010-Fix-Pufferfish-and-Purpur-patches.patch @@ -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 7f12e6fc9ff0c6f0e2659886f2cf1efb117f78d6..ff2e76176e0c49aae4115d5c2f764dbf2926e33c 100644 +index 21d3c7cb818a5a61f5532b73f2b320665802ec0f..ab1ac64066f43a3c14f788760c12fc964a3cc60f 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 S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system -@@ -1045,6 +1047,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements ServerInfo, ChunkIOErrorReporter, CommandSource, AutoCloseable, ca.spottedleaf.moonrise.patches.chunk_system.server.ChunkSystemMinecraftServer { // Paper - rewrite chunk system public static final int SERVER_THREAD_PRIORITY = Integer.getInteger("gale.thread.priority.server", -1); // Gale - server thread priority environment variable -@@ -1038,7 +1036,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return !this.canSleepForTickNoOversleep(); // Paper - move oversleep into full server tick -@@ -1611,15 +1607,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -984,7 +984,7 @@ index e0ab4b524d5a0d4b3ddaba48b581a90adcfc1833..65d89562f96c20e20649c049370dca0e // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1754,20 +1742,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { -@@ -790,8 +779,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -781,8 +770,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } }); @@ -1281,24 +1281,20 @@ index cb3e583ae2f5a7619455932ad1d8ee5c9e131ac1..86af09319462b58f2ec97caf7a1033b2 this.tickBlockEntities(); } -@@ -916,7 +903,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -966,12 +953,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } // Paper - Option to disable ice and snow - timings.chunkTicksBlocks.startTiming(); // Paper if (randomTickSpeed > 0) { - LevelChunkSection[] achunksection = chunk.getSections(); - -@@ -946,8 +932,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - } - } + this.optimiseRandomTick(chunk, randomTickSpeed); // Paper - optimise random ticking } - - timings.chunkTicksBlocks.stopTiming(); // Paper } @VisibleForTesting -@@ -1276,31 +1260,21 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1300,31 +1284,21 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. currentlyTickingEntity.lazySet(entity); } // Paper end - log detailed entity tick information @@ -1330,7 +1326,7 @@ index cb3e583ae2f5a7619455932ad1d8ee5c9e131ac1..86af09319462b58f2ec97caf7a1033b2 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1323,9 +1297,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1347,9 +1321,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); @@ -1340,7 +1336,7 @@ index cb3e583ae2f5a7619455932ad1d8ee5c9e131ac1..86af09319462b58f2ec97caf7a1033b2 passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1347,8 +1318,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1371,8 +1342,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickPassenger(passenger, entity2); } @@ -1349,7 +1345,7 @@ index cb3e583ae2f5a7619455932ad1d8ee5c9e131ac1..86af09319462b58f2ec97caf7a1033b2 } } else { passenger.stopRiding(); -@@ -1370,7 +1339,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1423,7 +1392,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 @@ -1357,7 +1353,7 @@ index cb3e583ae2f5a7619455932ad1d8ee5c9e131ac1..86af09319462b58f2ec97caf7a1033b2 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1380,10 +1348,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1433,10 +1401,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -1369,7 +1365,7 @@ index cb3e583ae2f5a7619455932ad1d8ee5c9e131ac1..86af09319462b58f2ec97caf7a1033b2 } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 811a0c7ed06ecba3d6b4cd5d45a81c2d483bc53b..75728fe1e02cc7042e30d954bc913fefd107ef94 100644 +index e3cc24c2c7eb9cc8928fe300137eb9baac70e91f..d34e31c6f7591bfdd34a6f2fe9376a515f20c3b7 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1,6 +1,5 @@ @@ -1379,13 +1375,17 @@ index 811a0c7ed06ecba3d6b4cd5d45a81c2d483bc53b..75728fe1e02cc7042e30d954bc913fef import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -@@ -1283,11 +1282,9 @@ public abstract class PlayerList { +@@ -1289,7 +1288,6 @@ public abstract class PlayerList { - public void saveAll() { + public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main - MinecraftTimings.savePlayers.startTiming(); // Paper + int numSaved = 0; + long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { - this.save(this.players.get(i)); +@@ -1300,7 +1298,6 @@ public abstract class PlayerList { + } + // Paper end - Incremental chunk and player saving } - MinecraftTimings.savePlayers.stopTiming(); // Paper return null; }); // Paper - ensure main @@ -1532,7 +1532,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 0d1a3ceae8e7a464bf2adf9c71ad22683aad772b..d6cce299882833452ada600ddd2e164312442143 100644 +index 4a71075b673e2b9413d9797ddeeafc04d699ec5e..fd23063ef316d6f1930a565c601bdf5b72bcfda1 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 @@ -1543,7 +1543,7 @@ index 0d1a3ceae8e7a464bf2adf9c71ad22683aad772b..d6cce299882833452ada600ddd2e1643 public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; private org.spigotmc.TickLimiter tileLimiter; -@@ -782,7 +781,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -826,7 +825,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl public void onBorderSetDamageSafeZOne(WorldBorder border, double safeZoneRadius) {} }); // CraftBukkit end @@ -1551,7 +1551,7 @@ index 0d1a3ceae8e7a464bf2adf9c71ad22683aad772b..d6cce299882833452ada600ddd2e1643 this.entityLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.entityMaxTickTime); this.tileLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.tileMaxTickTime); this.entityLookup = new ca.spottedleaf.moonrise.patches.chunk_system.level.entity.dfl.DefaultEntityLookup(this); // Paper - rewrite chunk system -@@ -1385,15 +1383,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1429,15 +1427,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } protected void tickBlockEntities() { @@ -1567,7 +1567,7 @@ index 0d1a3ceae8e7a464bf2adf9c71ad22683aad772b..d6cce299882833452ada600ddd2e1643 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1424,9 +1419,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1468,9 +1463,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 @@ -1636,10 +1636,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 4d04efcc4c902c1c108d142b9486d080aff7cd44..6b967b41160691a8429ec8a3f42469c63c609e75 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 +@@ -657,7 +657,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) { @@ -1647,7 +1647,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 +@@ -677,7 +676,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -1655,7 +1655,7 @@ index b07763aa7b3b92e24891b4ba346334ba8984ed67..db16be7db9d1df323f150dfd6f3d893b } } } -@@ -1001,7 +999,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1014,7 +1012,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1663,7 +1663,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 +@@ -1037,14 +1034,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 diff --git a/patches/server/0026-Slice-Smooth-Teleports.patch b/patches/server/0026-Slice-Smooth-Teleports.patch index c56438fe..2232ba1c 100644 --- a/patches/server/0026-Slice-Smooth-Teleports.patch +++ b/patches/server/0026-Slice-Smooth-Teleports.patch @@ -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 d573ae3fee994614bcc6c699bcbe8210874ca414..30f984553e823b3c928b0e2181baf5d2058c2d84 100644 +index 5b645db318a73f352838d779e3be16ff866bf3f6..000ee5bf7ef715511e4232d757e8360037bfe8f4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -306,6 +306,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -307,6 +307,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 @@ -19,10 +19,10 @@ index d573ae3fee994614bcc6c699bcbe8210874ca414..30f984553e823b3c928b0e2181baf5d2 // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 75728fe1e02cc7042e30d954bc913fefd107ef94..5a46f2b5f2903adbb5410c509aac62a5af7dbcc9 100644 +index d34e31c6f7591bfdd34a6f2fe9376a515f20c3b7..442b5ccc446d0dfc69f2d2e88003a77647af78f6 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -899,10 +899,10 @@ public abstract class PlayerList { +@@ -900,10 +900,10 @@ public abstract class PlayerList { ServerLevel worldserver1 = entityplayer1.serverLevel(); LevelData worlddata = worldserver1.getLevelData(); @@ -36,7 +36,7 @@ index 75728fe1e02cc7042e30d954bc913fefd107ef94..5a46f2b5f2903adbb5410c509aac62a5 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 7a7a2acca5980ab3d79346f47e4153dd6c98939b..cf85b3af38258fa34e8f67d1f002a521cc59c81b 100644 +index ee1d4d83b856b9a7eba28a6f72256bb5dc33b67b..9325d2c676899fcedc360ea9183339c91af026dc 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 { diff --git a/patches/server/0029-Leaves-Protocol-Core.patch b/patches/server/0029-Leaves-Protocol-Core.patch index 0d649049..a12c36f4 100644 --- a/patches/server/0029-Leaves-Protocol-Core.patch +++ b/patches/server/0029-Leaves-Protocol-Core.patch @@ -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 65d89562f96c20e20649c049370dca0ef3f059b5..36940bc192088233842d8fa7a37b84657552ceff 100644 +index 30f63049b254dd87df7d6bbb2415eb53503e05a5..e43250317c9373709ab5b7ba26bb85c75021604e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1806,6 +1806,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop blockTicks; private final LevelChunkTicks fluidTicks; -@@ -93,7 +104,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -105,7 +116,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p super(pos, upgradeData, world, net.minecraft.server.MinecraftServer.getServer().registryAccess().registryOrThrow(Registries.BIOME), inhabitedTime, sectionArrayInitializer, blendingData); // Paper - Anti-Xray - The world isn't ready yet, use server singleton for registry this.tickersInLevel = Maps.newHashMap(); this.level = (ServerLevel) world; // CraftBukkit - type @@ -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 +@@ -232,9 +243,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 +@@ -618,7 +643,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } private void removeGameEventListenerRegistry(int ySectionCoord) { diff --git a/patches/server/0040-Reduce-canSee-work.patch b/patches/server/0040-Reduce-canSee-work.patch index a3c5b4d2..f85de3fe 100644 --- a/patches/server/0040-Reduce-canSee-work.patch +++ b/patches/server/0040-Reduce-canSee-work.patch @@ -7,10 +7,10 @@ Co-authored by: Martijn Muijsers Co-authored by: MachineBreaker diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d6cce299882833452ada600ddd2e164312442143..3c01a14e08d6a401692cefef42796aaf89519889 100644 +index fd23063ef316d6f1930a565c601bdf5b72bcfda1..9b8f6dc0db7e409a2e403caa65f2b4fed863c04e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -810,17 +810,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -854,17 +854,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl for (int i = 0, len = entities.size(); i < len; ++i) { Entity entity = entities.get(i); diff --git a/patches/server/0052-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch b/patches/server/0052-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch index eb0b3441..ad315216 100644 --- a/patches/server/0052-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch +++ b/patches/server/0052-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch @@ -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 36940bc192088233842d8fa7a37b84657552ceff..a6f1365bb72e9598ed2101b60d8774d236fd48e1 100644 +index e43250317c9373709ab5b7ba26bb85c75021604e..084651b2c911ce207fffd2a2c4ba788301376ebc 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 S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1729,6 +1730,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system if (entity.isRemoved()) { -@@ -1740,6 +1753,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, ""); String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, ""); if (afk) { @@ -86,10 +86,10 @@ index e099fb784d4bc0b5820778c1bbc899d718739093..7d691af2d3e1baa046dd3ab2ba70f8cf // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands if (this.player.hasDisconnected()) { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 47e640a8be96f5e415a1ec8655b4eb7c64604a99..7ec41f90aede76efd11aa7ea0aa5bf3abcbeda93 100644 +index 0d6236637b2fc27b2aa5d20fe404b6202e3fb012..79a5d3846c1e73614f4bc82447f96b7e71811cab 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -614,6 +614,7 @@ public abstract class PlayerList { +@@ -615,6 +615,7 @@ public abstract class PlayerList { org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerLeave(entityplayer); // Leaves - protocol // Paper end - Fix kick event leave message not being sent org.purpurmc.purpur.task.BossBarTask.removeFromAll(entityplayer.getBukkitEntity()); // Purpur diff --git a/patches/server/0063-Mirai-Configurable-chat-message-signatures.patch b/patches/server/0063-Mirai-Configurable-chat-message-signatures.patch index 4ba28a16..d5789046 100644 --- a/patches/server/0063-Mirai-Configurable-chat-message-signatures.patch +++ b/patches/server/0063-Mirai-Configurable-chat-message-signatures.patch @@ -117,10 +117,10 @@ index ae0d0310d50f1ada082e045a58a24a43f8079da8..eea19f895588c51bce86f20b3ec505fd if (packet == null || this.processedDisconnect) { // Spigot return; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 7ec41f90aede76efd11aa7ea0aa5bf3abcbeda93..b665969cf7232a4bbc060c91b1cf802df3b0c908 100644 +index 79a5d3846c1e73614f4bc82447f96b7e71811cab..e8d44e6d5293e4b616597e0d63dda1f379c91a2d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1473,7 +1473,7 @@ public abstract class PlayerList { +@@ -1486,7 +1486,7 @@ public abstract class PlayerList { // Paper end boolean flag = this.verifyChatTrusted(message); @@ -129,7 +129,7 @@ index 7ec41f90aede76efd11aa7ea0aa5bf3abcbeda93..b665969cf7232a4bbc060c91b1cf802d OutgoingChatMessage outgoingchatmessage = OutgoingChatMessage.create(message); boolean flag1 = false; -@@ -1502,6 +1502,7 @@ public abstract class PlayerList { +@@ -1515,6 +1515,7 @@ public abstract class PlayerList { } public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public diff --git a/patches/server/0073-Configurable-connection-message.patch b/patches/server/0073-Configurable-connection-message.patch index 44cd501d..5e123c73 100644 --- a/patches/server/0073-Configurable-connection-message.patch +++ b/patches/server/0073-Configurable-connection-message.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable connection message diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index b665969cf7232a4bbc060c91b1cf802df3b0c908..44b05a126360072f1966d7f0d2a822fd84ada921 100644 +index e8d44e6d5293e4b616597e0d63dda1f379c91a2d..e7d5610de6bda486e512f18bf0684686ed9c08df 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -26,6 +26,7 @@ import java.util.UUID; @@ -34,7 +34,7 @@ index b665969cf7232a4bbc060c91b1cf802df3b0c908..44b05a126360072f1966d7f0d2a822fd joinMessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(jm); // Paper - Adventure this.server.getPlayerList().broadcastSystemMessage(joinMessage, false); // Paper - Adventure } -@@ -625,7 +626,7 @@ public abstract class PlayerList { +@@ -626,7 +627,7 @@ public abstract class PlayerList { entityplayer.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.DISCONNECT); // Paper - Inventory close reason } @@ -43,7 +43,7 @@ index b665969cf7232a4bbc060c91b1cf802df3b0c908..44b05a126360072f1966d7f0d2a822fd this.cserver.getPluginManager().callEvent(playerQuitEvent); entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage()); -@@ -1646,4 +1647,29 @@ public abstract class PlayerList { +@@ -1659,4 +1660,29 @@ public abstract class PlayerList { public boolean isAllowCommandsForAllPlayers() { return this.allowCommandsForAllPlayers; } diff --git a/patches/server/0080-Fix-MC-119417.patch b/patches/server/0080-Fix-MC-119417.patch index c44c13e2..73b9224c 100644 --- a/patches/server/0080-Fix-MC-119417.patch +++ b/patches/server/0080-Fix-MC-119417.patch @@ -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 64463119621fb1aad30017e887c5111ddc518ff0..ce947e82fb5b635d4eb23a5274646275216c8908 100644 +index f02c1d7c583c326401ae93d16dbdd2bc075670c8..40f316214111365df3e15e72da77bcd6155964d0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2258,6 +2258,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2259,6 +2259,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();