Astral Realms Documentation Help

Commands

Base command: /mobs. The class-level @CommandPermission("mobs.command") on MobsCommand applies to every subcommand below — there is no separate per-subcommand permission node.

Command

Permission

Completion

Description

/mobs summon <blueprint>

mobs.command

@mobBlueprints

Spawn a mob blueprint at the sender's location. Player-only.

/mobs loot <blueprint> [rolls]

mobs.command

@mobBlueprints @range:1-1000

Preview a blueprint's loot table without spawning anything. Player-only.

/mobs reload

mobs.command

—

Reload the plugin configuration and blueprints.

/mobs summon <blueprint>

Permission: mobs.command. Player-only — the handler takes a Player, not a CommandSender.

<blueprint> is resolved through MobBlueprintContextResolver, which pops the argument and looks it up with AstralMobs#blueprints().findById(id); an unknown id throws InvalidCommandArgument ("Mob blueprint '<id>' not found."). Tab completion (@mobBlueprints, backed by MobBlueprintCompletionHandler) lists the keys of AstralMobs#blueprints().all() — the ids of every loaded mob blueprint.

On success, MobService#summon spawns the resolved blueprint at the sender's current location (sender.getLocation()).

/mobs summon zombie-knight

/mobs loot <blueprint> [rolls]

Permission: mobs.command. Player-only. Rolls a blueprint's loot table the configured number of times and reports what came out — nothing is spawned, killed or dropped, and entry actions are not run.

Arg

Type

Default

Description

blueprint

MobBlueprint

—

The blueprint whose table to roll.

rolls

int

1

How many times to roll. Must be between 1 and 10 000; outside that the command errors. Tab completion offers 1–1000.

The rolls resolve requirements and %mob_*% placeholders against a real blueprint mob that is never added to the world, with the sender as the killer — so a requirement-gated entry is evaluated exactly as it would be on a kill.

The output has two blocks:

  • Entries — one line per entry: its configured chance, how many times it fired, and that as a percentage of the rolls. An entry is tagged [requirement-gated] when it has requirements (its hit rate can then sit far below its chance), [actions only] when it declares no items, or both — so an entry that never fires is visible rather than silently absent.

  • Drops — the total of each item across all rolls with its average per roll, then the grand total. The per-roll average is the number that says what a kill is actually worth.

A blueprint with no loot table answers "Blueprint '<id>' has no loot table." and rolls nothing.

/mobs loot zombie-knight 1000

/mobs reload

Permission: mobs.command. No arguments; works from console or as a player.

Sends the reloading message, then calls AstralMobs#loadConfiguration(), which re-runs:

  1. messages.yml reload

  2. config.yml reload

  3. BlueprintService#load() — re-scans every YAML file under blueprints/ and rebuilds the id lookup used by /mobs summon and its tab completion

On success the sender gets reloaded, followed by a line showing the count of loaded blueprints. If loadConfiguration() throws, the exception is logged to console via AstralMobs#getSLF4JLogger() and the sender gets reload-failed instead.

/mobs reload > Reloading... > Reloaded successfully. > Loaded 12 mob blueprints.

Reload messages

The three reload messages are plain component values in messages.yml and can be edited freely:

Key

Default

reloading

Reloading...

reloaded

Reloaded successfully.

reload-failed

Reload failed. Check the console for errors.

Permission summary

Node

Grants

mobs.command

Base node for /mobs — required for every subcommand (summon, loot, reload).

Last modified: 25 September 2026