This commit is contained in:
41
docs/human-tests.md
Normal file
41
docs/human-tests.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# MobScores Human Testing
|
||||
|
||||
Use this checklist on a disposable Paper 26.2 or 26.3 server with Java 25+, MobScores, and ScoreKeeper 0.2.2 or newer installed. MobScores depends on ScoreKeeper for its `mob-scores` bucket, and its main behavior is driven by real combat and player-join events.
|
||||
|
||||
## Test Setup
|
||||
|
||||
- Back up the world and both plugin data folders. Configure a test server with the same plugin versions intended for production.
|
||||
- Use at least two ordinary player accounts and an operator for setup. Keep the server log visible to catch dependency, config, and offline-award warnings.
|
||||
- Save the generated `plugins/MobScores/config.yml` before changing it. Restart after config edits; MobScores reads the score table during plugin startup.
|
||||
- Record player UUIDs, mob types, configured values, active score buckets, and scores before and after each kill.
|
||||
|
||||
## Human Checklist
|
||||
|
||||
### Plugin loading and configuration
|
||||
|
||||
- Start with both plugins installed. Confirm ScoreKeeper loads before MobScores, MobScores enables, and the `mob-scores` bucket exists with the expected labels and initial value.
|
||||
- On a disposable server, test startup without ScoreKeeper and with a ScoreKeeper version older than 0.2.2. Paper should reject the missing hard dependency; MobScores should disable itself with a version warning for an outdated dependency. Then restore the supported version.
|
||||
- On first startup, inspect the generated `ScoreTable`. Confirm the documented default entity values are present, including a zero-valued entry.
|
||||
- Change a few values, restart, and verify they are loaded and preserved. Include a zero value and an unknown entity key; confirm zero-valued entities are omitted from join messages and invalid entries are logged without preventing valid entries from loading.
|
||||
- Confirm the table uses Paper `EntityType` names and that malformed values or a missing score-table section are handled as intended.
|
||||
|
||||
### Kill credit and scoring
|
||||
|
||||
- As a player, kill configured entities using direct melee damage and player-fired projectiles. Confirm the expected points are added to that player's `mob-scores` score.
|
||||
- Check the boundary cases: a non-player attacker, environmental death, an entity type absent from the table, and a configured zero-point entity. Confirm no unintended points are awarded.
|
||||
- Have two players damage the same mob before it dies. The current implementation records the most recent direct or player-projectile attacker; verify that this credit policy matches the server's expectations.
|
||||
- Damage a mob with a player, then let it die from fall, fire, or another environmental cause. Confirm whether retaining that player's credit is the intended behavior; the current implementation keeps the last recorded player attribution until the mob dies.
|
||||
- Test a player who disconnects after damaging the mob but before it dies. The current implementation cannot award an offline player and logs a warning; confirm this is acceptable and that no other player's score changes.
|
||||
- Check mob death without any previous qualifying player damage, and verify no stale or reused entity attribution grants points.
|
||||
|
||||
### Player messaging and ScoreKeeper workflows
|
||||
|
||||
- Join with a player account. Confirm the MobScores score table is sent once, includes configured nonzero entity types with the right values, and excludes zero-valued types.
|
||||
- Run `/score-bucket mob-scores` followed by `/score-get`. Confirm the score reflects kills and the bucket switch message uses the expected singular/plural label. Verify MobScores does not change the player's active bucket automatically on join or kill.
|
||||
- Give two players different kill totals and switch between `mob-scores` and another ScoreKeeper bucket. Confirm each bucket retains its own value and MobScores awards only to `mob-scores`.
|
||||
- Restart the server and verify MobScores retains its configured table and ScoreKeeper retains the players' mob scores. Reconnect and confirm the join table still matches the active config.
|
||||
- Exercise normal gameplay around claimed mobs: unload/reload chunks, kill several entities rapidly, and test multiplayer combat. Watch for missed, duplicated, or cross-player awards.
|
||||
|
||||
## Automated Coverage
|
||||
|
||||
There are currently no Java test sources in MobScores and no `integrationTest` source set/task. Although Gradle declares JUnit, `./gradlew test` currently has no MobScores behavior tests. The testing tasks marked “Ready” in `TODO.md` have not been implemented. Build success alone does not verify real event attribution or compatibility with the installed ScoreKeeper jar.
|
||||
36
docs/modrinth-description.md
Normal file
36
docs/modrinth-description.md
Normal file
@@ -0,0 +1,36 @@
|
||||
**MobScores**
|
||||
|
||||
MobScores awards ScoreKeeper points for configured mob kills. Set a score for each supported entity type and let ScoreKeeper track the player's total by UUID.
|
||||
|
||||
## Requirements
|
||||
|
||||
- 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 Paper API `EntityType` name:
|
||||
|
||||
```yaml
|
||||
ScoreTable:
|
||||
ZOMBIE: 25
|
||||
CREEPER: 50
|
||||
SILVERFISH: 0
|
||||
```
|
||||
|
||||
Set an entity's value to `0` to disable its points and hide it from the join-time score table. Restart the server after changing the configuration.
|
||||
|
||||
## Scoring
|
||||
|
||||
MobScores records credit for configured entity types damaged directly by a player or by a projectile fired by a player. When a credited player remains online when the entity dies, its configured points are added to the dedicated `mob-scores` ScoreKeeper bucket. Use `/score-bucket mob-scores` to view mob points with ScoreKeeper commands. Other mob attribution is not currently handled.
|
||||
|
||||
MobScores has no commands of its own. Players see the nonzero score table when they join.
|
||||
|
||||
## Build
|
||||
|
||||
Run `./gradlew test` and `./gradlew build` from the project root. See [CONTRIBUTING.md](CONTRIBUTING.md) for development and local Paper testing instructions.
|
||||
13
docs/modrinth.json
Normal file
13
docs/modrinth.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Mob Scores",
|
||||
"url": "https://modrinth.com/plugin/mob-scores",
|
||||
"summary": "Award ScoreKeeper points for configured mob kills with a customizable per-entity score table.",
|
||||
"visibility": "public",
|
||||
"links": {
|
||||
"issueTracker": "https://github.com/headhunter45/MobScores/issues",
|
||||
"sourceCode": "https://github.com/headhunter45/MobScores",
|
||||
"wikiPage": null,
|
||||
"discordInvite": null,
|
||||
"donationLinks": []
|
||||
}
|
||||
}
|
||||
23
docs/project-description.json
Normal file
23
docs/project-description.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": "mob-scores",
|
||||
"title": "MobScores",
|
||||
"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 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 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"
|
||||
},
|
||||
"url": "/projects/mob-scores",
|
||||
"tags": ["open-source"],
|
||||
"source": {
|
||||
"type": "",
|
||||
"url": ""
|
||||
},
|
||||
"feedback": {
|
||||
"url": ""
|
||||
}
|
||||
}
|
||||
12
docs/project-description.md
Normal file
12
docs/project-description.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# MobScores
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
## Engineering Notes
|
||||
|
||||
- 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.
|
||||
Reference in New Issue
Block a user