Перейти к содержимому
Mineforgian

Velthoric

Adds high-performance physics to Minecraft

Загрузки
8K
Подписчики
89
Обновлён
20 июня 2026 г.
Лицензия
LGPL-3.0-only

Опубликован 13 сентября 2025 г.

Velthoric Icon

Velthoric

Redefining physics in the world of Minecraft.

Environment   Hosted by Cloudsmith

Fabric Forge NeoForge Quilt

👋 Welcome to Velthoric

Velthoric is a project dedicated to bringing advanced, high-performance physics to Minecraft.

Important Note: Right now, this mod is a Proof of Concept. This means we are currently testing what’s possible and building the foundation. It is a work in progress, but it won't stay this way forever. We have big plans to turn this into a fully-fledged, stable physics engine for the community.

💥 What makes this mod special?

We aren't just adding simple animations. Velthoric integrates the professional Jolt Physics engine (via JoltJNI) directly into Minecraft. This allows for interactions that feel heavy, realistic, and incredibly smooth.

Current Features:

  • True Rigid and Soft Bodies: Interact with solid objects, or play with deformable things like cloth and ropes.
  • Working Vehicles: Drive cars and motorcycles that feature actual suspension and wheel physics.
  • Realistic Ragdolls: Watch living entities react to the world with physical skeletal systems.
  • Buoyancy: Objects actually float in water and lava based on their weight and shape.
  • World Interaction: Convert standard blocks into dynamic physics objects that fall and collide.
  • Optimized Performance: Built using a "Structure of Arrays" (SoA) architecture to handle thousands of objects without killing your frame rate.
  • Persistence: Everything stays where it is. Physics bodies are saved with your world and synced perfectly between the server and the client.

🎮 How to play with it

You can test the engine right now using these commands:

  • /vxsummon: Spawn objects like boxes, ropes, or marbles.
    • Try this to test a vehicle: /vxsummon velthoric:car ~ ~ ~ (Use F3 + B to see where to sit).
  • /vxtest: A quick way to spawn debug setups like chain grids or soft bodies.
  • /vxkill: Use this to clean up. You can target specific types of objects or everything nearby.
    • Example: /vxkill @x[type=velthoric:box,limit=5,sort=nearest]

🔧 Tools included

We’ve added several tools to help you manipulate the world:

  • PhysicsGun: Grab, move, and throw objects around.
  • Magnetizer: Push or pull things with magnetic force.
  • Launchers: Special tools to shoot boxes or ragdolls into the air.
  • ChainCreator: Link objects together or anchor them to the ground.

Hint: You can press TAB while holding any tool to open a menu and tweak settings like strength and range.


💻 Supported Platforms

Because Velthoric relies on native code for the physics engine, it currently supports:

  • Windows (x86_64)
  • Linux (x86_64 and Arm64)
  • MacOS (x86_64 and Arm64)

Warning: Any other platforms, such as 32-bit systems or Android, are not supported and will result in a crash.

⚠️ Feedback and Bug Reports

If you find a bug or a compatibility issue, please let us know on the issue tracker:

GitHub Issues

🙏 Acknowledgments

This project wouldn't be possible without these amazing resources:

Ченджлог

0.9.0Бета1.21.1 · 20 июня 2026 г.

Changelog – Version 0.9.0

This update introduces our new Stonecutter multi-version development setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.

Gameplay & Features

  • New Weld Tool: Added a tool that lets you weld different physics bodies together so they stick.
  • Physics Gun Fixes: Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
  • Removed Vehicles: We removed the old vehicle system and built-in drivable bodies for now.

Collision & Physics Changes

  • New Collision Shape System: Implemented VxCollisionShape to handle shape definitions and sync them properly.
  • Debug Rendering: Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
  • Direct NIO Memory: Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
  • ID-Driven Behaviors: Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
  • Activation State: Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.

Performance & Sync

  • Faster JNI Bridge: Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
  • Shape Caching: Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
  • Smarter Persistence (TLV System): Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
  • Better Velocity Sync: Moved angular velocity (angVel) tracking to the main container and sync it directly to the client with a state packet.
  • Rendering Optimization: Cached BoxColor values to speed up rendering loops.

Stonecutter Multi-Version Development

  • Multi-Version Workspace: We now use Stonecutter to develop for both 1.20.1 and 1.21.1 simultaneously.
  • Loader & Version Support: Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
  • Development Setup: Separated development run directories for each version and cleaned up IDE run configurations.

Bug Fixes & Code Cleanup

  • Crash Fix: Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
  • Null Shape Sync: Resolved a bug where null shapes would sometimes try to sync, causing errors.
  • Event Library Update: Rewrote and restructured the internal vx-events library to make it cleaner and easier to maintain.
  • Constraint Search: Added a method in VxConstraintManager to quickly find constraints using their UUID.

