Velthoric

Adds high-performance physics to Minecraft

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

NeoForge

implementation "curse.maven:velthoric-1367260:7882459"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

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 PalettedContainer access, 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 VxTickBehavior to optimize bandwidth.
  • Physics Events: Added the prePhysicsTick event 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 VxChunkBasedStorage and the IOProcessor against race conditions during concurrent server shutdowns.
  • Body Persistence Hardening: Resolved IndexOutOfBoundsException during /vxkill commands 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 long primitives for spatial indexing.
  • JNI Overhead Reduction: Minimized JNI call overhead in VxPhysicsIntersector by 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 VxTickBehavior for consistent execution order.
  • Raycasting Overhaul: Completely rewritten VxRaycaster utility 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 VxPhysicsConfig system 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 VxBodyLifecycleListener and isGameStateDirty arrays; standardized Quaternionfc usage 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 VxServerBodyManager and VxClientBodyManager.
  • 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.