Player advancement persistency issue
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 12.7k
- Forks
- 3.5k
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 11
Description
Expected behavior
Player should keep their advancements
Observed/Actual behavior
If the player is present when server is stoping, all it's new advancements will not be stored persistently. This does not account for player disconnecting before that, or advancements being saved before the stop phase, for example using the /save-all command.
Steps/models to reproduce
Create a test plugin with this body:
private static final NamespacedKey RECIPE_KEY = NamespacedKey.fromString("test_plugin:my_recipe");
@Override
public void onEnable() {
ShapelessRecipe recipe = new ShapelessRecipe(RECIPE_KEY, new ItemStack(Material.BARRIER));
recipe.addIngredient(Material.GLASS);
Bukkit.addRecipe(recipe);
}
@Override
public void onDisable() {
Bukkit.removeRecipe(RECIPE_KEY);
}
- Start a server with only that test plugin present.
- Join with a client
- gain advancancement through normal means, for example obtaining a cobble stone.
- Check advancement menu, you now have the advancement as expected.
- Stop the server with /stop command.
- Start server again. You will now not have the advancement anymore
Plugin and Datapack List
Only test plugin with no datapacks
Paper version
This server is running Paper version 1.21.11-126-main@3f5728e (2026-02-28T11:49:07Z) (Implementing API version 1.21.11-R0.1-SNAPSHOT)
You are running the latest version
Other
I saw that there was a pr https://github.com/PaperMC/Paper/pull/12553 , but I have no clue if that fixes this issue
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the issue with the test plugin and the /stop workflow described above, then trace the player advancement persistence path during server shutdown and compare it with /save-all. Done means advancements gained before shutdown remain after restarting the server, with a regression test covering the stop path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100