Build & CI (Development)

  • Gradle Update: Upgraded Gradle to 9.4.1 and added the Foojay toolchain resolver.
  • Smarter Workflows: Made GitHub Actions fully dynamic. Workflows now automatically build, test, and package artifacts for all target versions.
  • Nightly Builds: Set up automatic Maven snapshot publishing for nightly workflows.
  • Dependency Cleanups: Used modLocalRuntime to keep testing mods out of published files.
0.9.0Бета1.21.1 · 20 июня 2026 г.

Changelog – Version 0.9.0

This update introduces our new Stonecutter multi-version development setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.

Gameplay & Features

  • New Weld Tool: Added a tool that lets you weld different physics bodies together so they stick.
  • Physics Gun Fixes: Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
  • Removed Vehicles: We removed the old vehicle system and built-in drivable bodies for now.

Collision & Physics Changes

  • New Collision Shape System: Implemented VxCollisionShape to handle shape definitions and sync them properly.
  • Debug Rendering: Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
  • Direct NIO Memory: Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
  • ID-Driven Behaviors: Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
  • Activation State: Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.

Performance & Sync

  • Faster JNI Bridge: Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
  • Shape Caching: Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
  • Smarter Persistence (TLV System): Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
  • Better Velocity Sync: Moved angular velocity (angVel) tracking to the main container and sync it directly to the client with a state packet.
  • Rendering Optimization: Cached BoxColor values to speed up rendering loops.

Stonecutter Multi-Version Development

  • Multi-Version Workspace: We now use Stonecutter to develop for both 1.20.1 and 1.21.1 simultaneously.
  • Loader & Version Support: Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
  • Development Setup: Separated development run directories for each version and cleaned up IDE run configurations.

Bug Fixes & Code Cleanup

  • Crash Fix: Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
  • Null Shape Sync: Resolved a bug where null shapes would sometimes try to sync, causing errors.
  • Event Library Update: Rewrote and restructured the internal vx-events library to make it cleaner and easier to maintain.
  • Constraint Search: Added a method in VxConstraintManager to quickly find constraints using their UUID.

Build & CI (Development)

  • Gradle Update: Upgraded Gradle to 9.4.1 and added the Foojay toolchain resolver.
  • Smarter Workflows: Made GitHub Actions fully dynamic. Workflows now automatically build, test, and package artifacts for all target versions.
  • Nightly Builds: Set up automatic Maven snapshot publishing for nightly workflows.
  • Dependency Cleanups: Used modLocalRuntime to keep testing mods out of published files.
0.9.0Бета1.20.1 · 20 июня 2026 г.

Changelog – Version 0.9.0

This update introduces our new Stonecutter multi-version development setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.

Gameplay & Features

  • New Weld Tool: Added a tool that lets you weld different physics bodies together so they stick.
  • Physics Gun Fixes: Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
  • Removed Vehicles: We removed the old vehicle system and built-in drivable bodies for now.

Collision & Physics Changes

  • New Collision Shape System: Implemented VxCollisionShape to handle shape definitions and sync them properly.
  • Debug Rendering: Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
  • Direct NIO Memory: Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
  • ID-Driven Behaviors: Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
  • Activation State: Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.

Performance & Sync

  • Faster JNI Bridge: Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
  • Shape Caching: Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
  • Smarter Persistence (TLV System): Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
  • Better Velocity Sync: Moved angular velocity (angVel) tracking to the main container and sync it directly to the client with a state packet.
  • Rendering Optimization: Cached BoxColor values to speed up rendering loops.

Stonecutter Multi-Version Development

  • Multi-Version Workspace: We now use Stonecutter to develop for both 1.20.1 and 1.21.1 simultaneously.
  • Loader & Version Support: Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
  • Development Setup: Separated development run directories for each version and cleaned up IDE run configurations.

Bug Fixes & Code Cleanup

  • Crash Fix: Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
  • Null Shape Sync: Resolved a bug where null shapes would sometimes try to sync, causing errors.
  • Event Library Update: Rewrote and restructured the internal vx-events library to make it cleaner and easier to maintain.
  • Constraint Search: Added a method in VxConstraintManager to quickly find constraints using their UUID.

Build & CI (Development)

  • Gradle Update: Upgraded Gradle to 9.4.1 and added the Foojay toolchain resolver.
  • Smarter Workflows: Made GitHub Actions fully dynamic. Workflows now automatically build, test, and package artifacts for all target versions.
  • Nightly Builds: Set up automatic Maven snapshot publishing for nightly workflows.
  • Dependency Cleanups: Used modLocalRuntime to keep testing mods out of published files.
