XpTotal value used as value for xp scoreboard objectives and query result of xp command is never decreased and does not change when the experience level changes
The bug
The value of the XpTotal tag of a player which is used as value for scoreboard objectives of the criteria type xp and the query result of the /xp command when giving experience (not levels) does not account for level changes.
It is basically the number of experience the player has collected. It only resets to 0 when the player would have a negative experience level.
Affected events:
- Enchanting
- Using an anvil
- Adding or removing levels using /xp
How to reproduce
- Create a scoreboard objective tracking the xp of a player
/scoreboard objectives add xp xp /scoreboard objectives setdisplay sidebar xp
- Use for example the /xp command
/xp add @s 10 levels
The score does not update
Code analysis
Based on 1.11.2 decompiled using MCP 9.35 rc1
The tag XpTotal (field net.minecraft.entity.player.EntityPlayer.experienceTotal) is only increased by the method net.minecraft.entity.player.EntityPlayer.addExperience(int) and additionally never decreased.