A plugin that features a working Chess board using dialogs and a resourcepack
Chess v1.0.0
Overview
Chess v1.0.0 is the first public release of the CASTLED CODEX chess plugin. It provides complete, timed player-versus-player chess matches inside Minecraft's native Paper dialog UI. The board is a live 8x8 grid of clickable dialog actions rather than a chest inventory or a physical world build.
Gameplay
- Added player challenges with
/chess duel <player> <time>. - Added accept and decline flows with expiring duel requests.
- Added 17 time controls from one-minute bullet through five-hour games.
- Added increment modes using
minutes|seconds, including1|1,2|1,3|2,5|2,5|5,10|5, and15|10. - Added live clocks with timeout wins.
- Added legal-move validation, captures, castling, en passant, and a promotion picker.
- Added check and checkmate handling.
- Added automatic stalemate and insufficient-material draws.
- Added draw offers with confirmation, expiry, and cooldown handling.
- Added two-step resign confirmation.
- Added
/chess openso players can close and reopen an active board.
Native dialog board
- Added a 64-button Paper dialog board with a consistent 8-column layout.
- Added per-player orientation so White and Black can each view the board from their own side.
- Added an in-game flip control.
- Added configurable coordinate tooltips, legal-move highlights, last-move highlights, check markers, captured-piece lists, and clock display.
- Added stale-click rejection so a board rendered before the opponent's move cannot submit an old action.
- Added resource-pack glyphs for textured pieces, squares, and highlight states.
- Added standard Unicode pieces as a resource-pack-free fallback.
Resource pack delivery
- Bundled
resourcepack.zipinsideChess.jarand export it toplugins/Chess/resourcepack.zipon startup. - Added optional ResourcePackManager integration. When the plugin is installed, Chess registers its pack for automatic merging and distribution.
- Added direct-send support for servers without ResourcePackManager. Administrators host the
exported ZIP and configure
resource-pack.url; Chess computes its SHA-1 automatically. - Added
resource-pack.use-resourcepackso external pack systems can take full control.
Configuration
- Added
settings.ymlfor request timers, draw and resign confirmation windows, sounds, dialog appearance, board feedback, and resource-pack behavior. - Added
messages.ymlfor chat messages and MiniMessage dialog labels. - Added configurable player-relative orientation, escape-to-close behavior, glyph rendering, square width, clocks, captures, coordinates, and move highlights.
Platform support
- Built against Paper 1.21.11 and Java 21.
- Declared Folia support and routed authoritative game state through the global region scheduler.
- Routed player-facing dialog and sound work through player/entity schedulers.
- Bundled and relocated the PocketChess API and common engine so no chess-engine plugin is needed at runtime.
Chess requires Paper's native Dialog API and does not support a standard Spigot server. ResourcePackManager is an optional soft dependency.
Commands
/chess duel <player> <time>
/chess accept <player>
/chess decline <player>
/chess open
/chess help
All players can use the commands in this release; there are no permission nodes.
Verification
The Gradle build compiles the plugin with Java 21, packages the deterministic resource-pack ZIP,
shades and relocates the PocketChess engine, and produces the publishable build/libs/Chess.jar.
GitHub Actions now repeats this build on every push and pull request and uploads the shaded JAR as
a workflow artifact.
Installation note
After the first startup, install ResourcePackManager or host the exact
plugins/Chess/resourcepack.zip file and configure its public URL in settings.yml. Servers which
manage the pack externally can disable Chess pack delivery and use Unicode pieces or merge the
bundled textures themselves.
Platforms
Dependencies
- ResourcePackManager Optional