.... I didn't forget to commit for a while... You can't tell

This commit is contained in:
2026-06-15 21:41:13 -07:00
parent 49bbd2b871
commit 690d818fe9
87 changed files with 2718 additions and 1212 deletions
+48 -37
View File
@@ -8,62 +8,67 @@ All commands are subcommands of `/minigame`.
Lists registered minigames and basic runtime state.
### `/minigame create <id> <name>`
### `/minigame create <pack> <id> <name>`
Creates a new minigame definition with default settings.
Creates a new minigame definition with default settings and saves it **into the named
asset pack** (`<pack>/Server/Minigames/<id>.json`). The pack must exist and be writable
(not a read-only/zipped pack). Because the definition lives in an asset pack, it is
reloaded by the normal asset scan on every server start.
```text
/minigame create Beach_Race "Beach Race"
/minigame create KingOfHillAssetPack Beach_Race "Beach Race"
```
Definitions created by command start disabled. Enable them when the asset is configured.
Ids may only contain letters, numbers, `_` and `-`.
### `/minigame info <id>`
Shows the loaded definition and runtime status for a minigame.
### `/minigame edit <id> <field> <value>`
### `/minigame edit <id> <property> <value>`
Edits a single definition field and saves the definition.
Edits a simple definition property and saves it back into its asset pack.
Supported properties: `name`, `description`, `enabled`. Use the Hytale asset
editor for everything else.
```text
/minigame edit Beach_Race MaxPlayers 16
/minigame edit Beach_Race RoundLengthSeconds 600
/minigame edit Beach_Race name Beach Race Deluxe
/minigame edit Beach_Race enabled true
```
### `/minigame enable <id>`
### `/minigame enable <id>` / `/minigame disable <id>`
Sets `Enabled = true`.
### `/minigame disable <id>`
Sets `Enabled = false`. This prevents new starts but does not necessarily stop an already running runtime.
Sets `Enabled` and persists the definition to its asset pack. Disabling prevents new
queue joins and starts but does not stop an already running runtime.
### `/minigame validate <id>`
Runs definition validation. Current validation focuses on definition fields. The old custom-volume requirement for `MinigameAreaVolume` no longer applies.
Runs definition validation (player counts, round length, countdown, overtime/sudden-death
timer settings).
### `/minigame delete <id>`
Deletes the minigame definition.
### `/minigame export <id>`
Exports the current definition JSON.
### `/minigame import <file>`
Imports a definition from a JSON file path relative to the data directory.
Ends any running runtimes, removes the definition from the asset store, and deletes its
file from its asset pack. Definitions in read-only packs cannot be deleted.
## Runtime Management
### `/minigame start <id>`
Starts a queued runtime for the given minigame. The selected map comes from `MapSelectionMode`: highest vote for `VOTE`, random discovered map for `RANDOM`.
Starts a queued runtime for the given minigame as an **admin start**: the min-player
pregame check is skipped, so the game runs even with an empty or short queue.
The selected map comes from `MapSelectionMode`: highest vote for `VOTE`, random
discovered map for `RANDOM`.
### `/minigame stop <id>`
A start is refused (with a message) when:
Stops all active runtimes for the minigame ID. An optional greedy `reason` argument can override the default admin-stop reason.
- the definition has a `WorldId` and you are in a different world, or
- no trigger volume sets the game's phase to `ACTIVE` (see *Lifecycle contract*
in `architecture.md`).
### `/minigame stop <id> [reason]`
Stops all active runtimes for the minigame ID.
### `/minigame reset <id>`
@@ -73,28 +78,34 @@ Resets all active runtimes for the minigame ID.
### `/minigame maps <id>`
Lists maps discovered from trigger volumes in the sender's current world. Run this command as a player in the world containing the tagged volumes.
Lists maps discovered from trigger volumes in the sender's current world. Run this command
as a player in the world containing the tagged volumes.
### `/minigame vote <id> <mapId>`
Casts or updates the sender's vote in the minigame waiting session.
Casts or updates the sender's vote. Only players who are in the queue may vote.
## Player Commands
### `/minigame join <id> [player]`
Adds the command sender, or the optional player target, to the minigame waiting queue.
Adds the command sender, or the optional player target, to the minigame queue.
Fails when the queue is full (`MaxPlayers`) or the minigame is disabled.
### `/minigame leave [player]`
Currently registered but not implemented. Use the `LeaveMinigameQueue` trigger effect for in-world queue leaving until the command is wired.
Removes the player from every queue and from their current game. Leaving a game restores
the player's saved inventory; if nobody is left in the runtime, it ends.
### `/minigame spectate <id>`
### `/minigame spectate <id> [player]`
Currently registered but not implemented. The command validates that the minigame exists and has a running runtime, then returns a not-implemented message.
Joins a running game as a spectator (requires `AllowSpectators: true` in the definition)
and teleports the spectator to the game's MainArena volume when one is visible from
their world. Spectators are excluded from rankings and the scoreboard.
## Volume Commands
## Volume Workflow
The old custom minigame volume system was removed. Use Hytale's trigger-volume editor for real volume placement and attach the minigame trigger effects and conditions there.
`/minigame volume create <type>` currently remains as a command stub for future Hytale trigger-volume integration. It should not be used as the primary way to define arenas.
The old custom minigame volume system was removed. Use Hytale's trigger-volume editor for
volume placement and attach the minigame trigger effects and conditions there.
`/triggervolume clone` and `/triggervolume clonegroup` (injected by this plugin) help
duplicate configured volumes between maps.