Skip to content

Worlds

The Worlds module is a world browser, profile viewer, and world-control toolkit built entirely on the existing Module/GUI/Action/Audit/Permission infrastructure - no shortcuts specific to a built-in module (see docs/development/architecture-rules.md's "Built-in Modules Stay Extension-Friendly"). Every mutation is an Action run through ActionExecutor, so it is permission-checked and audited the same way regardless of frontend.

Open via /admin → Worlds (needs universaladmin.worlds.view).

Everything this module reads or changes - spawn, border, gamerules, difficulty, time, weather - is already Minecraft/Bukkit-persisted (level.dat, written by vanilla's own save routine). There is no UniversalAdmin database table for any of it; every action is a thin, permission-checked, audited wrapper around a World/WorldBorder call.

World Browser

One tile per currently loaded world (Bukkit.getWorlds() - never a file-system scan, deliberately no world file manipulation in the core), showing Name, Environment, Players, Loaded Chunks, Entities, Difficulty, Time, and Weather. Click a tile to open its profile.

World Profile

Name, Environment, Spawn, World Border (size), Players, Chunks, Entities, Time, Weather, Difficulty, plus navigation into the full World Border page and the Gamerules list. Seed is shown only if the viewer holds universaladmin.worlds.view.seed - a separate permission from .view, and the seed is never even attached to the read snapshot when the viewer lacks it (the same "don't even attach it" pattern GetPlayerIpAddressAction uses for a player's IP address), not just hidden in the renderer.

World Actions

Action Node
Teleport admin to world spawn worlds.teleport
Set world spawn (to the admin's current location) worlds.spawn.set
Set time (raw ticks, 0-24000) worlds.time.set
Set weather (Clear/Rain/Thunder) worlds.weather.set
Set difficulty (Peaceful/Easy/Normal/Hard) worlds.difficulty.set
World Border management (center/size/damage/warning) worlds.border.manage
Gamerule management (any rule) worlds.gamerule.manage

None of these are "dangerous" in the Shutdown/Restart-confirmation sense - nothing here is destructive or irreversible, so there's no confirmation dialog, the same as every non-destructive Players action.

Gamerules

Read dynamically from the Bukkit API - World#getGameRules() enumerates every rule name the server currently knows, nothing is hardcoded. A future Minecraft version that adds a new gamerule shows up here with no code change.

Each rule's declared type (GameRule#getType()) decides the edit widget:

  • Boolean rules toggle in place on click.
  • Integer (and any other type a future Minecraft version introduces - "weitere Typen entsprechend API") open a text prompt for the new value.

Setting a rule goes through World#setGameRuleValue(String, String), the untyped string-based setter - the one fully generic mechanism that needs no per-rule branch. (This method, and its getGameRuleValue/GameRule.getByName counterparts, are flagged deprecated-for-removal on newer Paper API builds; their typed replacement chain is equally flagged deprecated on the same build with no documented alternative yet, so this module deliberately keeps using the well-documented, still-functional string API rather than guess at undocumented pre-release replacement semantics - see the @SuppressWarnings notes on SetGameRuleAction/WorldGameRulesListPage.)

World Border

Everything org.bukkit.WorldBorder exposes ("soweit API"): center, size (with an optional gradual transition, in seconds), damage amount, damage buffer, warning distance, and warning time. Each button opens a form with one field per value (ADR 0023): the center as X and Z (or "use my current position"), the size with a transition slider (0-600 seconds; longer ones with /admin world border), damage amount and buffer, warning distance and time.

Dangerous Features (out of scope)

Not implemented, deliberately: delete world, clone world, reset world. These are genuinely destructive, file-level operations this module deliberately does not perform - no world file manipulation in the core. They belong in a future "Advanced World Manager" extension, not the core.

Permissions

Node Default Meaning
universaladmin.worlds.view op Open the world browser and profile pages
universaladmin.worlds.view.seed op View a world's seed
universaladmin.worlds.teleport op Teleport to a world's spawn
universaladmin.worlds.spawn.set op Set a world's spawn point
universaladmin.worlds.time.set op Set a world's time
universaladmin.worlds.weather.set op Set a world's weather
universaladmin.worlds.difficulty.set op Set a world's difficulty
universaladmin.worlds.border.manage op Manage a world's border
universaladmin.worlds.gamerule.manage op Change a world's gamerules

See docs/user/permissions.md for how these fit into the platform-wide list, and docs/architecture/actions.md for how a node on ActionDefinition.Builder#permission(...) gets enforced.

Database

None. Every field this module reads or writes already lives in Bukkit/ Minecraft's own persisted world state - see the module overview above.

Commands

/admin worlds and /admin world [world] info|tp|time|weather|difficulty|setspawn|border|gamerule - see commands.md.