diff options
Diffstat (limited to 'patches/server/0361-Option-for-maximum-exp-value-when-merging-orbs.patch')
-rw-r--r-- | patches/server/0361-Option-for-maximum-exp-value-when-merging-orbs.patch | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/patches/server/0361-Option-for-maximum-exp-value-when-merging-orbs.patch b/patches/server/0361-Option-for-maximum-exp-value-when-merging-orbs.patch deleted file mode 100644 index ce8ca08ee9..0000000000 --- a/patches/server/0361-Option-for-maximum-exp-value-when-merging-orbs.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath <[email protected]> -Date: Fri, 10 Nov 2017 23:03:12 -0500 -Subject: [PATCH] Option for maximum exp value when merging orbs - - -diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ac4a8c9d4f727f3caa16f6dc5497d69f9db52aab..feffc6a539738e584dd6eda8c1f2f5b267f617f6 100644 ---- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -703,16 +703,30 @@ public class CraftEventFactory { - if (entity instanceof net.minecraft.world.entity.ExperienceOrb xp) { - double radius = world.spigotConfig.expMerge; - if (radius > 0) { -+ // Paper start - Maximum exp value when merging; Whole section has been tweaked, see comments for specifics -+ final int maxValue = world.paperConfig().entities.behavior.experienceMergeMaxValue; -+ final boolean mergeUnconditionally = world.paperConfig().entities.behavior.experienceMergeMaxValue <= 0; -+ if (mergeUnconditionally || xp.value < maxValue) { // Paper - Skip iteration if unnecessary -+ - List<Entity> entities = world.getEntities(entity, entity.getBoundingBox().inflate(radius, radius, radius)); - for (Entity e : entities) { - if (e instanceof net.minecraft.world.entity.ExperienceOrb loopItem) { -- if (!loopItem.isRemoved()) { -+ // Paper start -+ if (!loopItem.isRemoved() && !(maxValue > 0 && loopItem.value >= maxValue)) { -+ long newTotal = (long)xp.value + (long)loopItem.value; -+ if ((int) newTotal < 0) continue; // Overflow -+ if (maxValue > 0 && newTotal > (long)maxValue) { -+ loopItem.value = (int) (newTotal - maxValue); -+ xp.value = maxValue; -+ } else { - xp.value += loopItem.value; - loopItem.discard(null); // Add Bukkit remove cause -+ } // Paper end - Maximum exp value when merging - } - } - } - } -+ } // Paper end - End iteration skip check - All tweaking ends here - } - // Spigot end - |