Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-263426

Advancements aren't always saved, allowing for advancement reward duplication.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Invalid
    • None
    • 1.20, 1.20.1
    • None
    • Unconfirmed
    • (Unassigned)

      Advancements don't seem to save to playerdata during any session where you initially logged in through a duplicate login (with the logged in from another location on the other client).

      This can commonly happen with clients that have bad connections, without actually requiring a second client. I did use a second client here to reliably reproduce this issue.
      This does also mean that this can be used by bad actors to duplicate advancement rewards / functions, especially on servers that use custom advancements through datapacks.

      Reproduction steps:
      1. Start up a vanilla minecraft server.
      2. Give your account operator perms on the server through console (/op <player>)
      3. Start up 2 different vanilla clients on the same account.
      4. Connect to the server with client 1.
      5. Connect to the server with client 2, giving a 'logged in from another location' on client 1.
      6. Gain any advancement with client 2 (ex: /advancement grant @s only minecraft:husbandry/plant_any_sniffer_seed)
      7. Reconnect to the server with client 1 again, kicking 2 out. Notice that the advancement didn't save and that you can give it to yourself again. You can infinitely repeat this cycle between client 1 and 2.

      Notes:
      I have only been able to confirm this for advancements so far, I don't know yet if other types of playerdata may be affected. At least regular playerdata like positions seem to save correctly.

            Unassigned Unassigned
            Wesley1808 Wesley1808
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: