diff --git a/.upstream-data b/.upstream-data index c8d8297..86b715b 100644 --- a/.upstream-data +++ b/.upstream-data @@ -1,2 +1,2 @@ -purpurCommit = 561164b800712a7bd02ca0a7069c23bc71677b79 -pufferfishCommit = 845c015664150048d0a7c02b706fe1c05a91ac16 +purpurCommit = 68862729138c74fed22a97b582f399a9c6eb9d79 +pufferfishCommit = cadfa71a2eaef4581e1163ff63d07fc596145fa1 diff --git a/gradle.properties b/gradle.properties index dbad1aa..8897c61 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.plazmamc.plazma version = 1.19.4-R0.1-SNAPSHOT -paperCommit = 956062a5d51bc4735e280c0a48e37f2fddb73c34 +paperCommit = 483368e480eb2ec060d8e68b30e14ec96aba6c4e org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0002-Purpur-API-Changes.patch b/patches/api/0002-Purpur-API-Changes.patch index 6c719db..65b4c3c 100644 --- a/patches/api/0002-Purpur-API-Changes.patch +++ b/patches/api/0002-Purpur-API-Changes.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: AlphaKR93 -Date: Sun, 4 Jun 2023 07:52:25 +0000 +From: BillyGalbreath +Date: Tue, 4 Jan 2022 23:05:41 -0600 Subject: [PATCH] Purpur API Changes Original: PurpurMC @@ -169,10 +169,10 @@ index e801e79fa57c44b2e5d359647c920f88064826f1..1abfcee0f6d632f4cd8d74b4994a90c9 new ArrayList(TIMINGS_SUBCOMMANDS.size())); } diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 998f629852e1103767e005405d1f39c2251ecd28..3c05b03bb5ff3bfec6c69a5cc4b23f0633ab473f 100644 +index b7a2cecb334ce39fa09d8ab949a29eedbdc44c36..b1f35c68373edfe666ca05b50f0ec022a1859ce9 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -200,6 +200,18 @@ public interface VanillaGoal extends Goal { +@@ -201,6 +201,18 @@ public interface VanillaGoal extends Goal { GoalKey CLIMB_ON_TOP_OF_POWDER_SNOW = GoalKey.of(Mob.class, NamespacedKey.minecraft("climb_on_top_of_powder_snow")); GoalKey WOLF_PANIC = GoalKey.of(Wolf.class, NamespacedKey.minecraft("wolf_panic")); @@ -209,10 +209,10 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c @Override diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 15a9993c2705e2dcc0366394ded57acffab589c0..74731f0d64d3bfc61baf816516b2bcef6515213e 100644 +index b0bc2df41506770e2854a287813f1c53f003eda1..a2f617537292e3bac52d665a6e51b7d4ce4a227e 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2460,4 +2460,127 @@ public final class Bukkit { +@@ -2483,4 +2483,127 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -431,12 +431,12 @@ index ea4ceb643239c26851bacbf45fc3f2efef3bb4be..3b8395dcb73e3fb251adf7438cbc7e95 + // Purpur end } diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index adb2416887cc3b544ec36c552bdf7105328c24a5..d334c963e16590c68ecd9d1d27434c7af6f7e21c 100644 +index 9b290969b0e60f20450cd15e3fc6f37276f12ae6..77a885fd17f280649b95df758f1096fa38fe8d69 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11156,4 +11156,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla - public String getItemTranslationKey() { - return Bukkit.getUnsafe().getItemTranslationKey(this); +@@ -11166,4 +11166,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla + public boolean isEnabledByFeature(@NotNull World world) { + return Bukkit.getDataPackManager().isEnabledByFeature(this, world); } + + // Purpur start @@ -595,10 +595,10 @@ index 72175dcae49f75b494ab70958053ed994a8828f4..df642a55003517040be795b44a8bf107 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 9f7029d327b55c8b1b9cfef8ea2678b87dad8ddb..d87e4d177b60957eee198c3f1791dbf26dbdddd6 100644 +index 1d1a1d087dabc9794e0062a064da2cced4062309..96160bced90bb4cd84e48c85c645cad0eb672b85 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1967,6 +1967,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -1994,6 +1994,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end @@ -617,7 +617,7 @@ index 9f7029d327b55c8b1b9cfef8ea2678b87dad8ddb..d87e4d177b60957eee198c3f1791dbf2 /** * Sends the component to the player * -@@ -2135,4 +2147,105 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2162,4 +2174,105 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull org.bukkit.potion.PotionBrewer getPotionBrewer(); // Paper end @@ -724,10 +724,10 @@ index 9f7029d327b55c8b1b9cfef8ea2678b87dad8ddb..d87e4d177b60957eee198c3f1791dbf2 + // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 2b45aa9b438d7856ec448c56832b2b2100961565..4561ca02052d774bc1424f7044c34f7affd415fc 100644 +index 72f1576b8ce5b55b50f053f346ce42c52db4b568..adf8169d5baefa7a33c33ef066180a8116617756 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3973,6 +3973,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -3974,6 +3974,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); @@ -812,8 +812,8 @@ index 2b45aa9b438d7856ec448c56832b2b2100961565..4561ca02052d774bc1424f7044c34f7a + // Purpur end + /** - * Represents various map environment types that a world may be - */ + * Get all {@link FeatureFlag} enabled in this world. + * diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java index ac9a28922f8a556944a4c3649d74c32c622f0cb0..5349f16136d9348c374a7dfe5b89a71dfcb0e66d 100644 --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java diff --git a/patches/api/0003-Plazma-Configurations.patch b/patches/api/0003-Plazma-Configurations.patch index 1e9a5be..b7428d0 100644 --- a/patches/api/0003-Plazma-Configurations.patch +++ b/patches/api/0003-Plazma-Configurations.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Plazma Configurations diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index d87e4d177b60957eee198c3f1791dbf26dbdddd6..3fbc6de9d49697baebd22f9e5977812eadff00d3 100644 +index 96160bced90bb4cd84e48c85c645cad0eb672b85..cd7080c49b769dec6d5d80774bde02e9dd8ecc01 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1967,6 +1967,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -1994,6 +1994,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 784745a..8d331a7 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -16,9 +16,6 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . - diff --git a/build.gradle.kts b/build.gradle.kts index 4f2fa65ade89c5703451dad4f80eeef162b277d1..3ee1160c796cc86db9bc9438055b307239e9a8f7 100644 --- a/build.gradle.kts @@ -616,7 +613,7 @@ index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f7473 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..f88e0b31b10b329fd8e94fc48148f490f31da646 +index 0000000000000000000000000000000000000000..0dd3374468e05f7a312ba5856b9cf8a4787dfa59 --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -0,0 +1,293 @@ @@ -890,14 +887,14 @@ index 0000000000000000000000000000000000000000..f88e0b31b10b329fd8e94fc48148f490 + + public static boolean throttleInactiveGoalSelectorTick; + private static void inactiveGoalSelectorThrottle() { -+ getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", true, ++ throttleInactiveGoalSelectorTick = getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", true, + "Throttles the AI goal selector in entity inactive ticks.", + "This can improve performance by a few percent, but has minor gameplay implications."); + } + + public static boolean allowEndCrystalRespawn; + private static void allowEndCrystalRespawn() { -+ getBoolean("allow-end-crystal-respawn", true, ++ allowEndCrystalRespawn = getBoolean("allow-end-crystal-respawn", true, + "Allows end crystals to respawn the ender dragon.", + "On servers that expect end crystal fights in the end dimension, disabling this", + "will prevent the server from performing an expensive search to attempt respawning", @@ -3452,10 +3449,10 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 894c0d5bfa001def4374b657e3eb8f15a0caa1e9..a49520fbb3cbce866338c964dd0aadbd113bf411 100644 +index 9f2536d9a73bdb15b5b3004d4da79ca32cee205b..6ff93df3e870ebc6e52f8b8a719908bfa16a839b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -259,7 +259,7 @@ import javax.annotation.Nullable; // Paper +@@ -262,7 +262,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -3464,7 +3461,7 @@ index 894c0d5bfa001def4374b657e3eb8f15a0caa1e9..a49520fbb3cbce866338c964dd0aadbd private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); -@@ -1042,6 +1042,11 @@ public final class CraftServer implements Server { +@@ -1062,6 +1062,11 @@ public final class CraftServer implements Server { plugin.getPluginMeta().getDisplayName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); @@ -3489,10 +3486,10 @@ index f7ea77dd82d978ad307f99c743efacfb34478b3d..009ab06182359862b8f543030ec4fe4e } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 64c50c52c11214740de7903e5592b8b6b2c170b3..d4f62940504e3ef7a70e13b1f4a7726f23b4c637 100644 +index 1179e9fbff93ec8ff82aa3aae477f6bf4ce9b885..1ecf065c5323f65401412cb98d4a0b622f356759 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -464,7 +464,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -472,7 +472,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0002-Purpur-Server-Changes.patch b/patches/server/0002-Purpur-Server-Changes.patch index 9e7c4ce..9cb7cea 100644 --- a/patches/server/0002-Purpur-Server-Changes.patch +++ b/patches/server/0002-Purpur-Server-Changes.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: AlphaKR93 -Date: Sun, 4 Jun 2023 07:52:24 +0000 +From: BillyGalbreath +Date: Sun, 12 Jun 2022 09:18:57 -0500 Subject: [PATCH] Purpur Server Changes Original: PurpurMC @@ -249,7 +249,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index f88e0b31b10b329fd8e94fc48148f490f31da646..fd26eb27a2fcebe8c768305c587c908bcedacf1d 100644 +index 0dd3374468e05f7a312ba5856b9cf8a4787dfa59..b4e5fbace85c67e7bd347e6a90514bbc2c132d5e 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -28,6 +28,7 @@ public class PufferfishConfig { @@ -282,8 +282,8 @@ index f88e0b31b10b329fd8e94fc48148f490f31da646..fd26eb27a2fcebe8c768305c587c908b public static boolean throttleInactiveGoalSelectorTick; private static void inactiveGoalSelectorThrottle() { -- getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", true, -+ getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", false, // Purpur +- throttleInactiveGoalSelectorTick = getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", true, ++ throttleInactiveGoalSelectorTick = getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", false, // Purpur "Throttles the AI goal selector in entity inactive ticks.", "This can improve performance by a few percent, but has minor gameplay implications."); } @@ -2759,7 +2759,7 @@ index 3ee5c3c17d450dce54e051dc53c9df44d9b3dc1b..86b8485c0fb1dc5cd79c9e24546dc744 } // Paper end diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..82402be7bbbf04388339c6a471946a72f09dfe3b 100644 +index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..852266234cf3d63e3b23a71639e40defca91c1b8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -277,6 +277,11 @@ public class ServerPlayer extends Player { @@ -2955,13 +2955,13 @@ index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..82402be7bbbf04388339c6a471946a72 this.connection.send(new ClientboundResourcePackPacket(url, hash, required, resourcePackPrompt)); } -@@ -2041,8 +2103,63 @@ public class ServerPlayer extends Player { +@@ -2041,8 +2103,68 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); + this.setAfk(false); // Purpur - } - ++ } ++ + // Purpur Start + private boolean isAfk = false; + @@ -2986,7 +2986,12 @@ index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..82402be7bbbf04388339c6a471946a72 + + msg = event.getBroadcastMsg(); + if (msg != null && !msg.isEmpty()) { -+ server.getPlayerList().broadcastMiniMessage(String.format(msg, this.getGameProfile().getName()), false); ++ String playerName = this.getGameProfile().getName(); ++ if (org.purpurmc.purpur.PurpurConfig.afkBroadcastUseDisplayName) { ++ net.kyori.adventure.text.Component playerDisplayNameComponent = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(this.getBukkitEntity().getDisplayName()); ++ playerName = net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer.plainText().serialize(playerDisplayNameComponent); ++ } ++ server.getPlayerList().broadcastMiniMessage(String.format(msg, playerName), false); + } + + if (this.level.purpurConfig.idleTimeoutUpdateTabList) { @@ -3008,8 +3013,8 @@ index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..82402be7bbbf04388339c6a471946a72 + @Override + public boolean isAfk() { + return this.isAfk; -+ } -+ + } + + @Override + public boolean canBeCollidedWith() { + return !this.isAfk() && super.canBeCollidedWith(); @@ -3019,7 +3024,7 @@ index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..82402be7bbbf04388339c6a471946a72 public ServerStatsCounter getStats() { return this.stats; } -@@ -2514,8 +2631,16 @@ public class ServerPlayer extends Player { +@@ -2514,8 +2636,16 @@ public class ServerPlayer extends Player { @Override public boolean isImmobile() { @@ -3037,7 +3042,7 @@ index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..82402be7bbbf04388339c6a471946a72 @Override public Scoreboard getScoreboard() { -@@ -2564,4 +2689,50 @@ public class ServerPlayer extends Player { +@@ -2564,4 +2694,50 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -4650,7 +4655,7 @@ index 8af0918d3a62de58a4b2af55022c812bb0e46092..3fc26a8976f4bfa28c2c6a862aac997d } diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 89699aaccd45a5a928a97d1b3ad06f5de5b9fad1..186d6b06194eb2120c9cec6218c87e8cf2f11f65 100644 +index 89699aaccd45a5a928a97d1b3ad06f5de5b9fad1..b3b371ee4850c90a3142c3c96761b032e6de6af0 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java @@ -306,7 +306,7 @@ public class ExperienceOrb extends Entity { @@ -4671,6 +4676,24 @@ index 89699aaccd45a5a928a97d1b3ad06f5de5b9fad1..186d6b06194eb2120c9cec6218c87e8c if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); +@@ -352,13 +352,15 @@ public class ExperienceOrb extends Entity { + } + } + ++ // Purpur start + public int durabilityToXp(int repairAmount) { +- return repairAmount / 2; ++ return (int) (repairAmount / (2 * level.purpurConfig.mendingMultiplier)); + } + + public int xpToDurability(int experienceAmount) { +- return experienceAmount * 2; ++ return (int) ((experienceAmount * 2) * level.purpurConfig.mendingMultiplier); + } ++ // Purpur end + + public int getValue() { + return this.value; diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java index c1e9b40a4a0f9cdc650caa88b5ea132e06ee2496..6f723171fa71d74b351b5cf0cd167bb6f7ca1691 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -20228,10 +20251,10 @@ index 714afc98b5150907b45a00060be4e41582333204..312a6d90c0a09570aef24c205dc2ff27 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955005bf458 100644 +index 6ff93df3e870ebc6e52f8b8a719908bfa16a839b..3310828edcabd2c24e3200dcb89d4e8ebd82cf16 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -259,7 +259,7 @@ import javax.annotation.Nullable; // Paper +@@ -262,7 +262,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -20240,8 +20263,8 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); -@@ -319,6 +319,20 @@ public final class CraftServer implements Server { - this.structureManager = new CraftStructureManager(console.getStructureManager()); +@@ -324,6 +324,20 @@ public final class CraftServer implements Server { + this.dataPackManager = new CraftDataPackManager(this.getServer().getPackRepository()); Bukkit.setServer(this); + // Purpur start @@ -20261,7 +20284,7 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 // Register all the Enchantments and PotionTypes now so we can stop new registration immediately after Enchantments.SHARPNESS.getClass(); -@@ -959,6 +973,7 @@ public final class CraftServer implements Server { +@@ -979,6 +993,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -20269,7 +20292,7 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -974,6 +989,7 @@ public final class CraftServer implements Server { +@@ -994,6 +1009,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -20277,7 +20300,7 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -989,6 +1005,7 @@ public final class CraftServer implements Server { +@@ -1009,6 +1025,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -20285,7 +20308,7 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1431,6 +1448,55 @@ public final class CraftServer implements Server { +@@ -1451,6 +1468,55 @@ public final class CraftServer implements Server { return true; } @@ -20341,7 +20364,7 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 @Override public List getRecipesFor(ItemStack result) { Validate.notNull(result, "Result cannot be null"); -@@ -2702,6 +2768,7 @@ public final class CraftServer implements Server { +@@ -2722,6 +2788,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { @@ -20349,7 +20372,7 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -2748,6 +2815,18 @@ public final class CraftServer implements Server { +@@ -2768,6 +2835,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -20368,7 +20391,7 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -2961,4 +3040,16 @@ public final class CraftServer implements Server { +@@ -2981,4 +3060,16 @@ public final class CraftServer implements Server { } // Paper end @@ -20386,10 +20409,10 @@ index a49520fbb3cbce866338c964dd0aadbd113bf411..3f80b16c8d69f284a26b16cf2513a955 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index dafd2c85f89d8822e50db63c21631199c69a97a0..39a2ff8c34f995ab860aadc24d24136d602af646 100644 +index 8f0234296397ca2d4a607dcea6093c6c606dc7d2..68df53648c9b76cf1b6abcaa90c5e8938e9e0d05 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2282,6 +2282,48 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2284,6 +2284,48 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().dragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().dragonFight()); } @@ -20439,7 +20462,7 @@ index dafd2c85f89d8822e50db63c21631199c69a97a0..39a2ff8c34f995ab860aadc24d24136d public PersistentDataContainer getPersistentDataContainer() { return this.persistentDataContainer; diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index c103f10dbb6c06e14bb7b5df73a797f456803301..2a8db3527f3680789125fca41097657063efb32d 100644 +index bfa091f72d6f477bcaf63d364639a1b4df9b1987..288cf98287c6d3c073b9ab6696c3957c999cad32 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -173,6 +173,20 @@ public class Main { @@ -20463,7 +20486,7 @@ index c103f10dbb6c06e14bb7b5df73a797f456803301..2a8db3527f3680789125fca410976570 // Paper start acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() -@@ -277,7 +291,7 @@ public class Main { +@@ -284,7 +298,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } @@ -21339,10 +21362,10 @@ index 138407c2d4b0bc55ddb9aac5d2aa3edadda090fb..a6e9e503a496c18e2501b03ec84f4600 // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index d4f62940504e3ef7a70e13b1f4a7726f23b4c637..1dd7f923dd6adb41eafc3ea0c063e3aae6670124 100644 +index 1ecf065c5323f65401412cb98d4a0b622f356759..1bf9a11abf7884a421374cbca5ccc18480717b79 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -464,7 +464,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -472,7 +472,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { @@ -21387,10 +21410,10 @@ index ec771c480156db393c326fa2fbdc2d432fb76f53..71940bf3a4162d12a422a5b3100ad8de DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..62ad4c6ad417e11e9152f74636b2ff0d187d0799 +index 0000000000000000000000000000000000000000..be8b44daa0141151c973917a774aa07721647ed1 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -0,0 +1,636 @@ +@@ -0,0 +1,638 @@ +package org.purpurmc.purpur; + +import com.google.common.base.Throwables; @@ -21569,6 +21592,7 @@ index 0000000000000000000000000000000000000000..62ad4c6ad417e11e9152f74636b2ff0d + public static String cannotRideMob = "You cannot mount that mob"; + public static String afkBroadcastAway = "%s is now AFK"; + public static String afkBroadcastBack = "%s is no longer AFK"; ++ public static boolean afkBroadcastUseDisplayName = false; + public static String afkTabListPrefix = "[AFK] "; + public static String afkTabListSuffix = ""; + public static String creditsCommandOutput = "%s has been shown the end credits"; @@ -21586,6 +21610,7 @@ index 0000000000000000000000000000000000000000..62ad4c6ad417e11e9152f74636b2ff0d + cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); + afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); + afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); ++ afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); + afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix))); + afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); + creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput); @@ -22029,10 +22054,10 @@ index 0000000000000000000000000000000000000000..62ad4c6ad417e11e9152f74636b2ff0d +} diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..0db8a1a51c857a3930d0b20028964fb355d8e5b4 +index 0000000000000000000000000000000000000000..397c4afa8da85845f49974832674a6e45ee6edb7 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -0,0 +1,3201 @@ +@@ -0,0 +1,3203 @@ +package org.purpurmc.purpur; + +import net.minecraft.core.registries.BuiltInRegistries; @@ -22156,6 +22181,7 @@ index 0000000000000000000000000000000000000000..0db8a1a51c857a3930d0b20028964fb3 + } + + public boolean useBetterMending = false; ++ public double mendingMultiplier = 1.0; + public boolean alwaysTameInCreative = false; + public boolean boatEjectPlayersOnLand = false; + public boolean boatsDoFallDamage = false; @@ -22183,6 +22209,7 @@ index 0000000000000000000000000000000000000000..0db8a1a51c857a3930d0b20028964fb3 + public int mobLastHurtByPlayerTime = 100; + private void miscGameplayMechanicsSettings() { + useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); ++ mendingMultiplier = getDouble("gameplay-mechanics.mending-multiplier", mendingMultiplier); + alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); + boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); + boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); diff --git a/patches/server/0004-Rebrand.patch b/patches/server/0004-Rebrand.patch index 6a0957b..2d1c7d2 100644 --- a/patches/server/0004-Rebrand.patch +++ b/patches/server/0004-Rebrand.patch @@ -245,10 +245,10 @@ index bd502ca721de0cab438d995efa00ad0554c0d2fe..d72f61f545c3929825e628607b85e0d2 private static final int DEFAULT_SIZE_THRESHOLD = 1024 * 8; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3f80b16c8d69f284a26b16cf2513a955005bf458..26c4f8da23bf83abf2e78894b731312028bed191 100644 +index 3310828edcabd2c24e3200dcb89d4e8ebd82cf16..5e6952a9d4c1137dc3d720ee2c944d95d4628065 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -259,7 +259,7 @@ import javax.annotation.Nullable; // Paper +@@ -262,7 +262,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -321,10 +321,10 @@ index 99597258e8e88cd9e2c901c4ac3ff7faeeabee2b..0e695ea608c4e4770f5491d54ad47616 + // Plazma end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 62ad4c6ad417e11e9152f74636b2ff0d187d0799..562baddc030c6a7861f58438a630cfbe47847d38 100644 +index be8b44daa0141151c973917a774aa07721647ed1..c93f6d275d0541e0751eefca45d17c4ccd39a62a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -227,7 +227,7 @@ public class PurpurConfig { +@@ -229,7 +229,7 @@ public class PurpurConfig { deathMessageOnlyBroadcastToAffectedPlayer = getBoolean("settings.broadcasts.death.only-broadcast-to-affected-player", deathMessageOnlyBroadcastToAffectedPlayer); } diff --git a/patches/server/0006-Plazma-Configurations.patch b/patches/server/0006-Plazma-Configurations.patch index bc19e78..ee835e9 100644 --- a/patches/server/0006-Plazma-Configurations.patch +++ b/patches/server/0006-Plazma-Configurations.patch @@ -300,10 +300,10 @@ index 92b440b24c6b083f81837611d08fbd6773a2a6e6..058449f24eb3260dc230dad2a0b4c552 this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur this.generator = gen; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 26c4f8da23bf83abf2e78894b731312028bed191..bb5ec38711f369ffcbd184b4e144bc0d8d576013 100644 +index 5e6952a9d4c1137dc3d720ee2c944d95d4628065..1367072684078c0e93c275c2159ece799f96428b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -973,6 +973,7 @@ public final class CraftServer implements Server { +@@ -993,6 +993,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -311,7 +311,7 @@ index 26c4f8da23bf83abf2e78894b731312028bed191..bb5ec38711f369ffcbd184b4e144bc0d org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty -@@ -2815,6 +2816,13 @@ public final class CraftServer implements Server { +@@ -2835,6 +2836,13 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -326,7 +326,7 @@ index 26c4f8da23bf83abf2e78894b731312028bed191..bb5ec38711f369ffcbd184b4e144bc0d @Override public YamlConfiguration getPurpurConfig() { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 2a8db3527f3680789125fca41097657063efb32d..b9f28e1c50e7d507ab151ff95f82dacc2da1ed3a 100644 +index 288cf98287c6d3c073b9ab6696c3957c999cad32..4970b246356bbd04eb1f9715da3fc7c9494573e2 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -173,6 +173,14 @@ public class Main { diff --git a/patches/server/0008-Optimize-Default-Configurations.patch b/patches/server/0008-Optimize-Default-Configurations.patch index 3d4ba92..24f5fb5 100644 --- a/patches/server/0008-Optimize-Default-Configurations.patch +++ b/patches/server/0008-Optimize-Default-Configurations.patch @@ -7,7 +7,7 @@ Original: YouHaveTrouble/minecraft-optimization, AkiraDevelopment/SimplyMC Copyright (C) 2023 YouHaveTrouble, AkiraDevelopment diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 47e77541e558e18758ae0fcc2aa4e47261e928b6..dd3a29c49392910a38be14a638c6c9b6e825d772 100644 +index b4e5fbace85c67e7bd347e6a90514bbc2c132d5e..edc8eba38af743167a8b78d34cb426d6929f9605 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -211,8 +211,8 @@ public class PufferfishConfig { @@ -42,15 +42,6 @@ index 47e77541e558e18758ae0fcc2aa4e47261e928b6..dd3a29c49392910a38be14a638c6c9b6 "tick frequency. freq = (distanceToPlayer^2) / (2^value)", "If you want further away entities to tick less often, use 7.", "If you want further away entities to tick more often, try 9."); -@@ -269,7 +269,7 @@ public class PufferfishConfig { - - public static boolean throttleInactiveGoalSelectorTick; - private static void inactiveGoalSelectorThrottle() { -- getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", false, // Purpur -+ getBoolean("inactive-goal-selector-throttle", "inactive-goal-selector-disable", !Boolean.getBoolean("Plazma.disableConfigOptimization"), // Purpur // Plazma - "Throttles the AI goal selector in entity inactive ticks.", - "This can improve performance by a few percent, but has minor gameplay implications."); - } diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java index 8d442c5a498ecf288a0cc0c54889c6e2fda849ce..205ce3456a3f6d28cc2c7cbc131ec0f63a461527 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -261,10 +252,10 @@ index 1ea3012995c738c67b31e997c138f824f9e69ba1..8ed00a650b712cbf4bc8796165a539d7 this.enableStatus = this.get("enable-status", true); this.hideOnlinePlayers = this.get("hide-online-players", false); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index bb5ec38711f369ffcbd184b4e144bc0d8d576013..5df6fd278a6555e483ea4ebc4e9625907585f77f 100644 +index 1367072684078c0e93c275c2159ece799f96428b..84fb7f6cdad5e7a5389e2469bfd6fb961cd1b299 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -349,7 +349,7 @@ public final class CraftServer implements Server { +@@ -354,7 +354,7 @@ public final class CraftServer implements Server { this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile()); this.configuration.options().copyDefaults(true); @@ -274,7 +265,7 @@ index bb5ec38711f369ffcbd184b4e144bc0d8d576013..5df6fd278a6555e483ea4ebc4e962590 if (!this.configuration.isString("aliases")) { legacyAlias = this.configuration.getConfigurationSection("aliases"); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 562baddc030c6a7861f58438a630cfbe47847d38..529247dad9300b0abc024464fb0ca35c4bc0f410 100644 +index c93f6d275d0541e0751eefca45d17c4ccd39a62a..38a8f79b0075279389f0b3dc7de4b16d9af05295 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -49,7 +49,10 @@ public class PurpurConfig { @@ -289,7 +280,7 @@ index 562baddc030c6a7861f58438a630cfbe47847d38..529247dad9300b0abc024464fb0ca35c private static File CONFIG_FILE; public static YamlConfiguration config; -@@ -237,7 +240,7 @@ public class PurpurConfig { +@@ -239,7 +242,7 @@ public class PurpurConfig { laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold); } @@ -299,10 +290,10 @@ index 562baddc030c6a7861f58438a630cfbe47847d38..529247dad9300b0abc024464fb0ca35c useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0db8a1a51c857a3930d0b20028964fb355d8e5b4..aca570efe2360d7d5f71e62433f6b1cd08f5214b 100644 +index 397c4afa8da85845f49974832674a6e45ee6edb7..ce702e6b5fff3a54f9f254a61becd12eb5c11dd7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -425,7 +425,7 @@ public class PurpurWorldConfig { +@@ -427,7 +427,7 @@ public class PurpurWorldConfig { public boolean playerInvulnerableWhileAcceptingResourcePack = false; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -311,7 +302,7 @@ index 0db8a1a51c857a3930d0b20028964fb355d8e5b4..aca570efe2360d7d5f71e62433f6b1cd public boolean teleportOnNetherCeilingDamage = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; -@@ -3038,7 +3038,7 @@ public class PurpurWorldConfig { +@@ -3040,7 +3040,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; diff --git a/patches/server/0010-Implement-ChunkSending.patch b/patches/server/0010-Implement-ChunkSending.patch index 490beb2..a4bde9a 100644 --- a/patches/server/0010-Implement-ChunkSending.patch +++ b/patches/server/0010-Implement-ChunkSending.patch @@ -33,7 +33,7 @@ index 904fcdeb7937d36208cc9a8d5eca9ef3a5b2cd9e..7f749579fe056a8436e6625204ae31f1 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 82402be7bbbf04388339c6a471946a72f09dfe3b..40eda117db2e3f578ad9d25522b6aadfe319b5cc 100644 +index 852266234cf3d63e3b23a71639e40defca91c1b8..4668eebc0776a470a42de94de1752986f76250d3 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -730,8 +730,36 @@ public class ServerPlayer extends Player { @@ -73,7 +73,7 @@ index 82402be7bbbf04388339c6a471946a72f09dfe3b..40eda117db2e3f578ad9d25522b6aadf public void doTick() { try { if (valid && !this.isSpectator() || !this.touchingUnloadedChunk()) { // Paper - don't tick dead players that are not in the world currently (pending respawn) -@@ -2369,7 +2397,14 @@ public class ServerPlayer extends Player { +@@ -2374,7 +2402,14 @@ public class ServerPlayer extends Player { return true; // Paper } diff --git a/patches/server/0016-Add-missing-purpur-configuration-options.patch b/patches/server/0016-Add-missing-purpur-configuration-options.patch index ad67cc5..2dcbaff 100644 --- a/patches/server/0016-Add-missing-purpur-configuration-options.patch +++ b/patches/server/0016-Add-missing-purpur-configuration-options.patch @@ -190,10 +190,10 @@ index 3a720375c3daa961a34363f78c2c51d301c3fa06..90bd114feb0924669e61f92f301cdcf7 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 529247dad9300b0abc024464fb0ca35c4bc0f410..b1cc96c751ae8f8befb0287d675d19c5a2768ba2 100644 +index 38a8f79b0075279389f0b3dc7de4b16d9af05295..072cc011abded538ae643b36cfb1f861d564bcec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -327,6 +327,7 @@ public class PurpurConfig { +@@ -329,6 +329,7 @@ public class PurpurConfig { } public static int barrelRows = 3; @@ -201,7 +201,7 @@ index 529247dad9300b0abc024464fb0ca35c4bc0f410..b1cc96c751ae8f8befb0287d675d19c5 public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; -@@ -367,6 +368,7 @@ public class PurpurConfig { +@@ -369,6 +370,7 @@ public class PurpurConfig { case 1 -> 9; default -> 27; }); @@ -210,10 +210,10 @@ index 529247dad9300b0abc024464fb0ca35c4bc0f410..b1cc96c751ae8f8befb0287d675d19c5 org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aca570efe2360d7d5f71e62433f6b1cd08f5214b..b4cb7d12aa02b885ca48ba5b27cbb7c20c2f5d7c 100644 +index ce702e6b5fff3a54f9f254a61becd12eb5c11dd7..7d553b0bb9ae478d54931682501afa9f532db5dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1096,7 +1096,15 @@ public class PurpurWorldConfig { +@@ -1098,7 +1098,15 @@ public class PurpurWorldConfig { public boolean allayRidableInWater = true; public boolean allayControllable = true; public List allayRespectNBT = new ArrayList<>(); @@ -229,7 +229,7 @@ index aca570efe2360d7d5f71e62433f6b1cd08f5214b..b4cb7d12aa02b885ca48ba5b27cbb7c2 allayRidable = getBoolean("mobs.allay.ridable", allayRidable); allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater); allayControllable = getBoolean("mobs.allay.controllable", allayControllable); -@@ -1207,7 +1215,15 @@ public class PurpurWorldConfig { +@@ -1209,7 +1217,15 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -245,7 +245,7 @@ index aca570efe2360d7d5f71e62433f6b1cd08f5214b..b4cb7d12aa02b885ca48ba5b27cbb7c2 camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax); camelJumpStrengthMin = getDouble("mobs.camel.attributes.jump_strength.min", camelJumpStrengthMin); -@@ -1634,7 +1650,15 @@ public class PurpurWorldConfig { +@@ -1636,7 +1652,15 @@ public class PurpurWorldConfig { public boolean frogControllable = true; public float frogRidableJumpHeight = 0.65F; public int frogBreedingTicks = 6000; @@ -261,7 +261,7 @@ index aca570efe2360d7d5f71e62433f6b1cd08f5214b..b4cb7d12aa02b885ca48ba5b27cbb7c2 frogRidable = getBoolean("mobs.frog.ridable", frogRidable); frogRidableInWater = getBoolean("mobs.frog.ridable-in-water", frogRidableInWater); frogControllable = getBoolean("mobs.frog.controllable", frogControllable); -@@ -2585,7 +2609,13 @@ public class PurpurWorldConfig { +@@ -2587,7 +2611,13 @@ public class PurpurWorldConfig { public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; public int snifferBreedingTicks = 6000; @@ -275,7 +275,7 @@ index aca570efe2360d7d5f71e62433f6b1cd08f5214b..b4cb7d12aa02b885ca48ba5b27cbb7c2 snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable); snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater); snifferControllable = getBoolean("mobs.sniffer.controllable", snifferControllable); -@@ -2684,7 +2714,15 @@ public class PurpurWorldConfig { +@@ -2686,7 +2716,15 @@ public class PurpurWorldConfig { public boolean tadpoleRidable = false; public boolean tadpoleRidableInWater = true; public boolean tadpoleControllable = true; @@ -291,7 +291,7 @@ index aca570efe2360d7d5f71e62433f6b1cd08f5214b..b4cb7d12aa02b885ca48ba5b27cbb7c2 tadpoleRidable = getBoolean("mobs.tadpole.ridable", tadpoleRidable); tadpoleRidableInWater = getBoolean("mobs.tadpole.ridable-in-water", tadpoleRidableInWater); tadpoleControllable = getBoolean("mobs.tadpole.controllable", tadpoleControllable); -@@ -2894,7 +2932,15 @@ public class PurpurWorldConfig { +@@ -2896,7 +2934,15 @@ public class PurpurWorldConfig { public boolean wardenRidable = false; public boolean wardenRidableInWater = true; public boolean wardenControllable = true; diff --git a/patches/server/0024-Apply-faster-random.patch b/patches/server/0024-Apply-faster-random.patch index 344bc2d..d3734e8 100644 --- a/patches/server/0024-Apply-faster-random.patch +++ b/patches/server/0024-Apply-faster-random.patch @@ -31,10 +31,10 @@ index cc6968a064b30f7250d18c20efb2bb8602bb0cdd..3c80e14392ee7a6bf5040d7cb81b7d89 if (spawn != null) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 3013aeb442799aba5b2ae45edcb3c2c72a18a740..e9f6104e0f665f29b3fca9ff0d8d48613aee2295 100644 +index 68df53648c9b76cf1b6abcaa90c5e8938e9e0d05..90cfe6f05f11f18a818857b1da8da75d8831c40c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -228,7 +228,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -230,7 +230,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { } // Paper end