1
0
Fork 0
mirror of https://github.com/PaperMC/Paper.git synced 2025-02-03 21:37:28 +01:00

Fix logic for unconditional xp orb merging

Fixes GH-936
This commit is contained in:
Zach Brown 2017-11-13 20:30:45 -05:00
parent 1f4f072193
commit dfab59dfc7

View file

@ -20,7 +20,7 @@ index 14f652d4..47d35228 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 9aec59d3..26d63369 100644
index 9aec59d3..f9c5da59 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
@ -29,7 +29,8 @@ index 9aec59d3..26d63369 100644
if (radius > 0) {
+ // Paper start - Maximum exp value when merging - Whole section has been tweaked, see comments for specifics
+ final int maxValue = paperConfig.expMergeMaxValue;
+ if (maxValue <= 0 || xp.value < maxValue) { // Paper - Skip iteration if unnecessary
+ final boolean mergeUnconditionally = maxValue <= 0;
+ if (mergeUnconditionally || xp.value < maxValue) { // Paper - Skip iteration if unnecessary
+
List<Entity> entities = this.getEntities(entity, entity.getBoundingBox().grow(radius, radius, radius));
for (Entity e : entities) {
@ -39,7 +40,7 @@ index 9aec59d3..26d63369 100644
+ if (!loopItem.dead && !(maxValue > 0 && loopItem.value >= maxValue)) { // Paper
xp.value += loopItem.value;
+ // Paper start
+ if (xp.value > maxValue) {
+ if (!mergeUnconditionally && xp.value > maxValue) {
+ loopItem.value = xp.value - maxValue;
+ xp.value = maxValue;
+ break;