# Score Keeper [![Java CI with Gradle](https://github.com/headhunter45/ScoreKeeper/actions/workflows/gradle.yml/badge.svg)](https://github.com/headhunter45/ScoreKeeper/actions/workflows/gradle.yml) Score Keeper tracks player scores in named buckets for server events, competitions, and companion plugins. Buckets support custom units, initial values, reporting, archives, and target-based or timed high-score runs. Gameplay does not award points automatically: use commands or another plugin calling the public API. Supports **Paper 26.2 and 26.3 only**, with **Java 25**. Bukkit and Spigot servers are not supported. The display name is Score Keeper; the repository and installed plugin identifier remain `ScoreKeeper`. ## Installation 1. Obtain a plugin jar from [Modrinth](https://modrinth.com/plugin/scorekeeper) or build it using [CONTRIBUTING.md](CONTRIBUTING.md). 2. Stop your Paper server cleanly. Back up existing plugin data. 3. Put `ScoreKeeper-.jar` in the server's `plugins` directory, removing older Score Keeper jars so only one version loads. 4. Start the server and verify the plugin enables without errors. Scores, bucket definitions, reporting, player assignments, and active runs load from `plugins/ScoreKeeper/scores.yml`; archives load from `plugins/ScoreKeeper/archives.yml`. Both are saved **on plugin disable/clean shutdown**, not after every command. Crashes or forced termination can lose changes since the last successful save. Do not edit these files while running. ## Running ### Commands For commands with an optional player name, players can omit it to target themselves. Named targets must be online. Console and RCON must provide a player name for score get/add/subtract/reset; archive also supports `all` and `bucket` scopes. Bucket IDs are case-sensitive and allow letters, numbers, `_`, and `-`. Command-created singular/plural labels each occupy one argument. Add/subtract accept signed 32-bit integers, including zero and negative amounts. * `/score-get [playerName]` - Displays the target player's score in their active bucket. * `/score-add ` - Adds an amount to your score in your active bucket. * `/score-add ` - Adds an amount to the target player's score. * `/score-subtract ` - Subtracts an amount from your score in your active bucket. * `/score-subtract ` - Subtracts an amount from the target player's score. * `/score-reset [playerName]` - Resets the target player's score in their active bucket to that bucket's initial value. * `/score-archive` - Archives and resets your score in your active bucket. * `/score-archive ` - Archives and resets the target player's score in their active bucket. * `/score-archive all` - Archives and resets scores in every bucket. * `/score-archive bucket ` - Archives and resets every score in one bucket. * `/score-archive-list` - Lists saved archive IDs, newest first. * `/score-archive-list ` - Displays the saved scores in one archive. * `/score-bucket` - Displays your active bucket. * `/score-bucket ` - Switches your active bucket. * `/score-bucket create [reporting]` - Creates a bucket. Reporting is `admin`, `global`, `player`, or `none` and defaults to `none`. * `/score-bucket ` - Switches a player's active bucket. * `/score-bucket all ` - Changes the server's default bucket and clears individual bucket assignments. * `/score-run start target ` - Starts a run that ends when a score reaches the target. * `/score-run start duration