From 86564bf6cefc9ca9181f08c019cbb8a8e4d23d19 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Wed, 19 Feb 2025 15:28:34 -0500 Subject: [PATCH] Updated Upstream (Paper/Gale/Purpur) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@fd69140d Fix `disable-tripwire-updates` option not cancelling tripwire hook updates (#12129) PaperMC/Paper@3b9106c7 Readd dead redirect recovery (#12136) PaperMC/Paper@d26a9e90 Fix plugin commands (#12144) PaperMC/Paper@142695eb Default minecraft alias to redirect (#12146) PaperMC/Paper@e494f289 Correctly call BlockFadeEvents (#12141) PaperMC/Paper@b386a8f5 Add simpler JavaPlugin command registration (#12142) PaperMC/Paper@f0700818 Remove Experimental from TypedKey (#12134) PaperMC/Paper@09f1f88f Fix getForwards/SidewaysMovement for players (#12140) PaperMC/Paper@edda0db1 Fix server crash when no enchantments are present (#12149) Gale Changes: Dreeam-qwq/Gale@55793e9d Updated Upstream (Paper) Dreeam-qwq/Gale@8372ff60 Updated Upstream (Paper) Purpur Changes: PurpurMC/Purpur@b0d36cae Updated Upstream (Paper) PurpurMC/Purpur@97dcff40 set DamageCause to `SUICIDE` for scissor's DamageSource PurpurMC/Purpur@a9862d7e Updated Upstream (Paper) PurpurMC/Purpur@196c1768 Updated Upstream (Paper) --- gradle.properties | 2 +- .../features/0004-Purpur-API-Changes.patch | 2 +- ...0006-Purpur-Server-Minecraft-Changes.patch | 37 +++++++++------- .../0043-Improve-Purpur-AFK-system.patch | 8 ++-- ...Configurable-unknown-command-message.patch | 6 +-- .../0004-Purpur-Server-Paper-Changes.patch | 44 +++++++------------ .../features/0007-KeYi-Player-Skull-API.patch | 4 +- 7 files changed, 48 insertions(+), 55 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9edc8c4c..0114ce25 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=cn.dreeam.leaf mcVersion=1.21.4 version=1.21.4-R0.1-SNAPSHOT -galeCommit=73519d55c52e34c33820139d80f9fc8d5fdfe783 +galeCommit=8372ff60079ad128a4c40b879e428d1f18c443e7 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/leaf-api/paper-patches/features/0004-Purpur-API-Changes.patch b/leaf-api/paper-patches/features/0004-Purpur-API-Changes.patch index 5395350e..88290a98 100644 --- a/leaf-api/paper-patches/features/0004-Purpur-API-Changes.patch +++ b/leaf-api/paper-patches/features/0004-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 22bd4186ca92f21a01714ba8e6b4823ccc576c81 +Commit: 196c1768e1cfa467b82acf260156892784c84578 Patches listed below are removed in this patch, They exists in Gale or Leaf: * "co/aikar/timings/TimedEventExecutor.java.patch" diff --git a/leaf-server/minecraft-patches/features/0006-Purpur-Server-Minecraft-Changes.patch b/leaf-server/minecraft-patches/features/0006-Purpur-Server-Minecraft-Changes.patch index e5d20997..83070416 100644 --- a/leaf-server/minecraft-patches/features/0006-Purpur-Server-Minecraft-Changes.patch +++ b/leaf-server/minecraft-patches/features/0006-Purpur-Server-Minecraft-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Minecraft Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 22bd4186ca92f21a01714ba8e6b4823ccc576c81 +Commit: 196c1768e1cfa467b82acf260156892784c84578 Patches listed below are removed in this patch, They exists in Gale or Leaf: * "net/minecraft/CrashReport.java.patch" @@ -118,10 +118,10 @@ index c2b7164a1395842ab95428540782eeda4c7960b0..59c70c567051bc7dba0d308387352d1b boolean flag = this.source.acceptsSuccess() && !this.silent; boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent; diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java -index fadc6c2494ac3aaa426d16d36adc688e1f39e27a..06df7711ca33d592d9a23ef0b2c3e73b468e2f57 100644 +index 66839bc2ac5746e355713cb006f249f71230a361..ee7bdfd8f9da8d5989c9cc25f8cbcc94640361c5 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -213,8 +213,8 @@ public class Commands { +@@ -218,8 +218,8 @@ public class Commands { JfrCommand.register(this.dispatcher); } @@ -132,7 +132,7 @@ index fadc6c2494ac3aaa426d16d36adc688e1f39e27a..06df7711ca33d592d9a23ef0b2c3e73b RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); -@@ -242,6 +242,14 @@ public class Commands { +@@ -247,6 +247,14 @@ public class Commands { StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -1698,7 +1698,7 @@ index d3de87eaf0eb84af77165391c7b94085d425f21d..edaa6f66f33b6a9bfb4862ec5557080b } } diff --git a/net/minecraft/world/damagesource/DamageSource.java b/net/minecraft/world/damagesource/DamageSource.java -index 0d9e5aab214df54a7a24bec45fcc8ad85f699710..0eb210a8c6f42a3a1ee61e946ccfec25cbc3a44b 100644 +index 0d9e5aab214df54a7a24bec45fcc8ad85f699710..bf9520bf4f314dacc66db9a7d30dbcc239db2c7d 100644 --- a/net/minecraft/world/damagesource/DamageSource.java +++ b/net/minecraft/world/damagesource/DamageSource.java @@ -30,6 +30,8 @@ public class DamageSource { @@ -1710,12 +1710,13 @@ index 0d9e5aab214df54a7a24bec45fcc8ad85f699710..0eb210a8c6f42a3a1ee61e946ccfec25 public DamageSource knownCause(final org.bukkit.event.entity.EntityDamageEvent.DamageCause cause) { final DamageSource damageSource = this.copy(); -@@ -42,6 +44,27 @@ public class DamageSource { +@@ -42,6 +44,30 @@ public class DamageSource { return this.knownCause; } + // Purpur start - Dont run with scissors! + public DamageSource scissors() { ++ this.knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.SUICIDE); + this.scissors = true; + return this; + } @@ -1724,8 +1725,10 @@ index 0d9e5aab214df54a7a24bec45fcc8ad85f699710..0eb210a8c6f42a3a1ee61e946ccfec25 + return this.scissors; + } + // Purpur end - Dont run with scissors! ++ + // Purpur start - - Stonecutter damage + public DamageSource stonecutter() { ++ this.knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.CONTACT); + this.stonecutter = true; + return this; + } @@ -1738,7 +1741,7 @@ index 0d9e5aab214df54a7a24bec45fcc8ad85f699710..0eb210a8c6f42a3a1ee61e946ccfec25 @Nullable public Entity eventEntityDamager() { return this.eventEntityDamager; -@@ -103,6 +126,8 @@ public class DamageSource { +@@ -103,6 +129,8 @@ public class DamageSource { damageSource.eventBlockDamager = this.eventBlockDamager; damageSource.fromBlockSnapshot = this.fromBlockSnapshot; damageSource.critical = this.critical; @@ -1747,7 +1750,7 @@ index 0d9e5aab214df54a7a24bec45fcc8ad85f699710..0eb210a8c6f42a3a1ee61e946ccfec25 return damageSource; } // CraftBukkit end -@@ -169,12 +194,21 @@ public class DamageSource { +@@ -169,12 +197,21 @@ public class DamageSource { } else { Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY; @@ -1771,7 +1774,7 @@ index 0d9e5aab214df54a7a24bec45fcc8ad85f699710..0eb210a8c6f42a3a1ee61e946ccfec25 return this.type().msgId(); } diff --git a/net/minecraft/world/damagesource/DamageSources.java b/net/minecraft/world/damagesource/DamageSources.java -index cc206ecff2d95f0398ca424c178a336ad80cc396..0276f02e149f3ef5e0f9aec8b0a8a6cb3d638aae 100644 +index cc206ecff2d95f0398ca424c178a336ad80cc396..40ab73fb626cbb8b9132b0fec939a66145272e2e 100644 --- a/net/minecraft/world/damagesource/DamageSources.java +++ b/net/minecraft/world/damagesource/DamageSources.java @@ -42,6 +42,8 @@ public class DamageSources { @@ -1792,8 +1795,8 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..0276f02e149f3ef5e0f9aec8b0a8a6cb } private DamageSource source(ResourceKey damageTypeKey) { -@@ -176,6 +180,18 @@ public class DamageSources { - return this.stalagmite; +@@ -84,6 +88,18 @@ public class DamageSources { + return new DamageSource(this.damageTypes.getOrThrow(damageTypeKey), causingEntity, directEntity); } + // Purpur start - Dont run with scissors! @@ -1808,8 +1811,8 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..0276f02e149f3ef5e0f9aec8b0a8a6cb + } + // Purpur end - Stonecutter damage + - public DamageSource fallingBlock(Entity entity) { - return this.source(DamageTypes.FALLING_BLOCK, entity); + public DamageSource inFire() { + return this.inFire; } diff --git a/net/minecraft/world/effect/HungerMobEffect.java b/net/minecraft/world/effect/HungerMobEffect.java index 0890694ae96b6cd60079c34066e7a6e288f038e8..6c0e6bd2a171edc57dec71af178764454de73313 100644 @@ -12608,7 +12611,7 @@ index ef2afb17a22a703470e13d12c989a685e72f0ab8..80a01b8c6dfb0f3bcc6872cdf38b48f7 blockPos = blockPos1; break; diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index e587f8125ab29b3f9c829cd225deb5b7a6b7affa..5b684ff1096ef56fc5d6ad16963bb19ec880ced4 100644 +index e587f8125ab29b3f9c829cd225deb5b7a6b7affa..477455fdfcc591a89823e88983eb12dabb078d9b 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -201,11 +201,22 @@ public abstract class Player extends LivingEntity { @@ -12699,7 +12702,7 @@ index e587f8125ab29b3f9c829cd225deb5b7a6b7affa..5b684ff1096ef56fc5d6ad16963bb19e if (flag2) { damageSource = damageSource.critical(); // Paper - critical damage API - f *= 1.5F; -+ f *= this.level().purpurConfig.playerCriticalDamageMultiplier; // Purpur - Add config change multiplier critical damage value ++ f *= (float) this.level().purpurConfig.playerCriticalDamageMultiplier; // Purpur - Add config change multiplier critical damage value } float f2 = f + f1; @@ -15396,7 +15399,7 @@ index f5533960708bdbaf2eacefbc7c7c3123b7d26502..17aa27885b4431bf7b98799e02d080b5 public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new EnderChestBlockEntity(pos, state); diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java -index 47c9b32c89e7e6f84a279c2f6098ada77dc58b6b..9a7ca836e54cc3f58001c85f0079747f4d4941ad 100644 +index 1fdede769b67cb5d2f9159c779f19e3639bb6ff5..2ff5457300d66378dbbea492deff0136629bc365 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java @@ -112,9 +112,9 @@ public class FarmBlock extends Block { @@ -15439,7 +15442,7 @@ index 47c9b32c89e7e6f84a279c2f6098ada77dc58b6b..9a7ca836e54cc3f58001c85f0079747f if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; } -@@ -174,7 +195,7 @@ public class FarmBlock extends Block { +@@ -177,7 +198,7 @@ public class FarmBlock extends Block { } } diff --git a/leaf-server/minecraft-patches/features/0043-Improve-Purpur-AFK-system.patch b/leaf-server/minecraft-patches/features/0043-Improve-Purpur-AFK-system.patch index 7e2b950b..2121ddfd 100644 --- a/leaf-server/minecraft-patches/features/0043-Improve-Purpur-AFK-system.patch +++ b/leaf-server/minecraft-patches/features/0043-Improve-Purpur-AFK-system.patch @@ -7,10 +7,10 @@ AFK command & command cooldown AFK title message diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java -index 967c01f9e40c2c73f266de281425c918472cf66e..d8464f77c54f547161356b78e76429923937b4a7 100644 +index ee7bdfd8f9da8d5989c9cc25f8cbcc94640361c5..fb18f69cb26132fc8c53b185454c6aadb8a5f7e5 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -242,6 +242,7 @@ public class Commands { +@@ -247,6 +247,7 @@ public class Commands { StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -53,7 +53,7 @@ index dfb4524d80f642eff1b146dd2fbfa07f21d844c6..2c67693cc3781eb5aee10b4dfb9617cb } else { getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5cd5234e9f2b8a17b6f9fdaa62e8fc0a9aa6331b..44f2182b5d78b0e51e8f5253fa9c89ea687b72df 100644 +index 1e834d51cc57255fd6075c25b05e2b3816bd501b..4af5f13eb9a0c76d037074fa0fd5c1b2061dc59b 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2260,6 +2260,8 @@ public class ServerGamePacketListenerImpl @@ -138,7 +138,7 @@ index 5cd5234e9f2b8a17b6f9fdaa62e8fc0a9aa6331b..44f2182b5d78b0e51e8f5253fa9c89ea this.cserver.getPluginManager().callEvent(event); command = event.getMessage().substring(1); diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 29275d0fd6b3d320d5e444fb32aa4004f4370720..2d8c20ddd675173e9ea5734cfde6687ac042e01d 100644 +index 3d6efee3469302f37e60a9013f6a3adf970a580a..03f3e1de0c5df76a4d14c5dc62647ecfc2b17dce 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -668,6 +668,7 @@ public abstract class PlayerList { diff --git a/leaf-server/minecraft-patches/features/0054-Configurable-unknown-command-message.patch b/leaf-server/minecraft-patches/features/0054-Configurable-unknown-command-message.patch index 889fa87d..24d85d98 100644 --- a/leaf-server/minecraft-patches/features/0054-Configurable-unknown-command-message.patch +++ b/leaf-server/minecraft-patches/features/0054-Configurable-unknown-command-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable unknown command message diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java -index 6b8757569e0f0d756612fc180fef13143c606eaf..07e690c623fe38ce099aa2f0002e7a7456120f3b 100644 +index fb18f69cb26132fc8c53b185454c6aadb8a5f7e5..eff6d524c8acfc62d1fcf6b5552754e794a22735 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -383,31 +383,9 @@ public class Commands { +@@ -404,31 +404,9 @@ public class Commands { // Paper start - Add UnknownCommandEvent final net.kyori.adventure.text.TextComponent.Builder builder = net.kyori.adventure.text.Component.text(); // source.sendFailure(ComponentUtils.fromMessage(var7.getRawMessage())); @@ -42,7 +42,7 @@ index 6b8757569e0f0d756612fc180fef13143c606eaf..07e690c623fe38ce099aa2f0002e7a74 org.bukkit.Bukkit.getServer().getPluginManager().callEvent(event); if (event.message() != null) { source.sendFailure(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false); -@@ -624,6 +602,86 @@ public class Commands { +@@ -680,6 +658,86 @@ public class Commands { }; } diff --git a/leaf-server/paper-patches/features/0004-Purpur-Server-Paper-Changes.patch b/leaf-server/paper-patches/features/0004-Purpur-Server-Paper-Changes.patch index 4303a6b6..4cc9bf87 100644 --- a/leaf-server/paper-patches/features/0004-Purpur-Server-Paper-Changes.patch +++ b/leaf-server/paper-patches/features/0004-Purpur-Server-Paper-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Paper Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 22bd4186ca92f21a01714ba8e6b4823ccc576c81 +Commit: 196c1768e1cfa467b82acf260156892784c84578 Patches listed below are removed in this patch, They exists in Gale or Leaf: * "Rebrand.patch" @@ -143,7 +143,7 @@ index 6bdc683b5ade408ee27f1d6636b4d60c8c89cb7c..bc6d3898d8784e50a0e2264bbb5bde63 ignored.add("goal_selector_1"); ignored.add("goal_selector_2"); diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java -index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..1fe7458f9114a6b60ddc4dd90728aecb0b1e9e3f 100644 +index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..421c522760d35167eabe216a706b1f42f45a17f4 100644 --- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java +++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java @@ -70,10 +70,10 @@ public class PaperPluginsCommand extends BukkitCommand { @@ -159,7 +159,7 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..1fe7458f9114a6b60ddc4dd90728aecb } boolean isFirst = true; -@@ -100,21 +100,72 @@ public class PaperPluginsCommand extends BukkitCommand { +@@ -100,15 +100,49 @@ public class PaperPluginsCommand extends BukkitCommand { return formattedSubLists; } @@ -212,7 +212,8 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..1fe7458f9114a6b60ddc4dd90728aecb builder.append(pluginName); - return builder.build(); +@@ -126,6 +160,23 @@ public class PaperPluginsCommand extends BukkitCommand { + return componentHeader.append(Component.text(":")).build(); } + // Purpur start - Improve output of plugins command @@ -232,21 +233,19 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..1fe7458f9114a6b60ddc4dd90728aecb + } + // Purpur end - Improve output of plugins command + - private static Component header(final String header, final int color, final int count, final boolean showSize) { - final TextComponent.Builder componentHeader = Component.text().color(TextColor.color(color)) - .append(Component.text(header)); + private static Component asPlainComponents(final String strings) { + final net.kyori.adventure.text.TextComponent.Builder builder = Component.text(); + for (final String string : strings.split("\n")) { @@ -186,25 +237,25 @@ public class PaperPluginsCommand extends BukkitCommand { final int sizePaperPlugins = paperPlugins.size(); final int sizeSpigotPlugins = spigotPlugins.size(); final int sizePlugins = sizePaperPlugins + sizeSpigotPlugins; - final boolean hasAllPluginTypes = (sizePaperPlugins > 0 && sizeSpigotPlugins > 0); -+ final boolean hasAllPluginTypes = true || (sizePaperPlugins > 0 && sizeSpigotPlugins > 0); // Purpur - Improve output of plugins command ++ final boolean hasAllPluginTypes = true; // Purpur - Improve output of plugins command -- final Component infoMessage = Component.text().append(INFO_ICON_SERVER_PLUGIN).append(Component.text("Server Plugins (%s):".formatted(sizePlugins), NamedTextColor.WHITE)).build(); -+ //final Component infoMessage = Component.text().append(INFO_ICON_SERVER_PLUGIN).append(Component.text("Server Plugins (%s):".formatted(sizePlugins), NamedTextColor.WHITE)).build(); // Purpur - Improve output of plugins command + final Component infoMessage = Component.text().append(INFO_ICON_SERVER_PLUGIN).append(Component.text("Server Plugins (%s):".formatted(sizePlugins), NamedTextColor.WHITE)).build(); -- sender.sendMessage(infoMessage); -+ //sender.sendMessage(infoMessage); // Purpur - Improve output of plugins command + sender.sendMessage(infoMessage); - if (!paperPlugins.isEmpty()) { + //if (!paperPlugins.isEmpty()) { // Purpur - Improve output of plugins command @@ -1140,7 +1139,7 @@ index 351f42842b780d053cd2e5bad9ae299449141b10..054d2c2b93c43faeeaf56f482eb7b943 + // Purpur end - Llama API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3260f20b667918dd7cd641d5d96688721fce2f9c..5ee96349f7d720e6cf36ced42c7197579730ccbd 100644 +index 218a27def751fb657cdeee102d9ec4b26025bb30..46c53ee7f0a157002e0bec603222299d72c7130a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -592,10 +592,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1205,9 +1204,9 @@ index 3260f20b667918dd7cd641d5d96688721fce2f9c..5ee96349f7d720e6cf36ced42c719757 private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3583,4 +3612,75 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - handle.containerMenu.broadcastChanges(); - return new PaperPlayerGiveResult(leftovers.build(), drops.build()); +@@ -3599,4 +3628,75 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + + return forwardMovement == backwardMovement ? 0 : forwardMovement ? 1 : -1; } + + // Purpur start - Purpur client support @@ -1362,7 +1361,7 @@ index c1b7f1281fbd41e765d2c1881763ca25b20e924d..53c620e717d39ef16f44c9697ac4809a + // Purpur end - Configurable chance for wolves to spawn rabid } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..a9edb1818edb50e739d507d6dacc1409e70db8d5 100644 +index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..56afb317cef0e049aacdd36a1be5f9b7af4d0c77 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -602,6 +602,15 @@ public class CraftEventFactory { @@ -1381,15 +1380,6 @@ index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..a9edb1818edb50e739d507d6dacc1409 return event; } -@@ -1135,7 +1144,7 @@ public class CraftEventFactory { - DamageCause cause; - if (source.knownCause() != null) { - cause = source.knownCause(); -- } else if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL)) { -+ } else if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL) || source.isStonecutter()) { // Purpur - Stonecutter damage - cause = DamageCause.CONTACT; - } else if (source.is(DamageTypes.HOT_FLOOR)) { - cause = DamageCause.HOT_FLOOR; @@ -1193,6 +1202,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { @@ -1995,7 +1985,7 @@ index d2a75850af9c6ad2aca66a5f994f1b587d73eac4..a056aa167887abef9e6d531a9edd2cda diff --git a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java -index 75ed5050f72c001d6eab117a2c0b352a413548bd..2764d4204d51a3615f27b8bfd7b6675294465155 100644 +index fe08e446e86d53cef6eecc33cd484e93adc42871..54fff448fded12cd6110583f0c255f2ca86388da 100644 --- a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java +++ b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java @@ -46,6 +46,7 @@ public class MinecraftCommandPermissionsTest { diff --git a/leaf-server/paper-patches/features/0007-KeYi-Player-Skull-API.patch b/leaf-server/paper-patches/features/0007-KeYi-Player-Skull-API.patch index ecb3d1ae..56d17075 100644 --- a/leaf-server/paper-patches/features/0007-KeYi-Player-Skull-API.patch +++ b/leaf-server/paper-patches/features/0007-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 5ee96349f7d720e6cf36ced42c7197579730ccbd..9604dbd470a58790637f4caa691043ff8b9b9721 100644 +index 46c53ee7f0a157002e0bec603222299d72c7130a..7b7bb03adbf6aa4f088b2930d2ae702ce0189efa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3683,4 +3683,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3699,4 +3699,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); } // Purpur end - Death screen API