Skip to content

Player advancement persistency issue #13688

@Thorinwasher

Description

@Thorinwasher

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 #12553 , but I have no clue if that fixes this issue

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions