PaperMC / PaperMC/Paper

NPE when accessing `CommandSourceStack#getLocation()`

Open
#13,387 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Stack trace
[Server thread/ERROR]: Error executing task on Server
java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.Level.getWorld()" because "level" is null
	at io.papermc.paper.command.brigadier.PaperCommandSourceStack.getLocation(PaperCommandSourceStack.java:25) ~[paper-1.21.11.jar:?]
	at bluemap-5.14-paper.jar//de.bluecolored.bluemap.bukkit.BukkitCommandSource.getWorld(BukkitCommandSource.java:69) ~[?:?]
	at bluemap-5.14-paper.jar//de.bluecolored.bluemap.common.commands.Commands.lambda$create$7(Commands.java:82) ~[?:?]
	at bluemap-5.14-paper.jar//de.bluecolored.bluecommands.BlueCommands.checkContext(BlueCommands.java:259) ~[?:?]
	at bluemap-5.14-paper.jar//de.bluecolored.bluecommands.MethodCommandExecutable.isValid(MethodCommandExecutable.java:99) ~[?:?]
	at bluemap-5.14-paper.jar//de.bluecolored.bluecommands.Command.checkValid(Command.java:149) ~[?:?]
	at bluemap-5.14-paper.jar//de.bluecolored.bluecommands.Command.isValid(Command.java:141) ~[?:?]
	at bluemap-5.14-paper.jar//de.bluecolored.bluecommands.brigadier.BrigadierBridge.lambda$createCommandNodes$1(BrigadierBridge.java:86) ~[?:?]
	at net.minecraft.commands.Commands$1.isRestricted(Commands.java:185) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.network.protocol.game.ClientboundCommandsPacket.createEntry(ClientboundCommandsPacket.java:157) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.network.protocol.game.ClientboundCommandsPacket.createEntries(ClientboundCommandsPacket.java:106) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.network.protocol.game.ClientboundCommandsPacket.<init>(ClientboundCommandsPacket.java:48) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.commands.Commands.runSync(Commands.java:535) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.commands.Commands.lambda$sendAsync$7(Commands.java:518) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:177) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1527) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:188) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:151) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.server.MinecraftServer.runAllTasksAtTickStart(MinecraftServer.java:1179) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.server.MinecraftServer.processPacketsAndTick(MinecraftServer.java:1668) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1337) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:388) ~[paper-1.21.11.jar:1.21.11-38-4446f17]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

Full log: https://mclo.gs/A1izzfx

Plugin and Datapack List

BlueMap 5.14

Actions to reproduce (if known)

Register a command using Commands#register(LiteralCommandNode) and inside the commands ArgumentBuilder#requires() check, try to access the command-sources location.

Then join the server with a player with full permissions (op).

For this test i set-up a fresh paper-server, installed BlueMap, gave myself op-permissions and joined the server:
The error is then thrown here
(commands are registered here).

Paper version
> version
[11:00:34 INFO]: Checking version, please wait...
[11:00:34 INFO]: This server is running Paper version 1.21.11-38-main@4446f17 (2025-12-09T22:51:57Z) (Implementing API version 1.21.11-R0.1-SNAPSHOT)
You are running the latest version
Other

The same scenario/code works fine in any 1.21.10 paper version.

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 at PaperCommandSourceStack.java line 25, where CommandSourceStack#getLocation() throws, and trace how the source is created during Commands#register(LiteralCommandNode) and ArgumentBuilder#requires(). Reproduce on Paper 1.21.11 with a full-permission player, then compare with 1.21.10. Done means the requires check can access the command-source location without this NullPointerException.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.