NullPointerException when setting flag to "none" in RegionCommands.setFlag

Open Beginner friendly
#2,305 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
java
Domain
cli

Research direction

Start at RegionCommands.setFlag and trace the /rg flag command's handling of its return value when the flag argument is none. Reproduce the issue with the provided region and flag commands, then verify that clearing the flag still saves successfully and produces standard confirmation output without a NullPointerException.

Written by the indexing model from the issue text.

Description

status:pending type:bug
WorldEdit Version

7.4.5+7590-b8dc4c1

WorldGuard Version

7.0.18+2392-fa605e6

Platform Version

Purpur 26.2-2627-HEAD@f284e3d

Confirmations
  • I am using the most recent Minecraft release.
  • I am using a version of WorldEdit compatible with my Minecraft version.
  • I am using a version of WorldGuard compatible with my Minecraft version.
  • I am using the latest or recommended version of my platform software.
  • I am NOT using a hybrid server, e.g. a server that combines Bukkit and Forge. Examples include Arclight, Mohist, and Cardboard.
  • I am NOT using a fork of WorldEdit, such as FastAsyncWorldEdit (FAWE) or AsyncWorldEdit (AWE)
Bug Description

When setting a WorldGuard flag to none to remove it, the plugin successfully clears the flag and saves the data in the background, but throws a NullPointerException in the server console/chat. This happens because the command framework attempts to invoke .toString() on the null value returned by RegionCommands.setFlag(...) to build the console/chat feedback.

Copy from the log:

[20:25:40] [Server thread/INFO]: Cannot invoke "Object.toString()" because the return value of "com.sk89q.worldguard.commands.region.RegionCommands.setFlag(com.sk89q.worldguard.protection.regions.ProtectedRegion, com.sk89q.worldguard.protection.flags.Flag, com.sk89q.worldedit.extension.platform.Actor, String)" is null --   | [20:25:44] [WorldGuard Region I/O/INFO]: [WorldGuard] Region data changes made in 'world' have been background saved
Expected Behavior

The plugin should successfully clear the flag, gracefully handle the null return value from the cleared state, and send a standard confirmation message without throwing any errors in the console.

Reproduction Steps
  1. Create a region and assign a flag to a specific value (e.g., /rg flag testregion exit deny).
  2. Attempt to remove the flag by setting it to none (e.g., /rg flag testregion exit none).
  3. Check the server console to observe the Cannot invoke "Object.toString()" ... is null error, followed by the background save message.
Optional WorldGuard-Report

No response

Anything Else?

No response

Dominant language
Java
Stars
939
Forks
672
PR merge metrics
No merged PRs in 30d

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.

More from EngineHub/WorldGuard

All issues in EngineHub/WorldGuard

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.