Skip to content

Commit c61558f

Browse files
committed
Describe configured platform in tutorial
1 parent f81430e commit c61558f

14 files changed

Lines changed: 196 additions & 52 deletions

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
This changelog records source milestones. A listed feature is not production approval; release evidence and the Paper/live-data acceptance result belong in [checklist-walktheplank.md](checklist-walktheplank.md).
44

5+
## [2.4.7-016] — 2026-07-20
6+
7+
Expected artifact: `1MB-WalkThePlank-v2.4.7-016-j25-26.2.jar`
8+
9+
### Configuration-aware tutorial
10+
11+
- Replaced “glowing platform” with the literal `{{platformBlock}}` GUI token. The tutorial now names the configured parkour material, such as “jack o'lantern” or “emerald block,” instead of assuming that every target glows.
12+
- One to three distinct configured materials receive a bounded natural-language label; longer lists use “configured platform” so an operator cannot create an excessively wide tooltip.
13+
- The material label is inserted after trusted MiniMessage parsing, retaining the plugin's formatting-injection boundary and recursive non-italic styling.
14+
- Translation validation explicitly allows only `{{platformBlock}}` in tutorial lore and continues to reject unsupported or malformed tokens.
15+
- The exact build-014/015 bundled tutorial is upgraded in memory to the dynamic text, alongside the original historical live translation. Genuinely customized operator lore remains authoritative and no translation file is rewritten.
16+
517
## [2.4.6-015] — 2026-07-20
618

719
Expected artifact: `1MB-WalkThePlank-v2.4.6-015-j25-26.2.jar`

README.md

Lines changed: 16 additions & 16 deletions
Large diffs are not rendered by default.

checklist-walktheplank.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# WalkThePlank v2.4.6-015 beta and event checklist
1+
# WalkThePlank v2.4.7-016 beta and event checklist
22

3-
This is the mandatory human/server acceptance plan for `1MB-WalkThePlank-v2.4.6-015-j25-26.2.jar`.
3+
This is the mandatory human/server acceptance plan for `1MB-WalkThePlank-v2.4.7-016-j25-26.2.jar`.
44

55
Do not treat implemented code, a successful Gradle build, or a previous release's smoke test as production approval. The candidate is approved only after this checklist is completed against the exact frozen JAR, a production-like Paper 26.2 server, a disposable copy of the live data, and the intended external reward providers.
66

@@ -12,27 +12,27 @@ Fill this table from the final clean build. Do not copy values from any prior ca
1212

1313
| Property | Candidate value |
1414
| --- | --- |
15-
| Semantic version/build | `2.4.6-015` |
16-
| Expected filename | `1MB-WalkThePlank-v2.4.6-015-j25-26.2.jar` |
17-
| Git commit | Full clean commit embedded in the final JAR; record in a new annotated build-015 RC tag and operator release archive |
15+
| Semantic version/build | `2.4.7-016` |
16+
| Expected filename | `1MB-WalkThePlank-v2.4.7-016-j25-26.2.jar` |
17+
| Git commit | Full clean commit embedded in the final JAR; record in a new annotated build-016 RC tag and operator release archive |
1818
| Build timestamp | Not embedded; record externally with the candidate evidence |
1919
| File size | Record in annotated candidate tag and operator release archive |
2020
| SHA-256 | Record in annotated candidate tag and operator release archive |
2121
| Java runtime | Oracle Java `25.0.2+10-LTS-69` (aarch64) |
2222
| Paper version/build | Require Paper 26.2 build 62 beta or newer; API `26.2.build.62-beta` |
2323
| Automated test result/count | Record from the final clean-commit build |
2424
| `verifyReleaseJar` result | Require PASS on two clean builds with byte-identical outputs |
25-
| Test-server sync result | Require staged SHA-256 to match and only build 015 to be active |
25+
| Test-server sync result | Require staged SHA-256 to match and only build 016 to be active |
2626

