feat: LPC 4.2.0 — Minecraft 26.2 / Adventure 5 / Veylor-Development#38
Merged
Conversation
…ment (4.2.0) - Target Paper/Minecraft 26.2 (paper-api 26.2.build.40-alpha), api-version 26.2 - Migrate to Adventure 5.2.0 (bundled by Paper 26.2): fix ClickEvent payload access in tests - Update deps: LuckPerms 5.5, PlaceholderAPI 2.12.2, Gson 2.14.0, JUnit 5.14.4, Gradle 8.14.5 - Fix CI: Gradle runs on Java 21 (toolchain 25 via foojay resolver) — Gradle 8.14 cannot run on Java 25 - Bump actions: setup-java v5, gradle/actions v6, checkout v5; add build.yml CI - Rebrand author Varilx-Development -> Veylor-Development - /lpc version now reports platform + target (MC 26.2 / Java 25 / Adventure 5)
This was referenced Jul 1, 2026
Closed
…sertion exploits Adds ComponentSanitizer that recursively strips clickEvent / hoverEvent / insertion from a component tree. Applied to: - PlayerMessages.render -> the single place player text becomes a component - ItemPlaceholder -> anvil/3rd-party item names (Paper) The restricted cosmetic parser already rejects interactive tags; this is a belt- and-suspenders guarantee that no interactive event can ever reach chat, even via nested children or a crafted item name. Cosmetic styling is preserved. Covers the exploit reported on Discord (players typing <click:run_command:...> that executes on click). Note: legacy/Spigot output is inherently safe because it serializes to section-sign codes that cannot carry events. Tests: 43 (7 new ComponentSanitizer tests + insertion case), 0 failures.
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.
Summary
The 26.2 update. Builds, tests green, jar ships as
LPC-4.2.0.jar.Platform
paper-api 26.2.build.40-alpha),api-version: 26.2Unsupported class file major version 69build failure: Gradle 8.14 cannot run on Java 25 (its bundled Groovy/ASM rejects Java 25 class files), so Gradle now runs on Java 21 and compiles via the Java 25 toolchain (auto-provisioned by the newfoojay-resolver-conventioninsettings.gradle).Dependency updates (folds in/supersedes the open Renovate PRs)
5.4 → 5.5(fix(deps): update dependency net.luckperms:api to v5.5 #13), PlaceholderAPI2.11.6 → 2.12.2(fix(deps): update dependency me.clip:placeholderapi to v2.12.2 #24), Gson2.13.2 → 2.14.0(fix(deps): update dependency com.google.code.gson:gson to v2.14.0 #31), JUnit5.11.4 → 5.14.4(fix(deps): update dependency org.junit:junit-bom to v5.14.4 #32), Adventure BOM4.26.1 → 5.2.0(fix(deps): update dependency net.kyori:adventure-bom to v5 #29), Paper26.1.2 → 26.2(fix(deps): update dependency io.papermc.paper:paper-api to v26.1.2.build.72-stable #35 superseded), Gradle8.14 → 8.14.5(chore(deps): update gradle to v8.14.5 #12),actions/setup-java v5(chore(deps): update actions/setup-java action to v5 #19),gradle/actions v6(chore(deps): update gradle/actions action to v6 #28)Adventure 5 migration
ClickEvent.openUrl(...)/.clickEvent(...)— compatible as-is.ClickEventis now generic; the URL lives onPayload.Text(((ClickEvent.Payload.Text) click.payload()).value()), notclick.value().CI
.github/workflows/build.yml— runsclean buildon every push/PR (there was no CI before).publish.yml: Java 21 Gradle runtime + 25 toolchain, bumped action versions.Branding & UX
Varilx-Development → Veylor-Development(the team behind Veylor.net, free plugins on Modrinth)./lpc versionnow reports the detected platform + target (MC 26.2 · Java 25 · Adventure 5).Security (already in this branch — closes #22, #26)
%player_name%typed by a non-op is rendered literally, never expanded.click/hover/insertion) are always stripped.Verification
./gradlew clean build→ BUILD SUCCESSFUL, all tests pass (Gradle on JDK 21, toolchain 25).Not done here