Tags
Creators
Details
Licensed LGPL-3.0-only
Published last year
Updated 3 months ago
All versions
0.8.0
Beta
Velthoric 0.8.0 for Fabric 1.21.16 months ago 784
Compatibility
Minecraft: Java Edition
1.21.1
Platforms
Fabric
Quilt
Supported environments
Client and server
Required content
Any compatible version
Any compatible version
Changes
Changelog - Version 0.8.0
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 Improvements: Optimized contact listener concurrency and terrain material caching to reduce thread contention.
Fixes and Refactors
- Shutdown Deadlocks: Resolved critical world shutdown deadlocks in the physics and terrain systems.
- Memory Safety: Fixed
IllegalReferenceCountExceptionby refactoringVxRawPayloadto use byte arrays. - Simulation Stability: Decoupled the Jolt lifecycle into
VxPhysicsSimulationand resolved physics body tracking initialization issues.
Build and CI
- Reusable Pipelines: Refactored CI workflows into reusable pipelines with automated GitHub release publishing.
- Automated GameTests: Integrated NeoForge and Fabric GameTests into the CI pipeline to verify physics behavior before releases.
- Maven Integration: Implemented a generic Maven publishing system for artifact management.
Documentation
- Technical README: Fully rewritten README focusing on the technical architecture and native JNI implementation.
- API Documentation: Completed comprehensive Javadoc.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:i2yo1LYg:XQjMgPDH"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:i2yo1LYg:XQjMgPDH"
}