27-
Build 010 completed its controlled scenarios, reproducibility/freeze, standalone/full-stack Paper smoke, live-copy schema-v3 preservation, and test-server synchronization and is tagged `v2.4.1-010-rc.1`. Builds 011–013 corrected the Paper 26.2 movement baseline, durable activation ownership, within-block forward activation, and velocity cancellation loop. The build-013 real-client pass completed five consecutive forward/backward/sprinting/jumping starts and exposed an idempotency gap in late block-cleanup callbacks. Build 014 preserved newer exact ownership and introduced recursively non-italic pastel GUI tooltips. Its follow-up client rehearsal completed six rapid same-arena runs with only the expected bounded reservation/settled messages and no lifecycle failure, quarantine, or blocked next run; the operator also approved the visual treatment of all three menu icons. Build 015 finishes the Play-tooltip proofreading with concise run, automatic-queue, ready-confirmation, and `/walk leave` instructions. Repeat the automated candidate gates and Paper startup/reload/shutdown checks against the final clean build-015 artifact.
27+
Build 010 completed its controlled scenarios, reproducibility/freeze, standalone/full-stack Paper smoke, live-copy schema-v3 preservation, and test-server synchronization and is tagged `v2.4.1-010-rc.1`. Builds 011–013 corrected the Paper 26.2 movement baseline, durable activation ownership, within-block forward activation, and velocity cancellation loop. The build-013 real-client pass completed five consecutive forward/backward/sprinting/jumping starts and exposed an idempotency gap in late block-cleanup callbacks. Build 014 preserved newer exact ownership and introduced recursively non-italic pastel GUI tooltips. Its follow-up client rehearsal completed six rapid same-arena runs with only the expected bounded reservation/settled messages and no lifecycle failure, quarantine, or blocked next run; the operator also approved the visual treatment of all three menu icons. Build 015 finished the Play-tooltip proofreading. Build 016 replaces the assumed “glowing platform” description with a bounded label derived from `parkourBlocks`. Repeat the automated candidate gates and Paper startup/reload/shutdown checks against the final clean build-016 artifact.
2828

2929
## Known build-003 migration evidence
3030

31-
Build 010's persistent live-copy smoke preserved 100 rows, 100 UUIDs, score sum 4256, maximum score 149, the unchanged Classic top ten, and `PRAGMA quick_check = ok`. Build 015 has no database-schema change, but repeat every preservation check below against its frozen candidate. Historical evidence is not a sign-off.
31+
Build 010's persistent live-copy smoke preserved 100 rows, 100 UUIDs, score sum 4256, maximum score 149, the unchanged Classic top ten, and `PRAGMA quick_check = ok`. Build 016 has no database-schema change, but repeat every preservation check below against its frozen candidate. Historical evidence is not a sign-off.
3232

3333
## 1. Source and release integrity
3434

35-
- [x] Confirm `gradle.properties` says version `2.4.6`, build `015`, Java `25`, Paper `26.2`, and exact Paper API `26.2.build.62-beta`.
35+
- [x] Confirm `gradle.properties` says version `2.4.7`, build `016`, Java `25`, Paper `26.2`, and exact Paper API `26.2.build.62-beta`.
3636
- [x] Confirm the wrapper/build dependencies remain Gradle 9.6.1, Shadow 9.5.1, PlaceholderAPI 2.12.3, SQLite JDBC 3.53.2.0, and JUnit 6.1.2 unless a newer version has been deliberately reviewed and recorded.
3737
- [x] Confirm `plugin.yml` retains Bukkit name `InfinityParkour`, `api-version: 26.2`, and main class `com.mrfdev.walktheplank.WalkThePlankPlugin`.
3838
- [x] Confirm the production plugin uses `JavaPlugin#getLifecycleManager` with `LifecycleEvents.COMMANDS`, keeps `plugin.yml` rather than adding `paper-plugin.yml`, and contains no legacy `PluginCommand` executor/tab-completer registration.
@@ -47,7 +47,7 @@ Build 010's persistent live-copy smoke preserved 100 rows, 100 UUIDs, score sum
4747
- [ ] Confirm the shaded JAR includes `org/sqlite/JDBC.class` and `META-INF/services/java.sql.Driver`.
4848
- [ ] Confirm the shaded JAR contains no `com/mysql/`, `org/mariadb/`, `org/bukkit/`, `io/papermc/paper/`, or `me/clip/placeholderapi/` classes.
4949
- [ ] Confirm the JAR contains no `.db` or `.sqlite` file and no `_resources` or server directory.
50-
- [ ] Confirm embedded `plugin.yml`, `build-info.properties`, and manifest all identify v2.4.6 build 015, Java 25, Paper 26.2 build 62 minimum, and the exact artifact name.
50+
- [ ] Confirm embedded `plugin.yml`, `build-info.properties`, and manifest all identify v2.4.7 build 016, Java 25, Paper 26.2 build 62 minimum, and the exact artifact name.
5151
- [ ] Record final size, SHA-256, source commit, runtime, test result, and smoke evidence in the annotated RC tag and operator archive.
5252
- [ ] Copy the JAR by checksum and prove the staged copy is byte-identical.
5353
- [ ] Confirm only one InfinityParkour/WalkThePlank JAR is active. Move every prior build to `plugins-disabled/walktheplank/`.
@@ -62,11 +62,11 @@ The scenario system is release tooling, not a production feature. Never copy eit
6262
- [ ] Require these two test-only files beneath `build/scenario-artifacts/`:
6363

