From cd3c58c9425eda03f9905b89f8459317d5ba97d1 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Sun, 27 Sep 2026 01:14:52 -0700 Subject: [PATCH] Updates to docs and ci. --- .env.example | 6 ++-- Modrinth-Description.md | 6 ++-- Project-Description.json | 6 ++-- Project-Description.md | 18 ++++------- README.md | 60 +++++++++++++++++------------------ build.gradle | 2 +- src/main/resources/plugin.yml | 10 +++--- tools/publish-modrinth.sh | 20 ++++++++++-- 8 files changed, 72 insertions(+), 56 deletions(-) diff --git a/.env.example b/.env.example index e8778ef..42e256f 100644 --- a/.env.example +++ b/.env.example @@ -8,6 +8,7 @@ PAPER_USER_AGENT="majinnaibu-plugin-dev/1.0 (https://github.com/majinnaibu)" JAVA_OPTS="-Xms2G -Xmx2G" STOP_TIMEOUT=60 MINECRAFT_SERVER_JAR=paper-26.2-129.jar + # Relative paths are resolved from the project root; ~/ is expanded. MINECRAFT_SERVER_PATH=./server MINECRAFT_BACKUP_PATH=./backups @@ -16,9 +17,10 @@ MINECRAFT_BACKUP_PATH=./backups # Release version is read from Gradle and checked against the jar's plugin.yml. MODRINTH_TOKEN= MODRINTH_PROJECT_ID=mob-scores +# Optional Markdown override; empty generates notes from commits since the last tag. MODRINTH_CHANGELOG= -MODRINTH_GAME_VERSIONS=1.21,1.21.1,1.21.2,1.21.3,1.21.4,1.21.5,1.21.6,1.21.7 +MODRINTH_GAME_VERSIONS=26.2,26.3 MODRINTH_LOADERS=paper MODRINTH_VERSION_TYPE= -MODRINTH_DEPENDENCIES= +MODRINTH_DEPENDENCIES='[{"project_id":"5NYwxysp","version_id":null,"file_name":null,"dependency_type":"required"}]' MODRINTH_FILE= diff --git a/Modrinth-Description.md b/Modrinth-Description.md index 37ccd61..70e6f01 100644 --- a/Modrinth-Description.md +++ b/Modrinth-Description.md @@ -4,15 +4,17 @@ MobScores awards ScoreKeeper points for configured mob kills. Set a score for ea ## Requirements -- Paper 1.21.7 or a compatible newer server. +- Paper 26.2 or 26.3. - Java 25 or newer at runtime and for building. - ScoreKeeper 0.2.2 or newer. Install ScoreKeeper and MobScores in the server's `plugins` directory. ScoreKeeper is a required dependency and must be enabled for MobScores to load. +MobScores targets Paper only; Bukkit and Spigot servers are not supported. + ## Configuration -MobScores creates `plugins/MobScores/config.yml` from its defaults. Edit `ScoreTable` to configure point values by Bukkit `EntityType` name: +MobScores creates `plugins/MobScores/config.yml` from its defaults. Edit `ScoreTable` to configure point values by Paper API `EntityType` name: ```yaml ScoreTable: diff --git a/Project-Description.json b/Project-Description.json index 58e54f3..99c8d8f 100644 --- a/Project-Description.json +++ b/Project-Description.json @@ -1,12 +1,12 @@ { "id": "mob-scores", "title": "MobScores", - "description": "Legacy Bukkit plugin that awards configurable scores for killing mobs.", + "description": "A Paper 26.2/26.3 integration plugin that attributes mob kills, including projectile kills, and awards configurable ScoreKeeper points by entity type.", "docId": "MobScores", "image": { - "url": "Retro Minecraft Bukkit server plugin artwork showing a blocky player defeating a hostile zombie, floating score numbers, a simple scoreboard motif, pixel-art style, dark forest-green and charcoal palette, no words or logos.", + "url": "Retro Minecraft Paper server plugin artwork showing a blocky player defeating a hostile zombie, floating score numbers, a simple scoreboard motif, pixel-art style, dark forest-green and charcoal palette, no words or logos.", "alt": "Pixel-art scene of a Minecraft player defeating a zombie with score numbers floating nearby", - "prompt": "Retro Minecraft Bukkit server plugin artwork showing a blocky player defeating a hostile zombie, floating score numbers, a simple scoreboard motif, pixel-art style, dark forest-green and charcoal palette, no words or logos.", + "prompt": "Retro Minecraft Paper server plugin artwork showing a blocky player defeating a hostile zombie, floating score numbers, a simple scoreboard motif, pixel-art style, dark forest-green and charcoal palette, no words or logos.", "width": 0, "height": 0, "backgroundClassName": "bg-surface" diff --git a/Project-Description.md b/Project-Description.md index 66c7e33..dceab84 100644 --- a/Project-Description.md +++ b/Project-Description.md @@ -1,16 +1,12 @@ # MobScores -MobScores is a legacy Bukkit plugin that awards configurable scores to players for killing mobs. It works with the `ScoreKeeper` plugin, records the player who last damaged a mob, and awards the configured value when that mob dies. +MobScores turns combat into a configurable scoring system. When a player damages a tracked mob, the plugin remembers the attribution and awards the matching ScoreKeeper bucket when that mob dies, including projectile kills. -## Details +It is a deliberately small Paper integration plugin with a clear boundary: Paper entity events on one side, ScoreKeeper's public scoring API on the other. The per-entity score table is configurable, zero-value entries can be disabled, and players see the active mob-score table when they join. It targets Paper 26.2 and 26.3 only, not Bukkit or Spigot. -- Platform: Bukkit/Minecraft server plugin -- Language: Java -- Dependency: ScoreKeeper -- Configuration: `plugins/MobScores/config.yml` -- Commands: None -- License: GNU Affero General Public License v3 +## Engineering Notes -## Image prompt - -Retro Minecraft Bukkit server plugin artwork showing a blocky player defeating a hostile zombie, floating score numbers, a simple scoreboard motif, pixel-art style, dark forest-green and charcoal palette, no words or logos. +- Built for modern Paper with Java 25 and Gradle. +- Uses UUID-safe player attribution. +- Depends on ScoreKeeper 0.2.2 or newer. +- Tested through the standard server-free build workflow. diff --git a/README.md b/README.md index 24b2aeb..34ba6e6 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,30 @@ -# MobScores - -MobScores awards ScoreKeeper points for configured mob kills. It is a Paper plugin and requires the ScoreKeeper plugin to be installed and enabled first. - -## Requirements - -- Paper 1.21.7 or a compatible newer server. -- Java 25 to build the plugin. -- ScoreKeeper 0.2.2 or newer. - -Install both plugin JARs in the server's `plugins` directory. MobScores declares ScoreKeeper as a hard dependency, so it will not enable without it. - -## Score Table - -On first startup, MobScores creates `plugins/MobScores/config.yml` with default scores for supported entity types. Edit the `ScoreTable` mapping to change points; keys are Bukkit `EntityType` names and values are integer points: - -```yaml -ScoreTable: - ZOMBIE: 25 - CREEPER: 50 - SILVERFISH: 0 -``` - -Restart the server after editing the configuration. A configured value of `0` suppresses that entity from the score table shown to players when they join. - -MobScores has no commands of its own. It records credit for configured entity types damaged directly by a player or by a projectile fired by a player. Other mob attribution is not currently handled. Points go into ScoreKeeper's dedicated `mob-scores` bucket and are tracked by player UUID. Use `/score-bucket mob-scores` before `/score-get` to view mob points; MobScores does not change the player's active bucket automatically. - -## Build - -Run `./gradlew test` and `./gradlew build` from the project root. See [CONTRIBUTING.md](CONTRIBUTING.md) for toolchain, local server, and helper-script details. +# MobScores + +MobScores awards ScoreKeeper points for configured mob kills. It is a Paper-only plugin for Paper 26.2 and 26.3, and requires the ScoreKeeper plugin to be installed and enabled first. + +## Requirements + +- Paper 26.2 or 26.3. +- Java 25 to build the plugin. +- ScoreKeeper 0.2.2 or newer. + +Install both plugin JARs in the server's `plugins` directory. MobScores declares ScoreKeeper as a hard dependency, so it will not enable without it. Bukkit and Spigot servers are not supported. + +## Score Table + +On first startup, MobScores creates `plugins/MobScores/config.yml` with default scores for supported entity types. Edit the `ScoreTable` mapping to change points; keys are Paper API `EntityType` names and values are integer points: + +```yaml +ScoreTable: + ZOMBIE: 25 + CREEPER: 50 + SILVERFISH: 0 +``` + +Restart the server after editing the configuration. A configured value of `0` suppresses that entity from the score table shown to players when they join. Entity type keys use the Paper API's `EntityType` names. + +MobScores has no commands of its own. It records credit for configured entity types damaged directly by a player or by a projectile fired by a player. Other mob attribution is not currently handled. Points go into ScoreKeeper's dedicated `mob-scores` bucket and are tracked by player UUID. Use `/score-bucket mob-scores` before `/score-get` to view mob points; MobScores does not change the player's active bucket automatically. + +## Build + +Run `./gradlew test` and `./gradlew build` from the project root. See [CONTRIBUTING.md](CONTRIBUTING.md) for toolchain, local server, and helper-script details. diff --git a/build.gradle b/build.gradle index dd112ff..b812a94 100644 --- a/build.gradle +++ b/build.gradle @@ -38,7 +38,7 @@ repositories { dependencies { // Group is always 'maven.modrinth', module is your project slug/id compileOnly 'maven.modrinth:scorekeeper:0.2.2' - compileOnly 'io.papermc.paper:paper-api:1.21.7-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:26.2.build.129-stable' testImplementation libs.junit.junit } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e4316de..ae5a5a1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ -name: MobScores -main: com.majinnaibu.minecraft.plugins.mobscores.MobScoresPlugin -depend: [ScoreKeeper] -version: ${version} -api-version: 1.21 +name: MobScores +main: com.majinnaibu.minecraft.plugins.mobscores.MobScoresPlugin +depend: [ScoreKeeper] +version: ${version} +api-version: '26.2' diff --git a/tools/publish-modrinth.sh b/tools/publish-modrinth.sh index 8884601..80dda96 100755 --- a/tools/publish-modrinth.sh +++ b/tools/publish-modrinth.sh @@ -40,8 +40,24 @@ load_project_env MODRINTH_TOKEN="${MODRINTH_TOKEN:-}" MODRINTH_PROJECT_ID="${MODRINTH_PROJECT_ID:-mob-scores}" -MODRINTH_CHANGELOG="${MODRINTH_CHANGELOG:-Auto release via publish-modrinth.sh}" -MODRINTH_GAME_VERSIONS="${MODRINTH_GAME_VERSIONS:-1.21,1.21.1,1.21.2,1.21.3,1.21.4,1.21.5,1.21.6,1.21.7}" +generate_changelog() { + local current_tag previous_tag range commits + current_tag=$(git -C "$PROJECT_ROOT" describe --tags --exact-match HEAD 2>/dev/null || true) + if [[ -n "$current_tag" ]]; then + previous_tag=$(git -C "$PROJECT_ROOT" describe --tags --abbrev=0 "${current_tag}^" 2>/dev/null || true) + range="${previous_tag:+$previous_tag..}$current_tag" + else + previous_tag=$(git -C "$PROJECT_ROOT" describe --tags --abbrev=0 2>/dev/null || true) + range="${previous_tag:+$previous_tag..}HEAD" + fi + commits=$(git -C "$PROJECT_ROOT" log --no-merges --format='- %s (%h)' "$range" 2>/dev/null || true) + if [[ -z "$commits" ]]; then + commits='- No commit messages found for this release.' + fi + printf '%s\n\n%s\n' "## What's Changed" "$commits" +} +MODRINTH_CHANGELOG="${MODRINTH_CHANGELOG:-$(generate_changelog)}" +MODRINTH_GAME_VERSIONS="${MODRINTH_GAME_VERSIONS:-26.2,26.3}" MODRINTH_LOADERS="${MODRINTH_LOADERS:-paper}" MODRINTH_VERSION_TYPE="${MODRINTH_VERSION_TYPE:-}" MODRINTH_FILE="${MODRINTH_FILE:-}"