OfflinePlayer#setWhitelisted writes an empty name to whitelist.json for players obtained via getOfflinePlayer(UUID)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 72/100
Research direction
Start by tracing Bukkit.getOfflinePlayer(UUID) and OfflinePlayer#setWhitelisted, then reproduce the write to whitelist.json. Done means the stored entry has the player’s real name from the profile cache or profile, and /whitelist list and /whitelist remove completion display that player correctly.
Written by the indexing model from the issue text.
Description
Expected behavior
Whitelisting a player with Bukkit.getOfflinePlayer(uuid).setWhitelisted(true) should store the player’s real name next to the UUID, using the profile cache or the player’s profile, like /whitelist add does.
Observed/Actual behavior
whitelist.json gets {"uuid": "<uuid>", "name": ""}. /whitelist list then shows a blank entry, and the player is missing from tab-completion of /whitelist remove.
Steps/models to reproduce
- Call
Bukkit.getOfflinePlayer(uuid).setWhitelisted(true)for a player who is not online. For example, call it during the configuration phase, in a handler forPlayerCustomClickEvent. - Open
whitelist.json: the name is "". - Run
/whitelist list: the entry shows as blank.
Plugin and Datapack List
Just a test plugin that triggers the behaviour described in the 'Steps to reproduce' section. There are no data packs (only vanilla).
Paper version
This server is running Paper version 26.3-205-main@a90108f (2026-10-17T20:50:27Z) (Implementing API version 26.3.build.205-stable)
Other
No response
- Dominant language
- Java
- Stars
- 12.7k
- Forks
- 3.5k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 45
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing 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.
More from PaperMC/Paper
-
type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
status: needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
PaperMC/Paper#14375 · 1 comment ·
Maintainers usually reply within 1 day
-
Add .getIgniter() to ExplosiveMinecartPossibly taken @WouterGritter claimed this 33 days ago. Openstatus: needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
PaperMC/Paper#14097 · 1 comment ·
Maintainers usually reply within 1 day
-
BlockType#isOccluding is incorrectly handledPossibly taken @ryoji-ikeda claimed this 177 days ago. Openstatus: accepted
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
PaperMC/Paper#13790 · 5 comments ·
Maintainers usually reply within 1 day
-
status: needs triage
Difficulty 3/5 1-2 days Newbie friendliness 55/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
QuicksilverMC/Argentum#31 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
navikt/mock-oauth2-server#1129 ·
Maintainers usually reply within 1 day
-
bug main ui
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
openhab/openhab-webui#4600 ·
Maintainers usually reply within 4 days
-
26.4 area: tags enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
`DeepSeekChatModel` streaming returns no content when chunks have no `id`Possibly taken @lejuho claimed this today. Openstatus: waiting-for-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
spring-projects/spring-ai#7214 ·
Maintainers usually reply within 2 days