# 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-jni` fork (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-native` module.
- **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 `GlobalConfig` struct.
## 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 `IllegalReferenceCountException` by refactoring `VxRawPayload` to use byte arrays.
- **Simulation Stability:** Decoupled the Jolt lifecycle into `VxPhysicsSimulation` and 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.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }