diff --git a/patches/server/0257-Configurable-player-pickup-exp-delay.patch b/patches/server/0257-Configurable-player-pickup-exp-delay.patch new file mode 100644 index 000000000..25352403d --- /dev/null +++ b/patches/server/0257-Configurable-player-pickup-exp-delay.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Mon, 10 Jan 2022 10:04:31 -0600 +Subject: [PATCH] Configurable player pickup exp delay + + +diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +index 68072fae050fb83735725f3dc2525bfc9c0cc159..8515eddddb84b44afdbfeacc22bc1cd53fc06572 100644 +--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java ++++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +@@ -301,7 +301,7 @@ public class ExperienceOrb extends Entity { + public void playerTouch(Player player) { + if (!this.level.isClientSide) { + if (player.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(((net.minecraft.server.level.ServerPlayer) player).getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper +- player.takeXpDelay = 2; ++ player.takeXpDelay = this.level.purpurConfig.playerExpPickupDelay; // Purpur + player.take(this, 1); + int i = this.repairPlayerItems(player, this.value); + +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 4bdd91dc2cd76525af4ba2f6d361e10efdf6fda3..15c023807a3f5ae3139294d28c5c672a4f111817 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -412,6 +412,7 @@ public class PurpurWorldConfig { + public boolean playerRidableInWater = false; + public boolean playerRemoveBindingWithWeakness = false; + public int shiftRightClickRepairsMendingPoints = 0; ++ public int playerExpPickupDelay = 2; + private void playerSettings() { + if (PurpurConfig.version < 19) { + boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); +@@ -440,6 +441,7 @@ public class PurpurWorldConfig { + playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); + playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); + shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); ++ playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); + } + + public int snowballDamage = -1;