0.9.0Бета1.20.1 · 20 июня 2026 г.

Changelog – Version 0.9.0

This update introduces our new Stonecutter multi-version development setup. This allows us to work on Minecraft 1.20.1 and 1.21.1 at the same time, supporting both Forge and Fabric. We also added new tools, improved performance with JNI caching, and completely rebuilt how we save and sync physics data.

Gameplay & Features

  • New Weld Tool: Added a tool that lets you weld different physics bodies together so they stick.
  • Physics Gun Fixes: Fixed the physics gun so it doesn't grab kinematic and static (non-moving) bodies.
  • Removed Vehicles: We removed the old vehicle system and built-in drivable bodies for now.

Collision & Physics Changes

  • New Collision Shape System: Implemented VxCollisionShape to handle shape definitions and sync them properly.
  • Debug Rendering: Added modular debug lines to render collision shapes, making it much easier to see physics boundaries in-game.
  • Direct NIO Memory: Changed physics body data containers to use direct NIO buffers. This makes reading and writing physics data faster.
  • ID-Driven Behaviors: Rebuilt the physics behavior system to use simple IDs. We also changed sync behaviors to use clean, declarative callbacks.
  • Activation State: Bodies now properly save and sync whether they are active or resting. Fixed an issue where some bodies were forced to be dynamic.

Performance & Sync

  • Faster JNI Bridge: Optimized how we get AABBs on the client using Jolt shapes. We did this by batching JNI calls.
  • Shape Caching: Added shape caching inside the JNI bridge. This fixes stuttering and lag when rendering or creating compound shapes.
  • Smarter Persistence (TLV System): Built a high-performance persistence system using a custom schema (TLV format). It cleanly saves chunk data, behavior bits, and ignores collisions between specific pairs of bodies.
  • Better Velocity Sync: Moved angular velocity (angVel) tracking to the main container and sync it directly to the client with a state packet.
  • Rendering Optimization: Cached BoxColor values to speed up rendering loops.

Stonecutter Multi-Version Development

  • Multi-Version Workspace: We now use Stonecutter to develop for both 1.20.1 and 1.21.1 simultaneously.
  • Loader & Version Support: Fully set up Stonecutter branches to compile and export for both Forge and Fabric.
  • Development Setup: Separated development run directories for each version and cleaned up IDE run configurations.

Bug Fixes & Code Cleanup

  • Crash Fix: Fixed a dangerous race condition when removing bodies that caused a double-destruction crash.
  • Null Shape Sync: Resolved a bug where null shapes would sometimes try to sync, causing errors.
  • Event Library Update: Rewrote and restructured the internal vx-events library to make it cleaner and easier to maintain.
  • Constraint Search: Added a method in VxConstraintManager to quickly find constraints using their UUID.

Build & CI (Development)

  • Gradle Update: Upgraded Gradle to 9.4.1 and added the Foojay toolchain resolver.
  • Smarter Workflows: Made GitHub Actions fully dynamic. Workflows now automatically build, test, and package artifacts for all target versions.
  • Nightly Builds: Set up automatic Maven snapshot publishing for nightly workflows.
  • Dependency Cleanups: Used modLocalRuntime to keep testing mods out of published files.
0.8.0Бета1.21.1 · 10 мая 2026 г.

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.
0.8.0Бета1.21.1 · 10 мая 2026 г.

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.
0.7.1Бета1.21.1 · 20 апреля 2026 г.

Changelog – Version 0.7.1

Features

  • Body Protection: Added VxNoKillBehavior to protect specific physics bodies from administrative removal commands.

Fixes

  • Multi-Player Sync & Memory Safety: Resolved an issue where network synchronization was restricted to a single player and fixed a buffer double-release bug through lock-free, broadcast-safe payload management.

Refactors

  • API Consolidation: Unified internal body retrieval logic to remove redundant methods and streamline the client manager.

Build

  • Dependency Update: Upgraded Jolt-JNI to version 4.0.1 and adapted to the latest API changes.
0.7.1Бета1.21.1 · 20 апреля 2026 г.

Changelog – Version 0.7.1

Features

  • Body Protection: Added VxNoKillBehavior to protect specific physics bodies from administrative removal commands.

Fixes

  • Multi-Player Sync & Memory Safety: Resolved an issue where network synchronization was restricted to a single player and fixed a buffer double-release bug through lock-free, broadcast-safe payload management.

Refactors

  • API Consolidation: Unified internal body retrieval logic to remove redundant methods and streamline the client manager.

Build

  • Dependency Update: Upgraded Jolt-JNI to version 4.0.1 and adapted to the latest API changes.

Комментарии

Загружаем…