6464
```text
65-
TEST-ONLY-1MB-WalkThePlank-ScenarioHarness-v2.4.6-015.jar
66-
TEST-ONLY-1MB-WalkThePlank-v2.4.6-015-Failpoints.jar
65+
TEST-ONLY-1MB-WalkThePlank-ScenarioHarness-v2.4.7-016.jar
66+
TEST-ONLY-1MB-WalkThePlank-v2.4.7-016-Failpoints.jar
6767
```
6868

69-
- [ ] Require the production file to remain `build/libs/1MB-WalkThePlank-v2.4.6-015-j25-26.2.jar`; prove the instrumented file has a different path and checksum and did not replace it.
69+
- [ ] Require the production file to remain `build/libs/1MB-WalkThePlank-v2.4.7-016-j25-26.2.jar`; prove the instrumented file has a different path and checksum and did not replace it.
7070
- [ ] Run `./gradlew verifyReleaseJar` separately and require the production JAR to contain no `com/mrfdev/walktheplank/scenario/` class, `WalkThePlank-Test-Artifact`/`WalkThePlank-Test-Canary` manifest attribute, scenario command, failpoint system-property prefix, scenario canary, Java agent entry point, or any of the 24 failpoint identifiers.
7171
- [ ] Require positive controls: the harness must be detected as test-only, the instrumented copy must contain the injected bridge/canary and all 24 identifiers, and the isolation task must reject a deliberately scanned test artifact as production-safe.
7272
- [ ] Inspect the scenario harness archive. Require an independent `plugin.yml` named `WalkThePlank-ScenarioHarness`, hard dependency on `InfinityParkour`, classes only under `com/mrfdev/walktheplank/scenario/harness/`, and no shaded WalkThePlank, SQLite, Paper/Bukkit, or PlaceholderAPI classes.
@@ -211,7 +211,7 @@ LIMIT 10;
211211
## 5. Paper startup and dependency matrix
212212

213213
- [ ] Start with Java 25 and Paper 26.2 build 62 beta or newer.
214-
- [ ] Require `InfinityParkour v2.4.6-015` to enable once with 100 preserved scores.
214+
- [ ] Require `InfinityParkour v2.4.7-016` to enable once with 100 preserved scores.
215215
- [ ] Attempt startup on Paper 26.2 build 61 and on a 26.1.x runtime in disposable profiles. Require WalkThePlank to refuse enable before opening its data directory, with one bounded target-versus-runtime diagnostic.
216216
- [ ] Require no WalkThePlank exception, deprecated-method warning, task rejection, linkage error, or unexpected startup/shutdown warning. The JVM's JOML `sun.misc.Unsafe` warning is emitted by Paper's `joml-1.10.8.jar`, not this plugin.
217217
- [ ] Break configuration or journal initialization in a disposable profile and require startup to abort. The disable audit says `startup_completed:false` and `clean:false`; the log explicitly refuses a clean-restoration claim.
@@ -268,6 +268,7 @@ LIMIT 10;
268268

