EngineHub / EngineHub/WorldGuard

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

Open
#2,305 0 comments 0 reactions 0 assignees View on GitHub
status:pending type:bug
Dominant language
Java
Stars
938
Forks
671
PR merge metrics
No merged PRs in 30d

Description

### WorldEdit Version

7.4.5+7590-b8dc4c1

### WorldGuard Version

7.0.18+2392-fa605e6

### Platform Version

Purpur 26.2-2627-HEAD@f284e3d

### Confirmations

- [x] I am using the most recent Minecraft release.
- [x] I am using a version of WorldEdit compatible with my Minecraft version.
- [x] I am using a version of WorldGuard compatible with my Minecraft version.
- [x] I am using the latest or recommended version of my platform software.
- [x] I am NOT using a hybrid server, e.g. a server that combines Bukkit and Forge. Examples include Arclight, Mohist, and Cardboard.
- [x] 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_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.