Extract shared reward configuration reads with Bukkit compatibility - #318
Merged
Merged
Conversation
BenCodez
marked this pull request as ready for review
September 12, 2026 20:46
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
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
Task 1 of the Fabric/Forge/NeoForge preparation: make AdvancedCore consume SimpleAPI's platform-neutral reward-configuration APIs without moving storage or reward execution.
core.rewards.RewardConfigReader, usingStructuredConfigViewfor command lists, chance, delays/timing, reward type, flags, and nested read views/literal definition keys.bukkit.rewards.BukkitRewardConfigReaderto preserve Bukkit's implicit default-tree getters and raw-list behavior.RewardFileDataread methods delegate to the shared implementation. Resolve the existing virtualgetConfigData()lazily so reloads, replacements, and subclasses keep working.1.0.2-SNAPSHOTas requested by the maintainer. Remove onlysimpleApiDependencyUsesImmutableSnapshotBuild(); retain the separate Javadoc workflow security test.Compatibility and scope
Existing public constructors/method signatures, native section getters, deprecated item getters, setters, file I/O, generated reward snapshots, and reward-derived permission-default evaluation are unchanged. The legacy
ArrayListcasts and their failure behavior are deliberately preserved; this extraction does not silently coerce/filter command lists or change their mutability.One existing Maven project,
core/bukkitpackages, no modules or new workflows. No user/cache/storage/schema/FLAT changes, no reward execution or async queue changes, no mod loader or new artifact packaging. #314 stays closed. This does not modify #317's execution implementation; coordinate the dependency/build changes when combining the branches.Snapshot preference update
Commit
4b3e2437e22a1068f08874db49c76bad16e50e91replaces the timestamped SimpleAPI dependency with1.0.2-SNAPSHOT, removes its timestamp-pinning test method, and updates the dependency documentation. The Nexus repository already enables snapshots withupdatePolicyset toalways; no repository or workflow change was needed.The Javadoc action-revision/permissions checks and all reward-configuration tests remain unchanged. No tests were disabled or skipped; the one explicitly unwanted dependency-policy test was removed. Validation should record the actual timestamped snapshot Maven resolves, since future published snapshots can change the build inputs.
Java CI with Maven — run 578 was in progress when this description was updated. The previous green run below does not establish the result of this new commit.
For this follow-up, verified the test/documentation baseline against their Git blob hashes, checked that the Javadoc test body is unchanged, ran local
git diff --checkon those two files, and inspected the complete published three-file commit diff. The POM change is exactly the dependency-version line. A full local Maven build was not run: Maven is absent and the container cannot resolve external dependency hosts. These static checks are not represented as JUnit or full-build execution.Previous build-failure diagnosis and CI evidence
The original SimpleAPI pin,
1.0.2-20260905.234759-10, predates the structured configuration APIs and caused missing-package/class compilation errors in run 571.A diagnostic snapshot build successfully resolved
1.0.2-20260910.221115-20from Nexus. Commita222e28840201a15d33a3e366cd5b9bd36a4bedethen pinned that version and updated the test's expected timestamp. That dependency policy has now been superseded by the maintainer's request above.Java CI with Maven — run 576 passed for that previous commit. Its completed build log showed:
mvn -B -f AdvancedCore/pom.xml packageon Temurin Java 21.0.12.RewardConfigBukkitCompatibilityTest: 12 passed, including real Bukkit/Configurate parity.RewardConfigReaderTest: 2 passed, including the isolated no-Bukkit fixture.BuildInputPinningTest: 2 passed at that revision; the SimpleAPI method is removed in the current candidate.AdvancedCore/target/AdvancedCore.jargenerated and shading completed with BUILD SUCCESS.e151144b4cdb9967ae6addfd8be91a6599fd9cd1, combining candidatea222e28840201a15d33a3e366cd5b9bd36a4bedewith base48ae122cfd7d7dc59d5cd3f1b1e6f31c6703fe4b.These are GitHub Actions results, not a local Maven build. Shade emitted minimization/overlap warnings; successful packaging does not replace packaged-runtime/linkage inspection.
Other validation and outstanding gates
Initial implementation checks verified the original
RewardFileData.javablob, compiled the shared reader against fetched SimpleAPI interfaces, and passed 10 JDK-only behavioral scenarios. Public facade signatures and non-read method bodies were compared with the baseline. These component checks are not full project builds.The PR remains draft. Full local SimpleAPI -> AdvancedCore -> VotingPlugin validation against the candidate artifacts, final shaded-JAR runtime/linkage inspection, live-server tests, and a fresh independent source-read-only review remain outstanding. Source inspection so far is same-context; no independent clean verdict is claimed.
Base:
48ae122cfd7d7dc59d5cd3f1b1e6f31c6703fe4b.Current candidate:
4b3e2437e22a1068f08874db49c76bad16e50e91.No merge, release, deployment, or manual external Codex review request is included.
AI assistance: ChatGPT assisted with implementation, test authoring, build-failure diagnosis/fix, the requested snapshot-policy update, same-context source inspection, and this PR description.