269269
- [ ] Open the real GUI and confirm all 54 slots: readable near-black `#111827` title text, light-blue stained-glass panes only on the 26 outer-frame slots, centered tutorial/play/stats actions at 20/22/24, and 25 unused inner slots left empty.
270270
- [x] Inspect tutorial, play, and Top 10 tooltips. The operator approved the visual treatment of all three icons on 2026-07-20: proofread wording, pale-blue names, readable white/soft-gray body text, pink warning/label text, gold click actions, and no italic text.
271+
- [ ] With the live `JACK_O_LANTERN` setting, require the tutorial to say “jack o'lantern” rather than “glowing platform.” In a disposable reload, change the sole `parkourBlocks` entry to `EMERALD_BLOCK` and require “emerald block”; then restore the live setting.
271272
- [ ] Put nested `<italic>` tags in a disposable custom GUI title/lore and reload. Require every plugin item component to remain explicitly non-italic while its other safe MiniMessage styling remains intact.
272273
- [ ] Load the exact historical live tutorial/play/scoreboard definitions. Require the bundled modern text to replace them only in memory without rewriting the file. Change one item definition deliberately and require that genuinely customized item to remain byte-for-byte authoritative.
273274
- [ ] Confirm legacy `{{index}}` lore renders positions 1 through 10 while `{{rank}}` retains competition rank.
@@ -518,7 +519,7 @@ Use a disposable world and keep exact before/after structure or NBT/PDC evidence
518519
- [ ] Invoke doctor immediately before reload/disable and force a probe failure on a disposable database. Require a bounded privacy-safe result or contained cancellation, with no raw exception, rejected-task leak, shutdown hang, repair attempt, or database replacement.
519520
- [ ] Start and stop with no players, active runs, pending starts, queued/ready players, and quarantined records.
520521
- [ ] Clean shutdown must close menus, cancel starts, drain queue, restore sessions, retry quarantine, unregister API/PlaceholderAPI, and drain accepted database work for up to 15 seconds.
521-
- [ ] Require `WalkThePlank disabled; arena blocks and player state were restored` and no pending recovery/operations/database-write timeout in both build-015 controlled/console-smoke profiles.
522+
- [ ] Require `WalkThePlank disabled; arena blocks and player state were restored` and no pending recovery/operations/database-write timeout in both build-016 controlled/console-smoke profiles.
522523
- [ ] End an ordinary zero-score run by falling. If asynchronous cleanup briefly retains the arena, require only the bounded informational reservation/settled messages—never a false `SEVERE` quarantine message—and require the arena to become available once.
523524
- [x] Start and end at least five rapid consecutive runs in the same arena. Six build-014 client runs completed on 2026-07-20 with only the expected reservation/settled information, no lifecycle failure, no quarantine, and no blocked next run. `BlockLeaseRegistryTest` separately locks the delayed stale-completion case and proves that it preserves a newer exact owner without world mutation or duplicate release.
524525
- [ ] Repeat the rapid-run cleanup rehearsal with at least one scored run against the final frozen candidate.
@@ -531,11 +532,11 @@ Use a disposable world and keep exact before/after structure or NBT/PDC evidence
531532
## 17. Test-server synchronization and regression pass
532533

533534
- [ ] Run `./gradlew syncTestServer` only after source/build/migration gates pass.
534-
- [ ] Confirm build 015 is active and all older WalkThePlank/InfinityParkour JARs—including both `TEST-ONLY-` artifacts—are disabled/absent.
535+
- [ ] Confirm build 016 is active and all older WalkThePlank/InfinityParkour JARs—including both `TEST-ONLY-` artifacts—are disabled/absent.
535536
- [ ] Confirm copied live data belongs to the test server, not `_resources`.
536537
- [ ] Restart the synchronized server from a clean stop and repeat startup/info/validate/health/doctor/top/GUI/gameplay/queue/season/export/reward/recovery/disable smoke.
537538
- [ ] Search the full `latest.log` for `InfinityParkour`, `WalkThePlank`, `WARN`, `ERROR`, `SEVERE`, `Exception`, `deprecated`, and task rejection; classify every match.
538-
- [ ] Re-run `PRAGMA quick_check` and the 100-row/top-ten comparison after build-015 console smoke: 100 UUID rows, score sum 4256, maximum 149, unchanged top ten, `quick_check=ok`.
539+
- [ ] Re-run `PRAGMA quick_check` and the 100-row/top-ten comparison after build-016 console smoke: 100 UUID rows, score sum 4256, maximum 149, unchanged top ten, `quick_check=ok`.
539540
- [ ] Re-hash the staged JAR and compare it with the candidate record.
540541

541542
## 18. Rollback rehearsal
@@ -544,7 +545,7 @@ Use a disposable world and keep exact before/after structure or NBT/PDC evidence
544545
- [ ] Restore the exact previous JAR and matched pre-deployment data folder together.
545546
- [ ] Start the previous supported environment and verify the all-time leaderboard/top ten.
546547
- [ ] Confirm the production runbook warns that database rollback discards later event scores and never reconciles by username.
547-
- [ ] Confirm pending build-015 restoration/player-recovery records are resolved or preserved before starting an older plugin that cannot read them.
548+
- [ ] Confirm pending build-016 restoration/player-recovery records are resolved or preserved before starting an older plugin that cannot read them.
548549
- [ ] Record rollback duration, responsible operator, file locations, and communication plan.
549550

550551
## 19. Go/no-go sign-off

0 commit comments

Comments
 (0)