docs: correct command reference, fill security/config gaps, cut 2.1.0 - #60
Merged
Conversation
Publish-readiness pass from the documentation audit, ahead of a Modrinth/Hangar release. All claims re-checked against the code. - README "Extra commands" listed ~15 commands under names that no longer exist (bare/poll* forms carried over unchanged from the upstream README); every one returns Fail if copied. Rewritten against the actual command registry (namespaced world.*/events.*/player.events.* forms), with getAbsPos and the per-player setPlayer token documented. - README: add a Quickstart (install jar from Releases + pip install + example) so a non-source user has a path; point the "Libraries" section at the bundled src/main/resources/mcpi instead of the archived upstream repo; add player-tokens to Config; cross-link CONTRIBUTING/CHANGELOG. - CHANGELOG: add the per-player setPlayer tokens (#47), brute-force lockout (#51), owner-scoped entity removal + bounded socket I/O (#54), and client token redaction (#55); cut [Unreleased] as [2.1.0]. - SECURITY.md: document per-session entity ownership (incl. bulk removal), max-blocks-per-tick, bounded socket I/O, enable-op-commands, and the setPlayer lockout. - Version bump 2.0.0 -> 2.1.0 (pom, plugin.yml, client pyproject + __version__, bug-report template). plugin.yml: startup: postworld -> load: POSTWORLD (the former is not a recognized Bukkit key and was a silent no-op). 127 Java + 25 client tests still pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Publish-readiness documentation pass from the docs audit, ahead of a Modrinth/Hangar release. Every claim was re-checked against the code.
Summary
poll*forms carried over unchanged from the upstream README); each returnsFailif copied. Rewritten against the real command registry (world.spawnEntity,events.projectile.hits,player.events.*, …), and documentsgetAbsPos/setAbsPosand the per-playersetPlayertoken.pip install+ a 5-line example) so non-source users have a path; the "Libraries" section now points at the bundledsrc/main/resources/mcpiinstead of the archived upstream repo; addsplayer-tokensto Config; cross-links CONTRIBUTING/CHANGELOG.setPlayertokens (setPlayer(name) performs no ownership check — per-player authorization for binding/observation #47), brute-force lockout (Rate-limit setPlayer token attempts (brute-force lockout) #51), owner-scoped entity removal + bounded socket I/O (fix: gate entity removal by ownership and cap socket I/O (security) #54), and client token redaction (fix: keep auth tokens out of client errors, close socket on failed auth #55); cuts[Unreleased]as[2.1.0].max-blocks-per-tick,enable-op-commands), the new bounded socket I/O, and thesetPlayerlockout.pyproject/__version__, and the bug-report template.plugin.yml:startup: postworld→load: POSTWORLD—startupis not a recognized Bukkit plugin.yml key (silent no-op);loadis the real load-order directive. Behaviorally a no-op (POSTWORLD is already the default) but now correct and explicit.Test plan
./mvnw test— 127 Java tests pass (plugin still loads under MockBukkit withload: POSTWORLD)pytest client— 25 client tests pass./mvnw packagebuildsraspberryjuice-2.1.0.jarbuildCommandRegistry()and the Python client's wire stringsload: POSTWORLDnot performed — change is a standard Bukkit key and behaviorally the default; verified only that the plugin loads under MockBukkithttps://claude.ai/code/session_01AcK3SgXRTVzAKBdPZw72sr