aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0411-Option-for-maximum-exp-value-when-merging-orbs.patch
diff options
context:
space:
mode:
authorOwen1212055 <[email protected]>2022-06-10 16:15:38 +0200
committerNassim Jahnke <[email protected]>2022-06-10 16:15:38 +0200
commit8bca9190a48d2cdbdd42996d8817201592663d90 (patch)
tree143fcd80bb38e1d41e00fca5343df2a9676bca74 /patches/server/0411-Option-for-maximum-exp-value-when-merging-orbs.patch
parenta8a01bbb521bbbd872baf22d9847b8c4c1b0c6c0 (diff)
downloadPaper-8bca9190a48d2cdbdd42996d8817201592663d90.tar.gz
Paper-8bca9190a48d2cdbdd42996d8817201592663d90.zip
Remove unneeded patch
Diffstat (limited to 'patches/server/0411-Option-for-maximum-exp-value-when-merging-orbs.patch')
-rw-r--r--patches/server/0411-Option-for-maximum-exp-value-when-merging-orbs.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/patches/server/0411-Option-for-maximum-exp-value-when-merging-orbs.patch b/patches/server/0411-Option-for-maximum-exp-value-when-merging-orbs.patch
new file mode 100644
index 0000000000..e6d330bc6d
--- /dev/null
+++ b/patches/server/0411-Option-for-maximum-exp-value-when-merging-orbs.patch
@@ -0,0 +1,42 @@
+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 cd28e59602cba810c0c123f01b992f6eef0ea207..7fd92f0dd2f8a8bcd6a26e91966641c35d35bf91 100644
+--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+@@ -640,16 +640,30 @@ public class CraftEventFactory {
+ net.minecraft.world.entity.ExperienceOrb xp = (net.minecraft.world.entity.ExperienceOrb) entity;
+ 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) {
+ net.minecraft.world.entity.ExperienceOrb loopItem = (net.minecraft.world.entity.ExperienceOrb) e;
+- 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();
++ } // Paper end
+ }
+ }
+ }
++ } // Paper end - End iteration skip check - All tweaking ends here
+ }
+ // Spigot end
+ } else if (!(entity instanceof ServerPlayer)) {