Changelog – Version 0.3.2
Features
- Implemented dynamic humanoid ragdoll physics system.
- Added more physically accurate motorcycles.
- Implemented data fixer API for persistent data versioning.
- Implemented physically accurate shape-based buoyancy.
Fixes
- Adapted camera rendering for 1.21+ API changes.
- Prevented race conditions with thread-safe chunk state management.
- Smoothed vehicle steering by processing input every physics tick.
- Stabilized wheel interpolation for sleeping and activating vehicles.
- Corrected buoyancy direction for fully submerged convex shapes.
- Resolved physics gun input lock when opening UI or switching items.
- Implemented client level events to reset body manager on world transitions.
- Corrected icon paths and updated assets.
Performance Improvements
- Overhauled VxChunkDataStore concurrency to eliminate terrain system deadlocks.
- Significantly increased vehicle stability and removed motorcycles due to poor handling.
Refactors & Architecture
- Centralized client physics access with a utility singleton.
- Moved and renamed physics mixins to reflect bodies and constraints handling.
- Encapsulated deterministic seat UUID generation in constructor.
- Refactored seat definition to use a builder pattern.
- Implemented builder pattern for synchronized data definition.
- Converted VxClientClock to an enum singleton.
- Extracted buoyancy calculations into dedicated floater strategies.
- Standardized event API to a consistent namespace pattern.
- Removed unused imports and VxChunkEvent.
Chore & Miscellaneous
- Updated README with docs link.
- Replaced old mod icon with new one.
- Updated mod icon to new version.
Changelog – Version 0.3.1
Features
- Added a new mod icon.
- Generalized wheel sync to vehicle state with speed.
- Added sound effects and allowed terrain-to-terrain chain connections.
- Used LinearCast for chain parts.
- Activated chain bodies upon creation.
- Added client input events for mouse and keyboard.
- Implemented single-body world-anchored constraints.
- Added Chain Creator.
Fixes
- Unified vehicle speed field to resolve NoSuchFieldError.
- Prevented native crash when activating deserialized static bodies.
- Mixin crash on Forge dedicated server fixed.
Refactors & Architecture
- Restructured debug classes and renamed events.
- Simplified and renamed event mixins, fixing minor typos.
- Migrated tool input handlers from mixins to the event API.
- Renamed item-related classes to use Vx prefix.
- Adapted Chain Creator to use world-anchored constraints.
- Overhauled raycasting system to decouple physics logic and add flexible filtering.
Style & Miscellaneous
- Fine-tuned chain link dimensions.
- Removed redundant null checks in VxChainCreatorManager.
- Added ChainCreator entry to README tool list.
- Added supported platforms section to README.
Changelog – Version 0.3.0
Features
- Implemented a precise, VoxelShape-based greedy meshing system for terrain.
- Added a performant two-phase buoyancy system for objects in water.
- Implemented a dedicated renderer system for physics bodies.
- Enabled Continuous Collision Detection (CCD) for cars and bikes to improve high-speed collision accuracy.
- Implemented robust data corruption resistance for saving and loading.
- Improved physics body synchronization through a revamped chunk tracking system.
- Differentiated driver and passenger seat debug hitboxes by color for better visibility.
- Added the ability for the
PhysicsCreatorItemto spawn bodies in an active state directly. - Added explicit player tracking to better manage interactions.
- Added overloads for creating bodies with a definable initial activation state.
- Added a hook that is triggered on sync data updates.
- Added
getJoltBodyoverloads to support direct access viabodyId.
Fixes
- Separated client-only code to prevent
ClassNotFoundExceptionon dedicated servers. - Refined buoyancy calculation by averaging fluid surface height for smoother object movement.
- Improved buoyancy broadphase accuracy by iterating over all AABB blocks instead of sampling.
- Fixed a rare
ClassCastExceptionwhen growing EMotionType arrays in JNI-bound code. - Corrected force application to ensure buoyancy acts relative to the center of mass.
- Applied linear drag at the center of buoyancy, improving torque behavior and rotation stability.
- Corrected the view vector calculation while riding physics vehicles.
- Resolved clipping issues by ensuring atomic body updates.
- Fixed various deadlocks related to persistence, terrain interactions, and body activation.
- Resolved race conditions and large coordinate packing errors.
- Prevented a server crash caused by mishandling client-only fields.
- Ensured that inactive bodies correctly synchronize their initial state.
- Bodies and constraints are now correctly persisted during a world save.
- Sleeping bodies are now correctly activated for buoyancy forces.
- Prevented the immediate activation of newly created bodies for more consistent behavior.
- Fixed an issue that caused arm swinging when using the
PhysicsCreatorItem. - Removed the malfunctioning
PhysicsRemover. - Downgraded verbose info logs to the debug level to reduce console clutter.
- Prevented a crash on body removal by safely calculating cluster bounds.
- Made minor corrections to field names, encoding issues, and JavaDoc formatting.
- Updated acknowledgments with the correct JoltJNI link and naming conventions.
Refactors & Architecture
- Overhauled the mounting system, consolidated Mixins, and improved the overall code structure.
- Unified client and server physics bodies into a single
VxBodyhierarchy. - Centralized physics pause logic into a global utility.
- Simplified object management by removing the
VxUpdateContext. - Centralized seat registration via the
VxMountableinterface. - Switched the persistence logic from an event-based system to Minecraft hooks for improved reliability.
- Converted
VxClientMountingManagerto an enum singleton to improve code structure. - Overhauled the buoyancy pipeline for more stable and realistic flotation behavior.
- Ensured clean separation between client and server logic to maintain compatibility and prevent runtime issues.
Performance
- Refactored to a data-oriented design for improved performance and lower garbage collector load.
- Implemented a grid-based clustering system for massively scalable large-scale terrain tracking.
- I/O tasks for bodies and constraints are now bundled to reduce disk activity.
- Implemented caching for
BoxShapeSettings, terrain shapes, and AABBs in the data store to accelerate terrain tracking. - Refactored the buoyancy system using Structure of Arrays (SoA) and double buffering for better data locality and parallelism.
- Cached body motion types in the data store to eliminate redundant JNI calls per tick.
Tuning
- Increased position and velocity iteration counts for a more stable physics simulation.
- Increased
OBJECTS_PER_TICKin theVxTerrainTrackerto 512 for higher throughput.
Miscellaneous
- Polished internal naming and consistency across buoyancy and physics systems.
- Updated documentation and numerous JavaDocs for clarity and completeness.
- Added English names for the "Box Thrower" and "Magnetizer."
- Cleaned up unnecessary code and renamed mixins to match the new project structure.
- Added author and license headers to relevant files.
Changelog – Version 0.3.0
Fixes
- Separated client-only code to prevent
ClassNotFoundExceptionon dedicated servers. - Refined buoyancy calculation by averaging fluid surface height for smoother object movement.
- Improved buoyancy broadphase accuracy by iterating over all AABB blocks instead of sampling.
- Fixed a rare
ClassCastExceptionwhen growing EMotionType arrays in JNI-bound code. - Corrected force application to ensure buoyancy acts relative to the center of mass.
- Applied linear drag at the center of buoyancy, improving torque behavior and rotation stability.
- Updated acknowledgments with the correct JoltJNI link and naming conventions.
Performance
- Refactored the buoyancy system using Structure of Arrays (SoA) and double buffering for better data locality and parallelism.
- Cached body motion types in the data store to eliminate redundant JNI calls per tick.
Refactors & Architecture
- Overhauled the buoyancy pipeline for more stable and realistic flotation behavior.
- Ensured clean separation between client and server logic to maintain compatibility and prevent runtime issues.
Miscellaneous
- Polished internal naming and consistency across buoyancy and physics systems.
Changelog – Release 0.2.0
Features
- Implemented 3D Greedy Meshing and removed MeshShape usage
- Added motorcycles and refactored vehicle system
- Added client-side raycasting and seat synchronization
- Implemented allocation-free ZLIB compression for batch packets
- Added data-driven synchronization system with adapters for vanilla and Jolt types
- Precise OBB-based seat selection and seat OBB rendering
- Smooth entity position while riding
Fixes
- Stop automatic braking when reversing
- Smooth physics body stopping and perpetual visibility
- Add
isClientSidecheck to entity rendering mixin - Resolve dual hitbox issue for mounted entities
- Prevent duplicate object spawn requests
- Prevent physics pause on integrated LAN servers
- Correct various typos in package and class names
- Render BlockEntities correctly and cache them to prevent render-loop allocations
Refactors & Architecture
- Decouple serialization logic into Codecs
- Overhaul vehicle network synchronization (
VxWheelNetworkDispatcher,VxPacketHandler) - Modularized rendering pipeline for mounted entities
- Separate debug rendering into
VxDebugRenderer - Centralize physics layer logic in
VxLayers - Restructure terrain system: switch from meshes to actual block shapes and boxes, improve performance and stability
- Migrate seat identification from names to UUIDs
- Migrate all standard types to data-driven synchronization system
- Add
Vxprefix to relevant classes
Performance
- Unified body queries into a single batch
- Optimized dispatcher and fixed update packet race conditions
- Cache BlockEntities to reduce render-loop allocations
- Improved method organization in body classes
Tuning
- Lower restitution and friction in MarbleRigidBody
- Increase size argument limits from 20 to 200
Miscellaneous
- Removed unnecessary logs and imports
- Removed test commands and unused classes
- Restructured CONTRIBUTING.md
Changelog – Release
Features
- New
/vxkillcommand with support for custom selectors - Unified
/vxtestcommand for physics tests - Physics performance graph for monitoring system efficiency
- Unified client and server registry
Refactors & Architecture
- Centralized I/O and improved terrain generation
- Refactored physics updater for more efficient state synchronization
- Aligned client object management with server architecture
- Consistent ticking system implementation
- Introduced factory pattern for body creation
- Restructured system architecture and cleaned up API
Performance
- Optimized object tracking in the terrain system
- Removed unnecessary contact listener logic for better performance
- Implemented lock-free, zero-allocation state synchronization
Tuning
- Adjusted physics system limits and iteration settings for more stable simulation
Miscellaneous
- Improved controlled shutdown with NaN checks



