PaperMC / PaperMC/Paper

A way to upgrade old NBT data by plugins

Open
#12,854 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

status: needs triage
Dominant language
Java
Stars
12.7k
Forks
3.5k
Avg merge
3d 13h
Merged PRs (30d)
11

Description

Is your feature request related to a problem?

Before the PDC API was a thing, a lot of plugins stored data (such as custom item IDs) directly in the item's NBT/now the custom_data component.
Nowadays the PDC API would be the way to do this, but any plugin that used to store data directly in NBT wouldn't ever be able to migrate from that, as old items could be laying around anywhere.

Describe the solution you'd like.

An "NMS API" (like the connection one for example) to let plugins register DFU fixes for their custom data, so that they are able to properly switch to modern options like PDC.

Alternatively if you wouldn't want to directly expose the DFU (and seeing as most plugins' use cases will likely be stuff like a string for custom item IDs), a registerMove("oldNbtKey", "newPdcKey") sorta setup could also work if possible (and maybe even be in UnsafeValues instead of NMS).

Describe alternatives you've considered.

Less ideal, but if the API had any way to get & set the custom_data component (maybe with adventure-nbt in UnsafeValues or something), that would also help this case, as plugins wouldn't need direct NMS usage to manage their custom data anymore.

Other

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing PDC API and UnsafeValues surface, then compare the referenced connection API and the proposed NMS API approach. Determine how plugin-provided DFU fixes, registerMove mappings, or custom_data access would be exposed safely. Done means a defined migration mechanism with documented compatibility and lifecycle behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.