Add optional round-target billboard display
Build / build (push) Successful in 1m14s

This commit is contained in:
Michael Burgess
2026-08-07 07:52:14 -04:00
parent 2a04392942
commit c78d35d104
9 changed files with 212 additions and 5 deletions
+26 -4
View File
@@ -25,7 +25,7 @@ slightly faster round. Last player standing wins.
All admin/config commands live under `/blockparty` (alias `/bp`) and work from console
where it makes sense (`create`, `delete`, `enable`, `disable`, `info`, `list`, `reload`).
Commands that require a physical location (`setlobby`, `setspawn`, `setspectator`,
`pos1`, `pos2`) require a player sender.
`setbillboard`, `pos1`, `pos2`) require a player sender.
### Admin
| Command | Description |
@@ -38,6 +38,8 @@ Commands that require a physical location (`setlobby`, `setspawn`, `setspectator
| `/blockparty setlobby <arena>` | Set the waiting-room location |
| `/blockparty setspawn <arena>` | Set the in-game spawn location |
| `/blockparty setspectator <arena>` | Set the spectator/eliminated location |
| `/blockparty setbillboard <arena>` | (Optional) place a display block here that mirrors the current target color |
| `/blockparty delbillboard <arena>` | Remove the billboard, if one is set |
| `/blockparty pos1 <arena>` | Set floor region corner 1 |
| `/blockparty pos2 <arena>` | Set floor region corner 2 |
| `/blockparty setfloor <arena> <mat1,mat2,...>` | Set the allowed floor materials |
@@ -83,9 +85,12 @@ Commands that require a physical location (`setlobby`, `setspawn`, `setspectator
still required once so BlockParty captures/serializes the exact layout it should restore
each round (BlockParty does not scan the world every round — it restores from the saved
layout for performance and determinism).
8. `/bp info lobby1` to confirm there are no validation errors.
9. `/bp enable lobby1`.
10. Players run `/bp join lobby1`. Once `min-players` is reached the countdown starts
8. Optionally, stand somewhere visible near/above the floor and run `/bp setbillboard lobby1`
to place a big display block that mirrors the round's target color — purely cosmetic and
entirely optional (see "Billboard" below).
9. `/bp info lobby1` to confirm there are no validation errors.
10. `/bp enable lobby1`.
11. Players run `/bp join lobby1`. Once `min-players` is reached the countdown starts
automatically; joining an arena mid-countdown is allowed by default
(`allow-join-while-waiting: true`).
@@ -99,6 +104,23 @@ Commands that require a physical location (`setlobby`, `setspawn`, `setspectator
(`generated-layout`) so it can be restored exactly, every round, without re-scanning or
re-randomizing the world.
### Billboard
An arena billboard is a `BlockDisplay` entity that visually shows the currently selected
target color/block each round, in addition to the title/actionbar/hotbar-item cues. It is
entirely optional:
- Per-arena: only spawned if `/bp setbillboard <arena>` has been run (stored as `billboard`
in the arena's yml). `/bp delbillboard <arena>` removes it.
- Per-arena toggle: `billboard-enabled` in the arena's yml (default `true`) lets you keep the
location set but temporarily turn it off without deleting it.
- Global toggle: `ui.billboard` in `config.yml` (default `true`) disables billboards across
every arena at once, e.g. for performance-constrained servers.
The entity is non-persistent (not saved to the world, so it never survives a server restart on
its own — BlockParty re-creates it on demand) and is despawned automatically when the arena is
disabled, deleted, or the plugin shuts down, so it never leaks entities.
## Player usage
- `/bp join <arena>` to enter the waiting lobby. Your inventory, armor, offhand, health,