Skip to content

twk0d/fpm-x-compat

Repository files navigation

FPModel x Combat

A technical compatibility mod designed to fix model issues when using First Person Model (FPM) alongside mods like Better Combat, Curios, accessories, etc...

🎯 Our Mission

Initially born to bridge the gap within the Better Combat ecosystem, this project aims to evolve into a universal integration hub for First Person Model.

We want to ensure that FPM works seamlessly with every major gameplay and animation mod in the Minecraft community. While our current focus is maintaining absolute stability for our existing integrations, we are eager to expand our horizons.

Have a mod you want to see integrated?
Please open an Issue and tell us which mod integration you're looking for! We will evaluate and work on bringing it to life.

🤝 Compatibility & Integrations

This mod acts as a technical bridge, harmonizing interactions between several major mods. Below is the list of currently supported integrations and what we've implemented for each:

⚔️ Combat & Gameplay

  • Better Combat
    • Kinematic Alignment: Synchronizes arm rotations and body offsets with the camera pitch during complex attack animations.
    • Attack State Dispatcher: Detects active combat phases to apply smooth rendering transitions.
  • Spell Engine
    • Casting Synchronization: Extends kinematic fixes to spell-casting poses, ensuring your hands and staves point where you look.
  • Combat Roll
    • Movement Stabilization: Smooths out body rendering during rolls to prevent camera clipping and jitter.
  • Punchy
    • First Person Model Priority: Prevents Punchy's FPM integration from blocking First Person Model body rendering when Punchy is disabled or when its FPM hide angle is set to never.
    • Animation State Restoration: Restores Better Combat and Spell Engine first-person animation settings after Punchy's runtime hooks disable them.

🎒 Accessories & Equipment

  • Accessories & Curios API
    • Universal Slot Hiding: Automatically hides head-related accessory slots (Head, Hat, Face, etc.) in first-person while showing your accessories to other players.
    • Configurable Filter: Includes an ignoredAccessorySlots option to allow users to customize which equipment slots are hidden in first person.
  • Essential
    • Cosmetic Head Hiding: Hides head-related Essential cosmetics in first-person when FPM renders the local player's body, while keeping them visible in third-person and for other players.
  • Relics
    • Custom Renderer Support: Specific fixes for Relics items that use unique rendering systems, such as the Piglin Mask and Chef's Hat, ensuring they don't block the player's vision.
  • Artifacts
    • Scarf Visibility Logic: Implementation of a specialized texture-based filter to hide Scarves in first-person while allowing other necklaces and amulets to render normally.

💡 Compatibility Recommendations

If you are experiencing animation conflicts when using Better Combat alongside EMF-based texture packs (like Fresh Animations or Fresh Moves), we strongly recommend installing the Entity Player Compat mod. This bridge mod effectively synchronizes animation states, preventing the visual "glitching" or "stuttering" of caused by conflicting animation systems.


Contributions

Contributions are highly welcome! Whether it's a bug fix, a new mod integration, or improved math for the kinematics util, feel free to open an Issue or submit a Pull Request.

🛠 Technical Setup & Build Instructions

Prerequisites

  • Java 21 JDK
  • Git

Setting up the Workspace

  1. Clone the repository: git clone https://github.com/twk0d/fpm-x-compat
  2. Import the project into your preferred IDE (IntelliJ IDEA or VS Code) as a Gradle project.
  3. Dependencies (Better Combat, FPM, etc.) are handled automatically via Maven repositories.

Runtime Testing Notes

Some optional integration targets must be installed manually in the mods folder for the Minecraft version and loader you are testing (Check {loader}/build.gradle). This is mainly because a few mods use Jar-in-Jar or loader-specific bootstrap behavior, and their nested runtime classes may not be exposed reliably through the Gradle dev runtime alone.

This is intentional: keeping those jars as manually installed runtime mods reduces false integration issues and makes local testing closer to a real launcher setup. Use the correct Fabric or NeoForge jar for the version you are testing, and place it in that instance's mods folder before running client tests.

Building the Mod

To generate the final mod JAR, run:

./gradlew build

The loader jars are generated in fabric/build/libs/ and neoforge/build/libs/.

Developed by Kaokod to Everyone ❤

About

A technical compatibility mod designed to fix model issues when using First Person Model (FPM) alongside mods like Better Combat, Curios, accessories, etc...

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages