diff --git a/gradle.properties b/gradle.properties index deb36db8..2ba93cac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=cn.dreeam.leaf mcVersion=1.21.8 version=1.21.8-R0.1-SNAPSHOT -paperCommit=103187750e29fd982b84b2bab114fe5af98a82e5 +paperCommit=dbc367ba2d696fec2433b15ed23a893a34895638 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/leaf-server/minecraft-patches/features/0005-Remove-vanilla-profiler.patch b/leaf-server/minecraft-patches/features/0005-Remove-vanilla-profiler.patch index ef923fc1..5affd847 100644 --- a/leaf-server/minecraft-patches/features/0005-Remove-vanilla-profiler.patch +++ b/leaf-server/minecraft-patches/features/0005-Remove-vanilla-profiler.patch @@ -169,7 +169,7 @@ index 18071dcc69cc28471dddb7de94e803ec1e5fc2e4..e30bb9c4046200c1a6e4e917d15b205f } } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 6713b462c8fc182f18f19a997037d337f78ff096..470e9f7570d1fa6b1328052e59ecd1324ec58825 100644 +index 64e5cddaa5bcd9ef96246049586d9732d1c0d88a..606d63577a241e3ea26ae24be903a91d03ef73c8 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -114,19 +114,8 @@ import net.minecraft.util.TimeUtil; @@ -398,7 +398,7 @@ index 6713b462c8fc182f18f19a997037d337f78ff096..470e9f7570d1fa6b1328052e59ecd132 } public boolean isLevelEnabled(Level level) { -@@ -2597,55 +2531,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop shouldFilterMessageTo, @Nullable ServerPlayer sender, ChatType.Bound boundChatType, @Nullable Function unsignedFunction) { // Paper end boolean flag = this.verifyChatTrusted(message); diff --git a/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch b/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch index 48d21152..313ddf85 100644 --- a/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch +++ b/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch @@ -164,10 +164,10 @@ index a9c2f419200483673f6743ed94af110a8e875e71..617eb1b9d30d499124576c5d7cb51525 return ret; } diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index a92be63160f35c67a4e9513c6b5445d84c80c27c..80b41d65e350a7ac4feb5d861c6c911096648b49 100644 +index 917908e69154c5c5c9f847ae47548ee3d9221bc2..e4976eff4d18a1a1a752956c7e214122ddb05401 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1100,7 +1100,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1104,7 +1104,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.getInventory().getNonEquipmentItems().set(i, net.minecraft.world.item.ItemStack.EMPTY); } } @@ -177,7 +177,7 @@ index a92be63160f35c67a4e9513c6b5445d84c80c27c..80b41d65e350a7ac4feb5d861c6c9110 this.getInventory().equipment.set(value, net.minecraft.world.item.ItemStack.EMPTY); } diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5cd1b9d87f395872e1f51169130bfe2a7143c1a6..bcf5f7845d4b2ba6aa91c02dc4b99d357a9caec6 100644 +index 7b4eb3773bc88cc5b5287b55388a4dab2a2f562b..a2e43621a9ad2eb7eef0b4a5d7c9bf0f627b9bc9 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2795,7 +2795,7 @@ public class ServerGamePacketListenerImpl @@ -309,10 +309,10 @@ index 395ebf0a5fa14d9ff43b2d2e8e63aeaaf4612443..c6f87ee9b7c2b0bfc2d459a86b60ad2e return true; } diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 4d4b58b684ca115f4d8f672362d4c8252ef9481a..939d8c53a8eb445c1b5b0c65842ecb64ad317252 100644 +index c620341e33dc1805f1c033a969d0a15e1484c176..4aec1fd4efbb3dd139542c55d06503716723f326 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -338,7 +338,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -339,7 +339,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab if (this.xpReward > 0) { int i = this.xpReward; @@ -321,7 +321,7 @@ index 4d4b58b684ca115f4d8f672362d4c8252ef9481a..939d8c53a8eb445c1b5b0c65842ecb64 if (equipmentSlot.canIncreaseExperience()) { ItemStack itemBySlot = this.getItemBySlot(equipmentSlot); if (!itemBySlot.isEmpty() && this.dropChances.byEquipment(equipmentSlot) <= 1.0F) { -@@ -950,7 +950,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -963,7 +963,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void dropCustomDeathLoot(ServerLevel level, DamageSource damageSource, boolean recentlyHit) { super.dropCustomDeathLoot(level, damageSource, recentlyHit); @@ -330,7 +330,7 @@ index 4d4b58b684ca115f4d8f672362d4c8252ef9481a..939d8c53a8eb445c1b5b0c65842ecb64 if (this.shouldSkipLoot(equipmentSlot)) continue; // Paper ItemStack itemBySlot = this.getItemBySlot(equipmentSlot); float f = this.dropChances.byEquipment(equipmentSlot); -@@ -994,7 +994,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1007,7 +1007,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab public Set dropPreservedEquipment(ServerLevel level, Predicate filter) { Set set = new HashSet<>(); @@ -339,7 +339,7 @@ index 4d4b58b684ca115f4d8f672362d4c8252ef9481a..939d8c53a8eb445c1b5b0c65842ecb64 ItemStack itemBySlot = this.getItemBySlot(equipmentSlot); if (!itemBySlot.isEmpty()) { if (!filter.test(itemBySlot)) { -@@ -1122,7 +1122,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1135,7 +1135,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void populateDefaultEquipmentEnchantments(ServerLevelAccessor level, RandomSource random, DifficultyInstance difficulty) { this.enchantSpawnedWeapon(level, random, difficulty); @@ -348,7 +348,7 @@ index 4d4b58b684ca115f4d8f672362d4c8252ef9481a..939d8c53a8eb445c1b5b0c65842ecb64 if (equipmentSlot.getType() == EquipmentSlot.Type.HUMANOID_ARMOR) { this.enchantSpawnedArmor(level, random, equipmentSlot, difficulty); } -@@ -1539,7 +1539,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1552,7 +1552,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void removeAfterChangingDimensions() { super.removeAfterChangingDimensions(); diff --git a/leaf-server/minecraft-patches/features/0047-Optimize-sun-burn-tick.patch b/leaf-server/minecraft-patches/features/0047-Optimize-sun-burn-tick.patch index eec9b97c..738d759a 100644 --- a/leaf-server/minecraft-patches/features/0047-Optimize-sun-burn-tick.patch +++ b/leaf-server/minecraft-patches/features/0047-Optimize-sun-burn-tick.patch @@ -13,7 +13,7 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 6714668563e3a7543765064d9824b93ec3924473..147b57bec7646eda5b9f3b1119ce7b9dfd7c328c 100644 +index 977198e485053847b051b9e9ae60c6d8be6600cc..bb7be7cf6040aa7b5b28fb66f600c487d50019a6 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -2087,10 +2087,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -39,10 +39,10 @@ index 6714668563e3a7543765064d9824b93ec3924473..147b57bec7646eda5b9f3b1119ce7b9d public void absSnapTo(double x, double y, double z, float yRot, float xRot) { this.absSnapTo(x, y, z); diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 4d4b58b684ca115f4d8f672362d4c8252ef9481a..dcea538d00d3751b887c71450026ce2ced0093b1 100644 +index 4aec1fd4efbb3dd139542c55d06503716723f326..37c6567701fe10011a364b8def9ebf3391376592 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -1500,20 +1500,31 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1513,20 +1513,31 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void playAttackSound() { } diff --git a/leaf-server/minecraft-patches/features/0068-Spread-out-sending-all-player-info.patch b/leaf-server/minecraft-patches/features/0068-Spread-out-sending-all-player-info.patch index 203b09ba..4221c85b 100644 --- a/leaf-server/minecraft-patches/features/0068-Spread-out-sending-all-player-info.patch +++ b/leaf-server/minecraft-patches/features/0068-Spread-out-sending-all-player-info.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 2a536b1cc91725c6fc0724ed5507b68668b61660..bf84c9e6c7fb0bf24a15235e7ce11c8679085d2d 100644 +index f4a73d3f56d6a10493752653bd50c8caeda63a94..366d476730923c70f6734e12b21ba3d7f9750643 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -113,6 +113,7 @@ public abstract class PlayerList { @@ -56,7 +56,7 @@ index 2a536b1cc91725c6fc0724ed5507b68668b61660..bf84c9e6c7fb0bf24a15235e7ce11c86 // this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player))); // CraftBukkit - replaced with loop below // Paper start - Fire PlayerJoinEvent when Player is actually ready; correctly register player BEFORE PlayerJoinEvent, so the entity is valid and doesn't require tick delay hacks player.supressTrackerForLogin = true; -@@ -585,6 +587,7 @@ public abstract class PlayerList { +@@ -583,6 +585,7 @@ public abstract class PlayerList { player.getAdvancements().stopListening(); this.players.remove(player); this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot @@ -64,7 +64,7 @@ index 2a536b1cc91725c6fc0724ed5507b68668b61660..bf84c9e6c7fb0bf24a15235e7ce11c86 this.server.getCustomBossEvents().onPlayerDisconnect(player); UUID uuid = player.getUUID(); ServerPlayer serverPlayer = this.playersByUUID.get(uuid); -@@ -687,6 +690,7 @@ public abstract class PlayerList { +@@ -685,6 +688,7 @@ public abstract class PlayerList { player.stopRiding(); // CraftBukkit this.players.remove(player); this.playersByName.remove(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot @@ -72,7 +72,7 @@ index 2a536b1cc91725c6fc0724ed5507b68668b61660..bf84c9e6c7fb0bf24a15235e7ce11c86 player.level().removePlayerImmediately(player, reason); // TeleportTransition teleportTransition = player.findRespawnPositionAndUseSpawnBlock(!keepInventory, TeleportTransition.DO_NOTHING); // ServerLevel level = teleportTransition.newLevel(); -@@ -765,6 +769,7 @@ public abstract class PlayerList { +@@ -763,6 +767,7 @@ public abstract class PlayerList { this.players.add(serverPlayer); this.playersByName.put(serverPlayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT), serverPlayer); // Spigot this.playersByUUID.put(serverPlayer.getUUID(), serverPlayer); @@ -80,7 +80,7 @@ index 2a536b1cc91725c6fc0724ed5507b68668b61660..bf84c9e6c7fb0bf24a15235e7ce11c86 } // serverPlayer.initInventoryMenu(); serverPlayer.setHealth(serverPlayer.getHealth()); -@@ -867,18 +872,58 @@ public abstract class PlayerList { +@@ -865,18 +870,58 @@ public abstract class PlayerList { } public void tick() { @@ -145,7 +145,7 @@ index 2a536b1cc91725c6fc0724ed5507b68668b61660..bf84c9e6c7fb0bf24a15235e7ce11c86 public void broadcastAll(Packet packet, net.minecraft.world.entity.player.Player entityhuman) { for (ServerPlayer entityplayer : this.players) { // Paper - replace for i with for each for thread safety diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index abb19f08c736151fa5c6986e31eb4cf545073586..5e01ae7c5d11777868d72589019ad11305c9acdd 100644 +index 5160c349f1ace36d6de11f23e0f957f37fc19165..6207ffb19f8d98ea6496e4d80495bf590b1be7ca 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -230,9 +230,12 @@ public abstract class Player extends LivingEntity { diff --git a/leaf-server/minecraft-patches/features/0069-Optimize-player-list-for-sending-player-info.patch b/leaf-server/minecraft-patches/features/0069-Optimize-player-list-for-sending-player-info.patch index 855ec087..9879cb91 100644 --- a/leaf-server/minecraft-patches/features/0069-Optimize-player-list-for-sending-player-info.patch +++ b/leaf-server/minecraft-patches/features/0069-Optimize-player-list-for-sending-player-info.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index bf84c9e6c7fb0bf24a15235e7ce11c8679085d2d..7dd599e229329aa3fad772a875688abba6bf7101 100644 +index 366d476730923c70f6734e12b21ba3d7f9750643..e55d2da6048123720a12e955e5d417725dc01dc8 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -876,10 +876,19 @@ public abstract class PlayerList { +@@ -874,10 +874,19 @@ public abstract class PlayerList { ServerPlayer[] sendAllPlayerInfoBucket = this.sendAllPlayerInfoBuckets[this.sendAllPlayerInfoIn]; if (sendAllPlayerInfoBucket != null) { diff --git a/leaf-server/minecraft-patches/features/0075-Broadcast-crit-animations-as-the-entity-being-critte.patch b/leaf-server/minecraft-patches/features/0075-Broadcast-crit-animations-as-the-entity-being-critte.patch index 2e001b89..94917242 100644 --- a/leaf-server/minecraft-patches/features/0075-Broadcast-crit-animations-as-the-entity-being-critte.patch +++ b/leaf-server/minecraft-patches/features/0075-Broadcast-crit-animations-as-the-entity-being-critte.patch @@ -13,10 +13,10 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 80b41d65e350a7ac4feb5d861c6c911096648b49..57504269e653957cf9a650a110eae1bacb9f11c0 100644 +index e4976eff4d18a1a1a752956c7e214122ddb05401..ee2671510d46a92732934cd5df0a0e42c4cae1f6 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -2124,12 +2124,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2128,12 +2128,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @Override public void crit(Entity entityHit) { diff --git a/leaf-server/minecraft-patches/features/0093-Pufferfish-Dynamic-Activation-of-Brain.patch b/leaf-server/minecraft-patches/features/0093-Pufferfish-Dynamic-Activation-of-Brain.patch index 7c16f634..41a14b4e 100644 --- a/leaf-server/minecraft-patches/features/0093-Pufferfish-Dynamic-Activation-of-Brain.patch +++ b/leaf-server/minecraft-patches/features/0093-Pufferfish-Dynamic-Activation-of-Brain.patch @@ -85,7 +85,7 @@ index ad114ca013e0d09d40755acbe916586868a519ed..3f70fca36f67fa421314ff92d372a971 if (!tickRateManager.isEntityFrozen(entity)) { entity.checkDespawn(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 96341ee17591135d77d78c94814313b66eed4c3d..28e2ad1238651b8adb47b77763b0c8ae8172fe8a 100644 +index 85424913110a8a5e2059d767cf595a340e41ce37..a8fd1554acbe14ac74cba718ceddc9f65057bcc7 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -364,6 +364,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -110,10 +110,10 @@ index 96e1f8f40a0af4350155f192ac2126b523c9f0f5..388689c44cf63ade939e271d490051c9 @Nullable private Component description; diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index dcea538d00d3751b887c71450026ce2ced0093b1..968422c673e23774f6b162ed9cdb02b9bb67f9a8 100644 +index 37c6567701fe10011a364b8def9ebf3391376592..cb045fce223482be345066b4fe796341667e8023 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -208,10 +208,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -209,10 +209,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @Override public void inactiveTick() { super.inactiveTick(); @@ -126,7 +126,7 @@ index dcea538d00d3751b887c71450026ce2ced0093b1..968422c673e23774f6b162ed9cdb02b9 this.targetSelector.tick(); } } -@@ -734,10 +734,14 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -747,10 +747,14 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.sensing.tick(); int i = this.tickCount + this.getId(); if (i % 2 != 0 && this.tickCount > 1) { diff --git a/leaf-server/minecraft-patches/features/0094-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch b/leaf-server/minecraft-patches/features/0094-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch index 4ab26276..107853f5 100644 --- a/leaf-server/minecraft-patches/features/0094-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch +++ b/leaf-server/minecraft-patches/features/0094-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch @@ -7,10 +7,10 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 968422c673e23774f6b162ed9cdb02b9bb67f9a8..275f8697031251f7e106ac3fcc165e42af362434 100644 +index cb045fce223482be345066b4fe796341667e8023..37a83f45307cc73a52bb0995e71b5edd218b0d2e 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -204,11 +204,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -205,11 +205,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab return this.lookControl; } diff --git a/leaf-server/minecraft-patches/features/0095-Purpur-Server-Minecraft-Changes.patch b/leaf-server/minecraft-patches/features/0095-Purpur-Server-Minecraft-Changes.patch index 6c37dc31..5506d4c9 100644 --- a/leaf-server/minecraft-patches/features/0095-Purpur-Server-Minecraft-Changes.patch +++ b/leaf-server/minecraft-patches/features/0095-Purpur-Server-Minecraft-Changes.patch @@ -334,7 +334,7 @@ index b16f3f515a76ddbbd74d73464396cf094cb30599..4134679c838307de7ae410cfc727fada io.papermc.paper.plugin.PluginInitializerManager.load(optionSet); // Paper Bootstrap.bootStrap(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 4119cfb1de8bbb0c5c1287f70cffc6660dc9e8e4..6ae53701e2b8ed3a8ab89e940c817245a14ea35b 100644 +index 47e714fc564898f9a04a89a6b1b72f4c3adce2a0..4933383f3b466e720c03e5d336f41b49250ad539 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -266,6 +266,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop monster.isPreventingPlayerRest(this.level(), this) ); @@ -1033,7 +1033,7 @@ index ed8e3f031483a4b611a44edfa43232addec68c28..240a03eb8762f009d8ac98a725fc39d5 return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1581,7 +1614,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1585,7 +1618,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.level().canSleepThroughNights()) { @@ -1054,7 +1054,7 @@ index ed8e3f031483a4b611a44edfa43232addec68c28..240a03eb8762f009d8ac98a725fc39d5 } this.level().updateSleepingPlayerList(); -@@ -1673,6 +1718,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1677,6 +1722,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -1062,7 +1062,7 @@ index ed8e3f031483a4b611a44edfa43232addec68c28..240a03eb8762f009d8ac98a725fc39d5 this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1982,6 +2028,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1986,6 +2032,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -1089,7 +1089,7 @@ index ed8e3f031483a4b611a44edfa43232addec68c28..240a03eb8762f009d8ac98a725fc39d5 @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2206,6 +2272,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2210,6 +2276,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc ); } @@ -1110,7 +1110,7 @@ index ed8e3f031483a4b611a44edfa43232addec68c28..240a03eb8762f009d8ac98a725fc39d5 public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2344,8 +2424,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2348,8 +2428,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -1179,7 +1179,7 @@ index ed8e3f031483a4b611a44edfa43232addec68c28..240a03eb8762f009d8ac98a725fc39d5 public ServerStatsCounter getStats() { return this.stats; } -@@ -2972,4 +3112,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2976,4 +3116,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -1313,7 +1313,7 @@ index de630a692291926c52a0947f9943e59433ab130a..ca9ba2a2535eab66622230778efdf941 this.playerBrand = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); } diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index bcf5f7845d4b2ba6aa91c02dc4b99d357a9caec6..98ee4250e6b893861c8312e22ec9427d0af6998b 100644 +index a2e43621a9ad2eb7eef0b4a5d7c9bf0f627b9bc9..2c7f35ec3276f420875cf52596ada42b25fe64c8 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -338,6 +338,20 @@ public class ServerGamePacketListenerImpl @@ -1547,7 +1547,7 @@ index bcf5f7845d4b2ba6aa91c02dc4b99d357a9caec6..98ee4250e6b893861c8312e22ec9427d // Entity in bucket - SPIGOT-4048 and SPIGOT-6859 if (itemType == Items.WATER_BUCKET && target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && resendData) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it -@@ -3496,7 +3580,7 @@ public class ServerGamePacketListenerImpl +@@ -3497,7 +3581,7 @@ public class ServerGamePacketListenerImpl @Override public void handleChangeGameMode(ServerboundChangeGameModePacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); @@ -1570,7 +1570,7 @@ index f9fad100d3e5e4b44a5b0f88e288e6fac7a250f7..6d320ed179393e47398c44f2ba2b2285 } } catch (AuthenticationUnavailableException var4) { diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 77f74c35b0221fb6b14cc1d6acdb77c6bf8f68c6..7d1d455e67cab4eba3473b7111e30e9b1dcc282c 100644 +index 3d9301b68825a2be4ff6798bcf6e63d3c48908f5..f66425af98a38c1bbb11c52de96839faf42e26d0 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -412,6 +412,7 @@ public abstract class PlayerList { @@ -1589,7 +1589,7 @@ index 77f74c35b0221fb6b14cc1d6acdb77c6bf8f68c6..7d1d455e67cab4eba3473b7111e30e9b ServerLevel serverLevel = player.level(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -964,6 +966,20 @@ public abstract class PlayerList { +@@ -962,6 +964,20 @@ public abstract class PlayerList { } } @@ -1610,7 +1610,7 @@ index 77f74c35b0221fb6b14cc1d6acdb77c6bf8f68c6..7d1d455e67cab4eba3473b7111e30e9b public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1048,6 +1064,7 @@ public abstract class PlayerList { +@@ -1046,6 +1062,7 @@ public abstract class PlayerList { } else { b = (byte)(24 + permLevel); } @@ -1618,7 +1618,7 @@ index 77f74c35b0221fb6b14cc1d6acdb77c6bf8f68c6..7d1d455e67cab4eba3473b7111e30e9b player.connection.send(new ClientboundEntityEventPacket(player, b)); } -@@ -1056,11 +1073,32 @@ public abstract class PlayerList { +@@ -1054,11 +1071,32 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -2324,7 +2324,7 @@ index aab9adb8313c4b18279c7fd7500ef04bda09c6c1..86a694b94045b47f6e98c480645f7573 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 89e073b0a40738a7c1c7aea84eb2409e252e5473..310b2c9197c0c32fd1be05ab10eae5fc1d43fc26 100644 +index da46c16d9ce8c66ce02133d74b2a41f375398528..d79bb361783082ec2aaafdc1b2e6bb4d51813666 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -2673,13 +2673,13 @@ index 89e073b0a40738a7c1c7aea84eb2409e252e5473..310b2c9197c0c32fd1be05ab10eae5fc return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND ? SlotAccess.forEquipmentSlot(entity, slot, itemStack -> itemStack.isEmpty() || entity.getEquipmentSlotForItem(itemStack) == slot) diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df75243f77 100644 +index 37a83f45307cc73a52bb0995e71b5edd218b0d2e..702722bf42bbd0746e12d3a967f015807fc6484b 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -137,13 +137,14 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - private BlockPos homePosition = BlockPos.ZERO; +@@ -138,13 +138,14 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab private int homeRadius = -1; public boolean aware = true; // CraftBukkit + public net.kyori.adventure.util.TriState despawnInPeacefulOverride = net.kyori.adventure.util.TriState.NOT_SET; // Paper - allow changing despawnInPeaceful + public int ticksSinceLastInteraction; // Purpur - Entity lifespan protected Mob(EntityType entityType, Level level) { @@ -2693,7 +2693,7 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(level); -@@ -284,6 +285,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -285,6 +286,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab target = null; } } @@ -2701,7 +2701,7 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df this.target = target; return true; // CraftBukkit end -@@ -323,8 +325,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -324,8 +326,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.resetAmbientSoundTime(); this.playAmbientSound(); } @@ -2730,23 +2730,23 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df @Override protected void playHurtSound(DamageSource source) { this.resetAmbientSoundTime(); -@@ -423,6 +445,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - output.putBoolean("NoAI", this.isNoAi()); +@@ -429,6 +451,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab + output.putString("Paper.DespawnInPeacefulOverride", this.despawnInPeacefulOverride.name()); } - output.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit + // Paper end - allow changing despawnInPeaceful + output.putInt("Purpur.ticksSinceLastInteraction", this.ticksSinceLastInteraction); // Purpur - Entity lifespan } @Override -@@ -450,6 +473,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - this.lootTableSeed = input.getLongOr("DeathLootTableSeed", 0L); +@@ -457,6 +480,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.setNoAi(input.getBooleanOr("NoAI", false)); this.aware = input.getBooleanOr("Bukkit.Aware", true); // CraftBukkit + this.despawnInPeacefulOverride = input.read("Paper.DespawnInPeacefulOverride", io.papermc.paper.util.PaperCodecs.TRI_STATE_CODEC).orElse(net.kyori.adventure.util.TriState.NOT_SET); // Paper - allow changing despawnInPeaceful + this.ticksSinceLastInteraction = input.getIntOr("Purpur.ticksSinceLastInteraction", 0); // Purpur- Entity lifespan } @Override -@@ -502,7 +526,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -509,7 +533,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab && this.canPickUpLoot() && this.isAlive() && !this.dead @@ -2755,7 +2755,7 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df Vec3i pickupReach = this.getPickupReach(); for (ItemEntity itemEntity : this.level() -@@ -1163,7 +1187,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1176,7 +1200,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab ); } @@ -2764,7 +2764,7 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df return spawnGroupData; } -@@ -1251,7 +1275,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1264,7 +1288,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -2773,7 +2773,7 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df } public boolean isWithinHome() { -@@ -1500,6 +1524,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1513,6 +1537,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.playAttackSound(); } @@ -2781,7 +2781,7 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df return flag; } -@@ -1511,26 +1536,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1524,26 +1549,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab private net.minecraft.world.phys.Vec3 cached_position; // Gale end - JettPack - optimize sun burn tick - cache eye blockpos public boolean isSunBurnTick() { @@ -2810,7 +2810,7 @@ index 275f8697031251f7e106ac3fcc165e42af362434..6d8e7d23640707ba0d771174f65e58df } @Override -@@ -1578,4 +1585,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1591,4 +1598,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.getNavigation().updatePathfinderMaxVisitedNodes(); } } @@ -7913,7 +7913,7 @@ index 84d215a498d9bf6f1232bf4af5a4a98d3ba9b131..de09a91b89661118e460842453e33f38 } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..0613d80561f50e32dc4d1c471521f001659d017d 100644 +index 030721328b05526c3f56d9875859ee8860a1d36b..e3c34d5f00ce64b3c08b10cfcb3dd14ebe8c1977 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -71,6 +71,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -8195,7 +8195,7 @@ index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..0613d80561f50e32dc4d1c471521f001 } diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index 5ee368580d878a3845349c3d50cc0dc549c42cab..83fdd22eeb141079e05018ebf5cef70e7eb78726 100644 +index 9952e84dd94b8773c5ba8fcc4526e7714ebc2136..95d835ce4c733cbea457427a0d065c05a59704d9 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java @@ -91,10 +91,13 @@ public class ArmorStand extends LivingEntity { @@ -12723,7 +12723,7 @@ index fce3f0f81d3195045cdc9ad7320f1d92f033c36d..352f55882ea77e8d89942e6c58ef3b4b blockPos = blockPos1; break; diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 19e2ba14091b2fac74ce3b94da7a627029fcd914..6c9dfd76596b2e890b0b0dad5d98e8785a68c5a1 100644 +index 76b35938176a592beb8d490e11cf9970e5d09405..5841fc8c069286321dcc03e000049d7c88a3d3b6 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -220,17 +220,40 @@ public abstract class Player extends LivingEntity { @@ -13329,7 +13329,7 @@ index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f } diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index 96da9b8e3556e58365dc6742f44d6dfd608e2953..2305a3ef6bbb21ab77cb261f20c08ac8ce1bf9ed 100644 +index 06846950348954328c07f64cd9b3359e79a1a468..4354aafdd29c397d1318ae71dc365e7ca0aa781c 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu { @@ -14488,7 +14488,7 @@ index 879c8fe1f20decc793cfa39e686b61d521bd76ba..9c383a1028988cdd3de8b29ba72a4d7b } diff --git a/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index 66234431b265e0596275ca468cd40f8da98c22e2..e0cc0b49ea47bb38f7f4fe5ef3c793b0009d03c9 100644 +index b20415b47e209aedbc60ff17238e575dfe33849a..657ca9d8b1dc10777e73c450c9b8a4d52e314388 100644 --- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java @@ -606,4 +606,58 @@ public class EnchantmentHelper { diff --git a/leaf-server/minecraft-patches/features/0096-Fix-Pufferfish-and-Purpur-patches.patch b/leaf-server/minecraft-patches/features/0096-Fix-Pufferfish-and-Purpur-patches.patch index feb13610..d501e976 100644 --- a/leaf-server/minecraft-patches/features/0096-Fix-Pufferfish-and-Purpur-patches.patch +++ b/leaf-server/minecraft-patches/features/0096-Fix-Pufferfish-and-Purpur-patches.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix Pufferfish and Purpur patches diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 6ae53701e2b8ed3a8ab89e940c817245a14ea35b..19e65eaf77dd8fa5eaa23e4db9af1adee7280fff 100644 +index 4933383f3b466e720c03e5d336f41b49250ad539..b4c4e18e27fd2f520c122cf3418c8861e60d90ab 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entityType, Level level) { this.type = entityType; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index dd5343287503e2818e083696a17362091d94e652..b536461c672c608aeeb690f41ea457fc57768e4f 100644 +index d79bb361783082ec2aaafdc1b2e6bb4d51813666..f712d4445d8ffdc8dbd5f51c2a8104b097df11d1 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -1049,13 +1049,13 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -150,10 +150,10 @@ index dd5343287503e2818e083696a17362091d94e652..b536461c672c608aeeb690f41ea457fc } // Purpur end - Mob head visibility percent diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 6d8e7d23640707ba0d771174f65e58df75243f77..c5f4b878aa5d736d987982c94fbf557c0f267bbf 100644 +index 702722bf42bbd0746e12d3a967f015807fc6484b..6aed8d7c737a35943718535226cedd65f86d3b3c 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -1531,10 +1531,6 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1544,10 +1544,6 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void playAttackSound() { } diff --git a/leaf-server/minecraft-patches/features/0107-Slice-Smooth-Teleports.patch b/leaf-server/minecraft-patches/features/0107-Slice-Smooth-Teleports.patch index 23c9a0e0..b73d5a17 100644 --- a/leaf-server/minecraft-patches/features/0107-Slice-Smooth-Teleports.patch +++ b/leaf-server/minecraft-patches/features/0107-Slice-Smooth-Teleports.patch @@ -9,7 +9,7 @@ Original project: https://github.com/Cryptite/Slice Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index e181134e654a32aef9174dcc5d1a163858f7f143..c746d86439d45e60903248438a23cc1463154645 100644 +index fb585637383db4592f97f0c9040ffa86afb43c6a..880bf83929e636872eeb53c5c3ec9357972267db 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -431,6 +431,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -21,10 +21,10 @@ index e181134e654a32aef9174dcc5d1a163858f7f143..c746d86439d45e60903248438a23cc14 // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 5d65f070fe622ed27f4fc26688589a8701de8782..b290d228fc3d71aee6db3c4915e96d675097c870 100644 +index f66425af98a38c1bbb11c52de96839faf42e26d0..97c12b55bec58ba63bd6dbe338944637dc8fc844 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -761,11 +761,11 @@ public abstract class PlayerList { +@@ -759,11 +759,11 @@ public abstract class PlayerList { byte b = (byte)(keepInventory ? 1 : 0); ServerLevel serverLevel = serverPlayer.level(); LevelData levelData = serverLevel.getLevelData(); @@ -38,7 +38,7 @@ index 5d65f070fe622ed27f4fc26688589a8701de8782..b290d228fc3d71aee6db3c4915e96d67 serverPlayer.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getSharedSpawnPos(), level.getSharedSpawnAngle())); serverPlayer.connection.send(new ClientboundChangeDifficultyPacket(levelData.getDifficulty(), levelData.isDifficultyLocked())); serverPlayer.connection -@@ -853,6 +853,8 @@ public abstract class PlayerList { +@@ -851,6 +851,8 @@ public abstract class PlayerList { return serverPlayer; } diff --git a/leaf-server/minecraft-patches/features/0109-Leaves-Protocol-Core.patch b/leaf-server/minecraft-patches/features/0109-Leaves-Protocol-Core.patch index 71f81d99..cef35168 100644 --- a/leaf-server/minecraft-patches/features/0109-Leaves-Protocol-Core.patch +++ b/leaf-server/minecraft-patches/features/0109-Leaves-Protocol-Core.patch @@ -37,7 +37,7 @@ index fb263fa1f30a7dfcb7ec2656abfb38e5fe88eac9..56fd1ed7ccaf96e7eedea60fbdbf7f93 }; } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 12e697a626ce68127ac2157fca0e5408beb13f0b..46118a63b721d445623c4d831881652d845df96d 100644 +index 7b4437c06c2ede0be7dd58b42863e88b4b205106..73c63330b67b3d16ceebc644ce177980af25266b 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -1738,6 +1738,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= resultLimit) { return players; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 46118a63b721d445623c4d831881652d845df96d..b79ca0e1083520a7b24536cf04fec883181d17a0 100644 +index 73c63330b67b3d16ceebc644ce177980af25266b..68b72a7461a89ba7bd29fc9bc98171fb7f990df8 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -1642,7 +1642,7 @@ 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) { @@ -53,7 +53,7 @@ index 783af6b9857405a05cb5837bf3c0f416d1edf7a8..5775b0568dd90075539698b04ff185e1 } else { getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5e005e8f341e83bbc1a4cc6de781ed9407bdf8ef..f5c609fb2df079a2c5970b0d5882b402478a7e82 100644 +index 2e504082ba5d68874b2d56baa8676b840caf1abe..e61ff0c5051a855e10310d4e6f76d79e9ab86716 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2371,6 +2371,7 @@ public class ServerGamePacketListenerImpl @@ -152,7 +152,7 @@ index 5e005e8f341e83bbc1a4cc6de781ed9407bdf8ef..f5c609fb2df079a2c5970b0d5882b402 synchronized (this.lastSeenMessages) { Optional var10000; diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index a31d9b3ee78ce0ddbe4f5d2ffca1505bed555f0f..d196ad81b6d9b22d63f7bfebb7aba090e668824b 100644 +index b7690887a4902e83aebe928262664f57288f6183..ae29ae36d5dc2ec19f1887e8d80532d4259b4622 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -675,6 +675,7 @@ public abstract class PlayerList { diff --git a/leaf-server/minecraft-patches/features/0131-Virtual-thread-for-chat-executor.patch b/leaf-server/minecraft-patches/features/0131-Virtual-thread-for-chat-executor.patch index 81ecafa2..27767023 100644 --- a/leaf-server/minecraft-patches/features/0131-Virtual-thread-for-chat-executor.patch +++ b/leaf-server/minecraft-patches/features/0131-Virtual-thread-for-chat-executor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Virtual thread for chat executor diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index b79ca0e1083520a7b24536cf04fec883181d17a0..07943aa3be4222ab7a63b09a6625f7a003da8725 100644 +index 68b72a7461a89ba7bd29fc9bc98171fb7f990df8..efb281f71ef5404fa40b7d04104b1c15d14e2c05 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2646,7 +2646,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop shouldFilterMessageTo, @Nullable ServerPlayer sender, ChatType.Bound boundChatType, @Nullable Function unsignedFunction) { // Paper end boolean flag = this.verifyChatTrusted(message); @@ -150,7 +150,7 @@ index d196ad81b6d9b22d63f7bfebb7aba090e668824b..bee2ede3cecac11862b8fa56fdb89d06 OutgoingChatMessage outgoingChatMessage = OutgoingChatMessage.create(message); boolean flag1 = false; -@@ -1541,6 +1541,7 @@ public abstract class PlayerList { +@@ -1539,6 +1539,7 @@ public abstract class PlayerList { } public boolean verifyChatTrusted(PlayerChatMessage message) { diff --git a/leaf-server/minecraft-patches/features/0139-Configurable-connection-message.patch b/leaf-server/minecraft-patches/features/0139-Configurable-connection-message.patch index 816f374e..64fa3a60 100644 --- a/leaf-server/minecraft-patches/features/0139-Configurable-connection-message.patch +++ b/leaf-server/minecraft-patches/features/0139-Configurable-connection-message.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable connection message diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index bee2ede3cecac11862b8fa56fdb89d06e741c272..416cfcf8585b6db26431a51fa356eef59c17325a 100644 +index 83a23e4b9d2b9a8429e55e6798ce1787f8b58680..5dadcca0e3f9923ff192ed742231c9b8ca5f015b 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -445,7 +445,7 @@ public abstract class PlayerList { @@ -35,7 +35,7 @@ index bee2ede3cecac11862b8fa56fdb89d06e741c272..416cfcf8585b6db26431a51fa356eef5 this.cserver.getPluginManager().callEvent(playerQuitEvent); player.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage()); -@@ -1669,4 +1669,40 @@ public abstract class PlayerList { +@@ -1667,4 +1667,40 @@ public abstract class PlayerList { public boolean isAllowCommandsForAllPlayers() { return this.allowCommandsForAllPlayers; } diff --git a/leaf-server/minecraft-patches/features/0158-Do-not-place-player-if-the-server-is-full.patch b/leaf-server/minecraft-patches/features/0158-Do-not-place-player-if-the-server-is-full.patch index 372f9881..52f2ab64 100644 --- a/leaf-server/minecraft-patches/features/0158-Do-not-place-player-if-the-server-is-full.patch +++ b/leaf-server/minecraft-patches/features/0158-Do-not-place-player-if-the-server-is-full.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Do not place player if the server is full Fix https://github.com/PaperMC/Paper/issues/10668 diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 416cfcf8585b6db26431a51fa356eef59c17325a..704fbb08d5c1768c3024a7dbd6d7e34da4ab6be7 100644 +index 5dadcca0e3f9923ff192ed742231c9b8ca5f015b..b5ecb22c95eca2ac3dc8d201e6964f2c34130ae9 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -349,6 +349,13 @@ public abstract class PlayerList { @@ -23,7 +23,7 @@ index 416cfcf8585b6db26431a51fa356eef59c17325a..704fbb08d5c1768c3024a7dbd6d7e34d org.bukkit.Location loc = ev.getSpawnLocation(); serverLevel = ((org.bukkit.craftbukkit.CraftWorld) loc.getWorld()).getHandle(); -@@ -1250,7 +1257,7 @@ public abstract class PlayerList { +@@ -1248,7 +1255,7 @@ public abstract class PlayerList { // Paper start - whitelist verify event / login event public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) { diff --git a/leaf-server/minecraft-patches/features/0161-Fix-MC-119417.patch b/leaf-server/minecraft-patches/features/0161-Fix-MC-119417.patch index eeff0f7f..067ca5a9 100644 --- a/leaf-server/minecraft-patches/features/0161-Fix-MC-119417.patch +++ b/leaf-server/minecraft-patches/features/0161-Fix-MC-119417.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-119417 Related MC issue: https://bugs.mojang.com/browse/MC/issues/MC-119417 diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 5775b0568dd90075539698b04ff185e10c3b3f75..72ab1e2ea7571b5fde4c3769249e950b67dc9c82 100644 +index 15fdcc84a72c272428115eb08b07fafc0c17fded..50b452c428c637a537c71b70a7758ec3c76ab280 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -2234,6 +2234,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2238,6 +2238,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, gameMode.getId())); if (gameMode == GameType.SPECTATOR) { this.removeEntitiesOnShoulder(); diff --git a/leaf-server/minecraft-patches/features/0164-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch b/leaf-server/minecraft-patches/features/0164-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch index 6172b35d..77c6d147 100644 --- a/leaf-server/minecraft-patches/features/0164-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch +++ b/leaf-server/minecraft-patches/features/0164-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch @@ -8,10 +8,10 @@ Original project: https://github.com/PaperMC/Paper Paper pull request: https://github.com/PaperMC/Paper/pull/10990 diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index a6be753d1284167e090c40e6dcfbaa56b4e3d774..867353500482247bbec79f407246902c79a3d14a 100644 +index ec50760ec81728a0b8ab8d691ed65ba6d25d32f9..6e0981844823be11775c82e22c6845d8fc6b44e2 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -210,6 +210,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -211,6 +211,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @Override public void inactiveTick() { super.inactiveTick(); diff --git a/leaf-server/minecraft-patches/features/0200-optimize-mob-despawn.patch b/leaf-server/minecraft-patches/features/0200-optimize-mob-despawn.patch index 53c79ea0..8d329490 100644 --- a/leaf-server/minecraft-patches/features/0200-optimize-mob-despawn.patch +++ b/leaf-server/minecraft-patches/features/0200-optimize-mob-despawn.patch @@ -38,7 +38,7 @@ index 7fb763e89e43698bfb2b9fcf6296705384e8624a..91752678f887559132921cff61697478 final net.minecraft.world.level.levelgen.BitRandomSource simpleRandom = this.simpleRandom; // Paper - optimise random ticking // Leaf - Faster random generator - upcasting ChunkPos pos = chunk.getPos(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 129248da7e1bfa5edc1c1a43c98a400f697e735f..b17dca64375039bea3dc3f26b5965865a0a9200a 100644 +index 1d75ea57923f891a07b0c29e065ad46cdfac9b91..b87a1a2452cd236b4bdf7a7f12cae03f58833ccd 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -5132,6 +5132,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -54,10 +54,10 @@ index 129248da7e1bfa5edc1c1a43c98a400f697e735f..b17dca64375039bea3dc3f26b5965865 return Leashable.createQuadLeashOffsets(this, 0.0, 0.5, 0.5, 0.0); } diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 867353500482247bbec79f407246902c79a3d14a..7caf9ea3792089dcf890c2af0ac17ee1d5c85c16 100644 +index 6e0981844823be11775c82e22c6845d8fc6b44e2..9f91295837064accb0a72b9f47d05b01ad51f668 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -751,6 +751,22 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -764,6 +764,22 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } } @@ -98,7 +98,7 @@ index de09a91b89661118e460842453e33f383ea08a94..e9fc2bf959949a8589a9ab87e00c85ff return this.subEntities; } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 0613d80561f50e32dc4d1c471521f001659d017d..021c609b689e5a08e60c54f360c4c5dbb9de987f 100644 +index e3c34d5f00ce64b3c08b10cfcb3dd14ebe8c1977..d8336fc8852b9939f341aedd17403913c7dadcf9 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -695,6 +695,21 @@ public class WitherBoss extends Monster implements RangedAttackMob { diff --git a/leaf-server/minecraft-patches/features/0210-SparklyPaper-Parallel-world-ticking.patch b/leaf-server/minecraft-patches/features/0210-SparklyPaper-Parallel-world-ticking.patch index 6d22d08c..463f5866 100644 --- a/leaf-server/minecraft-patches/features/0210-SparklyPaper-Parallel-world-ticking.patch +++ b/leaf-server/minecraft-patches/features/0210-SparklyPaper-Parallel-world-ticking.patch @@ -95,7 +95,7 @@ index 582e012222123e5001c34153f2ee1ab1d08935fd..c0bce2293d07ca58cc5bc9e036ab8dca List states = new java.util.ArrayList<>(level.capturedBlockStates.values()); level.capturedBlockStates.clear(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 169d4c5e317af201a2d5ad0d82d39805376c2e9e..c8265f25ead389b025aef6ebe4cc44972132f143 100644 +index a780cba7e2e95412226d9e80b892ab0126f50666..20e3c60ccf069ce491df8c5c9ea6ffec7b0920da 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -290,6 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entityType, Level level) { super(entityType, level); -@@ -222,6 +228,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -223,6 +229,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab if (this.targetSelector.inactiveTick(this.activatedPriority, true)) { // Pufferfish - pass activated priority this.targetSelector.tick(); } @@ -223,7 +223,7 @@ index 7caf9ea3792089dcf890c2af0ac17ee1d5c85c16..3882bc7a8d1684b91876eb7c67999490 } // Paper end -@@ -792,6 +803,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -805,6 +816,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.goalSelector.tick(); } @@ -1974,7 +1974,7 @@ index e1717b5c854aa81fdd7b7e715d7c3498d9f86072..727effd31644432f9da04ee4e3aaa41c static class StriderPathNavigation extends GroundPathNavigation { diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java -index 523b068b99236845e2b87361f72494582e6dd894..9b4e6fdbedfa378ea436cdd5f1a36e2b3d94be17 100644 +index b4f4556511fd801b79111330250cac17003b37b9..06b46b973df84b16842a28f73df75613d09e75c9 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java @@ -1793,9 +1793,11 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl diff --git a/leaf-server/minecraft-patches/features/0236-Protocol-Core.patch b/leaf-server/minecraft-patches/features/0236-Protocol-Core.patch index 501ef890..8b92a981 100644 --- a/leaf-server/minecraft-patches/features/0236-Protocol-Core.patch +++ b/leaf-server/minecraft-patches/features/0236-Protocol-Core.patch @@ -22,7 +22,7 @@ index 56fd1ed7ccaf96e7eedea60fbdbf7f934939d563..d2f522ea6d0a209496848af073c9af1c } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 9a68042d1efb0da915fc2a302641c9ea6d92f582..225d1604baa2a2c974de5c3ae45d3afd3c7d31df 100644 +index cf1f876c6caf1cb954749331fdeb6573f733c754..7849a905db35377da0931aa1c9b8770f30a51044 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -1804,6 +1804,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { this.awardStat(Stats.WALK_UNDER_WATER_ONE_CM, rounded); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index f70fff36ba616afbd1869caeee1b20d4c1579a19..e054c2416919fe8814412e6e06cd82e4ea537c84 100644 +index ab0cf0bff7b477327fd92a20e6c7bc7d62f418d2..ceede6519645cb488ea4152842e00751eef53a6c 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -288,7 +288,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -175,7 +175,7 @@ index c8354d46ed909090f7c15f396863bf7d73afcefa..3ee788b172240ccf38cb31385dff1336 } else if (!flag) { this.applyGravity(); diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 67d78dccd74eb25fa63619159764210cb8137164..5307e80f6e84df7a053e7132883d8338bbd751a0 100644 +index af9c55edb196beaf2ec403daede16012ac0e8f28..d745fd544263b364c1880220c076be41f269a8b7 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -463,7 +463,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -253,7 +253,7 @@ index 5563720a6d92cad974632bdc97bb35c15310483c..b65dfebab222d2fbc4b68367bbe72244 if (this.inWaterTime >= 600) { this.startUnderWaterConversion(300); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 2f450aa1c9e98fc03071d55b181909f06cb11899..7d6026fdea18a7fe935973da5f7a90fd1605549a 100644 +index 2da9d6a2c12f490bda2cd0b9fb83fa35749f8761..108ef0759e4060fc02d517175731f413c7e2532f 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -398,7 +398,7 @@ public abstract class Player extends LivingEntity { diff --git a/leaf-server/minecraft-patches/features/0276-Op-lock.patch b/leaf-server/minecraft-patches/features/0276-Op-lock.patch index 6ef2de2f..08ee68e0 100644 --- a/leaf-server/minecraft-patches/features/0276-Op-lock.patch +++ b/leaf-server/minecraft-patches/features/0276-Op-lock.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Op lock diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index fd6e21416bb0b82ae6b1f602a168069558f9ad93..bd263adfbd86ee1be674c6bfa26dec40f7c5d307 100644 +index 7d1c836f55c16ad6afd135ce167f217bb5f56527..bf27a86a3764dbc8132a26ce4adafa9e9ed0f27f 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1212,6 +1212,9 @@ public abstract class PlayerList { +@@ -1210,6 +1210,9 @@ public abstract class PlayerList { } public void op(GameProfile profile) { @@ -18,7 +18,7 @@ index fd6e21416bb0b82ae6b1f602a168069558f9ad93..bd263adfbd86ee1be674c6bfa26dec40 this.ops.add(new ServerOpListEntry(profile, this.server.getOperatorUserPermissionLevel(), this.ops.canBypassPlayerLimit(profile))); ServerPlayer player = this.getPlayer(profile.getId()); if (player != null) { -@@ -1220,6 +1223,9 @@ public abstract class PlayerList { +@@ -1218,6 +1221,9 @@ public abstract class PlayerList { } public void deop(GameProfile profile) { diff --git a/leaf-server/paper-patches/features/0004-Gale-configuration.patch b/leaf-server/paper-patches/features/0004-Gale-configuration.patch index 698eee28..8637169a 100644 --- a/leaf-server/paper-patches/features/0004-Gale-configuration.patch +++ b/leaf-server/paper-patches/features/0004-Gale-configuration.patch @@ -151,10 +151,10 @@ index a8a82aca70a97e30ca680c86421c6a04ed8172f8..db23f74b4c02c43ab42cf8db15c400ee } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 03dfcb4665d0279c825a74f3f999c92fe2bd22cb..bcdd1581ed564e8002f8120ab2efa38871c40ba7 100644 +index 32fe51b19323e3c4c56e7f9e621e6e808ee5fe38..18a087e82383d0776504293bba513e247f4bc881 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1045,6 +1045,7 @@ public final class CraftServer implements Server { +@@ -1048,6 +1048,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -162,7 +162,7 @@ index 03dfcb4665d0279c825a74f3f999c92fe2bd22cb..bcdd1581ed564e8002f8120ab2efa388 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -2944,6 +2945,14 @@ public final class CraftServer implements Server { +@@ -2947,6 +2948,14 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch b/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch index 3e163742..7bcfa648 100644 --- a/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch +++ b/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch @@ -486,10 +486,10 @@ index 54ab8a0b502a2665027f293e6ddebf6c0a2af215..f967560da343867fdc1c380a42874b07 + // 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 bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcfe876f88e 100644 +index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c90bee28c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -428,6 +428,20 @@ public final class CraftServer implements Server { +@@ -429,6 +429,20 @@ public final class CraftServer implements Server { this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -510,7 +510,7 @@ index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcf CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1046,6 +1060,7 @@ public final class CraftServer implements Server { +@@ -1049,6 +1063,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration @@ -518,7 +518,7 @@ index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcf for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1061,6 +1076,7 @@ public final class CraftServer implements Server { +@@ -1064,6 +1079,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -526,7 +526,7 @@ index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcf } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1078,6 +1094,7 @@ public final class CraftServer implements Server { +@@ -1081,6 +1097,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -534,7 +534,7 @@ index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcf this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1577,6 +1594,60 @@ public final class CraftServer implements Server { +@@ -1580,6 +1597,60 @@ public final class CraftServer implements Server { return true; } @@ -595,7 +595,7 @@ index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcf @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2953,6 +3024,18 @@ public final class CraftServer implements Server { +@@ -2956,6 +3027,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -614,7 +614,7 @@ index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcf @Override public void restart() { CraftServer.this.restart(); -@@ -3192,4 +3275,18 @@ public final class CraftServer implements Server { +@@ -3195,4 +3278,18 @@ public final class CraftServer implements Server { public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } @@ -634,10 +634,10 @@ index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcf + // Purpur end - Lagging threshold } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 68351e47609ae06f0a1641b4ad2013ce6261ae4e..cd43af3f442f7d8af1a4552a0eff33958873a366 100644 +index aa0a61d7f3128543b698647663fa4a9af2a8255a..405b0164a67fe75ec6c5aee4d7302f53df9556f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2374,6 +2374,50 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2375,6 +2375,50 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } @@ -1087,10 +1087,10 @@ index cabdcbef0e6f7ca41ff5677bc2e6a81665ca812d..c47ca9ab164b6abd28e979c944569181 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d4183bd69358b68980b80232d76863480d9b926c..aed79c57a691eb9a100e566c4d1163181af0b360 100644 +index c0ef55c206af2391b71c4326fd294dbb7d4bd46c..148960dcbe98e8eb56b3a0371e938049859331e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -681,10 +681,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -564,10 +564,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa @Override public void setPlayerListName(String name) { @@ -1107,7 +1107,7 @@ index d4183bd69358b68980b80232d76863480d9b926c..aed79c57a691eb9a100e566c4d116318 if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { -@@ -1485,6 +1490,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -1382,6 +1387,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -1115,7 +1115,7 @@ index d4183bd69358b68980b80232d76863480d9b926c..aed79c57a691eb9a100e566c4d116318 return false; } -@@ -1506,6 +1512,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -1403,6 +1409,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API @@ -1123,8 +1123,8 @@ index d4183bd69358b68980b80232d76863480d9b926c..aed79c57a691eb9a100e566c4d116318 return false; } -@@ -2792,6 +2799,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - this.getHandle().getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(player.getAbilities().walkingSpeed); // SPIGOT-5833: combination of the two in 1.16+ +@@ -2665,6 +2672,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + return this.getHandle().getAbilities().walkingSpeed * 2f; } + // Purpur start - OfflinePlayer API @@ -1152,9 +1152,9 @@ index d4183bd69358b68980b80232d76863480d9b926c..aed79c57a691eb9a100e566c4d116318 private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3600,4 +3629,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - this(new ShortArraySet(), new ArrayList<>()); - } +@@ -3515,4 +3544,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + public PlayerGameConnection getConnection() { + return this.getHandle().connection.playerGameConnection; } + + // Purpur start - Purpur client support diff --git a/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch b/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch index bd80c121..38e363c9 100644 --- a/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch +++ b/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b66a7e4da7fd3fe22fef65a201705dcfe876f88e..db4bbabf5f6c24a32fb96f0ce5e642adb468c805 100644 +index 09054336441cbcce99d1fd82276c5f8c90bee28c..80b79766972d539f89597a1df86d8f72779b4960 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1156,6 +1156,13 @@ public final class CraftServer implements Server { +@@ -1159,6 +1159,13 @@ 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." )); diff --git a/leaf-server/paper-patches/features/0018-CraftBukkit-UUID-to-world-map.patch b/leaf-server/paper-patches/features/0018-CraftBukkit-UUID-to-world-map.patch index cdfc6992..3a0a9edd 100644 --- a/leaf-server/paper-patches/features/0018-CraftBukkit-UUID-to-world-map.patch +++ b/leaf-server/paper-patches/features/0018-CraftBukkit-UUID-to-world-map.patch @@ -13,10 +13,10 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index db4bbabf5f6c24a32fb96f0ce5e642adb468c805..3c671beafb9b0dafbf3ef9583244118462c4cab3 100644 +index 80b79766972d539f89597a1df86d8f72779b4960..f287641acb77cb384ff1f6d672e7622c7267ffe2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -287,6 +287,7 @@ public final class CraftServer implements Server { +@@ -288,6 +288,7 @@ public final class CraftServer implements Server { final DedicatedServer console; private final DedicatedPlayerList playerList; private final Map worlds = new LinkedHashMap<>(); @@ -24,7 +24,7 @@ index db4bbabf5f6c24a32fb96f0ce5e642adb468c805..3c671beafb9b0dafbf3ef95832441184 private YamlConfiguration configuration; private YamlConfiguration commandsConfiguration; private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); -@@ -1484,6 +1485,7 @@ public final class CraftServer implements Server { +@@ -1487,6 +1488,7 @@ public final class CraftServer implements Server { this.getLogger().log(Level.SEVERE, null, ex); } @@ -32,7 +32,7 @@ index db4bbabf5f6c24a32fb96f0ce5e642adb468c805..3c671beafb9b0dafbf3ef95832441184 this.worlds.remove(world.getName().toLowerCase(Locale.ROOT)); this.console.removeLevel(handle); return true; -@@ -1502,12 +1504,7 @@ public final class CraftServer implements Server { +@@ -1505,12 +1507,7 @@ public final class CraftServer implements Server { @Override public World getWorld(UUID uid) { @@ -46,7 +46,7 @@ index db4bbabf5f6c24a32fb96f0ce5e642adb468c805..3c671beafb9b0dafbf3ef95832441184 } @Override -@@ -1523,6 +1520,7 @@ public final class CraftServer implements Server { +@@ -1526,6 +1523,7 @@ public final class CraftServer implements Server { System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); return; } diff --git a/leaf-server/paper-patches/features/0019-Specific-interval-TPS-API.patch b/leaf-server/paper-patches/features/0019-Specific-interval-TPS-API.patch index 87fb1c6f..15f363b1 100644 --- a/leaf-server/paper-patches/features/0019-Specific-interval-TPS-API.patch +++ b/leaf-server/paper-patches/features/0019-Specific-interval-TPS-API.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3c671beafb9b0dafbf3ef9583244118462c4cab3..c01a6fa34b150b617da2a8094eaa51a92f37a49a 100644 +index f287641acb77cb384ff1f6d672e7622c7267ffe2..82e94ec6bc46e6968456debae643649e79f4614c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3079,6 +3079,23 @@ public final class CraftServer implements Server { +@@ -3082,6 +3082,23 @@ public final class CraftServer implements Server { }; } diff --git a/leaf-server/paper-patches/features/0020-5-second-TPS-average.patch b/leaf-server/paper-patches/features/0020-5-second-TPS-average.patch index 8c204d0d..005a83ec 100644 --- a/leaf-server/paper-patches/features/0020-5-second-TPS-average.patch +++ b/leaf-server/paper-patches/features/0020-5-second-TPS-average.patch @@ -58,10 +58,10 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..6178f0212214a2a075cea60c758dca79 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c01a6fa34b150b617da2a8094eaa51a92f37a49a..98c1159814baf02a136161813aab9f315c2c3148 100644 +index 82e94ec6bc46e6968456debae643649e79f4614c..560b8bf901f7c8c4f00b9a5fe96acacabb383a3b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3079,7 +3079,26 @@ public final class CraftServer implements Server { +@@ -3082,7 +3082,26 @@ public final class CraftServer implements Server { }; } diff --git a/leaf-server/paper-patches/features/0021-Last-tick-time-API.patch b/leaf-server/paper-patches/features/0021-Last-tick-time-API.patch index dfb34878..df4bd4e1 100644 --- a/leaf-server/paper-patches/features/0021-Last-tick-time-API.patch +++ b/leaf-server/paper-patches/features/0021-Last-tick-time-API.patch @@ -23,10 +23,10 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 98c1159814baf02a136161813aab9f315c2c3148..e7d9035c54ef8224f9cca52eb23c5d02ec952c73 100644 +index 560b8bf901f7c8c4f00b9a5fe96acacabb383a3b..f81c0fef5428ec6ec98c10e0b520496dc68f8961 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3330,4 +3330,21 @@ public final class CraftServer implements Server { +@@ -3333,4 +3333,21 @@ public final class CraftServer implements Server { return getServer().lagging; } // Purpur end - Lagging threshold diff --git a/leaf-server/paper-patches/features/0027-KeYi-Player-Skull-API.patch b/leaf-server/paper-patches/features/0027-KeYi-Player-Skull-API.patch index ea5a0ca5..ed0e2f93 100644 --- a/leaf-server/paper-patches/features/0027-KeYi-Player-Skull-API.patch +++ b/leaf-server/paper-patches/features/0027-KeYi-Player-Skull-API.patch @@ -7,10 +7,10 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index aed79c57a691eb9a100e566c4d1163181af0b360..17d519244b0d08829e28e9047134b8bee9cde81f 100644 +index 148960dcbe98e8eb56b3a0371e938049859331e0..54dc4edd5bcad99134e18ef995bc5c8ce2b5bc59 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3701,4 +3701,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -3616,4 +3616,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); } // Purpur end - Death screen API diff --git a/leaf-server/paper-patches/features/0028-Slice-Smooth-Teleports.patch b/leaf-server/paper-patches/features/0028-Slice-Smooth-Teleports.patch index aa0ea1b7..28374e40 100644 --- a/leaf-server/paper-patches/features/0028-Slice-Smooth-Teleports.patch +++ b/leaf-server/paper-patches/features/0028-Slice-Smooth-Teleports.patch @@ -9,10 +9,10 @@ Original project: https://github.com/Cryptite/Slice Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 17d519244b0d08829e28e9047134b8bee9cde81f..7fb60f68ffb5e8d880d3c8395f64585461d7f5c9 100644 +index 54dc4edd5bcad99134e18ef995bc5c8ce2b5bc59..532758949121df6c2cb1146f49ac60585a831147 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1454,6 +1454,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -1332,6 +1332,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa // Paper end - Teleportation API } diff --git a/leaf-server/paper-patches/features/0029-Leaves-Protocol-Core.patch b/leaf-server/paper-patches/features/0029-Leaves-Protocol-Core.patch index db00ea96..e25a79ba 100644 --- a/leaf-server/paper-patches/features/0029-Leaves-Protocol-Core.patch +++ b/leaf-server/paper-patches/features/0029-Leaves-Protocol-Core.patch @@ -9,10 +9,10 @@ Original project: https://github.com/LeavesMC/Leaves Commit: aaa2323d60912b65b64c16e7583c5d55f8b4c7c9 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e7d9035c54ef8224f9cca52eb23c5d02ec952c73..4ea1ceac80bd4676bb2c59bc4219903850cc7213 100644 +index f81c0fef5428ec6ec98c10e0b520496dc68f8961..01de5ccfe7e99936ae503f36d9abb02f4f134bc5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -511,6 +511,7 @@ public final class CraftServer implements Server { +@@ -512,6 +512,7 @@ public final class CraftServer implements Server { this.potionBrewer = new io.papermc.paper.potion.PaperPotionBrewer(console); // Paper - custom potion mixes datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper this.spark = new io.papermc.paper.SparksFly(this); // Paper - spark @@ -20,7 +20,7 @@ index e7d9035c54ef8224f9cca52eb23c5d02ec952c73..4ea1ceac80bd4676bb2c59bc42199038 } public boolean getCommandBlockOverride(String command) { -@@ -1098,6 +1099,7 @@ public final class CraftServer implements Server { +@@ -1101,6 +1102,7 @@ public final class CraftServer implements Server { org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur - Purpur config files this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); diff --git a/leaf-server/paper-patches/features/0030-Leaves-Replay-Mod-API.patch b/leaf-server/paper-patches/features/0030-Leaves-Replay-Mod-API.patch index b418ebf5..f30e04d0 100644 --- a/leaf-server/paper-patches/features/0030-Leaves-Replay-Mod-API.patch +++ b/leaf-server/paper-patches/features/0030-Leaves-Replay-Mod-API.patch @@ -27,10 +27,10 @@ index 4c003acccdd2dd17918b15316001e52e7670123e..99662395fef09017ff0843da6c482815 HandlerList handlers = event.getHandlers(); RegisteredListener[] listeners = handlers.getRegisteredListeners(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4ea1ceac80bd4676bb2c59bc4219903850cc7213..b7d2d8395e820076dbf5bf2a68a058b999819b7d 100644 +index 01de5ccfe7e99936ae503f36d9abb02f4f134bc5..e1d81f91f166beec06aaa8739ea6b61703dc04dd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -316,6 +316,7 @@ public final class CraftServer implements Server { +@@ -317,6 +317,7 @@ public final class CraftServer implements Server { private final io.papermc.paper.potion.PaperPotionBrewer potionBrewer; public final io.papermc.paper.SparksFly spark; private final ServerConfiguration serverConfig = new PaperServerConfiguration(); @@ -38,7 +38,7 @@ index 4ea1ceac80bd4676bb2c59bc4219903850cc7213..b7d2d8395e820076dbf5bf2a68a058b9 // Paper start - Folia region threading API private final io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler(); -@@ -410,7 +411,7 @@ public final class CraftServer implements Server { +@@ -411,7 +412,7 @@ public final class CraftServer implements Server { public CraftServer(DedicatedServer console, PlayerList playerList) { this.console = console; this.playerList = (DedicatedPlayerList) playerList; @@ -47,7 +47,7 @@ index 4ea1ceac80bd4676bb2c59bc4219903850cc7213..b7d2d8395e820076dbf5bf2a68a058b9 @Override public CraftPlayer apply(ServerPlayer player) { return player.getBukkitEntity(); -@@ -3349,4 +3350,11 @@ public final class CraftServer implements Server { +@@ -3352,4 +3353,11 @@ public final class CraftServer implements Server { return MinecraftServer.lastTickOversleepTime; } // Gale end - YAPFA - last tick time - API @@ -73,10 +73,10 @@ index 476eefebace887064b728f08af40c746b6f70787..cf1a1eb731083ba56cdb9ad857255b1a if (entity instanceof EnderDragonPart complexPart) { if (complexPart.parentMob instanceof EnderDragon) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7fb60f68ffb5e8d880d3c8395f64585461d7f5c9..9fd4ee415c4e5ea6f818ff6956c41f59f171d82e 100644 +index 532758949121df6c2cb1146f49ac60585a831147..856d7f7cff1ce034d74ebdf43848f7a859589288 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2356,7 +2356,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -2234,7 +2234,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa @Override public boolean canSee(Player player) { diff --git a/leaf-server/paper-patches/features/0032-SparklyPaper-Optimize-canSee-checks.patch b/leaf-server/paper-patches/features/0032-SparklyPaper-Optimize-canSee-checks.patch index 1ffc458e..51947224 100644 --- a/leaf-server/paper-patches/features/0032-SparklyPaper-Optimize-canSee-checks.patch +++ b/leaf-server/paper-patches/features/0032-SparklyPaper-Optimize-canSee-checks.patch @@ -16,19 +16,19 @@ This seems stupid, but it does seem that it improves the performance a bit, and We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 17bea636bd3ce09a01a5358a6a7f9d8c799c1f23..a6463974c63e40afce0c6656122f6f918fdc089b 100644 +index 856d7f7cff1ce034d74ebdf43848f7a859589288..980bca611f6095b962f4ae0216458fa5d01c6f68 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -217,7 +217,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); - private static final net.kyori.adventure.text.Component DEFAULT_KICK_COMPONENT = net.kyori.adventure.text.Component.translatable("multiplayer.disconnect.kicked"); +@@ -219,7 +219,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + private long lastPlayed = 0; + private boolean hasPlayedBefore = false; private final ConversationTracker conversationTracker = new ConversationTracker(); - private final Map>> invertedVisibilityEntities = new HashMap<>(); + private final Map>> invertedVisibilityEntities = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); // SparklyPaper - optimize canSee checks private final Set unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player - private long firstPlayed = 0; - private long lastPlayed = 0; -@@ -2361,9 +2361,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); + private int hash = 0; +@@ -2239,9 +2239,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/leaf-server/paper-patches/features/0033-Including-5s-in-getTPS.patch b/leaf-server/paper-patches/features/0033-Including-5s-in-getTPS.patch index d8dd8123..e9ff23dd 100644 --- a/leaf-server/paper-patches/features/0033-Including-5s-in-getTPS.patch +++ b/leaf-server/paper-patches/features/0033-Including-5s-in-getTPS.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Including 5s in getTPS() diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 745f3915afdf22fbbc816bd2be30c274e306ee1d..079fcde7b0eb47838f4ccf256ed5adb6ffbca95a 100644 +index e1d81f91f166beec06aaa8739ea6b61703dc04dd..5a0253f402d31fa3312d0248edb6c7cd6cec6698 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3075,6 +3075,8 @@ public final class CraftServer implements Server { +@@ -3078,6 +3078,8 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { diff --git a/leaf-server/paper-patches/features/0037-Matter-Secure-Seed.patch b/leaf-server/paper-patches/features/0037-Matter-Secure-Seed.patch index 5cad2151..a373250a 100644 --- a/leaf-server/paper-patches/features/0037-Matter-Secure-Seed.patch +++ b/leaf-server/paper-patches/features/0037-Matter-Secure-Seed.patch @@ -34,10 +34,10 @@ index 400e632208d133a3f49fc7f14bceb48a1026769b..8c4e5b0c81d90a0eeee4ab9e5882b137 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 079fcde7b0eb47838f4ccf256ed5adb6ffbca95a..01b44f84f53ccf6aebd31bb940f0d7c7aa296b32 100644 +index 5a0253f402d31fa3312d0248edb6c7cd6cec6698..110e76827f5b3b44694cd5ac578f4dbf169e96e2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1355,7 +1355,11 @@ public final class CraftServer implements Server { +@@ -1358,7 +1358,11 @@ public final class CraftServer implements Server { registryAccess = levelDataAndDimensions.dimensions().dimensionsRegistryAccess(); } else { LevelSettings levelSettings; diff --git a/leaf-server/paper-patches/features/0040-Replace-world-map-with-optimized-collection.patch b/leaf-server/paper-patches/features/0040-Replace-world-map-with-optimized-collection.patch index e277a786..985409f0 100644 --- a/leaf-server/paper-patches/features/0040-Replace-world-map-with-optimized-collection.patch +++ b/leaf-server/paper-patches/features/0040-Replace-world-map-with-optimized-collection.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Replace world map with optimized collection diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 01b44f84f53ccf6aebd31bb940f0d7c7aa296b32..d25b0c36e8bafabc7a1a16d01eef9d69567f2c91 100644 +index 110e76827f5b3b44694cd5ac578f4dbf169e96e2..4cb422feb0ef0344a5b56c5425da6c84878d424f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -286,7 +286,7 @@ public final class CraftServer implements Server { +@@ -287,7 +287,7 @@ public final class CraftServer implements Server { private final StructureManager structureManager; final DedicatedServer console; private final DedicatedPlayerList playerList; diff --git a/leaf-server/paper-patches/features/0042-Multithreaded-Tracker.patch b/leaf-server/paper-patches/features/0042-Multithreaded-Tracker.patch index a52f8383..d9a9ce74 100644 --- a/leaf-server/paper-patches/features/0042-Multithreaded-Tracker.patch +++ b/leaf-server/paper-patches/features/0042-Multithreaded-Tracker.patch @@ -28,7 +28,7 @@ However we still recommend to use those packet based NPC plugins, e.g. ZNPC Plus, Adyeshach, Fancy NPC, etc. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index beae8a57a0ce9b8e7d81619efe4c39d908869319..6b1926080eddf61ff9c0156a6846f7f0bcff1c2d 100644 +index cf1a1eb731083ba56cdb9ad857255b1a55e31717..93b53a2ef33701eb25e78a11235eb7598d88e97d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -764,7 +764,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -59,19 +59,19 @@ index beae8a57a0ce9b8e7d81619efe4c39d908869319..6b1926080eddf61ff9c0156a6846f7f0 } return set; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a6463974c63e40afce0c6656122f6f918fdc089b..0f085618f6866bef1a526c6404f92e26f7bef0fd 100644 +index 980bca611f6095b962f4ae0216458fa5d01c6f68..8da048dd1ad9684ea588a2d67cc8c41fc346099b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -217,7 +217,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); - private static final net.kyori.adventure.text.Component DEFAULT_KICK_COMPONENT = net.kyori.adventure.text.Component.translatable("multiplayer.disconnect.kicked"); +@@ -219,7 +219,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + private long lastPlayed = 0; + private boolean hasPlayedBefore = false; private final ConversationTracker conversationTracker = new ConversationTracker(); - private final Map>> invertedVisibilityEntities = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); // SparklyPaper - optimize canSee checks + private final Map>> invertedVisibilityEntities = org.dreeam.leaf.config.modules.async.MultithreadedTracker.enabled ? it.unimi.dsi.fastutil.objects.Object2ObjectMaps.synchronize(new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>()) : new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); // SparklyPaper - optimize canSee checks // Leaf - Multithreaded tracker private final Set unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player - private long firstPlayed = 0; - private long lastPlayed = 0; -@@ -2961,7 +2961,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); + private int hash = 0; +@@ -2834,7 +2834,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa Iterator iterator = collection.iterator(); while (iterator.hasNext()) { AttributeInstance genericInstance = iterator.next(); diff --git a/leaf-server/paper-patches/features/0045-Faster-CraftServer-getworlds-list-creation.patch b/leaf-server/paper-patches/features/0045-Faster-CraftServer-getworlds-list-creation.patch index f8ab0168..fb5daf76 100644 --- a/leaf-server/paper-patches/features/0045-Faster-CraftServer-getworlds-list-creation.patch +++ b/leaf-server/paper-patches/features/0045-Faster-CraftServer-getworlds-list-creation.patch @@ -8,10 +8,10 @@ replacing ArrayList with Fastutil ObjectArrayList brings about 40% performance improvement in benchmark. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d25b0c36e8bafabc7a1a16d01eef9d69567f2c91..55fd02cf61c38b8d0caaed40a3cd49412b03901c 100644 +index 4cb422feb0ef0344a5b56c5425da6c84878d424f..42645ea0f97df8e733001e7c3f4c4096ed6a5049 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -977,7 +977,7 @@ public final class CraftServer implements Server { +@@ -978,7 +978,7 @@ public final class CraftServer implements Server { @Override public List getWorlds() { diff --git a/leaf-server/paper-patches/features/0047-Async-structure-locate-api.patch b/leaf-server/paper-patches/features/0047-Async-structure-locate-api.patch index 1a823ab4..cc0200e3 100644 --- a/leaf-server/paper-patches/features/0047-Async-structure-locate-api.patch +++ b/leaf-server/paper-patches/features/0047-Async-structure-locate-api.patch @@ -9,10 +9,10 @@ Added some asynchronous structure locate methods in World, requires async-locator to be enabled in Leaf config, or else it will fall back to sync methods. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index cd43af3f442f7d8af1a4552a0eff33958873a366..3183dab5ae079402f5c0f2d5c0048a4d105d8eeb 100644 +index 405b0164a67fe75ec6c5aee4d7302f53df9556f8..adb2324949484bc543bab25a79ed6d2c39bcba42 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2299,6 +2299,45 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2300,6 +2300,45 @@ public class CraftWorld extends CraftRegionAccessor implements World { return new CraftStructureSearchResult(CraftStructure.minecraftToBukkit(found.getSecond().value()), CraftLocation.toBukkit(found.getFirst(), this)); } diff --git a/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch b/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch index 5bd7aa43..4730a3f2 100644 --- a/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch +++ b/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch @@ -251,10 +251,10 @@ index a4aa2615823d77920ff55b8aa0bcc27a54b8c3e1..e1bf7dfdb3be8f92ef2cb86d7f15a613 + // SparklyPaper end - parallel world ticking } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 3183dab5ae079402f5c0f2d5c0048a4d105d8eeb..ad53cef93c55e73579f2419e10196bebbd57aae5 100644 +index adb2324949484bc543bab25a79ed6d2c39bcba42..728c8a554af42e71dbcc1656563bafcd4d976a02 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -478,7 +478,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -479,7 +479,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { } private boolean unloadChunk0(int x, int z, boolean save) { @@ -268,7 +268,7 @@ index 3183dab5ae079402f5c0f2d5c0048a4d105d8eeb..ad53cef93c55e73579f2419e10196beb if (!this.isChunkLoaded(x, z)) { return true; } -@@ -495,6 +500,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -496,6 +501,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean refreshChunk(int x, int z) { @@ -277,7 +277,7 @@ index 3183dab5ae079402f5c0f2d5c0048a4d105d8eeb..ad53cef93c55e73579f2419e10196beb ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z)); if (playerChunk == null) return false; -@@ -545,7 +552,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -546,7 +553,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean loadChunk(int x, int z, boolean generate) { @@ -291,7 +291,7 @@ index 3183dab5ae079402f5c0f2d5c0048a4d105d8eeb..ad53cef93c55e73579f2419e10196beb warnUnsafeChunk("loading a faraway chunk", x, z); // Paper ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper -@@ -773,6 +785,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -774,6 +786,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { @@ -300,7 +300,7 @@ index 3183dab5ae079402f5c0f2d5c0048a4d105d8eeb..ad53cef93c55e73579f2419e10196beb this.world.captureTreeGeneration = true; this.world.captureBlockStates = true; boolean grownTree = this.generateTree(loc, type); -@@ -888,6 +902,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -889,6 +903,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { } public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, Consumer configurator) { // Paper end - expand explosion API @@ -309,7 +309,7 @@ index 3183dab5ae079402f5c0f2d5c0048a4d105d8eeb..ad53cef93c55e73579f2419e10196beb net.minecraft.world.level.Level.ExplosionInteraction explosionType; if (!breakBlocks) { explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks -@@ -1009,6 +1025,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1010,6 +1026,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void setBiome(int x, int y, int z, Holder bb) { BlockPos pos = new BlockPos(x, 0, z); @@ -318,7 +318,7 @@ index 3183dab5ae079402f5c0f2d5c0048a4d105d8eeb..ad53cef93c55e73579f2419e10196beb if (this.world.hasChunkAt(pos)) { net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); -@@ -2356,6 +2374,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2357,6 +2375,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) { diff --git a/leaf-server/paper-patches/features/0062-Op-lock.patch b/leaf-server/paper-patches/features/0062-Op-lock.patch index 8fe0bec7..be2f1c86 100644 --- a/leaf-server/paper-patches/features/0062-Op-lock.patch +++ b/leaf-server/paper-patches/features/0062-Op-lock.patch @@ -41,10 +41,10 @@ index b02826fc7390eb1fd7c2a1b597a5f1abf156b1c1..736563bd3a462911ec99a8158fc5bd3e this.perm.recalculatePermissions(); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0f085618f6866bef1a526c6404f92e26f7bef0fd..f044acf8862642231369fc81af56d0b018be1d50 100644 +index 8da048dd1ad9684ea588a2d67cc8c41fc346099b..254c7046dfdd858b205e31feeb1c75759b322c7c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -389,6 +389,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -278,6 +278,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa @Override public void setOp(boolean value) {