Velthoric
Redefining physics in the world of Minecraft.
👋 Welcome to Velthoric
Velthoric is a project dedicated to bringing advanced, high-performance physics to Minecraft.
Important Note: Right now, this mod is a Proof of Concept. This means we are currently testing what’s possible and building the foundation. It is a work in progress, but it won't stay this way forever. We have big plans to turn this into a fully-fledged, stable physics engine for the community.
💥 What makes this mod special?
We aren't just adding simple animations. Velthoric integrates the professional Jolt Physics engine (via JoltJNI) directly into Minecraft. This allows for interactions that feel heavy, realistic, and incredibly smooth.
Current Features:
- True Rigid and Soft Bodies: Interact with solid objects, or play with deformable things like cloth and ropes.
- Working Vehicles: Drive cars and motorcycles that feature actual suspension and wheel physics.
- Realistic Ragdolls: Watch living entities react to the world with physical skeletal systems.
- Buoyancy: Objects actually float in water and lava based on their weight and shape.
- World Interaction: Convert standard blocks into dynamic physics objects that fall and collide.
- Optimized Performance: Built using a "Structure of Arrays" (SoA) architecture to handle thousands of objects without killing your frame rate.
- Persistence: Everything stays where it is. Physics bodies are saved with your world and synced perfectly between the server and the client.
🎮 How to play with it
You can test the engine right now using these commands:
/vxsummon: Spawn objects like boxes, ropes, or marbles.- Try this to test a vehicle:
/vxsummon velthoric:car ~ ~ ~(Use F3 + B to see where to sit).
- Try this to test a vehicle:
/vxtest: A quick way to spawn debug setups like chain grids or soft bodies./vxkill: Use this to clean up. You can target specific types of objects or everything nearby.- Example:
/vxkill @x[type=velthoric:box,limit=5,sort=nearest]
- Example:
🔧 Tools included
We’ve added several tools to help you manipulate the world:
- PhysicsGun: Grab, move, and throw objects around.
- Magnetizer: Push or pull things with magnetic force.
- Launchers: Special tools to shoot boxes or ragdolls into the air.
- ChainCreator: Link objects together or anchor them to the ground.
Hint: You can press TAB while holding any tool to open a menu and tweak settings like strength and range.
💻 Supported Platforms
Because Velthoric relies on native code for the physics engine, it currently supports:
- Windows (x86_64)
- Linux (x86_64 and Arm64)
- MacOS (x86_64 and Arm64)
Warning: Any other platforms, such as 32-bit systems or Android, are not supported and will result in a crash.
⚠️ Feedback and Bug Reports
If you find a bug or a compatibility issue, please let us know on the issue tracker:
🙏 Acknowledgments
This project wouldn't be possible without these amazing resources:
- JoltJNI: The JNI bindings for Jolt Physics.
- Jolt Physics: The powerful engine behind it all.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 10mo ago | 1 | ||||
| 10mo ago | 1 | ||||
| 10mo ago | 1 | ||||
| 10mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 |
## Dependencies
- Updated Jolt JNI:** Updated Jolt JNI to
5.2.1.
## Dependencies
- Updated Jolt JNI:** Updated Jolt JNI to
5.2.1.
## Dependencies
- Updated Jolt JNI:** Updated Jolt JNI to
5.2.1.
## Dependencies
- Updated Jolt JNI:** Updated Jolt JNI to
5.2.1.
This update introduces our new **Stonecutter multi-version development** setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.
## Gameplay & Features
- New Weld Tool:** Added a tool that lets you weld different physics bodies together so they stick.
- Physics Gun Fixes:** Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
- Removed Vehicles:** We removed the old vehicle system and built-in drivable bodies for now.
## Collision & Physics Changes
- New Collision Shape System:** Implemented
VxCollisionShapeto handle shape definitions and sync them properly. - Debug Rendering:** Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
- Direct NIO Memory:** Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
- ID-Driven Behaviors:** Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
- Activation State:** Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.
## Performance & Sync
- Faster JNI Bridge:** Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
- Shape Caching:** Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
- Smarter Persistence (TLV System):** Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
- Better Velocity Sync:** Moved angular velocity (
angVel) tracking to the main container and sync it directly to the client with a state packet. - Rendering Optimization:** Cached
BoxColorvalues to speed up rendering loops.
## Stonecutter Multi-Version Development
- Multi-Version Workspace:** We now use **Stonecutter** to develop for both 1.20.1 and 1.21.1 simultaneously.
- Loader & Version Support:** Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
- Development Setup:** Separated development run directories for each version and cleaned up IDE run configurations.
## Bug Fixes & Code Cleanup
- Crash Fix:** Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
- Null Shape Sync:** Resolved a bug where null shapes would sometimes try to sync, causing errors.
- Event Library Update:** Rewrote and restructured the internal
vx-eventslibrary to make it cleaner and easier to maintain. - Constraint Search:** Added a method in
VxConstraintManagerto quickly find constraints using their UU
This update introduces our new **Stonecutter multi-version development** setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.
## Gameplay & Features
- New Weld Tool:** Added a tool that lets you weld different physics bodies together so they stick.
- Physics Gun Fixes:** Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
- Removed Vehicles:** We removed the old vehicle system and built-in drivable bodies for now.
## Collision & Physics Changes
- New Collision Shape System:** Implemented
VxCollisionShapeto handle shape definitions and sync them properly. - Debug Rendering:** Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
- Direct NIO Memory:** Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
- ID-Driven Behaviors:** Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
- Activation State:** Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.
## Performance & Sync
- Faster JNI Bridge:** Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
- Shape Caching:** Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
- Smarter Persistence (TLV System):** Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
- Better Velocity Sync:** Moved angular velocity (
angVel) tracking to the main container and sync it directly to the client with a state packet. - Rendering Optimization:** Cached
BoxColorvalues to speed up rendering loops.
## Stonecutter Multi-Version Development
- Multi-Version Workspace:** We now use **Stonecutter** to develop for both 1.20.1 and 1.21.1 simultaneously.
- Loader & Version Support:** Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
- Development Setup:** Separated development run directories for each version and cleaned up IDE run configurations.
## Bug Fixes & Code Cleanup
- Crash Fix:** Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
- Null Shape Sync:** Resolved a bug where null shapes would sometimes try to sync, causing errors.
- Event Library Update:** Rewrote and restructured the internal
vx-eventslibrary to make it cleaner and easier to maintain. - Constraint Search:** Added a method in
VxConstraintManagerto quickly find constraints using their UU
This update introduces our new **Stonecutter multi-version development** setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.
## Gameplay & Features
- New Weld Tool:** Added a tool that lets you weld different physics bodies together so they stick.
- Physics Gun Fixes:** Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
- Removed Vehicles:** We removed the old vehicle system and built-in drivable bodies for now.
## Collision & Physics Changes
- New Collision Shape System:** Implemented
VxCollisionShapeto handle shape definitions and sync them properly. - Debug Rendering:** Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
- Direct NIO Memory:** Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
- ID-Driven Behaviors:** Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
- Activation State:** Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.
## Performance & Sync
- Faster JNI Bridge:** Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
- Shape Caching:** Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
- Smarter Persistence (TLV System):** Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
- Better Velocity Sync:** Moved angular velocity (
angVel) tracking to the main container and sync it directly to the client with a state packet. - Rendering Optimization:** Cached
BoxColorvalues to speed up rendering loops.
## Stonecutter Multi-Version Development
- Multi-Version Workspace:** We now use **Stonecutter** to develop for both 1.20.1 and 1.21.1 simultaneously.
- Loader & Version Support:** Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
- Development Setup:** Separated development run directories for each version and cleaned up IDE run configurations.
## Bug Fixes & Code Cleanup
- Crash Fix:** Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
- Null Shape Sync:** Resolved a bug where null shapes would sometimes try to sync, causing errors.
- Event Library Update:** Rewrote and restructured the internal
vx-eventslibrary to make it cleaner and easier to maintain. - Constraint Search:** Added a method in
VxConstraintManagerto quickly find constraints using their UU
This update introduces our new **Stonecutter multi-version development** setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.
## Gameplay & Features
- New Weld Tool:** Added a tool that lets you weld different physics bodies together so they stick.
- Physics Gun Fixes:** Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
- Removed Vehicles:** We removed the old vehicle system and built-in drivable bodies for now.
## Collision & Physics Changes
- New Collision Shape System:** Implemented
VxCollisionShapeto handle shape definitions and sync them properly. - Debug Rendering:** Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
- Direct NIO Memory:** Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
- ID-Driven Behaviors:** Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
- Activation State:** Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.
## Performance & Sync
- Faster JNI Bridge:** Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
- Shape Caching:** Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
- Smarter Persistence (TLV System):** Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
- Better Velocity Sync:** Moved angular velocity (
angVel) tracking to the main container and sync it directly to the client with a state packet. - Rendering Optimization:** Cached
BoxColorvalues to speed up rendering loops.
## Stonecutter Multi-Version Development
- Multi-Version Workspace:** We now use **Stonecutter** to develop for both 1.20.1 and 1.21.1 simultaneously.
- Loader & Version Support:** Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
- Development Setup:** Separated development run directories for each version and cleaned up IDE run configurations.
## Bug Fixes & Code Cleanup
- Crash Fix:** Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
- Null Shape Sync:** Resolved a bug where null shapes would sometimes try to sync, causing errors.
- Event Library Update:** Rewrote and restructured the internal
vx-eventslibrary to make it cleaner and easier to maintain. - Constraint Search:** Added a method in
VxConstraintManagerto quickly find constraints using their UU
## Native Migration: Terrain and Contact Systems
- Native C++ Port:** Migrated the core terrain tracking and state management from Java to native C++ to achieve higher simulation fidelity and performance.
- Native Greedy Meshing:** Ported terrain generation to a native C++ greedy meshing implementation for faster collision shape creation.
- Native Contact Architecture:** Refactored the physics contact system into a modular dispatcher-based architecture in C++ with specialized handlers.
- Native State Synchronization:** Offloaded full physics state synchronization to a specialized JNI bridge to reduce Java-side overhead.
- Custom Terrain Collision Shapes:** Replaced standard box-based terrain collision with a custom native shape system.
- TerrainVoxelShape:** Implemented a custom shape to support non-solid blocks (like glass and torches) and filter out internal face collisions.
- Internal Edge Removal:** Enabled enhanced internal edge removal for all bodies to prevent physics objects from catching on block boundaries.
## Terrain Interactions and Mechanics
- Physics-Driven Interactions:** Implemented dynamic interactions for doors, trapdoors, and fence gates that respond realistically to physical forces.
- Impact Effects:** Added mass-proportional localized audio and particle effects triggered by physical terrain impacts.
- Dynamic Block Destruction:** Implemented physics-based terrain impact reactions, including block destruction and material-based transformations.
- Per-Material Configuration:** Introduced data-driven interaction thresholds and vanilla block weights for realistic physics simulation.
- Interaction Refinement:** Increased door and trapdoor interaction thresholds and refined physical weight distribution for better stability.
## Infrastructure and Dependencies
- Custom Jolt-JNI Fork:** Transitioned to an internal
vx-jolt-jnifork (v4.3.1-SNAPSHOT) to enable specialized native features, IDE source support, and optimized library naming. - Modular Library Management:** Implemented an explicit registry system and modularized native loader logic into a dedicated
vx-nativemodule. - Automated JNI Generation:** Implemented automatic JNI header generation to streamline the interface between the Java and C++ layers.
- Global Configuration:** Centralized "magic" physics thresholds into a unified native
GlobalConfigstruct.
## Performance and Networking
- Asynchronous Packet Dispatch:** Moved packet dispatching off the server main thread to eliminate tick-wait latency.
- Adaptive Interpolation:** Replaced fixed interpolation delays with an adaptive system based on measured packet intervals.
- Optimized Terrain Shapes:** Utilized a data-oriented Y-axis sweep-and-prune algorithm to optimize terrain shape generation.
- Lock-Free Networking:** Implemented lock-free network synchronization and broadcast-safe payload management.
- Concurrency Impro
## Native Migration: Terrain and Contact Systems
- Native C++ Port:** Migrated the core terrain tracking and state management from Java to native C++ to achieve higher simulation fidelity and performance.
- Native Greedy Meshing:** Ported terrain generation to a native C++ greedy meshing implementation for faster collision shape creation.
- Native Contact Architecture:** Refactored the physics contact system into a modular dispatcher-based architecture in C++ with specialized handlers.
- Native State Synchronization:** Offloaded full physics state synchronization to a specialized JNI bridge to reduce Java-side overhead.
- Custom Terrain Collision Shapes:** Replaced standard box-based terrain collision with a custom native shape system.
- TerrainVoxelShape:** Implemented a custom shape to support non-solid blocks (like glass and torches) and filter out internal face collisions.
- Internal Edge Removal:** Enabled enhanced internal edge removal for all bodies to prevent physics objects from catching on block boundaries.
## Terrain Interactions and Mechanics
- Physics-Driven Interactions:** Implemented dynamic interactions for doors, trapdoors, and fence gates that respond realistically to physical forces.
- Impact Effects:** Added mass-proportional localized audio and particle effects triggered by physical terrain impacts.
- Dynamic Block Destruction:** Implemented physics-based terrain impact reactions, including block destruction and material-based transformations.
- Per-Material Configuration:** Introduced data-driven interaction thresholds and vanilla block weights for realistic physics simulation.
- Interaction Refinement:** Increased door and trapdoor interaction thresholds and refined physical weight distribution for better stability.
## Infrastructure and Dependencies
- Custom Jolt-JNI Fork:** Transitioned to an internal
vx-jolt-jnifork (v4.3.1-SNAPSHOT) to enable specialized native features, IDE source support, and optimized library naming. - Modular Library Management:** Implemented an explicit registry system and modularized native loader logic into a dedicated
vx-nativemodule. - Automated JNI Generation:** Implemented automatic JNI header generation to streamline the interface between the Java and C++ layers.
- Global Configuration:** Centralized "magic" physics thresholds into a unified native
GlobalConfigstruct.
## Performance and Networking
- Asynchronous Packet Dispatch:** Moved packet dispatching off the server main thread to eliminate tick-wait latency.
- Adaptive Interpolation:** Replaced fixed interpolation delays with an adaptive system based on measured packet intervals.
- Optimized Terrain Shapes:** Utilized a data-oriented Y-axis sweep-and-prune algorithm to optimize terrain shape generation.
- Lock-Free Networking:** Implemented lock-free network synchronization and broadcast-safe payload management.
- Concurrency Impro
## Features
- Body Protection:** Added
VxNoKillBehaviorto protect specific physics bodies from administrative removal commands.
## Fixes
- Multi-Player Sync & Memory Safety:** Resolved an issue where network synchronization was restricted to a single player and fixed a buffer double-release bug through lock-free, broadcast-safe payload management.
## Refactors
- API Consolidation:** Unified internal body retrieval logic to remove redundant methods and streamline the client manager.
## Build
- Dependency Update:** Upgraded Jolt-JNI to version **4.0.1** and adapted to the latest API changes.
## Features
- Body Protection:** Added
VxNoKillBehaviorto protect specific physics bodies from administrative removal commands.
## Fixes
- Multi-Player Sync & Memory Safety:** Resolved an issue where network synchronization was restricted to a single player and fixed a buffer double-release bug through lock-free, broadcast-safe payload management.
## Refactors
- API Consolidation:** Unified internal body retrieval logic to remove redundant methods and streamline the client manager.
## Build
- Dependency Update:** Upgraded Jolt-JNI to version **4.0.1** and adapted to the latest API changes.
## Features
- Composition-Based Architecture:** Transitioned to a data-oriented composition design, replacing the old lifecycle listener system with a flexible behavior-based architecture.
- Advanced Buoyancy System:** Overhauled buoyancy physics featuring fast
PalettedContaineraccess, smooth fluid interpolation, sloped surface normals, and area-scaled forces. - Complex Body Persistence:** Implemented full persistence support for ragdolls, chains, and vehicles, ensuring complex physics structures survive world reloads.
- Dynamic Physics Layers:** Introduced runtime-configurable physics layers with support for ghost box testing and custom collision filtering.
- Global Collision Registry:** Added a centralized registry to prevent ID conflicts between various physics entities and behaviors.
- Namespace-Aware Identifiers:** Implemented decentralized behavior IDs with namespace support to ensure compatibility with third-party mods.
- Persistent Client Tools:** Added client-side persistence for tool configurations, including a UI reset button for default settings.
- Explicit Motion Types:** Introduced explicit motion type management and ensured correct allocation for motion-related properties.
- NetSync Filtering:** Implemented advanced network synchronization filtering within the unified
VxTickBehaviorto optimize bandwidth. - Physics Events:** Added the
prePhysicsTickevent to allow external systems to hook into the simulation loop before physics calculations occur.
## Fixes
- Linux Physics Stability:** Resolved long-standing instability and crashes on Linux by re-implementing batch body locking, enabled by the upgrade to Jolt-JNI 3.10.0.
- Constraint Duplication:** Prevented the instantiation of duplicate physics constraints when loading chunks.
- Client-Side Extrapolation:** Eliminated "jitter" and extrapolation errors by forcing state synchronization for all active physics bodies.
- NeoForge Compatibility:** Fixed a registration crash on NeoForge by splitting the network channel into directional payloads.
- World Geometry Fix:** Resolved issues with bodies falling through the world floor by using the level's base Y instead of a hardcoded value (closes #36).
- Concurrency & Shutdown:** Hardened
VxChunkBasedStorageand theIOProcessoragainst race conditions during concurrent server shutdowns. - Body Persistence Hardening:** Resolved
IndexOutOfBoundsExceptionduring/vxkillcommands and improved overall stability of the body data store. - Buoyancy Stabilization:** Stabilized buoyancy for small physics bodies by implementing normal capping for fluid forces.
## Performance
- Batch Body Locking:** Significantly reduced GC pressure and improved native performance by switching back to batch locking for physics updates.
- Zero-Allocation Networking:** Implemented zero-allocation packet serialization and multiplexing using direct Netty buff
## Features
- Composition-Based Architecture:** Transitioned to a data-oriented composition design, replacing the old lifecycle listener system with a flexible behavior-based architecture.
- Advanced Buoyancy System:** Overhauled buoyancy physics featuring fast
PalettedContaineraccess, smooth fluid interpolation, sloped surface normals, and area-scaled forces. - Complex Body Persistence:** Implemented full persistence support for ragdolls, chains, and vehicles, ensuring complex physics structures survive world reloads.
- Dynamic Physics Layers:** Introduced runtime-configurable physics layers with support for ghost box testing and custom collision filtering.
- Global Collision Registry:** Added a centralized registry to prevent ID conflicts between various physics entities and behaviors.
- Namespace-Aware Identifiers:** Implemented decentralized behavior IDs with namespace support to ensure compatibility with third-party mods.
- Persistent Client Tools:** Added client-side persistence for tool configurations, including a UI reset button for default settings.
- Explicit Motion Types:** Introduced explicit motion type management and ensured correct allocation for motion-related properties.
- NetSync Filtering:** Implemented advanced network synchronization filtering within the unified
VxTickBehaviorto optimize bandwidth. - Physics Events:** Added the
prePhysicsTickevent to allow external systems to hook into the simulation loop before physics calculations occur.
## Fixes
- Linux Physics Stability:** Resolved long-standing instability and crashes on Linux by re-implementing batch body locking, enabled by the upgrade to Jolt-JNI 3.10.0.
- Constraint Duplication:** Prevented the instantiation of duplicate physics constraints when loading chunks.
- Client-Side Extrapolation:** Eliminated "jitter" and extrapolation errors by forcing state synchronization for all active physics bodies.
- NeoForge Compatibility:** Fixed a registration crash on NeoForge by splitting the network channel into directional payloads.
- World Geometry Fix:** Resolved issues with bodies falling through the world floor by using the level's base Y instead of a hardcoded value (closes #36).
- Concurrency & Shutdown:** Hardened
VxChunkBasedStorageand theIOProcessoragainst race conditions during concurrent server shutdowns. - Body Persistence Hardening:** Resolved
IndexOutOfBoundsExceptionduring/vxkillcommands and improved overall stability of the body data store. - Buoyancy Stabilization:** Stabilized buoyancy for small physics bodies by implementing normal capping for fluid forces.
## Performance
- Batch Body Locking:** Significantly reduced GC pressure and improved native performance by switching back to batch locking for physics updates.
- Zero-Allocation Networking:** Implemented zero-allocation packet serialization and multiplexing using direct Netty buff
## Features
- Implemented extended region file format to remove chunk size limits and enable automatic data pruning
- Added hot-map persistence architecture for instant body registration and lookup
- Introduced persistence flags for physics bodies and constraints
- Implemented Jolt-based modular powertrain system with transmission logic
- Added directional fluid flow vectors for advanced buoyancy simulation
- Added new
VxKeyMappingsystem with fallback display names for unbound keys - Added client-side callbacks for body registration lifecycle events
- Enabled automatic creation and deletion of empty region files
- Added CurseForge environment metadata support
## Fixes
- Fixed multiple persistence race conditions causing missing or empty physics data
- Prevented native crashes by validating body existence before buoyancy locking
- Resolved Linux physics instability by replacing batch locking with sequential access
- Ensured inactive and non-dirty bodies persist correctly during chunk save and shutdown
- Fixed gravity desync in native buoyancy implementation
- Fixed terrain velocity prediction causing excessive chunk loading
- Corrected array bounds during body store reallocation
- Ensured synchronous snapshot creation to prevent data loss on shutdown
- Fixed file locking issues by introducing sequential I/O processor
- Fixed multiple edge cases in async persistence flush logic
## Performance
- Overhauled network dispatcher with chunk-centric broadcasting and raw data streams
- Optimized physics update loop by removing integer autoboxing and map lookups
- Migrated terrain system to zero-allocation SoA snapshots with linear memory access
- Replaced map-based body stores with direct array indexing
- Implemented ThreadLocal pooling for network dispatch and physics updates
- Optimized buoyancy broad-phase using low-allocation flow sampling
- Optimized quaternion slerp by removing per-call object allocations
- Eliminated allocation churn in terrain tracker by reusing collections
- Optimized body state packet serialization to avoid temporary arrays
- Integrated native Jolt buoyancy implementation for near-zero GC overhead
## Refactors
- Complete overhaul of physics persistence system for reliability and scalability
- Reworked persistence lifecycle to align with EntityStorage architecture
- Removed VxPhysicsConfig and hardcoded simulation constants for determinism
- Restructured and optimized native library loading mechanism
- Overhauled vehicle architecture with modular component-based design
- Migrated vehicle synchronization to unified
VxVehicleStatemodel - Reorganized Java package structure to match modern conventions
- Removed obsolete batching limits from network configuration
- Removed redundant and unused persistence and storage fields
- Removed issue templates to keep repository minimalist
## Build & Dependencies
- Updated Jolt JNI to version 3.5.2



