Skip to content

Fletching table#10

Merged
EastArctica merged 2 commits intomainfrom
fletching-table
Feb 2, 2026
Merged

Fletching table#10
EastArctica merged 2 commits intomainfrom
fletching-table

Conversation

@EastArctica
Copy link
Collaborator

@EastArctica EastArctica commented Feb 2, 2026

Implement fletching table for automatic conversion or access wideners, jsonc files, and improve mixin management.

Summary by CodeRabbit

  • Chores
    • Build system infrastructure improvements and refactoring for enhanced resource processing and code organization
    • Updated mod homepage contact information
    • Integrated new build tooling for better artifact generation and mixin configuration management

✏️ Tip: You can customize this high-level summary in your review settings.

@EastArctica
Copy link
Collaborator Author

Can JSMacrosMixinPlugin be removed now?

@coderabbitai
Copy link

coderabbitai bot commented Feb 2, 2026

📝 Walkthrough

Walkthrough

This pull request modernizes the project's build infrastructure and mixin configuration by integrating the Fletching Table plugin for enhanced access widener management, migrating mixin configurations from JSON to JSON5 format, and implementing dynamic access transformer generation instead of static file handling.

Changes

Cohort / File(s) Summary
Build System Configuration
.gitignore, buildSrc/src/main/kotlin/multiloader-common.gradle.kts, settings.gradle.kts
Added working directory ignore entry; migrated resource expansion from .json/.json to .json5 formats; added KikuGie Maven snapshots repository for plugin management.
Common Module Build
common/build.gradle.kts
Integrated Fletching Table plugin; relocated mod\_id and minecraft\_version to top-level; introduced dynamic access transformer generation via new generateAccessTransformer task; updated Parchment and accessor widener configurations.
Multiloader Build Scripts
buildSrc/src/main/kotlin/multiloader-loader.gradle.kts, fabric/build.gradle.kts, neoforge/build.gradle.kts
Added KSP and Fletching Table plugins; migrated to dynamic access transformer generation from static files; introduced loader-specific mixin and access converter registrations; updated resource processing to handle .json5 files.
Configuration Format Migration
common/src/main/resources/jsmacrosce-common.mixins.json, common/src/main/resources/jsmacrosce-common.mixins.json5, fabric/src/main/resources/jsmacrosce-fabric.mixins.json5
Removed legacy JSON mixin config; introduced JSON5 format replacement; cleared client mixin list in Fabric config for Fletching Table integration.
Access Transformer Cleanup
common/src/main/resources/accesstransformers/*.cfg
Removed 23\u201324 public access transformer declarations across all Minecraft versions (1.21.5, 1.21.8, 1.21.10, 1.21.11), affecting GUI components, Minecraft client, player, and entity classes.
Mixin Plugin Simplification
common/src/main/java/com/jsmacrosce/jsmacros/client/mixin/JSMacrosMixinPlugin.java
Removed final modifier from class; updated method signatures to remove nullable annotations; eliminated complex onLoad implementation logic.
Environment-Specific Mixin Annotations
fabric/src/main/java/com/jsmacrosce/jsmacros/fabric/client/mixins/access/Mixin*.java
Added @MixinEnvironment("fabric") annotation to five Fabric mixin classes for loader-specific environment handling.
Fabric Mod Metadata
fabric/src/main/resources/fabric.mod.json5, neoforge/src/main/resources/jsmacrosce-neoforge.mixins.json5
Updated homepage URL and access widener path to use dynamic versioning; added trailing newline formatting.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Poem

🐰 A refactoring tale of wideners and json,
From static to dynamic, our build goes on,
Fletching tables flourish, mixins take flight,
Access transformers gleaming in format so bright!

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Fletching table' is vague and generic, using a non-descriptive term that doesn't convey the meaningful scope of changes in the changeset. Provide a more descriptive title that clarifies the primary objective, such as 'Add fletching-table integration for access widener conversion' or 'Integrate fletching-table plugin for improved mixin and access widener management'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fletching-table

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@fabric/build.gradle.kts`:
- Around line 103-123: The mixin registration is referencing the source .json5
files but Fletching Table expects converted .json files; update the mixin
registration inside the fletchingTable block (the mixins.register(...) call) to
reference the converted filenames by changing mixin("default",
"jsmacrosce-common.mixins.json5") to mixin("default",
"jsmacrosce-common.mixins.json") and mixin("fabric",
"jsmacrosce-fabric.mixins.json5") to mixin("fabric",
"jsmacrosce-fabric.mixins.json"); leave the j52j.register(...) lines as-is since
that extension performs the .json5→.json conversion.
🧹 Nitpick comments (3)
buildSrc/src/main/kotlin/multiloader-loader.gradle.kts (1)

2-2: Consider visibility for duplicate resources.
DuplicatesStrategy.EXCLUDE can silently drop colliding resources. If overrides are expected, consider warning or explicitly documenting precedence.

Possible adjustment if you want visibility on duplicates
-    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    duplicatesStrategy = DuplicatesStrategy.WARN

Also applies to: 55-62

common/src/main/java/com/jsmacrosce/jsmacros/client/mixin/JSMacrosMixinPlugin.java (2)

10-10: If subclassing isn’t needed, keep the plugin class final.
Removing final broadens the API surface; please confirm subclassing is intended.


16-17: Nullability contract is unclear after removing @Nullable.
These methods still return null; consider restoring your previous @Nullable annotations (or an explicit comment) to align with IMixinConfigPlugin expectations and avoid static analysis/Kotlin interop confusion. Returning non-null values here would change mixin selection behavior.

Also applies to: 30-31

@EastArctica EastArctica merged commit 6208c76 into main Feb 2, 2026
1 check passed
@EastArctica EastArctica deleted the fletching-table branch February 2, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant