File Details
Velthoric 0.7.0 for NeoForge 1.21.1
- R
- Apr 6, 2026
- 10.20 MB
- 202
- 1.21.1
- NeoForge
File Name
velthoric-neoforge-0.7.0.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
Changelog – Version 0.7.0
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 buffers to eliminate heap churn.
- Memory Optimization: Eliminated terrain coordinate allocations by utilizing bit-packed
longprimitives for spatial indexing. - JNI Overhead Reduction: Minimized JNI call overhead in
VxPhysicsIntersectorby using reusable static filters and optimized intersection logic. - Efficient State Extraction: Optimized the extraction of physics states from the native simulation via the new
BatchBodyInterface. - Network Dispatcher Pooling: Implemented pooling for the network dispatcher to eliminate allocation stutter during high-frequency updates.
- Debug Charts: Optimized the performance debug chart with vertex batching for more efficient rendering.
Refactors
- Centralized Tick System: Unified all Java-side tick callbacks into a single
VxTickBehaviorfor consistent execution order. - Raycasting Overhaul: Completely rewritten
VxRaycasterutility with cached Jolt filters and full decoupling from Minecraft classes. - Project Reorganization: Major cleanup of the core package hierarchy, moving Behaviors, Managers, and Renderers into specialized sub-system packages.
- Hardcoded Defaults: Removed the dynamic
VxPhysicsConfigsystem in favor of hardcoded constants to ensure simulation determinism across all environments. - Fluid Drag Balancing: Rebalanced fluid drag coefficients for more realistic momentum preservation and interaction.
- Atomic Operations: Implemented atomic container swapping for thread-safe resizing of internal physics stores.
- Cleanups: Removed obsolete
VxBodyLifecycleListenerandisGameStateDirtyarrays; standardizedQuaternionfcusage in conversions.
Build & Dependencies
- Jolt-JNI Upgrade: Updated Jolt-JNI to version 3.10.0 (including intermediate update to 3.9.0 and 3.7.0).
- Nightly Builds: Added a new automated CI workflow for nightly development builds.
- Build Pipeline: Optimized build paths for NeoForge and relocated development shadow jars to intermediate directories.
Documentation
- Behavior API: Added exhaustive Javadoc to all behavior fields and methods to support add-on development.
- Standardization: Completed and standardized Javadoc for
VxServerBodyManagerandVxClientBodyManager. - README Rewrite: Fully rewrote the project README to reflect the new architecture and capabilities.
- Correction: Fixed various inconsistent and duplicate Javadoc entries across the physics engine core.