mirror of
https://github.com/horizon-rust/horizon.git
synced 2026-11-12 18:35:16 -10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66e41ed573 | ||
|
|
72542a89e2 | ||
|
|
0734daa911 | ||
|
|
f2c7a2d359 | ||
|
|
27a32cc30d | ||
|
|
8cdec2c8d9 | ||
|
|
2e4c4d1861 |
No files matched your search
@@ -1,46 +0,0 @@
|
||||
name: macOS shader research
|
||||
on:
|
||||
workflow_dispatch:
|
||||
permissions:
|
||||
contents: read
|
||||
jobs:
|
||||
shader-worlds:
|
||||
runs-on: macos-26
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.12'
|
||||
- uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: '25'
|
||||
- name: Build original mod and private probe dependencies
|
||||
run: python tools/build_mod.py
|
||||
- name: Verify required cinematic shaders in OpenGL and Vulkan worlds
|
||||
run: |
|
||||
python - <<'PY'
|
||||
import json, subprocess, sys
|
||||
from pathlib import Path
|
||||
observations = []
|
||||
for backend in ['opengl', 'vulkan']:
|
||||
case = ['--profile', 'cinematic', '--backend', backend, '--world', '--shaders']
|
||||
result = subprocess.run([sys.executable, 'tools/test_client_graphics.py', '--native-display', *case], capture_output=True, text=True)
|
||||
print(result.stdout, end='', flush=True)
|
||||
print(result.stderr, end='', flush=True)
|
||||
observation = {'case': case, 'exit_code': result.returncode}
|
||||
if result.returncode:
|
||||
marker = 'HORIZON_FIXTURE_FAILURE '
|
||||
observation['failure'] = [json.loads(line.split(marker, 1)[1]) for line in result.stdout.splitlines() if marker in line]
|
||||
else:
|
||||
observation['report'] = json.loads(Path('dist/client-graphics-smoke.json').read_text())
|
||||
observations.append(observation)
|
||||
Path('dist/client-graphics-shader-research.json').write_text(json.dumps(observations, indent=2) + '\n')
|
||||
sys.exit(int(any(item['exit_code'] for item in observations)))
|
||||
PY
|
||||
- name: Retain selected observations including failed cases
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macos-shader-observations
|
||||
path: dist/client-graphics-shader-research.json
|
||||
@@ -1,59 +0,0 @@
|
||||
name: macOS Vulkan research
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
world:
|
||||
description: Create or open disposable demo worlds instead of title probes
|
||||
type: boolean
|
||||
default: false
|
||||
permissions:
|
||||
contents: read
|
||||
jobs:
|
||||
native-probes:
|
||||
runs-on: macos-26
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.12'
|
||||
- uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: '25'
|
||||
- name: Build original mod and private probe dependencies
|
||||
run: python tools/build_mod.py
|
||||
- name: Probe vanilla, core and distant-terrain Vulkan cases
|
||||
env:
|
||||
HORIZON_GRAPHICS_WORLD: ${{ inputs.world }}
|
||||
run: |
|
||||
python - <<'PY'
|
||||
import json, os, subprocess, sys
|
||||
from pathlib import Path
|
||||
cases = [
|
||||
['--profile', 'baseline', '--backend', 'vulkan'],
|
||||
['--profile', 'core-performance', '--backend', 'vulkan'],
|
||||
['--profile', 'vulkan'],
|
||||
]
|
||||
if os.environ.get('HORIZON_GRAPHICS_WORLD') == 'true':
|
||||
cases = [case + ['--world'] for case in cases]
|
||||
observations = []
|
||||
for case in cases:
|
||||
result = subprocess.run([sys.executable, 'tools/test_client_graphics.py', '--native-display', *case], capture_output=True, text=True)
|
||||
print(result.stdout, end='', flush=True)
|
||||
print(result.stderr, end='', flush=True)
|
||||
observation = {'case': case, 'exit_code': result.returncode}
|
||||
if result.returncode:
|
||||
marker = 'HORIZON_FIXTURE_FAILURE '
|
||||
observation['failure'] = [json.loads(line.split(marker, 1)[1]) for line in result.stdout.splitlines() if marker in line]
|
||||
else:
|
||||
observation['report'] = json.loads(Path('dist/client-graphics-smoke.json').read_text())
|
||||
observations.append(observation)
|
||||
Path('dist/client-graphics-vulkan-research.json').write_text(json.dumps(observations, indent=2) + '\n')
|
||||
sys.exit(int(any(item['exit_code'] for item in observations)))
|
||||
PY
|
||||
- name: Retain selected observations including failed cases
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macos-vulkan-observations
|
||||
path: dist/client-graphics-vulkan-research.json
|
||||
@@ -16,3 +16,5 @@
|
||||
/dist/
|
||||
/mods/horizon/build/
|
||||
/saves/
|
||||
/tools/logs/
|
||||
.DS_Store
|
||||
@@ -12,20 +12,37 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="#getting-it"><b>Get started</b></a> ·
|
||||
<a href="#download"><b>Download</b></a> ·
|
||||
<a href="#screenshots"><b>Screenshots</b></a> ·
|
||||
<a href="#project-status"><b>Parity status</b></a> ·
|
||||
<a href="docs/native-client.md"><b>Native client guide</b></a>
|
||||
<a href="docs/README.md"><b>Documentation</b></a>
|
||||
</p>
|
||||
|
||||
# Horizon
|
||||
|
||||
A Rust rewrite of Minecraft: Java Edition 26.3 that aims for one-to-one vanilla parity, checked against the game itself with differential tests.
|
||||
A Rust rewrite of Minecraft: Java Edition 26.3 built for one-to-one vanilla parity, checked against the game itself with differential tests.
|
||||
|
||||
**Status:** in development. The native client is playable on Linux, macOS (Apple Silicon) and Windows; Java parity is 100% of what its harnesses compare, pending the final audit (see [Project status](#project-status)).
|
||||
Every subsystem matches vanilla in all 281 parity harnesses, on Linux and macOS: 100% of what the harnesses compare (see [Project status](#project-status)). The native client is playable on Linux, macOS (Apple Silicon) and Windows.
|
||||
|
||||
> Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft. Horizon contains no Minecraft code, assets or data: you need your own legally obtained copy of Minecraft: Java Edition 26.3.
|
||||
|
||||
## Download
|
||||
|
||||
**[Download the Horizon launcher](https://github.com/ludovic111/horizon/releases?q=launcher-v&expanded=true)** for Linux x86-64, macOS Apple Silicon or Windows x64: take the newest `launcher-v*` release (currently [launcher-v0.1.1](https://github.com/ludovic111/horizon/releases/tag/launcher-v0.1.1)); the launcher then updates itself. The launcher is the way to get Horizon: it installs and updates the game, prepares its resources from your own copy of Minecraft, and starts the client or a dedicated server.
|
||||
|
||||
**You need** Minecraft: Java Edition installed with the official launcher, with 26.3 played once; Python 3.10 or newer and Java 25 (a JDK, e.g. Eclipse Temurin 25) for the one-time resource preparation; and a GPU with Vulkan on Linux and Windows, or any Apple Silicon Mac.
|
||||
|
||||
### The launcher
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="50%"><img src="launcher/docs/play.png" alt="The launcher's Play page"></td>
|
||||
<td width="50%"><img src="launcher/docs/versions.png" alt="The launcher's Versions page"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
It lists Horizon's releases and installs the build for your platform, shows each release's patch notes and the roadmap, updates Horizon and itself, and doubles as a command-line tool and an MCP server. See [the launcher's README](launcher/README.md).
|
||||
|
||||
## Screenshots
|
||||
|
||||
Captured in the Rust client itself, with vanilla assets and no mods or shaders.
|
||||
@@ -69,22 +86,14 @@ The [native client](docs/native-client.md) opens on a vanilla-style title screen
|
||||
- shields, maps, books, fireworks, beacons, advancements and statistics;
|
||||
- Anvil saves, joining vanilla servers, and opening a world to LAN.
|
||||
|
||||
## Getting it
|
||||
## Build from source
|
||||
|
||||
Builds for **Linux x86-64**, **macOS Apple Silicon** and **Windows x64** are attached to the [releases](https://github.com/ludovic111/horizon/releases). Each folder holds the game, the resource preparation tool and a `PLAY.txt`; the first start prepares the resources from your own copy of the game, as below. You can also build from source.
|
||||
|
||||
**Platform.** A GPU with Vulkan on Linux and Windows, or any Apple Silicon Mac. Development and the vanilla harnesses run on Linux.
|
||||
|
||||
**Requirements.** Python 3.10 or newer and JDK 25 (for resource preparation). To build from source: Rust 1.90 or newer, and on Linux the ALSA development headers (`libasound2-dev` on Debian and Ubuntu).
|
||||
|
||||
### Bring your own copy
|
||||
For developers. Requirements: Rust 1.90 or newer, Python 3.10 or newer, JDK 25, and on Linux the ALSA development headers (`libasound2-dev` on Debian and Ubuntu). Development and the vanilla harnesses run on Linux.
|
||||
|
||||
Horizon contains no game files and never downloads them. It builds its resources from **your own copy** of Minecraft: Java Edition 26.3, verified against the checksums in `research-lock.json`:
|
||||
|
||||
1. **Client:** install Java Edition with the official launcher and play 26.3 once. Horizon reads `versions/26.3/`, `libraries/` and `assets/` from the launcher's game directory (`~/.minecraft` on Linux). If yours lives elsewhere, pass `--minecraft-dir` or set `HORIZON_MINECRAFT_DIR`.
|
||||
2. **Server jar:** download the 26.3 server jar yourself, from [minecraft.net/download/server](https://www.minecraft.net/en-us/download/server) while 26.3 is the current release, or otherwise from the `downloads.server.url` in your launcher's `versions/26.3/26.3.json`. Pass it with `--server-jar` or set `HORIZON_SERVER_JAR`. It is only needed the first time.
|
||||
|
||||
### Build and run
|
||||
2. **Server jar:** the 26.3 server jar, from the `downloads.server.url` in your launcher's `versions/26.3/26.3.json` (or [minecraft.net/download/server](https://www.minecraft.net/en-us/download/server) while 26.3 is the current release). Pass it with `--server-jar` or set `HORIZON_SERVER_JAR`. It is only needed the first time.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/ludovic111/horizon.git
|
||||
@@ -96,22 +105,11 @@ cargo run --release -p horizon-client
|
||||
|
||||
Everything prepared lands in the gitignored `.local/`. It is derived from the game: never commit it or share it.
|
||||
|
||||
## Usage
|
||||
|
||||
The client starts on the title screen. Command-line options (`--world`, `--seed`, `--creative`, `--render-distance`), controls, scripting through `horizon-ctl`, and packaging for another of your own Linux machines are described in [the native client guide](docs/native-client.md).
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Native client](docs/native-client.md): running, options, controls, scripting and architecture.
|
||||
- [Rust rewrite status](docs/rust-parity.md): completion criteria and per-area scope.
|
||||
- Parity notes: [block behaviours and ticking](docs/parity/blocks.md), [section meshing](docs/parity/meshing.md).
|
||||
- [Decompilation and Rust research lab](docs/research-lab.md): the local game inspection workspace and the first research crates.
|
||||
- [Decompilation status](docs/decompilation-status.md).
|
||||
- [Java performance packs](docs/java-packs.md): the earlier, no longer developed Java track.
|
||||
The client starts on the title screen. Command-line options (`--world`, `--seed`, `--creative`, `--render-distance`, `--dedicated`), controls, scripting through `horizon-ctl`, and the architecture are described in [the native client guide](docs/native-client.md). The rest of the documentation is indexed in [docs/README.md](docs/README.md), including [the parity workflow](docs/parity-workflow.md).
|
||||
|
||||
## Project status
|
||||
|
||||
The table below is the project's own audit of each subsystem. Every subsystem now matches vanilla in every harness that compares it. 100% means 100% of what the harnesses compare, not proof that nothing else differs. Parity is declared complete only after the from-scratch audit (`tools/parity.py --all` on Linux and macOS) and the launch checks on packaged builds pass; see the roadmap.
|
||||
The table below is the project's own audit of each subsystem. Every subsystem now matches vanilla in every harness that compares it. 100% means 100% of what the harnesses compare, not proof that nothing else differs. The remaining known differences and the final checks are listed in the roadmap.
|
||||
|
||||
### Java parity: 100%
|
||||
|
||||
@@ -140,28 +138,13 @@ them too (Rust uses Java's own float maths on each platform).
|
||||
| Audio | 1 | None: the sound engine, sound events, music, situational music, ambience and subtitles match vanilla |
|
||||
| Block behaviours and ticking | 1 | None: block updates, random ticks, redstone, dispensers (6,000 cases), crafters (4,000 crafts), block entity removal (containers spill, 4,000 cases), copper golem chest sorting and the sculk family (435 scenarios: shrieker warnings and warden summoning included) match vanilla |
|
||||
|
||||
### What's new since the previous version
|
||||
|
||||
- **Every subsystem matches vanilla** in its harnesses: Java parity goes from 88% to 100% of what the harnesses compare.
|
||||
- **Dedicated server:** `horizon-client --dedicated --nogui` runs a server that vanilla clients can join (offline mode), with vanilla's server.properties, status ping, chat, recipes, advancements and command tree; Horizon also joins vanilla servers, and LAN discovery matches vanilla.
|
||||
- **Worlds from 1.8 onwards** open and are upgraded as vanilla does, superflat worlds included, along with old options.txt and creative hotbars.
|
||||
- **Mob AI matches vanilla** tick by tick in 92 scenarios: villagers (breeding and gossip included), the warden and the sculk shrieker summoning it, ghastlings and copper golems sorting chests.
|
||||
- **Spawned mobs' gear and enchantments** match vanilla over 24,000 cases.
|
||||
- **Screens:** the resource pack screen, the open chat (input, history, command suggestions), the recipe book (drawing, search, ingredient placement), the loom's banner preview, End gateway beams, and player-list heads drawn from players' skins.
|
||||
- **Render distance 2** now loads (it used to stay on "Loading terrain…").
|
||||
- **macOS gives vanilla's results** in every harness: Rust now uses the float maths Java uses on each platform.
|
||||
|
||||
### Roadmap
|
||||
|
||||
1. A from-scratch audit (`tools/parity.py --all`) on Linux and on macOS.
|
||||
2. Launch checks on the packaged Linux, macOS and Windows builds.
|
||||
3. Remaining known differences: online-mode servers (Mojang's session servers) are not supported; skins served over https show the default skin unless already cached; pack icons show the unknown-pack texture in game; the creative hotbar keys (C/X) aren't wired to the hotbar loader; item tooltips lack attribute lines.
|
||||
**Known differences.** Online-mode servers (Mojang's session servers) are not supported; skins served over https show the default skin unless already cached; pack icons show the unknown-pack texture in game; the creative hotbar keys (C/X) aren't wired to the hotbar loader; item tooltips lack attribute lines.
|
||||
|
||||
The rewrite is complete when it reaches one-to-one parity and packaged native builds pass the launch checks in [Rust rewrite status](docs/rust-parity.md#completion-criteria-and-playable-builds).
|
||||
**Final checks.** A from-scratch audit (`tools/parity.py --all`) on Linux and on macOS, and the launch checks on the packaged Linux, macOS and Windows builds listed in [Rust rewrite status](docs/rust-parity.md#completion-criteria-and-playable-builds).
|
||||
|
||||
### After the rewrite
|
||||
|
||||
Once Horizon matches vanilla, the plan is to build on that exact base:
|
||||
**Next.** With vanilla parity as the base:
|
||||
|
||||
- **Performance:** optimize the client and the server as far as they can go (rendering, chunk generation and meshing, memory, multithreaded ticking) while the differential harnesses keep gameplay identical to vanilla.
|
||||
- **Modding support:** a stable API for writing mods against Horizon.
|
||||
|
||||
@@ -1,401 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"measurement": "Client scene startup, framebuffer readback and clean exit; not a performance benchmark",
|
||||
"release_binary": "0.20.0",
|
||||
"production_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"macos_required_ci": {
|
||||
"run": 37192178667,
|
||||
"source_commit": "a5000edf11094e00ebef0fc362aa4adc322f2df6",
|
||||
"all_jobs_passed": true,
|
||||
"reports": {
|
||||
"title": {
|
||||
"schema": 1,
|
||||
"platform": "macOS-26.6.2-arm64-arm-64bit",
|
||||
"architecture": "arm64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "title",
|
||||
"title_screen_observed": true,
|
||||
"world_loaded": false,
|
||||
"ready_client_ticks": 53,
|
||||
"window_active": true,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1525,
|
||||
"gpu": "Apple Software Renderer",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.1 APPLE-23.1.1",
|
||||
"private_png_sha256": "ed503082baca3a8646e7e864bf363e6e2a705a2b4aade2ec4bae6d3a108b07ab",
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "opengl",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"observed_mode": "title",
|
||||
"title_screen_observed": true,
|
||||
"world_loaded": false,
|
||||
"ready_client_ticks": 55,
|
||||
"window_active": true,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1855,
|
||||
"gpu": "Apple Software Renderer",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.1 APPLE-23.1.1",
|
||||
"private_png_sha256": "959fe6afbe1897cd9711c083e88ccc617ee9d8669983987abda84e0f5979e82d",
|
||||
"profile": "m2-balanced",
|
||||
"preferred_backend": "opengl",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
},
|
||||
"world": {
|
||||
"schema": 1,
|
||||
"platform": "macOS-26.6.2-arm64-arm-64bit",
|
||||
"architecture": "arm64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 40,
|
||||
"window_active": true,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1537,
|
||||
"gpu": "Apple Software Renderer",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.1 APPLE-23.1.1",
|
||||
"private_png_sha256": "31be5cc8188b3494d76232cba79cf320a64523b4906ab720a38997a125eb37fa",
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "opengl",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 40,
|
||||
"window_active": true,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 2074,
|
||||
"gpu": "Apple Software Renderer",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.1 APPLE-23.1.1",
|
||||
"private_png_sha256": "0929c865d723fe0eea8f37bcc45e9636c6f342d04fe507f9bd592dfd30d73f42",
|
||||
"profile": "m2-balanced",
|
||||
"preferred_backend": "opengl",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"earlier_vulkan_research": {
|
||||
"run": 37191171799,
|
||||
"source_commit": "3858ab38b51f434ebe892b564e013c7c8bcaba45",
|
||||
"outcomes": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"profile": "baseline",
|
||||
"preferred_backend": "vulkan",
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"expected_demo_authentication_errors_observed": true
|
||||
},
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "vulkan",
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"expected_demo_authentication_errors_observed": true
|
||||
},
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"profile": "vulkan",
|
||||
"preferred_backend": "vulkan",
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"expected_demo_authentication_errors_observed": true
|
||||
}
|
||||
],
|
||||
"full_private_logs_uploaded": false,
|
||||
"readback_request_stage_not_yet_captured": true
|
||||
},
|
||||
"selected_local_software_checks": {
|
||||
"linux-opengl": {
|
||||
"title_screen_observed": true,
|
||||
"title_client_ticks": 56,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 800,
|
||||
"sampled_pixels": 4288,
|
||||
"distinct_sampled_rgb": 1762,
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.5 (Core Profile) Mesa 26.0.8-1ubuntu0.3",
|
||||
"private_png_sha256": "cf4eaa7d576ec8f608205258774fbd2384bf5382da86b60628d590f959145fd3",
|
||||
"profile": "core-performance",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
},
|
||||
"linux-vulkan": {
|
||||
"title_screen_observed": true,
|
||||
"title_client_ticks": 56,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 800,
|
||||
"sampled_pixels": 4288,
|
||||
"distinct_sampled_rgb": 1743,
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.4.335 llvmpipe Mesa 26.0.8-1ubuntu0.3 (LLVM 21.1.8)",
|
||||
"private_png_sha256": "edfc9b8431505c9c009da7bb8be0ed5676effb90757cd4ae4bda525e4db5da8c",
|
||||
"profile": "vulkan",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
},
|
||||
"linux-world-core": {
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 51,
|
||||
"window_active": true,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 800,
|
||||
"sampled_pixels": 4288,
|
||||
"distinct_sampled_rgb": 1297,
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.5 (Core Profile) Mesa 26.0.8-1ubuntu0.3",
|
||||
"private_png_sha256": "1a8ba681681f5e37986e1b411e5ebc80d47279c54368f43f935707092b70ffd0",
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "opengl",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
},
|
||||
"linux-world-balanced": {
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 40,
|
||||
"window_active": true,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 800,
|
||||
"sampled_pixels": 4288,
|
||||
"distinct_sampled_rgb": 1551,
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.5 (Core Profile) Mesa 26.0.8-1ubuntu0.3",
|
||||
"private_png_sha256": "82ced9bcf7178a35063e6a7fa9049fe7cfcf26dcb92aace59de6bb022609833a",
|
||||
"profile": "m2-balanced",
|
||||
"preferred_backend": "opengl",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"limits": [
|
||||
"macOS OpenGL uses Apple Software Renderer; Vulkan exposes Apple Paravirtual device. No physical M2 GPU performance test.",
|
||||
"World-mode checks ordinary limited-demo world startup and saved data, not exhaustive gameplay or completed LOD generation.",
|
||||
"A nonuniform framebuffer does not prove pixel-correct rendering.",
|
||||
"Three exploratory Vulkan cases fail with VK_ERROR_FEATURE_NOT_PRESENT after successful device creation; later stage remains to be isolated.",
|
||||
"The probe uses 3 GiB; balanced can warn about low memory. The 16 GB Mac starter suggests 6 GiB.",
|
||||
"No FPS, CPU/RAM reduction, statistical speedup or universal hardware-compatibility claim.",
|
||||
"Raw PNGs, assets, world files and full logs remain private. Production JAR matches the published binary and excludes probe classes."
|
||||
]
|
||||
}
|
||||
@@ -1,303 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"measurement": "Single fixed-order stationary matched-view Linux software-rendered pair; descriptive observations, not statistical hardware speedup",
|
||||
"minecraft": "26.3",
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"graphics": "llvmpipe LLVM21.1.8 OpenGL,1280x800",
|
||||
"captured_settings_match": true,
|
||||
"settings": {
|
||||
"full_detail_chunks": 12,
|
||||
"simulation_chunks": 12,
|
||||
"distant_terrain": "not installed",
|
||||
"iris_shaders": "not installed",
|
||||
"heap_max": "3G",
|
||||
"collector": "G1",
|
||||
"compact_headers": true,
|
||||
"world_difficulty": "PEACEFUL",
|
||||
"fov": 70,
|
||||
"graphics_preset": "CUSTOM",
|
||||
"frame_limit": "uncapped",
|
||||
"all_original_controllers": false
|
||||
},
|
||||
"runs": [
|
||||
{
|
||||
"profile": "baseline",
|
||||
"elapsed_seconds": 120.175428046,
|
||||
"frame_samples": 651,
|
||||
"tick_samples": 2401,
|
||||
"tick_elapsed_seconds": 120.028670836,
|
||||
"recorded_tick_samples_per_elapsed_second": 20.003554011529317,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"frame_stats": {
|
||||
"count": 651,
|
||||
"meanMs": 183.95013769585256,
|
||||
"p50Ms": 181.43732,
|
||||
"p95Ms": 194.888166,
|
||||
"p99Ms": 242.713818,
|
||||
"maxMs": 300.17755,
|
||||
"meanRate": 5.436255783909352,
|
||||
"lowOnePercentRate": 3.864724477942431,
|
||||
"over16Ms": 651,
|
||||
"over33Ms": 651,
|
||||
"over50Ms": 651,
|
||||
"over100Ms": 651
|
||||
},
|
||||
"tick_execution_stats": {
|
||||
"count": 2401,
|
||||
"meanMs": 8.97966414119117,
|
||||
"p50Ms": 7.166902,
|
||||
"p95Ms": 16.131444,
|
||||
"p99Ms": 19.670957,
|
||||
"maxMs": 38.194457,
|
||||
"meanRate": 111.36273966114595,
|
||||
"lowOnePercentRate": 43.536701509030834,
|
||||
"over16Ms": 106,
|
||||
"over33Ms": 2,
|
||||
"over50Ms": 0,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_cpu_seconds": 337.86,
|
||||
"process_rss_peak_sampled_bytes": 2842439680,
|
||||
"mods": [
|
||||
"[email protected]+38c7a2d55d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+26.3",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+0ae6f9115d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+6b5b47fd5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+427eab975d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+47f74c985d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+cf6bc2db5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+ffef5f675d",
|
||||
"[email protected]+4068fd645d",
|
||||
"[email protected]+ed66f0a35d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+79385d0b5d",
|
||||
"[email protected]+b9d63e335d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+901a437c5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+4fc5413f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+48607d035d",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+52268a0e5d",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"java@25",
|
||||
"[email protected]",
|
||||
"[email protected]"
|
||||
],
|
||||
"preceding_jfr_server_render_allocation_counters": [
|
||||
{
|
||||
"thread_id": 59,
|
||||
"thread": "Server thread",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.375293599,
|
||||
"observed_allocated_bytes": 1096511648,
|
||||
"observed_bytes_per_second": 17033112.96458356
|
||||
},
|
||||
{
|
||||
"thread_id": 3,
|
||||
"thread": "Render thread",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.375293599,
|
||||
"observed_allocated_bytes": 203851256,
|
||||
"observed_bytes_per_second": 3166607.0102889067
|
||||
}
|
||||
],
|
||||
"preceding_jfr_gc_pause_total_ms": 30.391511,
|
||||
"preceding_jfr_gc_pause_longest_ms": 18.705464,
|
||||
"exit_code": 0
|
||||
},
|
||||
{
|
||||
"profile": "core-performance",
|
||||
"elapsed_seconds": 120.10416213,
|
||||
"frame_samples": 785,
|
||||
"tick_samples": 2402,
|
||||
"tick_elapsed_seconds": 120.041892203,
|
||||
"recorded_tick_samples_per_elapsed_second": 20.0096812530915,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"frame_stats": {
|
||||
"count": 785,
|
||||
"meanMs": 152.43891740636943,
|
||||
"p50Ms": 150.474848,
|
||||
"p95Ms": 163.179892,
|
||||
"p99Ms": 198.41,
|
||||
"maxMs": 228.508471,
|
||||
"meanRate": 6.560004603904492,
|
||||
"lowOnePercentRate": 4.756900949481116,
|
||||
"over16Ms": 785,
|
||||
"over33Ms": 785,
|
||||
"over50Ms": 785,
|
||||
"over100Ms": 785
|
||||
},
|
||||
"tick_execution_stats": {
|
||||
"count": 2402,
|
||||
"meanMs": 6.370044777268943,
|
||||
"p50Ms": 5.805562,
|
||||
"p95Ms": 10.732708,
|
||||
"p99Ms": 13.377683,
|
||||
"maxMs": 23.875155,
|
||||
"meanRate": 156.98476776308226,
|
||||
"lowOnePercentRate": 63.74793922036882,
|
||||
"over16Ms": 5,
|
||||
"over33Ms": 0,
|
||||
"over50Ms": 0,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_cpu_seconds": 345.46,
|
||||
"process_rss_peak_sampled_bytes": 2211401728,
|
||||
"mods": [
|
||||
"[email protected]",
|
||||
"[email protected]+38c7a2d55d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+26.3",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+0ae6f9115d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+6b5b47fd5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+427eab975d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+47f74c985d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+cf6bc2db5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+ffef5f675d",
|
||||
"[email protected]+4068fd645d",
|
||||
"[email protected]+ed66f0a35d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+79385d0b5d",
|
||||
"[email protected]+b9d63e335d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+901a437c5d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+4fc5413f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+48607d035d",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+3434d6d95d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+52268a0e5d",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+26.3",
|
||||
"java@25",
|
||||
"[email protected]+mc26.3",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+mc26.3",
|
||||
"[email protected]",
|
||||
"[email protected]"
|
||||
],
|
||||
"preceding_jfr_server_render_allocation_counters": [
|
||||
{
|
||||
"thread_id": 55,
|
||||
"thread": "Server thread",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.387372441,
|
||||
"observed_allocated_bytes": 691148360,
|
||||
"observed_bytes_per_second": 10734222.158752
|
||||
},
|
||||
{
|
||||
"thread_id": 3,
|
||||
"thread": "Render thread",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.387372441,
|
||||
"observed_allocated_bytes": 107888768,
|
||||
"observed_bytes_per_second": 1675619.9843200867
|
||||
}
|
||||
],
|
||||
"preceding_jfr_gc_pause_total_ms": 54.65954,
|
||||
"preceding_jfr_gc_pause_longest_ms": 25.746574,
|
||||
"exit_code": 0
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"production_mod_source_commit": "2a268fefbf0ab3d478ca7755e609f7146d6f5145",
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37179596850",
|
||||
"runtime_mod_matches_linux_ci": true,
|
||||
"original_mod_sha256": "df0bab0a6d87a1c609a051c190939010506f8cdd81897e82aa48caad032ef4e0",
|
||||
"initial_player_snapshot_sha256": "b4d11dbd6443625415a1e32aa242d0e2d09cd77ddb1becfde5d35cb6ab8d278a",
|
||||
"saved_first_cameras_match": true,
|
||||
"saved_camera": {
|
||||
"position": [
|
||||
-56.5,
|
||||
69.0,
|
||||
55.5
|
||||
],
|
||||
"rotation": [
|
||||
141.5,
|
||||
16.950002670288086
|
||||
]
|
||||
},
|
||||
"private_world_timing_protocol": {
|
||||
"world_copy": "private only",
|
||||
"advance_time": false,
|
||||
"advance_weather": false,
|
||||
"overworld_clock_ticks": 6000,
|
||||
"modified_file_sha256": {
|
||||
"game_rules": "47abf5e1fe82d54057ad7b095df3b9e29a8e4e9db7484988e09f3caaeedc12eb",
|
||||
"world_clocks": "575d4a7663b154077a5be4c596790f3af178a00ab5a1e9cd58f37c1afa2c03b5"
|
||||
},
|
||||
"level_and_player_files_unchanged": true,
|
||||
"pack_default_rules_unchanged": true
|
||||
},
|
||||
"clock_and_rules_verified_after_both_saves": true,
|
||||
"candidate_save_reload_second_save_exit_zero": true
|
||||
},
|
||||
"notes": [
|
||||
"Separate private copies, baseline then core. JFR begins about 121 seconds after demo dismissal; a separate 120-second frame capture begins about 307 seconds after dismissal.",
|
||||
"Both captures have zero menu/pause/focus exclusions and no drops. Actual CSV counts and means match; viewer charts, 390-pixel layout and explicit software-change warnings pass.",
|
||||
"Core records about 20.7% higher average FPS and 22.2% lower sampled peak RSS in this pair; whole-process CPU is slightly higher while rendering more frames.",
|
||||
"No mod is isolated by this group comparison. Rendering-work completion, entity activity, cache/JIT and thermal state remain variables. Matching captured configuration is not pixel equivalence or exhaustive vanilla gameplay proof.",
|
||||
"Tick execution inverse meanRate is capacity, not actual TPS. Record counts/elapsed seconds are exposed separately and include any pauses. Both captures have about 20 tick samples per elapsed second.",
|
||||
"Preceding JFR server/render allocation counters are lower with core, but total and longest measured GC pauses are higher. Those profiles precede the frame captures and are not simultaneous with them.",
|
||||
"No hardware GPU or M2/Apple Silicon result; RSS is not complete unified/GPU memory. Repeat alternating trials on real hardware.",
|
||||
"No private worlds, full game logs, JFR recordings, game binaries or fixture agents are included."
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,47 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"entity_culling": "1.11.2",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"empty_iterator_calls": 1,
|
||||
"live_registration_checked": true,
|
||||
"block_callback_order_checked": true,
|
||||
"type_guard_checked": true,
|
||||
"allocated_bytes": 128001272,
|
||||
"cpu_ns": 29632156,
|
||||
"wall_ns": 49712014,
|
||||
"measured_calls": 4000000,
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"empty_iterator_calls": 0,
|
||||
"live_registration_checked": true,
|
||||
"block_callback_order_checked": true,
|
||||
"type_guard_checked": true,
|
||||
"allocated_bytes": 208,
|
||||
"cpu_ns": 809881,
|
||||
"wall_ns": 801517,
|
||||
"measured_calls": 4000000,
|
||||
"result": false
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual publisher whitelist methods inside Fabric; live registration and block-entity callbacks checked.",
|
||||
"Nonempty iteration, callback order, short circuit, null/wrong-type inputs and clearing retain upstream behavior.",
|
||||
"Empty-state iterator counts use a private instrumented set; allocation loop uses normal empty HashSets.",
|
||||
"Entity callbacks with a valid game entity are not exercised by this menu-only fixture.",
|
||||
"JIT escape analysis can remove allocations in an isolated loop; real culling-thread profiles are needed.",
|
||||
"Not a game FPS, whole-game RAM, visual equivalence or Mac GPU benchmark.",
|
||||
"Much of an empty warmed loop may be folded by the JIT; CPU timings are not per-check costs or game speed estimates."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "35dd69e9a6279fa89d762a0d24e49b0dbdb11b51",
|
||||
"ci_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37164002916",
|
||||
"artifact": "horizon-ubuntu-latest"
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"entity_culling": "1.11.2",
|
||||
"original_mod_sha256": "7351b417fc83460def5947636444413874ee812e949342f091ef03674e0c0e58",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"public_boxes": 12800,
|
||||
"provider_reads": 105239,
|
||||
"edge_rays": 2197,
|
||||
"visibility_digest": "da7286327283ce854dca2ab798d97c3b1cde55ac67112bd231c48df6d9388e00",
|
||||
"query_digest": "124074ad764ab680b93896d47fa347a15f0b17ef41d2f8af5bd8e75f75208e12",
|
||||
"intersection_digest": "f311c0b608b44b9eab2bb1e6347c3e18b003d05c939a8fbea9ba81fb16c8e8ae",
|
||||
"allocated_bytes": 1040,
|
||||
"cpu_ns": 101807697,
|
||||
"wall_ns": 162651689,
|
||||
"measured_checks": 2000000,
|
||||
"checksum": 0,
|
||||
"input_unchanged": true,
|
||||
"scratch_ownership_checked": true
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"public_boxes": 12800,
|
||||
"provider_reads": 105239,
|
||||
"edge_rays": 2197,
|
||||
"visibility_digest": "da7286327283ce854dca2ab798d97c3b1cde55ac67112bd231c48df6d9388e00",
|
||||
"query_digest": "124074ad764ab680b93896d47fa347a15f0b17ef41d2f8af5bd8e75f75208e12",
|
||||
"intersection_digest": "f311c0b608b44b9eab2bb1e6347c3e18b003d05c939a8fbea9ba81fb16c8e8ae",
|
||||
"allocated_bytes": 920,
|
||||
"cpu_ns": 118540489,
|
||||
"wall_ns": 235470173,
|
||||
"measured_checks": 2000000,
|
||||
"checksum": 0,
|
||||
"input_unchanged": true,
|
||||
"scratch_ownership_checked": true
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual upstream culling methods inside Fabric; private fixture invokers do not enter production packs.",
|
||||
"Two interleaved instances and several occluder patterns; matching boolean and query digests.",
|
||||
"Signed zero, tiny/large values, infinities and NaN are exercised directly in ray intersection.",
|
||||
"Unchanged input vectors, independent instance scratch and upstream arithmetic values are checked.",
|
||||
"Allocation and CPU are single warmed caller-loop observations; JIT folding can vary.",
|
||||
"Not a game FPS, visual-equivalence proof, whole-game RAM or Mac GPU benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "7cbe37b60594fb1631bc308f126d7925c4264a18",
|
||||
"command": "python tools/test_culling_rays.py",
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37168352974",
|
||||
"job": "portable-mod (ubuntu-latest)",
|
||||
"artifact": "horizon-ubuntu-latest"
|
||||
}
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"entity_culling": "1.11.2",
|
||||
"original_mod_sha256": "7351b417fc83460def5947636444413874ee812e949342f091ef03674e0c0e58",
|
||||
"platform": "Linux x86_64",
|
||||
"graphics": "llvmpipe software OpenGL",
|
||||
"settings": {
|
||||
"heap_bytes": 3221225472,
|
||||
"gc": "G1",
|
||||
"compact_headers": true,
|
||||
"render_distance": 12,
|
||||
"simulation_distance": 12,
|
||||
"lod_radius_chunks": 128,
|
||||
"lod_quality": "MEDIUM/MEDIUM/BLOCK",
|
||||
"terrain_workers": 2,
|
||||
"runtime_ratio": 0.5,
|
||||
"world_difficulty": "PEACEFUL",
|
||||
"empty_culling_whitelist": false
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"profile": "m2-balanced",
|
||||
"ray_enabled": false,
|
||||
"elapsed_seconds": 120.02619604,
|
||||
"frame_samples": 599,
|
||||
"tick_samples": 2400,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"culling_allocation_counter": {
|
||||
"thread_id": 49,
|
||||
"thread": "CullThread",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.509265987,
|
||||
"observed_allocated_bytes": 1817768,
|
||||
"observed_bytes_per_second": 28178.40153949851
|
||||
}
|
||||
},
|
||||
{
|
||||
"profile": "culling-rays",
|
||||
"ray_enabled": true,
|
||||
"elapsed_seconds": 120.099980458,
|
||||
"frame_samples": 584,
|
||||
"tick_samples": 2401,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"culling_allocation_counter": {
|
||||
"thread_id": 49,
|
||||
"thread": "CullThread",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.321034235,
|
||||
"observed_allocated_bytes": 1798336,
|
||||
"observed_bytes_per_second": 27958.754416629756
|
||||
}
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Fixed-order single pair using separate copies of the same private saved world and stationary view, with approximately three-minute warm-up before clean frame recordings.",
|
||||
"One earlier candidate frame capture contained pause exclusions and was discarded; its separate preceding allocation recording had already completed.",
|
||||
"Allocation counters have their own roughly 64-second observation spans; recordings started approximately 36-42 seconds after joining. Profiling overhead and JIT/cache effects are not eliminated.",
|
||||
"Both worlds saved and exited with no crash report or remaining game process. The outer foreground control launcher returned 143; it did not expose the game exit status.",
|
||||
"No useful allocation reduction or whole-game speedup is established. Not a Mac, retained-memory or GPU performance benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "349724b3b612351daa1616daa79beca8897839ab",
|
||||
"runtime_mod_matches_linux_ci": true,
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37168818519"
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"entity_culling": "1.11.2",
|
||||
"original_mod_sha256": "7351b417fc83460def5947636444413874ee812e949342f091ef03674e0c0e58",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"public_boxes": 12800,
|
||||
"provider_reads": 105239,
|
||||
"edge_rays": 2197,
|
||||
"visibility_digest": "da7286327283ce854dca2ab798d97c3b1cde55ac67112bd231c48df6d9388e00",
|
||||
"query_digest": "124074ad764ab680b93896d47fa347a15f0b17ef41d2f8af5bd8e75f75208e12",
|
||||
"intersection_digest": "f311c0b608b44b9eab2bb1e6347c3e18b003d05c939a8fbea9ba81fb16c8e8ae",
|
||||
"allocated_bytes": 24318096,
|
||||
"cpu_ns": 166989515,
|
||||
"wall_ns": 239648128,
|
||||
"measured_checks": 2000000,
|
||||
"checksum": 0,
|
||||
"input_unchanged": true,
|
||||
"scratch_ownership_checked": true
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"public_boxes": 12800,
|
||||
"provider_reads": 105239,
|
||||
"edge_rays": 2197,
|
||||
"visibility_digest": "da7286327283ce854dca2ab798d97c3b1cde55ac67112bd231c48df6d9388e00",
|
||||
"query_digest": "124074ad764ab680b93896d47fa347a15f0b17ef41d2f8af5bd8e75f75208e12",
|
||||
"intersection_digest": "f311c0b608b44b9eab2bb1e6347c3e18b003d05c939a8fbea9ba81fb16c8e8ae",
|
||||
"allocated_bytes": 920,
|
||||
"cpu_ns": 149367051,
|
||||
"wall_ns": 165549458,
|
||||
"measured_checks": 2000000,
|
||||
"checksum": 0,
|
||||
"input_unchanged": true,
|
||||
"scratch_ownership_checked": true
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual upstream culling methods inside Fabric; private fixture invokers do not enter production packs.",
|
||||
"Two interleaved instances and several occluder patterns; matching boolean and query digests.",
|
||||
"Signed zero, tiny/large values, infinities and NaN are exercised directly in ray intersection.",
|
||||
"Unchanged input vectors, independent instance scratch and upstream arithmetic values are checked.",
|
||||
"Allocation and CPU are single warmed caller-loop observations; JIT folding can vary.",
|
||||
"Not a game FPS, visual-equivalence proof, whole-game RAM or Mac GPU benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "7cbe37b60594fb1631bc308f126d7925c4264a18",
|
||||
"command": "python tools/test_culling_rays.py"
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Darwin 25.6.0 arm64; logical CPUs 3
|
||||
mode=upstream size=1 polls=2050320 worker_cpu_ms=218.517 wall_ms=250.000 worker_allocated_bytes=65610240
|
||||
mode=wait size=1 polls=24 worker_cpu_ms=1.116 wall_ms=250.103 worker_allocated_bytes=768
|
||||
mode=upstream size=1 polls=2641880 worker_cpu_ms=247.157 wall_ms=250.000 worker_allocated_bytes=84540160
|
||||
mode=wait size=1 polls=26 worker_cpu_ms=0.873 wall_ms=258.012 worker_allocated_bytes=832
|
||||
mode=upstream size=1 polls=2502067 worker_cpu_ms=248.481 wall_ms=250.000 worker_allocated_bytes=80066144
|
||||
mode=wait size=1 polls=22 worker_cpu_ms=0.693 wall_ms=252.426 worker_allocated_bytes=704
|
||||
mode=upstream size=64 polls=1073260 worker_cpu_ms=249.930 wall_ms=250.000 worker_allocated_bytes=34344320
|
||||
mode=wait size=64 polls=21 worker_cpu_ms=0.624 wall_ms=251.431 worker_allocated_bytes=672
|
||||
mode=upstream size=64 polls=1117775 worker_cpu_ms=248.519 wall_ms=250.000 worker_allocated_bytes=35768800
|
||||
mode=wait size=64 polls=66 worker_cpu_ms=1.172 wall_ms=252.401 worker_allocated_bytes=2112
|
||||
mode=upstream size=64 polls=1017233 worker_cpu_ms=248.550 wall_ms=250.000 worker_allocated_bytes=32551456
|
||||
mode=wait size=64 polls=74 worker_cpu_ms=1.154 wall_ms=250.207 worker_allocated_bytes=2368
|
||||
@@ -1,14 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Linux 6.17.0-1022-azure x86_64; logical CPUs 4
|
||||
mode=upstream size=1 polls=3147912 worker_cpu_ms=248.446 wall_ms=250.000 worker_allocated_bytes=100733184
|
||||
mode=wait size=1 polls=234 worker_cpu_ms=3.085 wall_ms=250.068 worker_allocated_bytes=7488
|
||||
mode=upstream size=1 polls=3108002 worker_cpu_ms=249.985 wall_ms=250.000 worker_allocated_bytes=99456064
|
||||
mode=wait size=1 polls=235 worker_cpu_ms=2.960 wall_ms=250.088 worker_allocated_bytes=7520
|
||||
mode=upstream size=1 polls=3073051 worker_cpu_ms=248.404 wall_ms=250.000 worker_allocated_bytes=98337632
|
||||
mode=wait size=1 polls=235 worker_cpu_ms=2.904 wall_ms=250.067 worker_allocated_bytes=7520
|
||||
mode=upstream size=64 polls=999765 worker_cpu_ms=248.680 wall_ms=250.000 worker_allocated_bytes=31992480
|
||||
mode=wait size=64 polls=235 worker_cpu_ms=2.887 wall_ms=250.067 worker_allocated_bytes=7520
|
||||
mode=upstream size=64 polls=999096 worker_cpu_ms=250.000 wall_ms=250.000 worker_allocated_bytes=31971072
|
||||
mode=wait size=64 polls=234 worker_cpu_ms=2.890 wall_ms=250.068 worker_allocated_bytes=7488
|
||||
mode=upstream size=64 polls=992373 worker_cpu_ms=249.987 wall_ms=250.000 worker_allocated_bytes=31755936
|
||||
mode=wait size=64 polls=234 worker_cpu_ms=2.891 wall_ms=250.068 worker_allocated_bytes=7488
|
||||
@@ -1,14 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Windows 2025Server AMD64; logical CPUs 4
|
||||
mode=upstream size=1 polls=3016566 worker_cpu_ms=234.375 wall_ms=250.000 worker_allocated_bytes=96530112
|
||||
mode=wait size=1 polls=173 worker_cpu_ms=0.000 wall_ms=250.006 worker_allocated_bytes=5536
|
||||
mode=upstream size=1 polls=2991508 worker_cpu_ms=250.000 wall_ms=250.000 worker_allocated_bytes=95728256
|
||||
mode=wait size=1 polls=175 worker_cpu_ms=0.000 wall_ms=250.856 worker_allocated_bytes=5600
|
||||
mode=upstream size=1 polls=2979343 worker_cpu_ms=250.000 wall_ms=250.000 worker_allocated_bytes=95338976
|
||||
mode=wait size=1 polls=171 worker_cpu_ms=0.000 wall_ms=251.306 worker_allocated_bytes=5472
|
||||
mode=upstream size=64 polls=1001664 worker_cpu_ms=250.000 wall_ms=250.000 worker_allocated_bytes=32053248
|
||||
mode=wait size=64 polls=168 worker_cpu_ms=0.000 wall_ms=250.695 worker_allocated_bytes=5376
|
||||
mode=upstream size=64 polls=1001600 worker_cpu_ms=250.000 wall_ms=250.000 worker_allocated_bytes=32051200
|
||||
mode=wait size=64 polls=166 worker_cpu_ms=0.000 wall_ms=250.593 worker_allocated_bytes=5312
|
||||
mode=upstream size=64 polls=988856 worker_cpu_ms=234.375 wall_ms=250.000 worker_allocated_bytes=31643392
|
||||
mode=wait size=64 polls=171 worker_cpu_ms=0.000 wall_ms=250.557 worker_allocated_bytes=5472
|
||||
@@ -1,196 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"measurement": "Single fixed-order stationary Linux software-rendered pair; targeted allocation observation, not a statistical FPS/RAM comparison",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"graphics": "llvmpipe LLVM21.1.8 OpenGL, 1280x800",
|
||||
"captured_settings_match": true,
|
||||
"settings": {
|
||||
"render_distance": 12,
|
||||
"simulation_distance": 12,
|
||||
"lod_radius": 128,
|
||||
"lod_quality": "MEDIUM/MEDIUM BLOCK",
|
||||
"terrain_workers": 2,
|
||||
"runtime_ratio_start_and_end": 0.5,
|
||||
"world_difficulty": "PEACEFUL",
|
||||
"fov": 70,
|
||||
"heap_max": "3G",
|
||||
"collector": "G1",
|
||||
"compact_headers": true,
|
||||
"frame_limit": "uncapped",
|
||||
"other_original_controllers": false,
|
||||
"interruptible_terrain_read": true
|
||||
},
|
||||
"runs": [
|
||||
{
|
||||
"profile": "m2-balanced",
|
||||
"elapsed_seconds": 120.305371929,
|
||||
"frame_samples": 230,
|
||||
"tick_samples": 2401,
|
||||
"tick_elapsed_seconds": 120.040272048,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"frame_stats": {
|
||||
"count": 230,
|
||||
"meanMs": 519.2565329826086,
|
||||
"p50Ms": 492.583608,
|
||||
"p95Ms": 700.364095,
|
||||
"p99Ms": 803.28719,
|
||||
"maxMs": 955.16614,
|
||||
"meanRate": 1.9258303679994195,
|
||||
"lowOnePercentRate": 1.146414365311511,
|
||||
"over16Ms": 230,
|
||||
"over33Ms": 230,
|
||||
"over50Ms": 230,
|
||||
"over100Ms": 230
|
||||
},
|
||||
"tick_execution_stats": {
|
||||
"count": 2401,
|
||||
"meanMs": 9.248066071636819,
|
||||
"p50Ms": 8.529226,
|
||||
"p95Ms": 16.494711,
|
||||
"p99Ms": 23.483163,
|
||||
"maxMs": 65.248147,
|
||||
"meanRate": 108.13071535755256,
|
||||
"lowOnePercentRate": 29.893225023275733,
|
||||
"over16Ms": 113,
|
||||
"over33Ms": 9,
|
||||
"over50Ms": 2,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_cpu_seconds": 432.81,
|
||||
"process_rss_peak_sampled_bytes": 2898677760,
|
||||
"queue_wait": false,
|
||||
"wakeable_idle": false,
|
||||
"queue_allocation_counters": [
|
||||
{
|
||||
"thread_id": 86,
|
||||
"thread": "DH-Chunk Update Queue [minecraft:overworld] Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.391610411,
|
||||
"observed_allocated_bytes": 982644080,
|
||||
"observed_bytes_per_second": 15260436.471893786
|
||||
},
|
||||
{
|
||||
"thread_id": 93,
|
||||
"thread": "DH-Chunk Update Queue [minecraft:the_end] Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.391610411,
|
||||
"observed_allocated_bytes": 66520,
|
||||
"observed_bytes_per_second": 1033.0538338055978
|
||||
},
|
||||
{
|
||||
"thread_id": 98,
|
||||
"thread": "DH-Chunk Update Queue [minecraft:the_nether] Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.391610411,
|
||||
"observed_allocated_bytes": 66408,
|
||||
"observed_bytes_per_second": 1031.3144767793467
|
||||
}
|
||||
],
|
||||
"preceding_jfr_gc_pause_total_ms": 178.149902,
|
||||
"preceding_jfr_gc_pause_longest_ms": 34.011115,
|
||||
"world_save_and_exit_zero": true
|
||||
},
|
||||
{
|
||||
"profile": "queue-wait",
|
||||
"elapsed_seconds": 120.448597645,
|
||||
"frame_samples": 225,
|
||||
"tick_samples": 2401,
|
||||
"tick_elapsed_seconds": 120.040563501,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"frame_stats": {
|
||||
"count": 225,
|
||||
"meanMs": 529.5368389244444,
|
||||
"p50Ms": 502.825816,
|
||||
"p95Ms": 717.088739,
|
||||
"p99Ms": 798.871994,
|
||||
"maxMs": 843.221511,
|
||||
"meanRate": 1.8884427418328913,
|
||||
"lowOnePercentRate": 1.2159699757233216,
|
||||
"over16Ms": 225,
|
||||
"over33Ms": 225,
|
||||
"over50Ms": 225,
|
||||
"over100Ms": 225
|
||||
},
|
||||
"tick_execution_stats": {
|
||||
"count": 2401,
|
||||
"meanMs": 9.375896729279466,
|
||||
"p50Ms": 8.803401,
|
||||
"p95Ms": 16.938218,
|
||||
"p99Ms": 22.983944,
|
||||
"maxMs": 63.421671,
|
||||
"meanRate": 106.65646485601272,
|
||||
"lowOnePercentRate": 31.02504677094056,
|
||||
"over16Ms": 128,
|
||||
"over33Ms": 7,
|
||||
"over50Ms": 2,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_cpu_seconds": 430.67,
|
||||
"process_rss_peak_sampled_bytes": 2989219840,
|
||||
"queue_wait": true,
|
||||
"wakeable_idle": true,
|
||||
"queue_allocation_counters": [
|
||||
{
|
||||
"thread_id": 88,
|
||||
"thread": "DH-Chunk Update Queue [minecraft:overworld] Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.387296767,
|
||||
"observed_allocated_bytes": 739640,
|
||||
"observed_bytes_per_second": 11487.359108684974
|
||||
},
|
||||
{
|
||||
"thread_id": 93,
|
||||
"thread": "DH-Chunk Update Queue [minecraft:the_nether] Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.387296767,
|
||||
"observed_allocated_bytes": 0,
|
||||
"observed_bytes_per_second": 0.0
|
||||
},
|
||||
{
|
||||
"thread_id": 100,
|
||||
"thread": "DH-Chunk Update Queue [minecraft:the_end] Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.387296767,
|
||||
"observed_allocated_bytes": 0,
|
||||
"observed_bytes_per_second": 0.0
|
||||
}
|
||||
],
|
||||
"preceding_jfr_gc_pause_total_ms": 151.522451,
|
||||
"preceding_jfr_gc_pause_longest_ms": 47.79999,
|
||||
"world_save_and_exit_zero": true
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"production_mod_source_commit": "24c65f512dece83b153b206e33cd4c4294b42de2",
|
||||
"original_mod_sha256": "2196637c5b2180a33fa5b926ab51069ab480618c1186b8a02872c7e758be0a70",
|
||||
"initial_player_snapshot_sha256": "b4d11dbd6443625415a1e32aa242d0e2d09cd77ddb1becfde5d35cb6ab8d278a",
|
||||
"source_level_snapshot_sha256": "86a3c75ea993e50c4428da4dbadc5856688a9367f035c41b8bb49863a9aeb644",
|
||||
"first_saved_cameras_match": true,
|
||||
"saved_camera": {
|
||||
"position": [
|
||||
-56.5,
|
||||
69.0,
|
||||
55.5
|
||||
],
|
||||
"rotation": [
|
||||
141.5,
|
||||
16.950002670288086
|
||||
]
|
||||
}
|
||||
},
|
||||
"notes": [
|
||||
"Separate copies of the same private world; candidate then control. JFR begins about121seconds after demo dismissal; frame capture begins about307seconds after dismissal.",
|
||||
"JFR allocation counters span about64seconds; pause measurements are from the preceding JFR recordings, not the later frame capture.",
|
||||
"Recorded overworld queue allocation counter rate is about15.3MB/s upstream versus11.5KB/s with waiting. Task-completion and generated geometry volumes are not controlled quantitatively.",
|
||||
"Control has230frames versus225candidate; sampled peak RSS is lower in control, and later whole-process CPU differences are small. No game FPS, retained-memory or whole-process CPU improvement is established.",
|
||||
"Daylight advances normally; lighting, entity activity and cache/JIT differences are not fully controlled. No Apple Silicon or hardware-GPU result.",
|
||||
"Tick meanRate is inverse execution duration, not observed TPS. Both recordings contain2401tick execution samples over about120seconds.",
|
||||
"Actual JSON/CSV viewer comparisons and390pxlayout pass. The real discarded capture with zero eligible frames and209exclusions is rejected by the viewer and excluded from performance comparisons.",
|
||||
"No private worlds, full game logs or JFR recordings are published."
|
||||
]
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"submission_allocated_bytes": 216987192,
|
||||
"submission_cpu_ns": 372949442,
|
||||
"submission_wall_ns": 401548875,
|
||||
"rejections": 63790,
|
||||
"tasks_completed": 2,
|
||||
"occupied_slots": 0
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"submission_allocated_bytes": 103384,
|
||||
"submission_cpu_ns": 941367,
|
||||
"submission_wall_ns": 959453,
|
||||
"rejections": 6,
|
||||
"tasks_completed": 2,
|
||||
"occupied_slots": 0
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Synthetic full physical worker queue; both modes use the actual publisher dispatcher inside Fabric.",
|
||||
"Allocation and CPU measure the submission caller only; retry scheduler activity is excluded.",
|
||||
"Upstream keeps the caller blocked for the requested 200 ms observation window; patched returns earlier.",
|
||||
"Both modes verify exact task counts, recovered occupied slots and fixture worker shutdown.",
|
||||
"Not a game FPS, terrain completion, whole-game RAM, or hardware compatibility benchmark."
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,42 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Darwin 25.6.0 arm64; logical CPUs 3
|
||||
mode=upstream trial=0 incoming_after_idle_ms=26.655 publication_to_pop_ms=27.930
|
||||
mode=wakeable trial=0 incoming_after_idle_ms=23.086 publication_to_pop_ms=0.098
|
||||
mode=upstream trial=1 incoming_after_idle_ms=25.029 publication_to_pop_ms=94.707
|
||||
mode=wakeable trial=1 incoming_after_idle_ms=19.340 publication_to_pop_ms=16.096
|
||||
mode=upstream trial=2 incoming_after_idle_ms=16.530 publication_to_pop_ms=98.696
|
||||
mode=wakeable trial=2 incoming_after_idle_ms=12.085 publication_to_pop_ms=0.080
|
||||
mode=upstream trial=3 incoming_after_idle_ms=20.350 publication_to_pop_ms=50.086
|
||||
mode=wakeable trial=3 incoming_after_idle_ms=15.681 publication_to_pop_ms=0.051
|
||||
mode=upstream trial=4 incoming_after_idle_ms=26.474 publication_to_pop_ms=90.380
|
||||
mode=wakeable trial=4 incoming_after_idle_ms=21.794 publication_to_pop_ms=0.054
|
||||
mode=upstream trial=5 incoming_after_idle_ms=20.069 publication_to_pop_ms=91.508
|
||||
mode=wakeable trial=5 incoming_after_idle_ms=14.527 publication_to_pop_ms=0.069
|
||||
mode=upstream trial=6 incoming_after_idle_ms=25.051 publication_to_pop_ms=58.889
|
||||
mode=wakeable trial=6 incoming_after_idle_ms=20.193 publication_to_pop_ms=0.081
|
||||
mode=upstream trial=7 incoming_after_idle_ms=12.084 publication_to_pop_ms=41.323
|
||||
mode=wakeable trial=7 incoming_after_idle_ms=5.867 publication_to_pop_ms=0.057
|
||||
mode=upstream trial=8 incoming_after_idle_ms=19.023 publication_to_pop_ms=99.615
|
||||
mode=wakeable trial=8 incoming_after_idle_ms=18.833 publication_to_pop_ms=0.063
|
||||
mode=upstream trial=9 incoming_after_idle_ms=13.648 publication_to_pop_ms=103.446
|
||||
mode=wakeable trial=9 incoming_after_idle_ms=28.375 publication_to_pop_ms=0.056
|
||||
mode=upstream trial=10 incoming_after_idle_ms=17.449 publication_to_pop_ms=98.829
|
||||
mode=wakeable trial=10 incoming_after_idle_ms=24.812 publication_to_pop_ms=0.062
|
||||
mode=upstream trial=11 incoming_after_idle_ms=26.751 publication_to_pop_ms=88.715
|
||||
mode=wakeable trial=11 incoming_after_idle_ms=28.154 publication_to_pop_ms=0.067
|
||||
mode=upstream trial=12 incoming_after_idle_ms=20.596 publication_to_pop_ms=73.247
|
||||
mode=wakeable trial=12 incoming_after_idle_ms=16.397 publication_to_pop_ms=0.080
|
||||
mode=upstream trial=13 incoming_after_idle_ms=19.685 publication_to_pop_ms=53.674
|
||||
mode=wakeable trial=13 incoming_after_idle_ms=21.934 publication_to_pop_ms=0.050
|
||||
mode=upstream trial=14 incoming_after_idle_ms=16.937 publication_to_pop_ms=37.755
|
||||
mode=wakeable trial=14 incoming_after_idle_ms=18.296 publication_to_pop_ms=0.074
|
||||
mode=upstream trial=15 incoming_after_idle_ms=17.572 publication_to_pop_ms=68.115
|
||||
mode=wakeable trial=15 incoming_after_idle_ms=13.516 publication_to_pop_ms=0.072
|
||||
mode=upstream trial=16 incoming_after_idle_ms=24.639 publication_to_pop_ms=100.433
|
||||
mode=wakeable trial=16 incoming_after_idle_ms=22.918 publication_to_pop_ms=0.103
|
||||
mode=upstream trial=17 incoming_after_idle_ms=30.593 publication_to_pop_ms=79.830
|
||||
mode=wakeable trial=17 incoming_after_idle_ms=25.080 publication_to_pop_ms=0.053
|
||||
mode=upstream trial=18 incoming_after_idle_ms=15.889 publication_to_pop_ms=108.892
|
||||
mode=wakeable trial=18 incoming_after_idle_ms=27.297 publication_to_pop_ms=0.034
|
||||
mode=upstream trial=19 incoming_after_idle_ms=10.808 publication_to_pop_ms=59.234
|
||||
mode=wakeable trial=19 incoming_after_idle_ms=16.349 publication_to_pop_ms=0.083
|
||||
@@ -1,42 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Linux 6.17.0-1022-azure x86_64; logical CPUs 4
|
||||
mode=upstream trial=0 incoming_after_idle_ms=5.089 publication_to_pop_ms=45.143
|
||||
mode=wakeable trial=0 incoming_after_idle_ms=5.100 publication_to_pop_ms=0.073
|
||||
mode=upstream trial=1 incoming_after_idle_ms=5.125 publication_to_pop_ms=45.051
|
||||
mode=wakeable trial=1 incoming_after_idle_ms=5.097 publication_to_pop_ms=0.055
|
||||
mode=upstream trial=2 incoming_after_idle_ms=5.098 publication_to_pop_ms=45.135
|
||||
mode=wakeable trial=2 incoming_after_idle_ms=5.088 publication_to_pop_ms=0.042
|
||||
mode=upstream trial=3 incoming_after_idle_ms=5.091 publication_to_pop_ms=45.084
|
||||
mode=wakeable trial=3 incoming_after_idle_ms=5.149 publication_to_pop_ms=0.049
|
||||
mode=upstream trial=4 incoming_after_idle_ms=5.103 publication_to_pop_ms=45.060
|
||||
mode=wakeable trial=4 incoming_after_idle_ms=5.141 publication_to_pop_ms=0.064
|
||||
mode=upstream trial=5 incoming_after_idle_ms=5.127 publication_to_pop_ms=45.047
|
||||
mode=wakeable trial=5 incoming_after_idle_ms=5.137 publication_to_pop_ms=0.053
|
||||
mode=upstream trial=6 incoming_after_idle_ms=5.129 publication_to_pop_ms=45.177
|
||||
mode=wakeable trial=6 incoming_after_idle_ms=5.134 publication_to_pop_ms=0.068
|
||||
mode=upstream trial=7 incoming_after_idle_ms=5.107 publication_to_pop_ms=45.059
|
||||
mode=wakeable trial=7 incoming_after_idle_ms=5.137 publication_to_pop_ms=0.061
|
||||
mode=upstream trial=8 incoming_after_idle_ms=5.168 publication_to_pop_ms=45.005
|
||||
mode=wakeable trial=8 incoming_after_idle_ms=5.134 publication_to_pop_ms=0.060
|
||||
mode=upstream trial=9 incoming_after_idle_ms=5.105 publication_to_pop_ms=45.077
|
||||
mode=wakeable trial=9 incoming_after_idle_ms=5.148 publication_to_pop_ms=0.070
|
||||
mode=upstream trial=10 incoming_after_idle_ms=5.092 publication_to_pop_ms=45.197
|
||||
mode=wakeable trial=10 incoming_after_idle_ms=5.136 publication_to_pop_ms=0.055
|
||||
mode=upstream trial=11 incoming_after_idle_ms=5.113 publication_to_pop_ms=45.045
|
||||
mode=wakeable trial=11 incoming_after_idle_ms=5.122 publication_to_pop_ms=0.044
|
||||
mode=upstream trial=12 incoming_after_idle_ms=5.095 publication_to_pop_ms=45.070
|
||||
mode=wakeable trial=12 incoming_after_idle_ms=5.147 publication_to_pop_ms=0.052
|
||||
mode=upstream trial=13 incoming_after_idle_ms=5.118 publication_to_pop_ms=45.048
|
||||
mode=wakeable trial=13 incoming_after_idle_ms=5.168 publication_to_pop_ms=0.047
|
||||
mode=upstream trial=14 incoming_after_idle_ms=5.133 publication_to_pop_ms=45.129
|
||||
mode=wakeable trial=14 incoming_after_idle_ms=5.155 publication_to_pop_ms=0.047
|
||||
mode=upstream trial=15 incoming_after_idle_ms=5.098 publication_to_pop_ms=45.031
|
||||
mode=wakeable trial=15 incoming_after_idle_ms=5.167 publication_to_pop_ms=0.044
|
||||
mode=upstream trial=16 incoming_after_idle_ms=5.129 publication_to_pop_ms=45.051
|
||||
mode=wakeable trial=16 incoming_after_idle_ms=5.135 publication_to_pop_ms=0.073
|
||||
mode=upstream trial=17 incoming_after_idle_ms=5.148 publication_to_pop_ms=45.034
|
||||
mode=wakeable trial=17 incoming_after_idle_ms=5.148 publication_to_pop_ms=0.044
|
||||
mode=upstream trial=18 incoming_after_idle_ms=5.181 publication_to_pop_ms=45.103
|
||||
mode=wakeable trial=18 incoming_after_idle_ms=5.127 publication_to_pop_ms=0.046
|
||||
mode=upstream trial=19 incoming_after_idle_ms=5.094 publication_to_pop_ms=45.075
|
||||
mode=wakeable trial=19 incoming_after_idle_ms=5.148 publication_to_pop_ms=0.051
|
||||
@@ -1,42 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Windows 2025Server AMD64; logical CPUs 4
|
||||
mode=upstream trial=0 incoming_after_idle_ms=5.487 publication_to_pop_ms=45.519
|
||||
mode=wakeable trial=0 incoming_after_idle_ms=5.377 publication_to_pop_ms=0.127
|
||||
mode=upstream trial=1 incoming_after_idle_ms=6.059 publication_to_pop_ms=44.593
|
||||
mode=wakeable trial=1 incoming_after_idle_ms=5.539 publication_to_pop_ms=0.094
|
||||
mode=upstream trial=2 incoming_after_idle_ms=5.096 publication_to_pop_ms=45.005
|
||||
mode=wakeable trial=2 incoming_after_idle_ms=5.624 publication_to_pop_ms=0.079
|
||||
mode=upstream trial=3 incoming_after_idle_ms=5.649 publication_to_pop_ms=44.691
|
||||
mode=wakeable trial=3 incoming_after_idle_ms=4.731 publication_to_pop_ms=0.077
|
||||
mode=upstream trial=4 incoming_after_idle_ms=5.312 publication_to_pop_ms=45.488
|
||||
mode=wakeable trial=4 incoming_after_idle_ms=5.156 publication_to_pop_ms=0.108
|
||||
mode=upstream trial=5 incoming_after_idle_ms=5.190 publication_to_pop_ms=45.580
|
||||
mode=wakeable trial=5 incoming_after_idle_ms=5.457 publication_to_pop_ms=0.077
|
||||
mode=upstream trial=6 incoming_after_idle_ms=5.141 publication_to_pop_ms=45.619
|
||||
mode=wakeable trial=6 incoming_after_idle_ms=5.592 publication_to_pop_ms=0.074
|
||||
mode=upstream trial=7 incoming_after_idle_ms=5.823 publication_to_pop_ms=44.487
|
||||
mode=wakeable trial=7 incoming_after_idle_ms=5.355 publication_to_pop_ms=0.066
|
||||
mode=upstream trial=8 incoming_after_idle_ms=5.675 publication_to_pop_ms=45.050
|
||||
mode=wakeable trial=8 incoming_after_idle_ms=5.252 publication_to_pop_ms=0.075
|
||||
mode=upstream trial=9 incoming_after_idle_ms=5.921 publication_to_pop_ms=44.505
|
||||
mode=wakeable trial=9 incoming_after_idle_ms=6.002 publication_to_pop_ms=0.072
|
||||
mode=upstream trial=10 incoming_after_idle_ms=5.797 publication_to_pop_ms=44.517
|
||||
mode=wakeable trial=10 incoming_after_idle_ms=5.103 publication_to_pop_ms=0.070
|
||||
mode=upstream trial=11 incoming_after_idle_ms=5.115 publication_to_pop_ms=45.066
|
||||
mode=wakeable trial=11 incoming_after_idle_ms=5.638 publication_to_pop_ms=0.071
|
||||
mode=upstream trial=12 incoming_after_idle_ms=5.239 publication_to_pop_ms=45.538
|
||||
mode=wakeable trial=12 incoming_after_idle_ms=5.666 publication_to_pop_ms=0.083
|
||||
mode=upstream trial=13 incoming_after_idle_ms=5.136 publication_to_pop_ms=45.251
|
||||
mode=wakeable trial=13 incoming_after_idle_ms=4.163 publication_to_pop_ms=0.073
|
||||
mode=upstream trial=14 incoming_after_idle_ms=5.256 publication_to_pop_ms=46.048
|
||||
mode=wakeable trial=14 incoming_after_idle_ms=5.545 publication_to_pop_ms=0.074
|
||||
mode=upstream trial=15 incoming_after_idle_ms=4.239 publication_to_pop_ms=47.028
|
||||
mode=wakeable trial=15 incoming_after_idle_ms=5.292 publication_to_pop_ms=0.053
|
||||
mode=upstream trial=16 incoming_after_idle_ms=5.959 publication_to_pop_ms=45.046
|
||||
mode=wakeable trial=16 incoming_after_idle_ms=5.230 publication_to_pop_ms=0.182
|
||||
mode=upstream trial=17 incoming_after_idle_ms=5.153 publication_to_pop_ms=45.005
|
||||
mode=wakeable trial=17 incoming_after_idle_ms=5.220 publication_to_pop_ms=0.066
|
||||
mode=upstream trial=18 incoming_after_idle_ms=5.358 publication_to_pop_ms=46.008
|
||||
mode=wakeable trial=18 incoming_after_idle_ms=5.156 publication_to_pop_ms=0.062
|
||||
mode=upstream trial=19 incoming_after_idle_ms=4.370 publication_to_pop_ms=47.015
|
||||
mode=wakeable trial=19 incoming_after_idle_ms=5.162 publication_to_pop_ms=0.073
|
||||
@@ -1,930 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"measurement": "Failed hosted macOS Vulkan graphics probes, not performance measurements",
|
||||
"source_commit": "8282a731ecc08691f798a3ec596c7cc1d4f1dad1",
|
||||
"run_url": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37193558884",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"cases": [
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"baseline",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"profile": "baseline",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"core-performance",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"profile": "vulkan",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Apple Paravirtual device and MoltenVK on a hosted ARM Mac; not physical M2 Pro GPU testing.",
|
||||
"Library/device creation and readback request were observed, but no completed nonuniform readback report was produced.",
|
||||
"All failures retained; neither successful rendering nor a screenshot-specific root cause is established.",
|
||||
"Baseline includes the same original measurement mod and private test fixture; no core optimization mods or distant terrain.",
|
||||
"Full logs, screenshots, game binaries and assets remain private.",
|
||||
"Later selected stack locations place the observed failures in the screenshot callback; the independently logged Vulkan identifier is not established as their cause.",
|
||||
"Actual assertions rejected uniform callback images in all three cases. Overlay state was not recorded, and displayed-window correctness is not established.",
|
||||
"After guarding overlays, core/distant-terrain title readbacks pass but vanilla remains uniform; the aggregate research run fails. No world-rendering or physical-M2 claim.",
|
||||
"Later world probes pass all three Vulkan cases on the hosted Mac; failed title cases remain retained. These are short startup/readback/save probes, not physical-GPU performance tests."
|
||||
],
|
||||
"later_stack_run": {
|
||||
"source_commit": "a77476b54e7bf4a1b3a96cb9d8108ed7c1c7b2b0",
|
||||
"run_url": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37193954843",
|
||||
"cases": [
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"baseline",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
],
|
||||
"profile": "baseline",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"core-performance",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
],
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
],
|
||||
"profile": "vulkan",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"later_pixel_run": {
|
||||
"source_commit": "213498c77ed643617083dacf4aaa283a1cb4815a",
|
||||
"run_url": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37194354615",
|
||||
"cases": [
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"baseline",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"readback_callback_received": true,
|
||||
"readback_inspections": [
|
||||
{
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1
|
||||
}
|
||||
],
|
||||
"probe_failure_categories": [
|
||||
"uniform_readback"
|
||||
],
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
],
|
||||
"profile": "baseline",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"core-performance",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"readback_callback_received": true,
|
||||
"readback_inspections": [
|
||||
{
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1
|
||||
}
|
||||
],
|
||||
"probe_failure_categories": [
|
||||
"uniform_readback"
|
||||
],
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
],
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"readback_callback_received": true,
|
||||
"readback_inspections": [
|
||||
{
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1
|
||||
}
|
||||
],
|
||||
"probe_failure_categories": [
|
||||
"uniform_readback"
|
||||
],
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
],
|
||||
"profile": "vulkan",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"later_overlay_run": {
|
||||
"source_commit": "a1d8c1b8246008ac4076cdcaf0f64c71eaf4c767",
|
||||
"run_url": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37194690645",
|
||||
"cases": [
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"baseline",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"readback_callback_received": true,
|
||||
"readback_inspections": [
|
||||
{
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1
|
||||
}
|
||||
],
|
||||
"probe_failure_categories": [
|
||||
"uniform_readback"
|
||||
],
|
||||
"vulkan_error_codes": [
|
||||
"VK_ERROR_FEATURE_NOT_PRESENT"
|
||||
],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
],
|
||||
"profile": "baseline",
|
||||
"preferred_backend": "vulkan"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"core-performance",
|
||||
"--backend",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"report": {
|
||||
"schema": 1,
|
||||
"platform": "macOS-26.6.2-arm64-arm-64bit",
|
||||
"architecture": "arm64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "title",
|
||||
"title_screen_observed": true,
|
||||
"world_loaded": false,
|
||||
"ready_client_ticks": 42,
|
||||
"window_active": true,
|
||||
"overlay_present": false,
|
||||
"overlay_wait_ticks": 105,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 163,
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2",
|
||||
"private_png_sha256": "3c802923766cf9e7f45020bc2d858c23de655cb8e35fa058a050e7b09a1d3708",
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "vulkan",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"vulkan"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"report": {
|
||||
"schema": 1,
|
||||
"platform": "macOS-26.6.2-arm64-arm-64bit",
|
||||
"architecture": "arm64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "title",
|
||||
"title_screen_observed": true,
|
||||
"world_loaded": false,
|
||||
"ready_client_ticks": 42,
|
||||
"window_active": true,
|
||||
"overlay_present": false,
|
||||
"overlay_wait_ticks": 122,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 163,
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2",
|
||||
"private_png_sha256": "3c802923766cf9e7f45020bc2d858c23de655cb8e35fa058a050e7b09a1d3708",
|
||||
"profile": "vulkan",
|
||||
"preferred_backend": "vulkan",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"later_world_run": {
|
||||
"source_commit": "5f9f973295c5cc948a6999a849c2c843f5e831f6",
|
||||
"run_url": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37195149166",
|
||||
"cases": [
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"baseline",
|
||||
"--backend",
|
||||
"vulkan",
|
||||
"--world"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"report": {
|
||||
"schema": 1,
|
||||
"platform": "macOS-26.6.2-arm64-arm-64bit",
|
||||
"architecture": "arm64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 42,
|
||||
"window_active": true,
|
||||
"overlay_present": false,
|
||||
"overlay_wait_ticks": 323,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1278,
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2",
|
||||
"private_png_sha256": "9e9be2562390f24fe8c8e0442ef9cdfd47910febd95d8f0c0f5706191a53f1f6",
|
||||
"profile": "baseline",
|
||||
"preferred_backend": "vulkan",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"core-performance",
|
||||
"--backend",
|
||||
"vulkan",
|
||||
"--world"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"report": {
|
||||
"schema": 1,
|
||||
"platform": "macOS-26.6.2-arm64-arm-64bit",
|
||||
"architecture": "arm64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 51,
|
||||
"window_active": true,
|
||||
"overlay_present": false,
|
||||
"overlay_wait_ticks": 90,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1024,
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2",
|
||||
"private_png_sha256": "e0a6ad253ca0490b35217ce9ad799dc7d4c04e4ecf446eeacd1aa5196db317bb",
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "vulkan",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"vulkan",
|
||||
"--world"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"report": {
|
||||
"schema": 1,
|
||||
"platform": "macOS-26.6.2-arm64-arm-64bit",
|
||||
"architecture": "arm64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 53,
|
||||
"window_active": true,
|
||||
"overlay_present": false,
|
||||
"overlay_wait_ticks": 88,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 646,
|
||||
"sampled_pixels": 4160,
|
||||
"distinct_sampled_rgb": 1287,
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2",
|
||||
"private_png_sha256": "a17d1740e34cc9f49b67a4c56f51d0843f756e9d2eb3d19d6a926ad5f8f0ed36",
|
||||
"profile": "vulkan",
|
||||
"preferred_backend": "vulkan",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"local_linux_core_vulkan_world": {
|
||||
"schema": 1,
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 47,
|
||||
"window_active": true,
|
||||
"overlay_present": false,
|
||||
"overlay_wait_ticks": 111,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 800,
|
||||
"sampled_pixels": 4288,
|
||||
"distinct_sampled_rgb": 1895,
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.4.335 llvmpipe Mesa 26.0.8-1ubuntu0.3 (LLVM 21.1.8)",
|
||||
"private_png_sha256": "52b26102b3037cab4ab6b7011a6c1255eebaa808d1d3dd5e77ff23fcde092acb",
|
||||
"profile": "core-performance",
|
||||
"preferred_backend": "vulkan",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Darwin 25.6.0 arm64; logical CPUs 3
|
||||
fork=0 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=0 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
fork=1 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=1 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
fork=2 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=2 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
@@ -1,104 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Linux 6.17.0-1022-azure x86_64; logical CPUs 4
|
||||
fork=0 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=0 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
fork=1 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=1 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
fork=2 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=2 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
@@ -1,104 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Windows 2025Server AMD64; logical CPUs 4
|
||||
fork=0 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=0 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
fork=1 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=1 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
fork=2 requested_compact_headers=False
|
||||
compact_object_headers=false
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=AABB objects=100000 allocated_bytes=6400000 bytes_per_object=64.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=Vec3 objects=100000 allocated_bytes=4000000 bytes_per_object=40.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
fork=2 requested_compact_headers=True
|
||||
compact_object_headers=true
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=AABB objects=100000 allocated_bytes=5600000 bytes_per_object=56.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=Vec3 objects=100000 allocated_bytes=3200000 bytes_per_object=32.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=DhChunkPos objects=100000 allocated_bytes=2400000 bytes_per_object=24.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Long objects=100000 allocated_bytes=1600000 bytes_per_object=16.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
type=Object objects=100000 allocated_bytes=800000 bytes_per_object=8.000
|
||||
@@ -1,67 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"purpose": "Earlier private quad-reuse explorations; CPU mixed and allocation reduction is not retained RAM/FPS",
|
||||
"original_mod_sha256": "98f8db7ca8962a71625eef835f57d25c8afb802f2cf1b7c4c832fc070757e011",
|
||||
"private_fixture_sources": "Uncommitted private prototype before the production-hook fixture; not the final reproducible protocol",
|
||||
"observations": [
|
||||
{
|
||||
"private_probe": "latest-discarded-object",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"geometry_digest": "31509677879305c6a721677b38516fda0336f8c7b53dc3946839eb6fbf7fd0ee",
|
||||
"geometry_quads": 108358,
|
||||
"input_faces": 55296,
|
||||
"measured_faces": 3072000,
|
||||
"checksum": 60000,
|
||||
"cpu_ns": 166481448,
|
||||
"allocated_bytes": 144576000,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 54349387,
|
||||
"allocated_bytes": 48192000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 84133914,
|
||||
"allocated_bytes": 48192000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 27998147,
|
||||
"allocated_bytes": 48192000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"geometry_digest": "31509677879305c6a721677b38516fda0336f8c7b53dc3946839eb6fbf7fd0ee",
|
||||
"geometry_quads": 108358,
|
||||
"input_faces": 55296,
|
||||
"measured_faces": 3072000,
|
||||
"checksum": 60000,
|
||||
"cpu_ns": 185505067,
|
||||
"allocated_bytes": 2016000,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 59897923,
|
||||
"allocated_bytes": 672000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 63778316,
|
||||
"allocated_bytes": 672000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 61828828,
|
||||
"allocated_bytes": 672000
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"private_probe": "first-discarded-object",
|
||||
"results": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "2196637c5b2180a33fa5b926ab51069ab480618c1186b8a02872c7e758be0a70",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"geometry_digest": "8251175aa3e3cac30bb1366f8b40d0576c17978076ea7d244ff4d7cc361da7ee",
|
||||
"thread_geometry_digest": "096a85be06031d248f12e536e19e5c0496bb00c80f3387f670a0fae29438a732",
|
||||
"thread_workers": 4,
|
||||
"geometry_quads": 108358,
|
||||
"input_faces": 55296,
|
||||
"measured_faces": 3072000,
|
||||
"checksum": 60000,
|
||||
"cpu_ns": 40437624,
|
||||
"allocated_bytes": 144576000,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 13455029,
|
||||
"allocated_bytes": 48192000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 13828075,
|
||||
"allocated_bytes": 48192000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 13154520,
|
||||
"allocated_bytes": 48192000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"geometry_digest": "8251175aa3e3cac30bb1366f8b40d0576c17978076ea7d244ff4d7cc361da7ee",
|
||||
"thread_geometry_digest": "096a85be06031d248f12e536e19e5c0496bb00c80f3387f670a0fae29438a732",
|
||||
"thread_workers": 4,
|
||||
"geometry_quads": 108358,
|
||||
"input_faces": 55296,
|
||||
"measured_faces": 3072000,
|
||||
"checksum": 60000,
|
||||
"cpu_ns": 44074799,
|
||||
"allocated_bytes": 2016000,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 16004752,
|
||||
"allocated_bytes": 672000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 14047833,
|
||||
"allocated_bytes": 672000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 14022214,
|
||||
"allocated_bytes": 672000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual publisher quad builder inside Fabric with generated faces and lighting/material values.",
|
||||
"Opaque/translucent geometry, pooled error flags and every retained quad field match before and after upstream merging.",
|
||||
"Fresh allocations reuse at most one discarded successful-premerge quad; existing pool selection stays upstream.",
|
||||
"Three sequential warmed caller-loop observations are not independent forks; compilation can vary.",
|
||||
"Allocation reduction is not retained RAM, game FPS or a Mac GPU benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "0a0cd667d5cfdee7c59f5fe2c7a2eb15bd19e66e",
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37175709062"
|
||||
}
|
||||
}
|
||||
@@ -1,166 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "2196637c5b2180a33fa5b926ab51069ab480618c1186b8a02872c7e758be0a70",
|
||||
"platform": "Linux x86_64",
|
||||
"graphics": "llvmpipe software OpenGL",
|
||||
"settings": {
|
||||
"heap_bytes": 3221225472,
|
||||
"gc": "G1",
|
||||
"compact_headers": true,
|
||||
"render_distance": 12,
|
||||
"simulation_distance": 12,
|
||||
"lod_radius_chunks": 128,
|
||||
"lod_quality": "MEDIUM/MEDIUM/BLOCK",
|
||||
"terrain_workers": 2,
|
||||
"runtime_ratio": 0.5,
|
||||
"world_difficulty": "PEACEFUL"
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"profile": "m2-balanced",
|
||||
"quad_reuse_enabled": false,
|
||||
"elapsed_seconds": 120.415309971,
|
||||
"frame_samples": 220,
|
||||
"tick_samples": 2400,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"frame_stats": {
|
||||
"count": 220,
|
||||
"meanMs": 542.3438610045455,
|
||||
"p50Ms": 522.365908,
|
||||
"p95Ms": 713.237831,
|
||||
"p99Ms": 860.91664,
|
||||
"maxMs": 885.115974,
|
||||
"meanRate": 1.8438486574693962,
|
||||
"lowOnePercentRate": 1.1446485854821962,
|
||||
"over16Ms": 220,
|
||||
"over33Ms": 220,
|
||||
"over50Ms": 220,
|
||||
"over100Ms": 220
|
||||
},
|
||||
"tick_stats": {
|
||||
"count": 2400,
|
||||
"meanMs": 9.639125558749999,
|
||||
"p50Ms": 9.137695,
|
||||
"p95Ms": 16.989389,
|
||||
"p99Ms": 25.152306,
|
||||
"maxMs": 52.879001,
|
||||
"meanRate": 103.74385040479541,
|
||||
"lowOnePercentRate": 30.37834831626593,
|
||||
"over16Ms": 133,
|
||||
"over33Ms": 8,
|
||||
"over50Ms": 2,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_rss_peak_sampled_bytes": 3129790464,
|
||||
"render_loader_allocation_counters": [
|
||||
{
|
||||
"thread_id": 124,
|
||||
"thread": "DH-Render Loader Thread[1]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.375191422,
|
||||
"observed_allocated_bytes": 97869576,
|
||||
"observed_bytes_per_second": 1520299.5725237317
|
||||
},
|
||||
{
|
||||
"thread_id": 123,
|
||||
"thread": "DH-Render Loader Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.375191422,
|
||||
"observed_allocated_bytes": 91443128,
|
||||
"observed_bytes_per_second": 1420471.5509203072
|
||||
}
|
||||
],
|
||||
"preceding_jfr_gc_pause_total_ms": 263.975028,
|
||||
"preceding_jfr_gc_pause_longest_ms": 45.0698
|
||||
},
|
||||
{
|
||||
"profile": "quad-reuse",
|
||||
"quad_reuse_enabled": true,
|
||||
"elapsed_seconds": 120.476138714,
|
||||
"frame_samples": 224,
|
||||
"tick_samples": 2401,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"frame_stats": {
|
||||
"count": 224,
|
||||
"meanMs": 532.6331643258928,
|
||||
"p50Ms": 505.6209,
|
||||
"p95Ms": 735.235244,
|
||||
"p99Ms": 774.189261,
|
||||
"maxMs": 926.006251,
|
||||
"meanRate": 1.8774647674551252,
|
||||
"lowOnePercentRate": 1.208934822852848,
|
||||
"over16Ms": 224,
|
||||
"over33Ms": 224,
|
||||
"over50Ms": 224,
|
||||
"over100Ms": 224
|
||||
},
|
||||
"tick_stats": {
|
||||
"count": 2401,
|
||||
"meanMs": 9.308558193669304,
|
||||
"p50Ms": 8.82277,
|
||||
"p95Ms": 16.529268,
|
||||
"p99Ms": 22.206144,
|
||||
"maxMs": 95.741877,
|
||||
"meanRate": 107.42802259968617,
|
||||
"lowOnePercentRate": 30.32324112917506,
|
||||
"over16Ms": 114,
|
||||
"over33Ms": 8,
|
||||
"over50Ms": 3,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_rss_peak_sampled_bytes": 3100016640,
|
||||
"render_loader_allocation_counters": [
|
||||
{
|
||||
"thread_id": 125,
|
||||
"thread": "DH-Render Loader Thread[1]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.347664971,
|
||||
"observed_allocated_bytes": 116155920,
|
||||
"observed_bytes_per_second": 1805130.3035214841
|
||||
},
|
||||
{
|
||||
"thread_id": 124,
|
||||
"thread": "DH-Render Loader Thread[0]",
|
||||
"counter_observations": 2,
|
||||
"observed_seconds": 64.347664971,
|
||||
"observed_allocated_bytes": 104401656,
|
||||
"observed_bytes_per_second": 1622462.229935638
|
||||
}
|
||||
],
|
||||
"preceding_jfr_gc_pause_total_ms": 166.770211,
|
||||
"preceding_jfr_gc_pause_longest_ms": 46.786101
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "0a0cd667d5cfdee7c59f5fe2c7a2eb15bd19e66e",
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37175709062",
|
||||
"runtime_mod_matches_linux_ci": true,
|
||||
"initial_player_snapshot_sha256": "b4d11dbd6443625415a1e32aa242d0e2d09cd77ddb1becfde5d35cb6ab8d278a",
|
||||
"source_level_snapshot_sha256": "86a3c75ea993e50c4428da4dbadc5856688a9367f035c41b8bb49863a9aeb644",
|
||||
"first_saved_player_position": [
|
||||
-56.5,
|
||||
69.0,
|
||||
55.5
|
||||
],
|
||||
"first_saved_player_rotation": [
|
||||
141.5,
|
||||
16.950002670288086
|
||||
],
|
||||
"first_saved_cameras_matched": true
|
||||
},
|
||||
"notes": [
|
||||
"Fixed-order candidate then control single pair from separate copies of the same private world. Both stationary captures start approximately 307 seconds after the demo popup is dismissed; first saved cameras match.",
|
||||
"Both reports have zero menu/pause/focus exclusions, no dropped samples and matching captured settings apart from the isolated quad hook. CSV counts and actual offline viewer timelines pass.",
|
||||
"The preceding 60-second JFR recordings begin approximately 121 seconds after dismissal. Allocation counters have their own approximately 64-second spans; GC pause data is from those recordings, not from the later frame captures.",
|
||||
"Render-loader allocation counter rates are higher in this candidate observation. Task-completion/geometry volumes and cache/JIT effects are not controlled quantitatively. No useful live allocation improvement is established.",
|
||||
"Frame count and sampled peak RSS differences in this single software-rendered pair do not establish a meaningful game speed or retained-memory gain. RSS is not complete GPU/unified RAM. Not an Apple Silicon benchmark.",
|
||||
"Candidate saved, reloaded, saved again and exited with launcher code zero. Control saved, closed all terrain databases and exited with launcher code zero.",
|
||||
"No private worlds, full game logs or JFR recordings are included in these selected observations."
|
||||
]
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "2196637c5b2180a33fa5b926ab51069ab480618c1186b8a02872c7e758be0a70",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"geometry_digest": "8251175aa3e3cac30bb1366f8b40d0576c17978076ea7d244ff4d7cc361da7ee",
|
||||
"thread_geometry_digest": "096a85be06031d248f12e536e19e5c0496bb00c80f3387f670a0fae29438a732",
|
||||
"thread_workers": 4,
|
||||
"geometry_quads": 108358,
|
||||
"input_faces": 55296,
|
||||
"measured_faces": 3072000,
|
||||
"checksum": 60000,
|
||||
"cpu_ns": 198847198,
|
||||
"allocated_bytes": 144576000,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 82119774,
|
||||
"allocated_bytes": 48192000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 60671068,
|
||||
"allocated_bytes": 48192000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 56056356,
|
||||
"allocated_bytes": 48192000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"geometry_digest": "8251175aa3e3cac30bb1366f8b40d0576c17978076ea7d244ff4d7cc361da7ee",
|
||||
"thread_geometry_digest": "096a85be06031d248f12e536e19e5c0496bb00c80f3387f670a0fae29438a732",
|
||||
"thread_workers": 4,
|
||||
"geometry_quads": 108358,
|
||||
"input_faces": 55296,
|
||||
"measured_faces": 3072000,
|
||||
"checksum": 60000,
|
||||
"cpu_ns": 178894413,
|
||||
"allocated_bytes": 2016000,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 60070905,
|
||||
"allocated_bytes": 672000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 60020252,
|
||||
"allocated_bytes": 672000
|
||||
},
|
||||
{
|
||||
"cpu_ns": 58803256,
|
||||
"allocated_bytes": 672000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual publisher quad builder inside Fabric with generated faces and lighting/material values.",
|
||||
"Opaque/translucent geometry, pooled error flags and every retained quad field match before and after upstream merging.",
|
||||
"Fresh allocations reuse at most one discarded successful-premerge quad; existing pool selection stays upstream.",
|
||||
"Three sequential warmed caller-loop observations are not independent forks; compilation can vary.",
|
||||
"Allocation reduction is not retained RAM, game FPS or a Mac GPU benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "0a0cd667d5cfdee7c59f5fe2c7a2eb15bd19e66e",
|
||||
"fixture_protocol": "55,296 generated faces plus four concurrent builders, geometry/list boundaries checked before and after upstream merge; warm 2,000 batches, then 500 warm batches and 2,000 measured batches per sequential observation, 512 faces/batch"
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "2196637c5b2180a33fa5b926ab51069ab480618c1186b8a02872c7e758be0a70",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"compact_headers": false,
|
||||
"builder_shallow_bytes": 48,
|
||||
"quad_shallow_bytes": 56,
|
||||
"pending_scratch_shallow_bytes": 0,
|
||||
"geometry_quads": 1,
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"object_alignment_bytes": 8,
|
||||
"compressed_oops": true,
|
||||
"compressed_class_pointers": true
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"compact_headers": false,
|
||||
"builder_shallow_bytes": 48,
|
||||
"quad_shallow_bytes": 56,
|
||||
"pending_scratch_shallow_bytes": 56,
|
||||
"geometry_quads": 1,
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"object_alignment_bytes": 8,
|
||||
"compressed_oops": true,
|
||||
"compressed_class_pointers": true
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"compact_headers": true,
|
||||
"builder_shallow_bytes": 40,
|
||||
"quad_shallow_bytes": 48,
|
||||
"pending_scratch_shallow_bytes": 0,
|
||||
"geometry_quads": 1,
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"object_alignment_bytes": 8,
|
||||
"compressed_oops": true,
|
||||
"compressed_class_pointers": true
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"compact_headers": true,
|
||||
"builder_shallow_bytes": 48,
|
||||
"quad_shallow_bytes": 48,
|
||||
"pending_scratch_shallow_bytes": 48,
|
||||
"geometry_quads": 1,
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"object_alignment_bytes": 8,
|
||||
"compressed_oops": true,
|
||||
"compressed_class_pointers": true
|
||||
}
|
||||
],
|
||||
"differences": [
|
||||
{
|
||||
"compact_headers": false,
|
||||
"additional_builder_shallow_bytes": 0,
|
||||
"additional_builder_and_scratch_bytes": 56
|
||||
},
|
||||
{
|
||||
"compact_headers": true,
|
||||
"additional_builder_shallow_bytes": 8,
|
||||
"additional_builder_and_scratch_bytes": 56
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Instrumentation.getObjectSize measures shallow object sizes inside real applied Fabric clients.",
|
||||
"Four adjacent north-facing quads premerge to one retained geometry quad in each combination.",
|
||||
"Builder plus pending scratch difference excludes referenced lists, existing pools and every other game object.",
|
||||
"Object alignment/header/compressed-reference settings can differ on other JVMs or architectures.",
|
||||
"Not deep heap, GC residency, whole-game RSS/unified RAM, FPS or Apple Silicon performance.",
|
||||
"The agent and fixture are private test binaries excluded from playable packs."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "1243e148d455cd83f18b66f70bcfe2b8a4b746c9",
|
||||
"four_processes_exited_successfully": true,
|
||||
"agent_path_with_spaces_verified_separately": true
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"measurement": "Instrumentation.getObjectSize inside four private applied Fabric clients",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"original_mod_sha256": "2196637c5b2180a33fa5b926ab51069ab480618c1186b8a02872c7e758be0a70",
|
||||
"production_source_commit": "24c65f512dece83b153b206e33cd4c4294b42de2",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"compact_headers": false,
|
||||
"builder_shallow_bytes": 48,
|
||||
"quad_shallow_bytes": 56,
|
||||
"pending_scratch_shallow_bytes": 0,
|
||||
"geometry_quads": 1
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"compact_headers": false,
|
||||
"builder_shallow_bytes": 48,
|
||||
"quad_shallow_bytes": 56,
|
||||
"pending_scratch_shallow_bytes": 56,
|
||||
"geometry_quads": 1
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"compact_headers": true,
|
||||
"builder_shallow_bytes": 40,
|
||||
"quad_shallow_bytes": 48,
|
||||
"pending_scratch_shallow_bytes": 0,
|
||||
"geometry_quads": 1
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"compact_headers": true,
|
||||
"builder_shallow_bytes": 48,
|
||||
"quad_shallow_bytes": 48,
|
||||
"pending_scratch_shallow_bytes": 48,
|
||||
"geometry_quads": 1
|
||||
}
|
||||
],
|
||||
"differences": [
|
||||
{
|
||||
"compact_headers": false,
|
||||
"additional_builder_shallow_bytes": 0,
|
||||
"additional_builder_and_scratch_bytes": 56
|
||||
},
|
||||
{
|
||||
"compact_headers": true,
|
||||
"additional_builder_shallow_bytes": 8,
|
||||
"additional_builder_and_scratch_bytes": 56
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"protocol": "Initial private size agent and corrected system-loader reflection probe; metadata was later expanded in the reusable source.",
|
||||
"agent_source_sha256": "4783850bf80e9eb0379570bb7794a610406b48bddd7fe36ff499222d01e789b1",
|
||||
"fixture_source_sha256": "842514f97116a1e9cf5eb9a4b951657c90f7639effdfd526357831e2424282bf"
|
||||
},
|
||||
"notes": [
|
||||
"Shallow object sizes only, not a heap walk or whole-game memory measurement.",
|
||||
"Four north-facing adjacent quads produce one retained geometry quad in every process.",
|
||||
"Header modes use separate upstream/patched JVMs.",
|
||||
"Layouts can differ with JVM, architecture, compressed references and object alignment.",
|
||||
"The hook remains optional; these sizes do not establish an FPS or RAM improvement.",
|
||||
"No test agent binaries, game binaries, private worlds, full logs or JFR recordings are published."
|
||||
]
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"resource_models": 2883,
|
||||
"graph_fixtures": 440,
|
||||
"rejected_roots": 1039,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaModelBakingOracle.java": "d05e04d25ed5e5aef260ce21cac627a79bdc5376326a5cb34ffb98462b79c79b",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCuboidModelOracle.java": "7526f20513c549483122ab0d5ad24b9e87f38dc2f6aae55addd701a91ac85e43",
|
||||
"tools/test_model_baking_parity.py": "392ffec44918fb91740ca4a1316d684480d39f14bd34d46175f7f44946d15bd7",
|
||||
"tools/test_cuboid_model_parity.py": "4a8b1cdcac335751c23413341ae939eea1c49c38d33d70d0708b8904ab8d0461",
|
||||
"tools/test_model_resolution_parity.py": "d9595f2f1442f1f590b72d2a46600657e79ae103bec3d4c45db98242b964bde0",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "cb1e87d449114a63edd904c0559d631e8fa9feeb27efd6539aacdcfeae178876",
|
||||
"crates/horizon-assets/Cargo.toml": "2f2cffacec0b4e22dd7cb032d594289bc51c94ae6cc4e985fee3e310f441d751",
|
||||
"crates/horizon-assets/examples/blockstate_binding_fixture.rs": "e58fdb432f6bfc1e400729baa9b48d4f00955b3143b98b52506b47dd8b065cf8",
|
||||
"crates/horizon-assets/examples/blockstate_model_fixture.rs": "8f063322e57abdf9361a5a3a3badce2a7e727ee6d5e3947071cb448dfb38e8fd",
|
||||
"crates/horizon-assets/examples/cuboid_model_fixture.rs": "97609d90e3f6ce340f3590296db2dc778113bb2b33c7d1b54080a1d6f3023f40",
|
||||
"crates/horizon-assets/examples/model_baking_fixture.rs": "a762a8b48f09b5ac5e9c48d4a578b18b700810807fe5d3fc50798365cce1c314",
|
||||
"crates/horizon-assets/examples/model_choice_fixture.rs": "a4c8a46501d2b5ae7051f10f2307ade048e96c2d330af51cd2431bb44977a99a",
|
||||
"crates/horizon-assets/examples/model_resolution_fixture.rs": "c071067140299e49345a6ebd94e15b3b6d853cb9ae11d8de46e3cbdfb8b01f0e",
|
||||
"crates/horizon-assets/examples/sprite_animation_fixture.rs": "254314d52deda129ab461221d3d8b95323a60730d374e566c1cd599fba85f072",
|
||||
"crates/horizon-assets/examples/support/mod.rs": "bcf5a6d8a54845982191e037911c24139237771d6afa4b01b1e83c011489c3f5",
|
||||
"crates/horizon-assets/src/animation.rs": "ebbf7952146a0e66b41396174492f5702627170b03a57e6cd5a45c97a08c975e",
|
||||
"crates/horizon-assets/src/bake/transform.rs": "a95e658fef85b21bcb2f9f7512f98f98d57022d62c1199885b7133beae35a09d",
|
||||
"crates/horizon-assets/src/bake.rs": "f55dda6b6cee5ac6e65a8ee4837fdd2c6674437d59e59b4c45718f6324d4a4d5",
|
||||
"crates/horizon-assets/src/blockstate/bind.rs": "6278962e55c9786bba8184bdf2939af9c6e3b9002b08c3022129964b49a60009",
|
||||
"crates/horizon-assets/src/blockstate/choice.rs": "5a66c8b9833e2f19dd8b0773f3593d97ff5941d3c5b773896b98049efa1395ba",
|
||||
"crates/horizon-assets/src/blockstate.rs": "a4299dfd7adaeb4173982ffaa8e9c9eda2925739ae579a714193c99da2e7ce56",
|
||||
"crates/horizon-assets/src/json.rs": "99fe8af4fbf5d4eed408a92e829ac1a39597a0d92471a6bff73771fad9c830a8",
|
||||
"crates/horizon-assets/src/lib.rs": "e39f21c59a2c3e1c53d977b29bd5e0638e5fc41d86ff0fcc1882a6d90fd961e4",
|
||||
"crates/horizon-assets/src/model.rs": "57ddb3d65e88e7a8aa22c62bc298a2dae7f4e994326a873a31f06c0f36ed051b",
|
||||
"crates/horizon-assets/src/resolve.rs": "3927ac926cdcbd7d334901cc32d0ecc1e498b1bec98f76a46bca6d4964c13541"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-model-baking-parity/inputs.jsonl": "aba24d38f4fc1af060502f983923c2f279c016d0fd412d40f6d50093fac1d811"
|
||||
},
|
||||
"rust_output_sha256": "9216be3bbae9e59bb89b6ed780ccedc5608cd4583c8e7527e50b165a0d8d30da",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "9216be3bbae9e59bb89b6ed780ccedc5608cd4583c8e7527e50b165a0d8d30da",
|
||||
"matched_output_lines": 7100
|
||||
}
|
||||
],
|
||||
"scope": "Actual client FaceBakery geometry overload with a real unit-atlas sprite and default JOML math options. Identity blockstate transform, all bundled cuboid geometry and synthetic rotations, rescaling, default/explicit UVs, winding, degenerate and reversed bounds, inherited models and missing materials. Positions, UVs and element matrix coefficients compare by float bits. This does not cover blockstate transforms/UV lock, atlas packing, transparency classification, lighting, GPU rendering or gameplay."
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"commands": {
|
||||
"position": 12375,
|
||||
"legacy": 23,
|
||||
"xoroshiro": 23,
|
||||
"xoroshiro_state": 5,
|
||||
"storage": 274
|
||||
},
|
||||
"inputs_sha256": "dbdebadd4b14ec57d198d22f15e196e0cc9a6b88bac6691db702348a769459c1",
|
||||
"rust_output_sha256": "7801e3274307aab1852d96d996d7f29b1ca1567750d231c5f74c9e3263f84f87",
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCoreOracle.java": "649b8353fcc3c45a3baf8e2d78dc76cfedfd96de36030b0dddfb2305829cd844",
|
||||
"tools/test_rust_parity.py": "d2d06842abb80d9c718a5bf0e71ab0c098ad4c519b8ef35711e30cf58af140d7",
|
||||
"crates/horizon-core/src/bin/parity.rs": "7b455f2181862e1430e7387633c146877c2d317c2ea682c1e6fa64345dbc5885",
|
||||
"crates/horizon-core/src/lib.rs": "deb2e339f78c9f5bd55a1c8a8428f3e37fae93a02268f9a2fc782dc3e27c2869",
|
||||
"crates/horizon-core/src/position.rs": "8c2a54e912f8c31a774682b3377ca5f2138910350fbf605e760b24e2cbcacfba",
|
||||
"crates/horizon-core/src/random.rs": "2f304dfb580a6bc1b5c51b048a2fa2a57f73c5f28f5eb2447f925bf138513389",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/Cargo.toml": "1928b71e389c24c506804f0d8e3104976da6feb27d9bfdbb3b55fb7af0c62664",
|
||||
"Cargo.toml": "9ca59fba126895de9e58952eb5e9421bee0ffdfb5f6d2fcb03d7726e394e7c3f",
|
||||
"Cargo.lock": "f2b104dbb3f64512b6c72e8d8732b7adda849212689e8c816f9a6abf564f4660"
|
||||
},
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "7801e3274307aab1852d96d996d7f29b1ca1567750d231c5f74c9e3263f84f87",
|
||||
"matched_output_lines": 1017920
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "7801e3274307aab1852d96d996d7f29b1ca1567750d231c5f74c9e3263f84f87",
|
||||
"matched_output_lines": 1017920
|
||||
}
|
||||
],
|
||||
"scope": "Selected integer position, seeded RNG and packed-storage operations only. No gameplay, rendering or performance claim."
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"resource_models": 2883,
|
||||
"synthetic_models": 2337,
|
||||
"rejected_models": 1034,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCuboidModelOracle.java": "7526f20513c549483122ab0d5ad24b9e87f38dc2f6aae55addd701a91ac85e43",
|
||||
"tools/test_cuboid_model_parity.py": "3b7c018570b0f609aae43cef60ff3139c543d5d629be804a5aa257e3ab2dd67c",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "7b4ab0ffa35af7ea8b6e38525f18ff6c3e94768198915f5ffe560d84263423f8",
|
||||
"crates/horizon-assets/Cargo.toml": "fadb78cf819e026500606c45d27138ed67fcbbc967ae8cee6c1e7c82c9046b36",
|
||||
"crates/horizon-assets/examples/cuboid_model_fixture.rs": "97609d90e3f6ce340f3590296db2dc778113bb2b33c7d1b54080a1d6f3023f40",
|
||||
"crates/horizon-assets/examples/model_resolution_fixture.rs": "c071067140299e49345a6ebd94e15b3b6d853cb9ae11d8de46e3cbdfb8b01f0e",
|
||||
"crates/horizon-assets/examples/support/mod.rs": "bcf5a6d8a54845982191e037911c24139237771d6afa4b01b1e83c011489c3f5",
|
||||
"crates/horizon-assets/src/json.rs": "e7b89bf4852f561a0e5bf1a984857c61e755961dfd86fcc326b6d55558615f39",
|
||||
"crates/horizon-assets/src/lib.rs": "0d31dd0fa84d7b4467a78a1a2b8a8e179533ef5e64a7cbae88e5358e59160a40",
|
||||
"crates/horizon-assets/src/model.rs": "57ddb3d65e88e7a8aa22c62bc298a2dae7f4e994326a873a31f06c0f36ed051b",
|
||||
"crates/horizon-assets/src/resolve.rs": "3927ac926cdcbd7d334901cc32d0ecc1e498b1bec98f76a46bca6d4964c13541"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-cuboid-model-parity/inputs.jsonl": "9c1822180e1d6869e65eea81a38cbcf3786b9286d4c839e31ba686501694d171"
|
||||
},
|
||||
"rust_output_sha256": "80c4b305084658ab968ed466fb1609bfa78d60738d09790c6243b4de27dfb8fc",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "80c4b305084658ab968ed466fb1609bfa78d60738d09790c6243b4de27dfb8fc",
|
||||
"matched_output_lines": 5220
|
||||
}
|
||||
],
|
||||
"scope": "Actual pinned CuboidModel.fromStream parser compared over every bundled block model and synthetic JSON/numeric/syntax cases. Decoded geometry, texture materials/references, nullable children, inheritance markers, face quadrants, light emission and display transforms; floats compare by IEEE-754 bits. Rejections normalize exception text. This client-only API is absent from the server. Does not yet validate parent resolution, rotation matrices, quad baking, blockstate dispatch, rendered pixels or gameplay."
|
||||
}
|
||||
@@ -1,373 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"exhaustive": false,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaFloatLogOracle.java": "1794510183faa07892761e93094301b69665d4b6a5300ef7117b5482832165f2",
|
||||
"tools/test_float_log_parity.py": "1ba733163133ea6232a9021fcee5b38255887d62ebab8d1b42e4ccad259b21f3",
|
||||
"tools/test_rust_parity.py": "7efa699a38c5820424f5fc8992ee601dbfe26d6482da9d2dab2c17c41fe8f12a",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "ca79feb1ff690557a54dcb3a504967453dd0190ac65d7322512c778048127c5e",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "e42a19893a8d75f8f62b564bd9e527131d87fb469c808422fb8d3b14eb9edac0",
|
||||
"crates/horizon-core/src/density/cache.rs": "3ccc1268dca96259890279e9f91cb7a099c74b12e6ca2973880d4fa246f7a619",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ede1da60dec40f6df846e44a663bff03c21631c21f2b6e25a58c358115f122a1",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "47f1716a8b5fffc1012b9e4654e223b0ff818f00f6a059818ab3dfe8c37e3056",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "3034eccba649851d7a95e276a48472efd70cdf747b54526b565fb0feb88ce43a",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "3e56cc0f6b51c6faa4bd8d9fc259bf01a0c3bf647f36be8be7640971cfe3b334",
|
||||
"crates/horizon-core/src/density/power.rs": "b18a5b0d524de52a3d1e6028adcddd183424be2913f24d3f098ff56c5e1c6942",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "de22acd7430df3f69ef3632d427c57dffe57f3bdb78950bc75eac7e179ccf9df",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "3968e2a337a6a23226c485057c79359e66df16683f00fb4ebc9fabb03910a015",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random.rs": "92135a94c79111cc810b4b071dbd76043ee47c2585fd431e7486ea381f19e5db",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "84852599dde78687d782f115a5b4b3ef6856c1f9cc92917255167e89c72ab01e",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"Cargo.toml": "dc370d5fdde37238c3e4820046f11c3201020406a4edfa1308257c13edbdcda4",
|
||||
"Cargo.lock": "faae2edce8b573fd32fcb4bd1f898be7d700a5b38479439f5bec96df764688fd"
|
||||
},
|
||||
"comparisons": [
|
||||
{
|
||||
"start_bits": 0,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "1e684e3e6b93407fb3f37762a4de01f8706c047cf5294cf9d2a1ac173fc02075",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "1e684e3e6b93407fb3f37762a4de01f8706c047cf5294cf9d2a1ac173fc02075",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "1e684e3e6b93407fb3f37762a4de01f8706c047cf5294cf9d2a1ac173fc02075",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 8388608,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "4200cba9cf0053911e1d672fabbee94f5267d5b7aa109fbe57ddc5a4f7b70393",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "4200cba9cf0053911e1d672fabbee94f5267d5b7aa109fbe57ddc5a4f7b70393",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "4200cba9cf0053911e1d672fabbee94f5267d5b7aa109fbe57ddc5a4f7b70393",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 1056899072,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "cae10428767d3e776f5183caba1780897d2e1831913c05ae6dd8d843a6e25a76",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "cae10428767d3e776f5183caba1780897d2e1831913c05ae6dd8d843a6e25a76",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "cae10428767d3e776f5183caba1780897d2e1831913c05ae6dd8d843a6e25a76",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 1065287680,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "59024062288c0bc65906a38484eff0fb73aaba11cb8110aaebc6dde8891ed10c",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "59024062288c0bc65906a38484eff0fb73aaba11cb8110aaebc6dde8891ed10c",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "59024062288c0bc65906a38484eff0fb73aaba11cb8110aaebc6dde8891ed10c",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 1065353216,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "01849695d0e9a30ccd132270cb79ecaaf1065411d66b323a36f1b87f5d0e4596",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "01849695d0e9a30ccd132270cb79ecaaf1065411d66b323a36f1b87f5d0e4596",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "01849695d0e9a30ccd132270cb79ecaaf1065411d66b323a36f1b87f5d0e4596",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 1073741824,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "0df001f091df446399cccd24b0fa1e4114894c263d5cdc707b8c4a2ded269936",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "0df001f091df446399cccd24b0fa1e4114894c263d5cdc707b8c4a2ded269936",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "0df001f091df446399cccd24b0fa1e4114894c263d5cdc707b8c4a2ded269936",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 2139029504,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "c39faee80d047d450472ae5eb25f2811e4010b5aad1ccad80ff4d8f7638bd3d5",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "c39faee80d047d450472ae5eb25f2811e4010b5aad1ccad80ff4d8f7638bd3d5",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "c39faee80d047d450472ae5eb25f2811e4010b5aad1ccad80ff4d8f7638bd3d5",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 2139095040,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "1c60d380d4dc55a05bed3452e32f4d5c813c9beb4459ba890338c27f0b047345",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "1c60d380d4dc55a05bed3452e32f4d5c813c9beb4459ba890338c27f0b047345",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "1c60d380d4dc55a05bed3452e32f4d5c813c9beb4459ba890338c27f0b047345",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 2147418112,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 2147483648,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "b365699b17956be9409c58c88b48da5f7edf7e4783fcca72efa00b0dae84455f",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "b365699b17956be9409c58c88b48da5f7edf7e4783fcca72efa00b0dae84455f",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "b365699b17956be9409c58c88b48da5f7edf7e4783fcca72efa00b0dae84455f",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 2155872256,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 3212771328,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 3212836864,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 4286513152,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 4286578688,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"start_bits": 4294901760,
|
||||
"count": 65536,
|
||||
"rust_output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "f3b37b44be6c4c25b1d85b2bce7844c67cc9f3e5a3270d4a53101d99049b966e",
|
||||
"matched_float_values": 65536
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"scope": "Compiled scalar UnaryFunction.LogSampler compared by float result bits across the recorded input bit ranges, including signed zeros, subnormals, finite values, infinities and NaNs. NaN results are canonicalized as Float.floatToIntBits. Exhaustive mode checks all 2^32 float input bit patterns against both checksum-pinned JARs on this machine's JDK. Bulk composition, range propagation, compiler rewriting and other operations belong to the separate density suite. This does not establish double-precision Math.log parity, other-platform math parity, complete terrain, gameplay or performance."
|
||||
}
|
||||
@@ -1,202 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"fixtures": 8338,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionContextOracle.java": "d2f5b022be1ee2111c38acf6710c21b59da09506e246fb22b8c7c8eeb253a7d9",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaFaceSupportOracle.java": "9ce939a435842867786fed648951bbe77f6ab843f6df09af15f3deb1948c4877",
|
||||
"tools/test_collision_context_parity.py": "75d6f01e072867d2bd286d2e518e123fcfe055a11ac1705ec99ecec3975cb8d2",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "cb1e87d449114a63edd904c0559d631e8fa9feeb27efd6539aacdcfeae178876",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-world/Cargo.toml": "977338bf3e654193685b015d383493b9f59ff6f5d6210bec212cef8ac4a50bed",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "a40c9d7a4e0a734c124dc856e31359fd4d8de3d1bfc79c86787afa8e8e05e480",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/collision.rs": "05313e0c1f3089524fe029f9aac3e439cd47f1c9584c8c7e154c9adcfa88c335",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/lib.rs": "e321bed47d34ef1fdcdd99dad07cc537d34ed3cfbc07f10f10ec8b6848daf208",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "d35ded93fe6e95ea045cadcf4925e656dc34ef832b742179b9ad0cc49f902f31",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f",
|
||||
"crates/horizon-world/examples/collision_context_fixture.rs": "22701112922a2f806a1d6906f0e56bfbff309093bbbc7c140bf077d9686e854f"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-collision-context-parity/inputs.txt": "60b49e91a7a4999cfb8eb6ac3fbc6ec0a931d68cd53f9737959a2bd2b42be7a5"
|
||||
},
|
||||
"rust_output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"matched_output_lines": 225126
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"matched_output_lines": 225126
|
||||
}
|
||||
],
|
||||
"scope": "Actual CollisionContext factories and EntityCollisionContext/Empty/PositionCollisionContext queries on controlled player and marker snapshots. Checks entity identity, captured descending and placement flags, fluid collision flags, empty-stack AIR identity, height thresholds including f32 epsilon, null factories, callback arguments/order/failures and all five fluid type pairs. Entity lifecycle, inventory mutations after capture, experimental minecart contexts, contextual block shape dispatch and live movement integration remain pending."
|
||||
}
|
||||
@@ -1,204 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"fixtures": 56448,
|
||||
"block_states": 32,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionContextOracle.java": "d2f5b022be1ee2111c38acf6710c21b59da09506e246fb22b8c7c8eeb253a7d9",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaFaceSupportOracle.java": "9ce939a435842867786fed648951bbe77f6ab843f6df09af15f3deb1948c4877",
|
||||
"tools/test_collision_context_parity.py": "75d6f01e072867d2bd286d2e518e123fcfe055a11ac1705ec99ecec3975cb8d2",
|
||||
"tools/test_scaffolding_collision_parity.py": "bab75e2cad68a3193035a87497eaa372466c405293cc547e39dbd7bd4450d69d",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "cb1e87d449114a63edd904c0559d631e8fa9feeb27efd6539aacdcfeae178876",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-world/Cargo.toml": "977338bf3e654193685b015d383493b9f59ff6f5d6210bec212cef8ac4a50bed",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "a40c9d7a4e0a734c124dc856e31359fd4d8de3d1bfc79c86787afa8e8e05e480",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/collision.rs": "05313e0c1f3089524fe029f9aac3e439cd47f1c9584c8c7e154c9adcfa88c335",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/lib.rs": "e321bed47d34ef1fdcdd99dad07cc537d34ed3cfbc07f10f10ec8b6848daf208",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "d35ded93fe6e95ea045cadcf4925e656dc34ef832b742179b9ad0cc49f902f31",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f",
|
||||
"crates/horizon-world/examples/collision_context_fixture.rs": "22701112922a2f806a1d6906f0e56bfbff309093bbbc7c140bf077d9686e854f"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-scaffolding-collision-parity/inputs.txt": "5945054e86700237a7b6de6b362a37a98bdc8afaa67004e8aaa92da1421b552c"
|
||||
},
|
||||
"rust_output_sha256": "33a33cd612c999ab21f1acbbdee522f2ec2b3f877d62f922c665715e3012e207",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "33a33cd612c999ab21f1acbbdee522f2ec2b3f877d62f922c665715e3012e207",
|
||||
"matched_output_lines": 524300
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "33a33cd612c999ab21f1acbbdee522f2ec2b3f877d62f922c665715e3012e207",
|
||||
"matched_output_lines": 524300
|
||||
}
|
||||
],
|
||||
"scope": "Actual CollisionContext.getCollisionShape dispatch and native scaffolding behavior for all 32 scaffolding states, nine context variants, descending flags, integer Y extremes, nonfinite positions and adjacent double values around the top/bottom float-epsilon thresholds. Full shape coordinates, extrema, box ordering and cube metadata match. A rejecting world proxy verifies selection performs no world reads. Scaffolding placement/update/falling behavior and live movement remain pending."
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
{
|
||||
"adapter": {
|
||||
"backend": "Vulkan",
|
||||
"device": 0,
|
||||
"device_type": "Cpu",
|
||||
"name": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"vendor": 65541
|
||||
},
|
||||
"arch": "x86_64",
|
||||
"camera_pitch": -0.3839724354387525,
|
||||
"camera_position": [
|
||||
25.0,
|
||||
18.0,
|
||||
25.0
|
||||
],
|
||||
"camera_yaw": -2.356194490192345,
|
||||
"elapsed_seconds": 0.541997659,
|
||||
"error": null,
|
||||
"merged_quads": 166,
|
||||
"os": "linux",
|
||||
"presented_frames": 30,
|
||||
"project": "Horizon",
|
||||
"resident_chunks": 9,
|
||||
"schema": 1,
|
||||
"scope": "Native opaque-cube renderer and free inspection camera; no gameplay simulation",
|
||||
"window_size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"executable_sha256": "4907a5678c323ab250934f3dfa32ba10e1554635f81d226ed2a88e7625737c5f",
|
||||
"resource_manifest_sha256": "eda44ebee6904eab880c15458dbd1212dc2799d320a4419fc810e2ceb0e5d9d6",
|
||||
"sources": {
|
||||
"crates/horizon-client/src/assets.rs": "f35107193fc6d08be41891181da1803abf15bd373b62dd63758213809e2c5cbf",
|
||||
"crates/horizon-client/src/camera.rs": "f9821c8a51a004dd4ad9c0952e746eb07926f6040cf8660bc26da5a0728ae572",
|
||||
"crates/horizon-client/src/main.rs": "0cc250b695ba0d1e49107f581695edea1d24cdc2fb8ffa3a46368ef2c40430a7",
|
||||
"crates/horizon-client/src/mesh.rs": "e2fa00435ec8239ba8a3c6539022bb50a10ff9c3850c6faab72f86aabea896ef",
|
||||
"crates/horizon-client/src/render.rs": "4d58443465ea25769d73701d138db6a99c4f939a288e89e1f2b1ee3d017a2737",
|
||||
"crates/horizon-client/src/world.rs": "901aa59c23ea084e926eec014589f4d511c41691a8dc1520534e039c28cfc76c",
|
||||
"crates/horizon-client/src/world.wgsl": "dd7d579d0afb8a61da849171e444fa05a3e9d15bbfe6d019ff6653e8e0774c66",
|
||||
"Cargo.toml": "4f803d21656a1420555bee6369617ddc825219a2cf05f842a209b3f8eaa583ec",
|
||||
"Cargo.lock": "b1674833e1d5e66032589eea75643bf1c1eb2f2d6503e79ff7da8efa1b6d21dc",
|
||||
"crates/horizon-client/Cargo.toml": "3047995858c9cd103ce358dfd991cb81e7d0688a149f4874cc73c36b859bbff7",
|
||||
"tools/prepare_native_client.py": "b16f62acfc6242552af14ff405e2169ebba3adab12b991fc011e78edb4ffa982",
|
||||
"tools/test_native_client.py": "adb9aa87cc28b0980d811ce47c1b09878d2d72cef2e083b278ec41183d231f1b"
|
||||
},
|
||||
"validation": {
|
||||
"rust_workspace_tests": "passed",
|
||||
"clippy_all_targets": "passed",
|
||||
"python_tooling_tests": 149,
|
||||
"mesh_tests": 2,
|
||||
"manual_visual_checks": [
|
||||
"textured scene with 81 chunks and 382 merged quads",
|
||||
"window resize from 1600x1000 to 1280x720"
|
||||
],
|
||||
"input_checks": [
|
||||
"physical W movement",
|
||||
"physical Right rotation",
|
||||
"captured relative mouse delta (150,-50) changed yaw by -0.3 and pitch by +0.1 radians",
|
||||
"Escape and Ctrl+Q"
|
||||
]
|
||||
},
|
||||
"environment": {
|
||||
"os": "Ubuntu 26.04.1 LTS",
|
||||
"kernel": "7.0.0-31-generic",
|
||||
"cpu": "Intel Core i7-7500U",
|
||||
"display": "headless Sway Wayland",
|
||||
"renderer": "Vulkan llvmpipe software rasterizer"
|
||||
},
|
||||
"limits": [
|
||||
"Controlled development scene only; no gameplay simulation or vanilla pixel-parity claim",
|
||||
"No hardware FPS or render-distance improvement demonstrated",
|
||||
"macOS and Windows runtime checks and final playable packages remain pending",
|
||||
"Private game resources and screenshots excluded from this report"
|
||||
],
|
||||
"mouse_check": {
|
||||
"adapter": {
|
||||
"backend": "Vulkan",
|
||||
"device": 0,
|
||||
"device_type": "Cpu",
|
||||
"name": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"vendor": 65541
|
||||
},
|
||||
"arch": "x86_64",
|
||||
"camera_pitch": -0.2839724354387525,
|
||||
"camera_position": [
|
||||
25.0,
|
||||
18.0,
|
||||
25.0
|
||||
],
|
||||
"camera_yaw": -2.6561944901923447,
|
||||
"elapsed_seconds": 8.654220098,
|
||||
"error": null,
|
||||
"merged_quads": 166,
|
||||
"os": "linux",
|
||||
"presented_frames": 532,
|
||||
"project": "Horizon",
|
||||
"resident_chunks": 9,
|
||||
"schema": 1,
|
||||
"scope": "Native opaque-cube renderer and free inspection camera; no gameplay simulation",
|
||||
"window_size": [
|
||||
1280,
|
||||
720
|
||||
]
|
||||
},
|
||||
"physical_keyboard_check": {
|
||||
"adapter": {
|
||||
"backend": "Vulkan",
|
||||
"device": 0,
|
||||
"device_type": "Cpu",
|
||||
"name": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"vendor": 65541
|
||||
},
|
||||
"arch": "x86_64",
|
||||
"camera_pitch": -0.3839724354387525,
|
||||
"camera_position": [
|
||||
18.943610750255,
|
||||
18.0,
|
||||
18.943610750255
|
||||
],
|
||||
"camera_yaw": -2.6478875051923443,
|
||||
"elapsed_seconds": 17.488515374,
|
||||
"error": null,
|
||||
"merged_quads": 166,
|
||||
"os": "linux",
|
||||
"presented_frames": 1080,
|
||||
"project": "Horizon",
|
||||
"resident_chunks": 9,
|
||||
"schema": 1,
|
||||
"scope": "Native opaque-cube renderer and free inspection camera; no gameplay simulation",
|
||||
"window_size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"source_note": "Same camera/input behavior; before subsequent diagnostic formatting and equivalent let-chain cleanup"
|
||||
},
|
||||
"private_capture_sha256": {
|
||||
"first-launch.png": "7e53fa26d3d55f943db41828e1c8dd5b65279f9a130854fff288c75a394ee5aa",
|
||||
"moved-resized.png": "be5a0473ab505740d18ba8eecf1512c15ba93d53d046f49b8dfa96357b25bf22",
|
||||
"mouse-look.png": "7103678309f06938de40ac294f2f9ca1f56b253bc463e792b121ba607cd7b0a3"
|
||||
}
|
||||
}
|
||||
@@ -1,800 +0,0 @@
|
||||
{
|
||||
"adapter": {
|
||||
"backend": "Vulkan",
|
||||
"device": 0,
|
||||
"device_type": "Cpu",
|
||||
"name": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"vendor": 65541
|
||||
},
|
||||
"animated_sprites": 1,
|
||||
"animation_uploads": 1,
|
||||
"arch": "x86_64",
|
||||
"camera_pitch": -0.3839724354387525,
|
||||
"camera_position": [
|
||||
25.0,
|
||||
18.0,
|
||||
25.0
|
||||
],
|
||||
"camera_yaw": -2.356194490192345,
|
||||
"collision_camera": false,
|
||||
"culled_model_faces": 59636,
|
||||
"elapsed_seconds": 0.547544857,
|
||||
"error": null,
|
||||
"fall_damage_requests": 0,
|
||||
"last_requested_fall_damage": null,
|
||||
"merged_quads": 3169,
|
||||
"mesh_revision": 0,
|
||||
"model_blocks": 10919,
|
||||
"model_gallery": [
|
||||
{
|
||||
"block": "minecraft:oak_stairs",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_stairs_inner",
|
||||
"rotations": [
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "north",
|
||||
"half": "top",
|
||||
"shape": "inner_left",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 5466
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone_slab",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_slab_top",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"type": "top",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 15250
|
||||
},
|
||||
{
|
||||
"block": "minecraft:anvil",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/anvil",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east"
|
||||
},
|
||||
"state_id": 12965
|
||||
},
|
||||
{
|
||||
"block": "minecraft:torch",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/torch",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 4926
|
||||
},
|
||||
{
|
||||
"block": "minecraft:lantern",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/lantern",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"hanging": "false",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 24197
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_post",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "true",
|
||||
"north": "true",
|
||||
"south": "false",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 8642
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence_gate",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_gate_open",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"in_wall": "false",
|
||||
"open": "true",
|
||||
"powered": "false"
|
||||
},
|
||||
"state_id": 10401
|
||||
},
|
||||
{
|
||||
"block": "minecraft:iron_bars",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_post_ends",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side_alt",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "false",
|
||||
"north": "true",
|
||||
"south": "true",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 9711
|
||||
},
|
||||
{
|
||||
"block": "minecraft:cobweb",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/cobweb",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 2362
|
||||
},
|
||||
{
|
||||
"block": "minecraft:grindstone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/grindstone",
|
||||
"rotations": [
|
||||
1,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"face": "wall",
|
||||
"facing": "west"
|
||||
},
|
||||
"state_id": 24135
|
||||
},
|
||||
{
|
||||
"block": "minecraft:ladder",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/ladder",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 7312
|
||||
},
|
||||
{
|
||||
"block": "minecraft:amethyst_cluster",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/amethyst_cluster",
|
||||
"rotations": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 26764
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_mirrored",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
}
|
||||
],
|
||||
"model_quads": 179,
|
||||
"movement_ticks": 0,
|
||||
"os": "linux",
|
||||
"player_absorption": null,
|
||||
"player_dead": null,
|
||||
"player_exhaustion": null,
|
||||
"player_fall_distance": null,
|
||||
"player_food": null,
|
||||
"player_food_timer": null,
|
||||
"player_health": null,
|
||||
"player_hurt_cooldown": null,
|
||||
"player_on_ground": null,
|
||||
"player_position": null,
|
||||
"player_saturation": null,
|
||||
"player_velocity": null,
|
||||
"presented_frames": 30,
|
||||
"project": "Horizon",
|
||||
"resident_chunks": 9,
|
||||
"schema": 1,
|
||||
"scope": "Native resident-scene renderer with inspection camera and optional fixed-rate dry walking test; full gameplay remains unfinished",
|
||||
"sprite_layers": 18,
|
||||
"visible_model_faces": 5991,
|
||||
"walking": false,
|
||||
"window_size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"world_revision": 0,
|
||||
"native_scene_culling": {
|
||||
"blocks": 10919,
|
||||
"culled_faces": 59636,
|
||||
"visible_faces": 5991
|
||||
},
|
||||
"native_selection": {
|
||||
"matched_placements": 16,
|
||||
"selected_parts": 20,
|
||||
"client_jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "a2ff1c890d6f3a5292c3a9402f02ca5404a993dc117853b25cbe64ac92b76d30",
|
||||
"scope": "Actual native registry states, blockstate dispatch, tagged root baking and legacy collection using state.getSeed(position). All 16 featured placements match model names/transforms. An independently constructed native scene also matches total occupied blocks and visible/culled model faces using native parent resolution, rotated culling directions and Block.shouldRenderFace. No shader/pixel parity claim."
|
||||
},
|
||||
"resource_files": {
|
||||
"files": 5590,
|
||||
"sha256": "62f859d4d21b82158ab73e26cfa4973d58ab5926ab63d71c70c7a4d173502b7b"
|
||||
},
|
||||
"executable_sha256": "62fc8ff8bc750d2afeede7aaf830484de869655d7334c2a6405c9194e9a79cf9",
|
||||
"resource_manifest_sha256": "92a51de578be0e7c37d21e94caa3f22503f7d88b73827a5fce109b1b889e5d18",
|
||||
"sources": {
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "6884c7209f007ab9ee742b9c3c73828cfa1c6753d35b5fe25a87cab5955b33f8",
|
||||
"tools/test_native_client.py": "6c615fed67fd7bcf09b3184216e08a82012049880a0d4da7c89f86553090cbda",
|
||||
"crates/horizon-client/Cargo.toml": "d56524457d761c2613c0699b20e21ad6977d93e009d59ef150bbd9fc20d7a025",
|
||||
"crates/horizon-assets/Cargo.toml": "2f2cffacec0b4e22dd7cb032d594289bc51c94ae6cc4e985fee3e310f441d751",
|
||||
"crates/horizon-client/src/assets.rs": "e595afa610e0425d0b3ad694218794bf9e680e46ae80f3925c278ef1a823c914",
|
||||
"crates/horizon-client/src/camera.rs": "d386a56ca8fb3b37ba2b2ed9d09342f61b409a575bb21590e934120b4ccebfa6",
|
||||
"crates/horizon-client/src/clock.rs": "4851ada3e8e65d935eda8c0b57d3b51233b34f74aab4f040fd53db0e0d40b8df",
|
||||
"crates/horizon-client/src/collisions.rs": "112286b07c4cd11b36da8b6799e0e069e69dfddf9a8a3f9ce36dcb282c791d67",
|
||||
"crates/horizon-client/src/health.rs": "b5e2d3cde4bd58d906e6f6d47cd756ed23aa6706c71b10c3aedde30c11806403",
|
||||
"crates/horizon-client/src/hunger.rs": "01d8a35f570f2a0991ac17a078f2066a5a83037a728158585765723d208b4611",
|
||||
"crates/horizon-client/src/input.rs": "55b259ca6425c502270e7abc4d3ae1b3838633e2bd77d3817c6e00d9143a2beb",
|
||||
"crates/horizon-client/src/landing.rs": "b9d0ecc5ec60a09d75ab9fe778e0a2e5bbb36fd8364a7ce996405f3dc9cb3b9f",
|
||||
"crates/horizon-client/src/lib.rs": "bc1d0a7e42c11a9090abfebc4ed1f595415dd8b72a6a04b63c765b0deba29f6f",
|
||||
"crates/horizon-client/src/main.rs": "aeb6b5220f8b89a1c9e85bf23fa2bbbafbc876108e59a222d383ad6e6fa238a6",
|
||||
"crates/horizon-client/src/mesh.rs": "4ac8d85b30f599b37a98b92adcc016b16434816b93c401bd39b8215f591f9330",
|
||||
"crates/horizon-client/src/models/catalog.rs": "620103719167fc9ab76e730d68eeacb50014e95b7ad209ae7adf2cbbe69f70f7",
|
||||
"crates/horizon-client/src/models/cube.rs": "1067229f9dd9b276950bf7ec0c5f67061ce3d40a21932dca8034b9748e7439a4",
|
||||
"crates/horizon-client/src/models.rs": "98dd3b969947c2b297862a934e6235067ddc1fc8cda5adcc6276d19014d4b048",
|
||||
"crates/horizon-client/src/motion.rs": "673cc4bf6c4bc5523c104981e7c1cd640081a1b6ddca1e0ebe02181f04830347",
|
||||
"crates/horizon-client/src/render.rs": "75cb40c257cf61e51009d292a06cd96532f59320b12ed7c3a509bbdbe1accdd4",
|
||||
"crates/horizon-client/src/sprites.rs": "292f844a31f6e8884008df9630e2b8862db1acfbc4640cc07d526e25f21f0bc5",
|
||||
"crates/horizon-client/src/world.rs": "0333ecf3e18ccc63117295feb2cf77661462ba13feb293eeec667c12811423b5",
|
||||
"crates/horizon-client/src/world.wgsl": "972a58ccb34e9965515adbb30c47a93fceca5b742390db6d9f69cba1ec31f559",
|
||||
"crates/horizon-assets/src/animation.rs": "ebbf7952146a0e66b41396174492f5702627170b03a57e6cd5a45c97a08c975e",
|
||||
"crates/horizon-assets/src/bake/transform.rs": "a95e658fef85b21bcb2f9f7512f98f98d57022d62c1199885b7133beae35a09d",
|
||||
"crates/horizon-assets/src/bake.rs": "f55dda6b6cee5ac6e65a8ee4837fdd2c6674437d59e59b4c45718f6324d4a4d5",
|
||||
"crates/horizon-assets/src/blockstate/bind.rs": "6278962e55c9786bba8184bdf2939af9c6e3b9002b08c3022129964b49a60009",
|
||||
"crates/horizon-assets/src/blockstate/choice.rs": "5a66c8b9833e2f19dd8b0773f3593d97ff5941d3c5b773896b98049efa1395ba",
|
||||
"crates/horizon-assets/src/blockstate.rs": "a4299dfd7adaeb4173982ffaa8e9c9eda2925739ae579a714193c99da2e7ce56",
|
||||
"crates/horizon-assets/src/json.rs": "99fe8af4fbf5d4eed408a92e829ac1a39597a0d92471a6bff73771fad9c830a8",
|
||||
"crates/horizon-assets/src/lib.rs": "e39f21c59a2c3e1c53d977b29bd5e0638e5fc41d86ff0fcc1882a6d90fd961e4",
|
||||
"crates/horizon-assets/src/model.rs": "57ddb3d65e88e7a8aa22c62bc298a2dae7f4e994326a873a31f06c0f36ed051b",
|
||||
"crates/horizon-assets/src/resolve.rs": "3927ac926cdcbd7d334901cc32d0ecc1e498b1bec98f76a46bca6d4964c13541",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaGallerySelectionOracle.java": "dc5433f1ce1de629b30cb70f031a43a691fc1df1fb218ce23de89769c164d562",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCuboidModelOracle.java": "7526f20513c549483122ab0d5ad24b9e87f38dc2f6aae55addd701a91ac85e43",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaHeightmapOracle.java": "145c943637ed177cc4ef8a85f2484da8afd164868e84a8463882feec1653a860",
|
||||
"tools/test_model_baking_parity.py": "392ffec44918fb91740ca4a1316d684480d39f14bd34d46175f7f44946d15bd7",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"tools/prepare_native_client.py": "159c12846058954a35ce86d415dc12fc89a6f11d46d21d1616ee686b7af4eee4",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/border.rs": "1386f8080521231d05ba3e84d94a3e1d5218d35ccb3d5e9fe2bbb05a8739e573",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "c650386f9860e44a96c55f18c8f1428ca715fcb0bc5c2434db5b1caa43df27fe",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "bcfb452752940ce53ae6dc267a3c4eb29459046a063c1f884684ab4f4bd0068f",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/Cargo.toml": "18bbad377a8047e4d4ecd0fc87d83d46d1c0f1ce2b8c47bbe64633e7b4420b57",
|
||||
"crates/horizon-world/src/active_effect_tick.rs": "88f19cfc3532c47a58c646bb3e9d99ff239a900752302b6a444dda3013e95cbf",
|
||||
"crates/horizon-world/src/active_effects.rs": "daaf352a69511a7d69fb329997f783b86585e486e0379c84ab0a55641771646c",
|
||||
"crates/horizon-world/src/attribute_health.rs": "1420a80787d10dd2e2954a3ee6193ff313289d00c7c78ca26ece8bafa21f4380",
|
||||
"crates/horizon-world/src/attribute_map.rs": "3d871cd530f5c035e0753f3ba065c2b9c5b49cdee75d4119f7dd584b22af67e6",
|
||||
"crates/horizon-world/src/attribute_updates.rs": "4cb322d75a50d222298994607097ba7f7e6674021128fa02a98a74c057ad05f1",
|
||||
"crates/horizon-world/src/attributes/entity.rs": "64ac99682a3aa06b1fb94b776b47794234c76b1cf70f1f54933d51e545e69279",
|
||||
"crates/horizon-world/src/attributes/live.rs": "8198c45134f69135d48ef203e71b6e702529568fd1ed9174d0aa843570bbf9e7",
|
||||
"crates/horizon-world/src/attributes/mod.rs": "5c2fcbbde58c19261874d227ea98332f00336c9fa53446da2e9adb6aa64a5e5a",
|
||||
"crates/horizon-world/src/attributes/operation_map.rs": "fc5bc8921d78ea6721a2eaa915e67483e2a33683927467bdba24f0492356ad97",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "39207247f2f6dd3ddc77640229044246f91b32054563f88a435f1bd92ad2092c",
|
||||
"crates/horizon-world/src/block_collision_scan.rs": "20802862364c110ff85eeaf48606596a8468b83768dda46b412d337958790b41",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_entity_push.rs": "12ee91bf604946234b24a0da4333f07d1830ab9743a422d41c8d0afac7d49cfd",
|
||||
"crates/horizon-world/src/block_landing.rs": "33083fe39266fbefec1b3ea1a19f2afc609791d189da247c895e116ad6eb266a",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/blocking_item_damage.rs": "afea3cb5761e8b82ee4d9bb4ef3c6fd10182a324dbaec99e6c9ebfac255dda09",
|
||||
"crates/horizon-world/src/blocking_rules.rs": "83c5e2105cec56a90182ce582e1c67ade2b189be6de1a34d08035000cc07c492",
|
||||
"crates/horizon-world/src/bundle_weight.rs": "a0e7b0587ab5d46cd55588f25d55a088b7a4725099c13ba6df146957be36014c",
|
||||
"crates/horizon-world/src/chunk.rs": "795895284d6e615bcb2082fceacdfe7025c152fb2934bb43f598f17a00ab46f1",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/climbing.rs": "6cd2f919872ff0b726effddaa57eccb805b8eae43f9d01144716010853891879",
|
||||
"crates/horizon-world/src/collision.rs": "a749794d5c27ccd6c0d964ad02f9dc31d49d9f4fe4b7366cd4bd8155e681b00b",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/combat_rules.rs": "01131f70d1acdd96a910e7f96deaa12e51a1e3bb9208085f04e3ec7b657d3cd4",
|
||||
"crates/horizon-world/src/component_durability.rs": "37a46e184f95bc5027e2b9af72ff52f729ad03601d08e1827f181fca383a35af",
|
||||
"crates/horizon-world/src/component_patch.rs": "f6f8992f241dfb25e012a06a7ba3fecab8d958686dddd096595a4806e56f0ab3",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/consumable.rs": "ba3575cb85866cb940f33a1ac86455d71cf0cc6395b848588a8ee1fe33f5c326",
|
||||
"crates/horizon-world/src/consume_effect.rs": "03f2aac6879ce133347d42f6f6667d62c06d956ff9faac5dc14182a788b6a236",
|
||||
"crates/horizon-world/src/damage_immunity.rs": "fd39c41124d694e755cf7faadcf93c636df4042c78ec345092a856b5f952dbcf",
|
||||
"crates/horizon-world/src/damage_reduction.rs": "f5a599ab11e077f526237018aeda803ea3c420c5b35c78ae9d85e32267e23bf3",
|
||||
"crates/horizon-world/src/damage_source.rs": "24945e397a926d34695652980923609e4723e02fe6b6e56d4aaf673e45d759f7",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/edge_backoff.rs": "5259d7aa44e64f88351d1556c44dd0edcad3b400a099c659755792efba7b5773",
|
||||
"crates/horizon-world/src/effect_attribute_modifiers.rs": "0bc7ab63d0f3f34a7133fe20364cae0ec1fdbd3773cba90faa1f08e0d63a5646",
|
||||
"crates/horizon-world/src/effect_notifications.rs": "ea66bfa010d6d44aee97b9672902f41cd99d0d80239f41c6d4eae5c9a9472d3d",
|
||||
"crates/horizon-world/src/effect_particles.rs": "a42dc4ec55929dce1db0f22f8816ecf7621fdce1cd2ac0c90f6a57fea4e0afd2",
|
||||
"crates/horizon-world/src/effect_sync.rs": "1388d4a69b42a14ff4cd474f5e36f0fad5a2874031e64fa2b19b2ea179deed2b",
|
||||
"crates/horizon-world/src/entity_collision.rs": "09f2fd7f6cd56fc282f468ecfa765a94506929e9684bd3a5c90123e5b51cd627",
|
||||
"crates/horizon-world/src/entity_fluid.rs": "02991040ae879a8914f09913128a3506e9e7a1ca33ffc0a22b5729a168346600",
|
||||
"crates/horizon-world/src/entity_fluid_tick.rs": "4f9e070b88a73c98a4e2e659360ddd6edee636bca29377f1ea9011fd5a556f64",
|
||||
"crates/horizon-world/src/entity_move.rs": "a40a50d3e841625a75d4cfbb7c2630ab5a62a574456567e7234f401ae8441b32",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/extra_items.rs": "6eba0a0c795d5fd841d31471708e78324b4852adebb2e6ed700dcc0caab668cd",
|
||||
"crates/horizon-world/src/fall_damage.rs": "8c28e2933493569fe05dea22332024287d28b0746b514dd465681040b003296b",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/fluid_box.rs": "b586af72b1c04a9354fe66205c28dc8b619e205ab9ea19a68232722e4b6e96c1",
|
||||
"crates/horizon-world/src/fluid_flow.rs": "7c7e486b5c565df3602799648b37b879bcca51414337f607962d6c7951b86d05",
|
||||
"crates/horizon-world/src/fluid_occupancy.rs": "26037579caeef6c8a5a2bde2c3d142d278558b76d77ebff401cee6e35f2ea961",
|
||||
"crates/horizon-world/src/fluid_shape.rs": "28bb65a72f5bd074a354ba38a1b1707fcb0947537977a11540bba0adb85995c2",
|
||||
"crates/horizon-world/src/food.rs": "3cf416fa632a5555a8116bb528a6e80bcb5b6b754b0748b4959ed310102418d3",
|
||||
"crates/horizon-world/src/food_properties.rs": "0926fa3f3bc3d0608c45d02f564355825ca3c3526a82bf9c1375c7a191fa5e12",
|
||||
"crates/horizon-world/src/food_storage.rs": "58c433801a285efcc973638c11d694a41f85dc96703a3a7ce8d3673f3eb31d52",
|
||||
"crates/horizon-world/src/free_space.rs": "913536bf4c85ddeeb378d76d1b5110b4175f5688e1a749f32fe6a6d86fbb478e",
|
||||
"crates/horizon-world/src/ground_support.rs": "3e371d74ecede4d30beef0a7e8a2ee33463584a5b1ed3d852b394efcce1ffbe0",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/identifier.rs": "37c921889c4f5d91f7c09ab2ee68d1a5e5a3c4fb1c49b4b189c987b4615fd2d6",
|
||||
"crates/horizon-world/src/interaction_shapes.rs": "f321284ddab440a394372b6dedc8b5cc29a653c0745251a9e96c650f21c33dea",
|
||||
"crates/horizon-world/src/inventory_pickup.rs": "ea830c7916e7f2d95c6db7ef48be1e876e6ebafcb438e47fc72f9a5bd7c37d07",
|
||||
"crates/horizon-world/src/inventory_tick.rs": "293a3d57a1689337cfd58e5a73dcdbed4cb360f94d98ff5458f0df92de387365",
|
||||
"crates/horizon-world/src/inventory_use.rs": "6a6c2ecc73c83dda4cd798c0304df12ace6096eb110d899f4f0c7ffd852bf001",
|
||||
"crates/horizon-world/src/item_after_use.rs": "2b6598ce5b7b304dea2c8057b4a1eb6530264ac4d0546c3da0c76deed9609da5",
|
||||
"crates/horizon-world/src/item_blocking.rs": "f6eee0d6d177cc3148960122327ba1b459a2f0e85241c1d9a3e40f0b8c169296",
|
||||
"crates/horizon-world/src/item_cooldowns.rs": "7b625868509ab3c51e72db0ac714bb0e7ec5e2610d37271005a1a737f4d14431",
|
||||
"crates/horizon-world/src/item_durability.rs": "9fdf835e5c7bd0e1dd63ef2ba0076b770cdd4d6d14cdcd11de27690f0702f94e",
|
||||
"crates/horizon-world/src/item_particles.rs": "861b14f65adb9b14f8158fe9f0b7128beac3df8107b1337c31b8b9b49434ba3f",
|
||||
"crates/horizon-world/src/item_stack_refs.rs": "18d3ca85cac0daf59200857513761359e5690f719cb3f7f64ae552f0c4169ea3",
|
||||
"crates/horizon-world/src/item_stack_storage.rs": "b4dcb83dcaa346848c5484161feb3e2cf08e83f7793d7ed83be25b14b9d12884",
|
||||
"crates/horizon-world/src/item_template.rs": "dc80025215d1867e656924ea2a9d273aacbcaea21293d986ba42d0004ee93b69",
|
||||
"crates/horizon-world/src/item_use.rs": "b1c79428986efbf9dd5ede703a39eb387fb6dcc7d9950f0e49243a353a5b8070",
|
||||
"crates/horizon-world/src/item_use_catalog.rs": "a9b53d2e816583239a75c3c61e78dacc5e3b27dee595be34b1c7fa169f17a571",
|
||||
"crates/horizon-world/src/item_use_lifecycle.rs": "4639b70440cf811e79de09c48a3e035143fcb6be8a64c2f61b10ae55a2f133b7",
|
||||
"crates/horizon-world/src/item_use_start.rs": "a84092dfb8b8f0a89d0928bb2f8ac252bd9bfd3f8d74fce1a7f7a5b3c3f4f50b",
|
||||
"crates/horizon-world/src/java_hash_map.rs": "955502e696d7b0b33bae3ec485c8eb1453a8956116aad68226cf1fc67d60babc",
|
||||
"crates/horizon-world/src/lib.rs": "577c16c021352b706d123f0f1c734375fc4a5a67b508caccbc38c1e1f693f6f4",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/live_attribute_updates.rs": "778171faaaf7077deb0b62c4cc1db16351eba41adb8bb07656ba65e827056199",
|
||||
"crates/horizon-world/src/living_air.rs": "b2de36bb50bed15e2808fe4a874fcef07f9fea0d2c96385b7b5e8ee9560d4442",
|
||||
"crates/horizon-world/src/living_damage.rs": "2b448209629b9bf2e678d667ad0d6c7fa22146892dd106b169d96b31b0df12bb",
|
||||
"crates/horizon-world/src/living_fall.rs": "da0f176f4731e1c86e08bfeee8167742fd1b86380ff0e9304c13c1ce3f1c67ab",
|
||||
"crates/horizon-world/src/living_fluid.rs": "d7cd914cfb2a1f4876ce0ae95e999bf0ff1af732cce3ab4a3aa2d1ab881c7339",
|
||||
"crates/horizon-world/src/living_health.rs": "221659f85552424e937d503bba6d8003006b106ced042b32d3a6f6cc23e12ed0",
|
||||
"crates/horizon-world/src/living_hurt.rs": "844239ad7d15c39629bb3cfc06ebae6d1cff20b7627468f26e0ee8dff3abdcb8",
|
||||
"crates/horizon-world/src/living_landing.rs": "8bca4eb7977abc2b14fb7174be4ea355352106ea1e76ff5f3ad8696969d9eefd",
|
||||
"crates/horizon-world/src/living_motion.rs": "56f8c84cfbe205a7a69912d5f76b52ef1efca149c1b6801d4684e25fb179aeb9",
|
||||
"crates/horizon-world/src/living_use_flags.rs": "826f4fdeba7e208368cbbf910fa408db0afbc6442d842d178a70fae53e0d0ea6",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/movement_emission.rs": "76e7d6f5b19c94676190f54389f9c4ce12cf89945ccfcb9c750de473223e7753",
|
||||
"crates/horizon-world/src/movement_properties.rs": "6f01ab920b376a13f5ae12c3718f4dd067e1dff2b829585af00a8b2100f3775d",
|
||||
"crates/horizon-world/src/movement_restitution.rs": "04b4fe0947e7e52576145bd8ed15920278e8a538afcc74d125eaca513dffa0ef",
|
||||
"crates/horizon-world/src/movement_support.rs": "02d85cf572847f2e60b5a7f9d60b856888a67b3c1f4df03e81998c66fdf874be",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/object_open_map.rs": "b4934a9cc38df93ed206ab0bc3bbc4499acd8e40b41b7def7d47067b7170065b",
|
||||
"crates/horizon-world/src/object_open_set.rs": "d3e0373bf1b652dd054345d5a8e25ec828e06dd7cad65aada35163c95df4e637",
|
||||
"crates/horizon-world/src/piston_movement.rs": "7a3fd2549a582b5f3a5c21aa05d67d944d62ca1105856679e100ac5b44e9a52f",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/player_equipment.rs": "1fa8c53e67624c4641246249d79a800a28a4858c62482bd880b4e3b866b936ef",
|
||||
"crates/horizon-world/src/player_food.rs": "f188dc110745bcc7acc15e6c521db943b06b404f69cd251bf74a345516070304",
|
||||
"crates/horizon-world/src/player_health.rs": "8155b315453c569db2fbe46228886c5881d1fd55eb095c5849e69bdb500ba2bd",
|
||||
"crates/horizon-world/src/player_hurt.rs": "99c9bbd8587ec2dc287806049897b8034d2f5349ad47fc497b70d54148844a36",
|
||||
"crates/horizon-world/src/player_inventory.rs": "f4f67d8312793f25930626c4ac06db688fcf2e2292d6675071d105fb1708d952",
|
||||
"crates/horizon-world/src/player_travel.rs": "6841a677a900495eb6223031ef3ebe8d859bb98908dda0e2209e5f28839dc593",
|
||||
"crates/horizon-world/src/powder_snow_collision.rs": "7289946a21478d11abfd2bdcdddff3d7f98e25bf6a68564fed45c3cc01ac2a36",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/registry_collision_scan.rs": "97cc950a9a4ba387b78e368f36d595f8664ab7730d132900d220ce23b92826ea",
|
||||
"crates/horizon-world/src/registry_fall_ray.rs": "52935436132df505691144840dcbd858b15d00d8305997284e3a542ecf6bc0dc",
|
||||
"crates/horizon-world/src/registry_fluid.rs": "b8959c05850cfeaaad1e4de8ca7c7d0d6ac56da9b2c1de3ebefa5871a11ed35e",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/server_player_combat.rs": "0a94885c4b7a0d294ba7f4cee18b96ee59649b50112988250b53cc224059a979",
|
||||
"crates/horizon-world/src/server_player_damage.rs": "29af22dec321fe01776cee5334f050c5bc3e27a688f99c8c3da4c0ad8bc8254e",
|
||||
"crates/horizon-world/src/simple_container.rs": "0fedbc7e974b1db79b88bd6aff977654189a5d553cf42852fe8bf0885cf90b30",
|
||||
"crates/horizon-world/src/status_effect.rs": "588bfcf4d93f50be86cb89545bd5c431edbc71771f704ff55cb52906b1964c37",
|
||||
"crates/horizon-world/src/stored_consume.rs": "621a52c9fba447c393e561f881a16cf1f97d336e3a0ce493725ef51e2db12ffd",
|
||||
"crates/horizon-world/src/stored_effect_attributes.rs": "c79f6a52d3cfee1a5288225bf8fa91a7bf3ea8cd21faea9f6dc748ecefc6309a",
|
||||
"crates/horizon-world/src/suffocation.rs": "bed219dd5bbab6263b98fbe3d0eb512cb96c52ae847210efe49514d05f22f11e",
|
||||
"crates/horizon-world/src/swimming.rs": "49d2dae13c109b37ff832cde98a857944ff45247b864a527b9c4f03ecca7a7b7",
|
||||
"crates/horizon-world/src/synced_floats.rs": "0152f2752bafaf68769d56dbc88494a976496a680c6b113d6b48a446158ba072",
|
||||
"crates/horizon-world/src/synced_values.rs": "a1d4b53ae77d1899ba2b4ead67c9ec1e3c96615558e446f9d0760c1b4a520169",
|
||||
"crates/horizon-world/src/teleport_consume.rs": "d6a53bbb6ac4dbbd4c0591d0646017898a95beb8ef093dc5d81b9833963be6c3",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/use_remainder.rs": "f555335afeca7970888131a6da2f5a614a73253b631185d1ba804593a349535e",
|
||||
"crates/horizon-world/src/view_direction.rs": "e18120ae26dc5cf702b29fc4c8487088bab133c8ce5abce01226833fafb0d5a4",
|
||||
"crates/horizon-world/src/water_splash.rs": "e0461ae1b2e8c851cca6e3251a188334293292201d7f80dc9e7d60fd1815f4d1",
|
||||
"crates/horizon-world/src/world_movement.rs": "f8fe9e34f2395d2a04c839d1c8ba78e09ce493c26de6f6e4e237b9c19c061da5",
|
||||
"crates/horizon-world/src/world_ray.rs": "879bdbbe12f56deb705cc183933431489e840b71eade40c33391eed5949c2e61",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "74e4110fb19c4c4047192fd65c38015b8afc7f9fc50404d75380b5063808148c",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f"
|
||||
}
|
||||
}
|
||||
@@ -1,790 +0,0 @@
|
||||
{
|
||||
"adapter": {
|
||||
"backend": "Vulkan",
|
||||
"device": 0,
|
||||
"device_type": "Cpu",
|
||||
"name": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"vendor": 65541
|
||||
},
|
||||
"animated_sprites": 1,
|
||||
"animation_uploads": 1,
|
||||
"arch": "x86_64",
|
||||
"camera_pitch": -0.3839724354387525,
|
||||
"camera_position": [
|
||||
25.0,
|
||||
18.0,
|
||||
25.0
|
||||
],
|
||||
"camera_yaw": -2.356194490192345,
|
||||
"collision_camera": false,
|
||||
"culled_model_faces": 59636,
|
||||
"elapsed_seconds": 0.547517663,
|
||||
"error": null,
|
||||
"fall_damage_requests": 0,
|
||||
"last_requested_fall_damage": null,
|
||||
"merged_quads": 3169,
|
||||
"mesh_revision": 0,
|
||||
"model_blocks": 10919,
|
||||
"model_gallery": [
|
||||
{
|
||||
"block": "minecraft:oak_stairs",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_stairs_inner",
|
||||
"rotations": [
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "north",
|
||||
"half": "top",
|
||||
"shape": "inner_left",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 5466
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone_slab",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_slab_top",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"type": "top",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 15250
|
||||
},
|
||||
{
|
||||
"block": "minecraft:anvil",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/anvil",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east"
|
||||
},
|
||||
"state_id": 12965
|
||||
},
|
||||
{
|
||||
"block": "minecraft:torch",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/torch",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 4926
|
||||
},
|
||||
{
|
||||
"block": "minecraft:lantern",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/lantern",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"hanging": "false",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 24197
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_post",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "true",
|
||||
"north": "true",
|
||||
"south": "false",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 8642
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence_gate",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_gate_open",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"in_wall": "false",
|
||||
"open": "true",
|
||||
"powered": "false"
|
||||
},
|
||||
"state_id": 10401
|
||||
},
|
||||
{
|
||||
"block": "minecraft:iron_bars",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_post_ends",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side_alt",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "false",
|
||||
"north": "true",
|
||||
"south": "true",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 9711
|
||||
},
|
||||
{
|
||||
"block": "minecraft:cobweb",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/cobweb",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 2362
|
||||
},
|
||||
{
|
||||
"block": "minecraft:grindstone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/grindstone",
|
||||
"rotations": [
|
||||
1,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"face": "wall",
|
||||
"facing": "west"
|
||||
},
|
||||
"state_id": 24135
|
||||
},
|
||||
{
|
||||
"block": "minecraft:ladder",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/ladder",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 7312
|
||||
},
|
||||
{
|
||||
"block": "minecraft:amethyst_cluster",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/amethyst_cluster",
|
||||
"rotations": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 26764
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_mirrored",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
}
|
||||
],
|
||||
"model_quads": 179,
|
||||
"movement_ticks": 0,
|
||||
"os": "linux",
|
||||
"player_fall_distance": null,
|
||||
"player_on_ground": null,
|
||||
"player_position": null,
|
||||
"player_velocity": null,
|
||||
"presented_frames": 30,
|
||||
"project": "Horizon",
|
||||
"resident_chunks": 9,
|
||||
"schema": 1,
|
||||
"scope": "Native resident-scene renderer with inspection camera and optional fixed-rate dry walking test; full gameplay remains unfinished",
|
||||
"sprite_layers": 18,
|
||||
"visible_model_faces": 5991,
|
||||
"walking": false,
|
||||
"window_size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"world_revision": 0,
|
||||
"native_scene_culling": {
|
||||
"blocks": 10919,
|
||||
"culled_faces": 59636,
|
||||
"visible_faces": 5991
|
||||
},
|
||||
"native_selection": {
|
||||
"matched_placements": 16,
|
||||
"selected_parts": 20,
|
||||
"client_jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "a2ff1c890d6f3a5292c3a9402f02ca5404a993dc117853b25cbe64ac92b76d30",
|
||||
"scope": "Actual native registry states, blockstate dispatch, tagged root baking and legacy collection using state.getSeed(position). All 16 featured placements match model names/transforms. An independently constructed native scene also matches total occupied blocks and visible/culled model faces using native parent resolution, rotated culling directions and Block.shouldRenderFace. No shader/pixel parity claim."
|
||||
},
|
||||
"resource_files": {
|
||||
"files": 5586,
|
||||
"sha256": "df3e6624ad08800f224dbe4c90fd3753ba84e7643f93475701957108a73acb25"
|
||||
},
|
||||
"executable_sha256": "fcfd655b756ed003cd5b97fe9ca5afba8b965813b2d7cb30e7639168f8d17e22",
|
||||
"resource_manifest_sha256": "91491cf250a0032f6a7fc8e4a10807f7384310d927babe178ffc75ded8ef25b0",
|
||||
"sources": {
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "6884c7209f007ab9ee742b9c3c73828cfa1c6753d35b5fe25a87cab5955b33f8",
|
||||
"tools/test_native_client.py": "9310a571c3a8908c6c4804a8b14935882382da0f4755ffc4d1087d379824bb32",
|
||||
"crates/horizon-client/Cargo.toml": "d56524457d761c2613c0699b20e21ad6977d93e009d59ef150bbd9fc20d7a025",
|
||||
"crates/horizon-assets/Cargo.toml": "2f2cffacec0b4e22dd7cb032d594289bc51c94ae6cc4e985fee3e310f441d751",
|
||||
"crates/horizon-client/src/assets.rs": "e595afa610e0425d0b3ad694218794bf9e680e46ae80f3925c278ef1a823c914",
|
||||
"crates/horizon-client/src/camera.rs": "d386a56ca8fb3b37ba2b2ed9d09342f61b409a575bb21590e934120b4ccebfa6",
|
||||
"crates/horizon-client/src/clock.rs": "4851ada3e8e65d935eda8c0b57d3b51233b34f74aab4f040fd53db0e0d40b8df",
|
||||
"crates/horizon-client/src/collisions.rs": "112286b07c4cd11b36da8b6799e0e069e69dfddf9a8a3f9ce36dcb282c791d67",
|
||||
"crates/horizon-client/src/input.rs": "55b259ca6425c502270e7abc4d3ae1b3838633e2bd77d3817c6e00d9143a2beb",
|
||||
"crates/horizon-client/src/landing.rs": "4192ce43717696b2c893b69f7f156b3084cd5a92dd275f0c5be1ee7c6228918b",
|
||||
"crates/horizon-client/src/lib.rs": "6eb8caa81741cabc56651603f9be8d15a8d219be5a5ae4dc2045c557fc24bb79",
|
||||
"crates/horizon-client/src/main.rs": "aa602d14ab9512de90165c9aeee40dd04d5cd602d8fc2a9d2d7139f12a7db1ec",
|
||||
"crates/horizon-client/src/mesh.rs": "4ac8d85b30f599b37a98b92adcc016b16434816b93c401bd39b8215f591f9330",
|
||||
"crates/horizon-client/src/models/catalog.rs": "620103719167fc9ab76e730d68eeacb50014e95b7ad209ae7adf2cbbe69f70f7",
|
||||
"crates/horizon-client/src/models/cube.rs": "1067229f9dd9b276950bf7ec0c5f67061ce3d40a21932dca8034b9748e7439a4",
|
||||
"crates/horizon-client/src/models.rs": "98dd3b969947c2b297862a934e6235067ddc1fc8cda5adcc6276d19014d4b048",
|
||||
"crates/horizon-client/src/motion.rs": "0b2ecde5118b60a158e18aa5cf7746ef88566a0ad0fc3c97594b8d5ee00b1cdb",
|
||||
"crates/horizon-client/src/render.rs": "75cb40c257cf61e51009d292a06cd96532f59320b12ed7c3a509bbdbe1accdd4",
|
||||
"crates/horizon-client/src/sprites.rs": "292f844a31f6e8884008df9630e2b8862db1acfbc4640cc07d526e25f21f0bc5",
|
||||
"crates/horizon-client/src/world.rs": "66c921c4a0c4e5bf97f2594ed243f6769d0dcebe9fe227177df928df22d6d03e",
|
||||
"crates/horizon-client/src/world.wgsl": "972a58ccb34e9965515adbb30c47a93fceca5b742390db6d9f69cba1ec31f559",
|
||||
"crates/horizon-assets/src/animation.rs": "ebbf7952146a0e66b41396174492f5702627170b03a57e6cd5a45c97a08c975e",
|
||||
"crates/horizon-assets/src/bake/transform.rs": "a95e658fef85b21bcb2f9f7512f98f98d57022d62c1199885b7133beae35a09d",
|
||||
"crates/horizon-assets/src/bake.rs": "f55dda6b6cee5ac6e65a8ee4837fdd2c6674437d59e59b4c45718f6324d4a4d5",
|
||||
"crates/horizon-assets/src/blockstate/bind.rs": "6278962e55c9786bba8184bdf2939af9c6e3b9002b08c3022129964b49a60009",
|
||||
"crates/horizon-assets/src/blockstate/choice.rs": "5a66c8b9833e2f19dd8b0773f3593d97ff5941d3c5b773896b98049efa1395ba",
|
||||
"crates/horizon-assets/src/blockstate.rs": "a4299dfd7adaeb4173982ffaa8e9c9eda2925739ae579a714193c99da2e7ce56",
|
||||
"crates/horizon-assets/src/json.rs": "99fe8af4fbf5d4eed408a92e829ac1a39597a0d92471a6bff73771fad9c830a8",
|
||||
"crates/horizon-assets/src/lib.rs": "e39f21c59a2c3e1c53d977b29bd5e0638e5fc41d86ff0fcc1882a6d90fd961e4",
|
||||
"crates/horizon-assets/src/model.rs": "57ddb3d65e88e7a8aa22c62bc298a2dae7f4e994326a873a31f06c0f36ed051b",
|
||||
"crates/horizon-assets/src/resolve.rs": "3927ac926cdcbd7d334901cc32d0ecc1e498b1bec98f76a46bca6d4964c13541",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaGallerySelectionOracle.java": "dc5433f1ce1de629b30cb70f031a43a691fc1df1fb218ce23de89769c164d562",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCuboidModelOracle.java": "7526f20513c549483122ab0d5ad24b9e87f38dc2f6aae55addd701a91ac85e43",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaHeightmapOracle.java": "145c943637ed177cc4ef8a85f2484da8afd164868e84a8463882feec1653a860",
|
||||
"tools/test_model_baking_parity.py": "392ffec44918fb91740ca4a1316d684480d39f14bd34d46175f7f44946d15bd7",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"tools/prepare_native_client.py": "3a02b5f384235eb2d7002396cbddffb3bf3840534c205c85aefac090562b76c4",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/border.rs": "1386f8080521231d05ba3e84d94a3e1d5218d35ccb3d5e9fe2bbb05a8739e573",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "c650386f9860e44a96c55f18c8f1428ca715fcb0bc5c2434db5b1caa43df27fe",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "bcfb452752940ce53ae6dc267a3c4eb29459046a063c1f884684ab4f4bd0068f",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/Cargo.toml": "18bbad377a8047e4d4ecd0fc87d83d46d1c0f1ce2b8c47bbe64633e7b4420b57",
|
||||
"crates/horizon-world/src/active_effect_tick.rs": "88f19cfc3532c47a58c646bb3e9d99ff239a900752302b6a444dda3013e95cbf",
|
||||
"crates/horizon-world/src/active_effects.rs": "daaf352a69511a7d69fb329997f783b86585e486e0379c84ab0a55641771646c",
|
||||
"crates/horizon-world/src/attribute_health.rs": "1420a80787d10dd2e2954a3ee6193ff313289d00c7c78ca26ece8bafa21f4380",
|
||||
"crates/horizon-world/src/attribute_map.rs": "3d871cd530f5c035e0753f3ba065c2b9c5b49cdee75d4119f7dd584b22af67e6",
|
||||
"crates/horizon-world/src/attribute_updates.rs": "4cb322d75a50d222298994607097ba7f7e6674021128fa02a98a74c057ad05f1",
|
||||
"crates/horizon-world/src/attributes/entity.rs": "64ac99682a3aa06b1fb94b776b47794234c76b1cf70f1f54933d51e545e69279",
|
||||
"crates/horizon-world/src/attributes/live.rs": "8198c45134f69135d48ef203e71b6e702529568fd1ed9174d0aa843570bbf9e7",
|
||||
"crates/horizon-world/src/attributes/mod.rs": "5c2fcbbde58c19261874d227ea98332f00336c9fa53446da2e9adb6aa64a5e5a",
|
||||
"crates/horizon-world/src/attributes/operation_map.rs": "fc5bc8921d78ea6721a2eaa915e67483e2a33683927467bdba24f0492356ad97",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "39207247f2f6dd3ddc77640229044246f91b32054563f88a435f1bd92ad2092c",
|
||||
"crates/horizon-world/src/block_collision_scan.rs": "20802862364c110ff85eeaf48606596a8468b83768dda46b412d337958790b41",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_entity_push.rs": "12ee91bf604946234b24a0da4333f07d1830ab9743a422d41c8d0afac7d49cfd",
|
||||
"crates/horizon-world/src/block_landing.rs": "33083fe39266fbefec1b3ea1a19f2afc609791d189da247c895e116ad6eb266a",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/blocking_item_damage.rs": "afea3cb5761e8b82ee4d9bb4ef3c6fd10182a324dbaec99e6c9ebfac255dda09",
|
||||
"crates/horizon-world/src/blocking_rules.rs": "83c5e2105cec56a90182ce582e1c67ade2b189be6de1a34d08035000cc07c492",
|
||||
"crates/horizon-world/src/bundle_weight.rs": "a0e7b0587ab5d46cd55588f25d55a088b7a4725099c13ba6df146957be36014c",
|
||||
"crates/horizon-world/src/chunk.rs": "795895284d6e615bcb2082fceacdfe7025c152fb2934bb43f598f17a00ab46f1",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/climbing.rs": "6cd2f919872ff0b726effddaa57eccb805b8eae43f9d01144716010853891879",
|
||||
"crates/horizon-world/src/collision.rs": "a749794d5c27ccd6c0d964ad02f9dc31d49d9f4fe4b7366cd4bd8155e681b00b",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/combat_rules.rs": "01131f70d1acdd96a910e7f96deaa12e51a1e3bb9208085f04e3ec7b657d3cd4",
|
||||
"crates/horizon-world/src/component_durability.rs": "37a46e184f95bc5027e2b9af72ff52f729ad03601d08e1827f181fca383a35af",
|
||||
"crates/horizon-world/src/component_patch.rs": "f6f8992f241dfb25e012a06a7ba3fecab8d958686dddd096595a4806e56f0ab3",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/consumable.rs": "ba3575cb85866cb940f33a1ac86455d71cf0cc6395b848588a8ee1fe33f5c326",
|
||||
"crates/horizon-world/src/consume_effect.rs": "03f2aac6879ce133347d42f6f6667d62c06d956ff9faac5dc14182a788b6a236",
|
||||
"crates/horizon-world/src/damage_immunity.rs": "fd39c41124d694e755cf7faadcf93c636df4042c78ec345092a856b5f952dbcf",
|
||||
"crates/horizon-world/src/damage_reduction.rs": "f5a599ab11e077f526237018aeda803ea3c420c5b35c78ae9d85e32267e23bf3",
|
||||
"crates/horizon-world/src/damage_source.rs": "24945e397a926d34695652980923609e4723e02fe6b6e56d4aaf673e45d759f7",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/edge_backoff.rs": "5259d7aa44e64f88351d1556c44dd0edcad3b400a099c659755792efba7b5773",
|
||||
"crates/horizon-world/src/effect_attribute_modifiers.rs": "0bc7ab63d0f3f34a7133fe20364cae0ec1fdbd3773cba90faa1f08e0d63a5646",
|
||||
"crates/horizon-world/src/effect_notifications.rs": "ea66bfa010d6d44aee97b9672902f41cd99d0d80239f41c6d4eae5c9a9472d3d",
|
||||
"crates/horizon-world/src/effect_particles.rs": "a42dc4ec55929dce1db0f22f8816ecf7621fdce1cd2ac0c90f6a57fea4e0afd2",
|
||||
"crates/horizon-world/src/effect_sync.rs": "1388d4a69b42a14ff4cd474f5e36f0fad5a2874031e64fa2b19b2ea179deed2b",
|
||||
"crates/horizon-world/src/entity_collision.rs": "09f2fd7f6cd56fc282f468ecfa765a94506929e9684bd3a5c90123e5b51cd627",
|
||||
"crates/horizon-world/src/entity_fluid.rs": "02991040ae879a8914f09913128a3506e9e7a1ca33ffc0a22b5729a168346600",
|
||||
"crates/horizon-world/src/entity_fluid_tick.rs": "4f9e070b88a73c98a4e2e659360ddd6edee636bca29377f1ea9011fd5a556f64",
|
||||
"crates/horizon-world/src/entity_move.rs": "a40a50d3e841625a75d4cfbb7c2630ab5a62a574456567e7234f401ae8441b32",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/extra_items.rs": "6eba0a0c795d5fd841d31471708e78324b4852adebb2e6ed700dcc0caab668cd",
|
||||
"crates/horizon-world/src/fall_damage.rs": "8c28e2933493569fe05dea22332024287d28b0746b514dd465681040b003296b",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/fluid_box.rs": "b586af72b1c04a9354fe66205c28dc8b619e205ab9ea19a68232722e4b6e96c1",
|
||||
"crates/horizon-world/src/fluid_flow.rs": "7c7e486b5c565df3602799648b37b879bcca51414337f607962d6c7951b86d05",
|
||||
"crates/horizon-world/src/fluid_occupancy.rs": "26037579caeef6c8a5a2bde2c3d142d278558b76d77ebff401cee6e35f2ea961",
|
||||
"crates/horizon-world/src/fluid_shape.rs": "28bb65a72f5bd074a354ba38a1b1707fcb0947537977a11540bba0adb85995c2",
|
||||
"crates/horizon-world/src/food.rs": "3cf416fa632a5555a8116bb528a6e80bcb5b6b754b0748b4959ed310102418d3",
|
||||
"crates/horizon-world/src/food_properties.rs": "0926fa3f3bc3d0608c45d02f564355825ca3c3526a82bf9c1375c7a191fa5e12",
|
||||
"crates/horizon-world/src/food_storage.rs": "58c433801a285efcc973638c11d694a41f85dc96703a3a7ce8d3673f3eb31d52",
|
||||
"crates/horizon-world/src/free_space.rs": "913536bf4c85ddeeb378d76d1b5110b4175f5688e1a749f32fe6a6d86fbb478e",
|
||||
"crates/horizon-world/src/ground_support.rs": "3e371d74ecede4d30beef0a7e8a2ee33463584a5b1ed3d852b394efcce1ffbe0",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/identifier.rs": "37c921889c4f5d91f7c09ab2ee68d1a5e5a3c4fb1c49b4b189c987b4615fd2d6",
|
||||
"crates/horizon-world/src/interaction_shapes.rs": "f321284ddab440a394372b6dedc8b5cc29a653c0745251a9e96c650f21c33dea",
|
||||
"crates/horizon-world/src/inventory_pickup.rs": "ea830c7916e7f2d95c6db7ef48be1e876e6ebafcb438e47fc72f9a5bd7c37d07",
|
||||
"crates/horizon-world/src/inventory_tick.rs": "293a3d57a1689337cfd58e5a73dcdbed4cb360f94d98ff5458f0df92de387365",
|
||||
"crates/horizon-world/src/inventory_use.rs": "6a6c2ecc73c83dda4cd798c0304df12ace6096eb110d899f4f0c7ffd852bf001",
|
||||
"crates/horizon-world/src/item_after_use.rs": "2b6598ce5b7b304dea2c8057b4a1eb6530264ac4d0546c3da0c76deed9609da5",
|
||||
"crates/horizon-world/src/item_blocking.rs": "f6eee0d6d177cc3148960122327ba1b459a2f0e85241c1d9a3e40f0b8c169296",
|
||||
"crates/horizon-world/src/item_cooldowns.rs": "7b625868509ab3c51e72db0ac714bb0e7ec5e2610d37271005a1a737f4d14431",
|
||||
"crates/horizon-world/src/item_durability.rs": "9fdf835e5c7bd0e1dd63ef2ba0076b770cdd4d6d14cdcd11de27690f0702f94e",
|
||||
"crates/horizon-world/src/item_particles.rs": "861b14f65adb9b14f8158fe9f0b7128beac3df8107b1337c31b8b9b49434ba3f",
|
||||
"crates/horizon-world/src/item_stack_refs.rs": "18d3ca85cac0daf59200857513761359e5690f719cb3f7f64ae552f0c4169ea3",
|
||||
"crates/horizon-world/src/item_stack_storage.rs": "b4dcb83dcaa346848c5484161feb3e2cf08e83f7793d7ed83be25b14b9d12884",
|
||||
"crates/horizon-world/src/item_template.rs": "dc80025215d1867e656924ea2a9d273aacbcaea21293d986ba42d0004ee93b69",
|
||||
"crates/horizon-world/src/item_use.rs": "b1c79428986efbf9dd5ede703a39eb387fb6dcc7d9950f0e49243a353a5b8070",
|
||||
"crates/horizon-world/src/item_use_catalog.rs": "a9b53d2e816583239a75c3c61e78dacc5e3b27dee595be34b1c7fa169f17a571",
|
||||
"crates/horizon-world/src/item_use_lifecycle.rs": "4639b70440cf811e79de09c48a3e035143fcb6be8a64c2f61b10ae55a2f133b7",
|
||||
"crates/horizon-world/src/item_use_start.rs": "a84092dfb8b8f0a89d0928bb2f8ac252bd9bfd3f8d74fce1a7f7a5b3c3f4f50b",
|
||||
"crates/horizon-world/src/java_hash_map.rs": "955502e696d7b0b33bae3ec485c8eb1453a8956116aad68226cf1fc67d60babc",
|
||||
"crates/horizon-world/src/lib.rs": "577c16c021352b706d123f0f1c734375fc4a5a67b508caccbc38c1e1f693f6f4",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/live_attribute_updates.rs": "778171faaaf7077deb0b62c4cc1db16351eba41adb8bb07656ba65e827056199",
|
||||
"crates/horizon-world/src/living_air.rs": "b2de36bb50bed15e2808fe4a874fcef07f9fea0d2c96385b7b5e8ee9560d4442",
|
||||
"crates/horizon-world/src/living_damage.rs": "2b448209629b9bf2e678d667ad0d6c7fa22146892dd106b169d96b31b0df12bb",
|
||||
"crates/horizon-world/src/living_fall.rs": "da0f176f4731e1c86e08bfeee8167742fd1b86380ff0e9304c13c1ce3f1c67ab",
|
||||
"crates/horizon-world/src/living_fluid.rs": "d7cd914cfb2a1f4876ce0ae95e999bf0ff1af732cce3ab4a3aa2d1ab881c7339",
|
||||
"crates/horizon-world/src/living_health.rs": "221659f85552424e937d503bba6d8003006b106ced042b32d3a6f6cc23e12ed0",
|
||||
"crates/horizon-world/src/living_hurt.rs": "844239ad7d15c39629bb3cfc06ebae6d1cff20b7627468f26e0ee8dff3abdcb8",
|
||||
"crates/horizon-world/src/living_landing.rs": "8bca4eb7977abc2b14fb7174be4ea355352106ea1e76ff5f3ad8696969d9eefd",
|
||||
"crates/horizon-world/src/living_motion.rs": "56f8c84cfbe205a7a69912d5f76b52ef1efca149c1b6801d4684e25fb179aeb9",
|
||||
"crates/horizon-world/src/living_use_flags.rs": "826f4fdeba7e208368cbbf910fa408db0afbc6442d842d178a70fae53e0d0ea6",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/movement_emission.rs": "76e7d6f5b19c94676190f54389f9c4ce12cf89945ccfcb9c750de473223e7753",
|
||||
"crates/horizon-world/src/movement_properties.rs": "6f01ab920b376a13f5ae12c3718f4dd067e1dff2b829585af00a8b2100f3775d",
|
||||
"crates/horizon-world/src/movement_restitution.rs": "04b4fe0947e7e52576145bd8ed15920278e8a538afcc74d125eaca513dffa0ef",
|
||||
"crates/horizon-world/src/movement_support.rs": "02d85cf572847f2e60b5a7f9d60b856888a67b3c1f4df03e81998c66fdf874be",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/object_open_map.rs": "b4934a9cc38df93ed206ab0bc3bbc4499acd8e40b41b7def7d47067b7170065b",
|
||||
"crates/horizon-world/src/object_open_set.rs": "d3e0373bf1b652dd054345d5a8e25ec828e06dd7cad65aada35163c95df4e637",
|
||||
"crates/horizon-world/src/piston_movement.rs": "7a3fd2549a582b5f3a5c21aa05d67d944d62ca1105856679e100ac5b44e9a52f",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/player_equipment.rs": "1fa8c53e67624c4641246249d79a800a28a4858c62482bd880b4e3b866b936ef",
|
||||
"crates/horizon-world/src/player_food.rs": "f188dc110745bcc7acc15e6c521db943b06b404f69cd251bf74a345516070304",
|
||||
"crates/horizon-world/src/player_health.rs": "79ecb6b4d7a044dc98e5552c53a5ac2724545b1c1cec4d797eb52576728e3480",
|
||||
"crates/horizon-world/src/player_hurt.rs": "99c9bbd8587ec2dc287806049897b8034d2f5349ad47fc497b70d54148844a36",
|
||||
"crates/horizon-world/src/player_inventory.rs": "f4f67d8312793f25930626c4ac06db688fcf2e2292d6675071d105fb1708d952",
|
||||
"crates/horizon-world/src/player_travel.rs": "6841a677a900495eb6223031ef3ebe8d859bb98908dda0e2209e5f28839dc593",
|
||||
"crates/horizon-world/src/powder_snow_collision.rs": "7289946a21478d11abfd2bdcdddff3d7f98e25bf6a68564fed45c3cc01ac2a36",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/registry_collision_scan.rs": "97cc950a9a4ba387b78e368f36d595f8664ab7730d132900d220ce23b92826ea",
|
||||
"crates/horizon-world/src/registry_fall_ray.rs": "52935436132df505691144840dcbd858b15d00d8305997284e3a542ecf6bc0dc",
|
||||
"crates/horizon-world/src/registry_fluid.rs": "b8959c05850cfeaaad1e4de8ca7c7d0d6ac56da9b2c1de3ebefa5871a11ed35e",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/server_player_combat.rs": "a9743971581af86d926eeba42004d932caf83382c470dd98bf613cb9c417db58",
|
||||
"crates/horizon-world/src/server_player_damage.rs": "828a4649fec3e9bda2dfe20aced8c95922c697321de2be4127bd4e5712ecbb7c",
|
||||
"crates/horizon-world/src/simple_container.rs": "0fedbc7e974b1db79b88bd6aff977654189a5d553cf42852fe8bf0885cf90b30",
|
||||
"crates/horizon-world/src/status_effect.rs": "588bfcf4d93f50be86cb89545bd5c431edbc71771f704ff55cb52906b1964c37",
|
||||
"crates/horizon-world/src/stored_consume.rs": "621a52c9fba447c393e561f881a16cf1f97d336e3a0ce493725ef51e2db12ffd",
|
||||
"crates/horizon-world/src/stored_effect_attributes.rs": "c79f6a52d3cfee1a5288225bf8fa91a7bf3ea8cd21faea9f6dc748ecefc6309a",
|
||||
"crates/horizon-world/src/suffocation.rs": "bed219dd5bbab6263b98fbe3d0eb512cb96c52ae847210efe49514d05f22f11e",
|
||||
"crates/horizon-world/src/swimming.rs": "49d2dae13c109b37ff832cde98a857944ff45247b864a527b9c4f03ecca7a7b7",
|
||||
"crates/horizon-world/src/synced_floats.rs": "0152f2752bafaf68769d56dbc88494a976496a680c6b113d6b48a446158ba072",
|
||||
"crates/horizon-world/src/synced_values.rs": "a1d4b53ae77d1899ba2b4ead67c9ec1e3c96615558e446f9d0760c1b4a520169",
|
||||
"crates/horizon-world/src/teleport_consume.rs": "d6a53bbb6ac4dbbd4c0591d0646017898a95beb8ef093dc5d81b9833963be6c3",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/use_remainder.rs": "f555335afeca7970888131a6da2f5a614a73253b631185d1ba804593a349535e",
|
||||
"crates/horizon-world/src/view_direction.rs": "e18120ae26dc5cf702b29fc4c8487088bab133c8ce5abce01226833fafb0d5a4",
|
||||
"crates/horizon-world/src/water_splash.rs": "e0461ae1b2e8c851cca6e3251a188334293292201d7f80dc9e7d60fd1815f4d1",
|
||||
"crates/horizon-world/src/world_movement.rs": "f8fe9e34f2395d2a04c839d1c8ba78e09ce493c26de6f6e4e237b9c19c061da5",
|
||||
"crates/horizon-world/src/world_ray.rs": "879bdbbe12f56deb705cc183933431489e840b71eade40c33391eed5949c2e61",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "74e4110fb19c4c4047192fd65c38015b8afc7f9fc50404d75380b5063808148c",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f"
|
||||
}
|
||||
}
|
||||
@@ -1,801 +0,0 @@
|
||||
{
|
||||
"adapter": {
|
||||
"backend": "Vulkan",
|
||||
"device": 0,
|
||||
"device_type": "Cpu",
|
||||
"name": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"vendor": 65541
|
||||
},
|
||||
"animated_sprites": 1,
|
||||
"animation_uploads": 1,
|
||||
"arch": "x86_64",
|
||||
"camera_pitch": -0.3839724354387525,
|
||||
"camera_position": [
|
||||
25.0,
|
||||
18.0,
|
||||
25.0
|
||||
],
|
||||
"camera_yaw": -2.356194490192345,
|
||||
"collision_camera": false,
|
||||
"culled_model_faces": 59636,
|
||||
"elapsed_seconds": 0.556021335,
|
||||
"error": null,
|
||||
"fall_damage_requests": 0,
|
||||
"last_requested_fall_damage": null,
|
||||
"merged_quads": 3169,
|
||||
"mesh_revision": 0,
|
||||
"model_blocks": 10919,
|
||||
"model_gallery": [
|
||||
{
|
||||
"block": "minecraft:oak_stairs",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_stairs_inner",
|
||||
"rotations": [
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "north",
|
||||
"half": "top",
|
||||
"shape": "inner_left",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 5466
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone_slab",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_slab_top",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"type": "top",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 15250
|
||||
},
|
||||
{
|
||||
"block": "minecraft:anvil",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/anvil",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east"
|
||||
},
|
||||
"state_id": 12965
|
||||
},
|
||||
{
|
||||
"block": "minecraft:torch",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/torch",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 4926
|
||||
},
|
||||
{
|
||||
"block": "minecraft:lantern",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/lantern",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"hanging": "false",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 24197
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_post",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "true",
|
||||
"north": "true",
|
||||
"south": "false",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 8642
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence_gate",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_gate_open",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"in_wall": "false",
|
||||
"open": "true",
|
||||
"powered": "false"
|
||||
},
|
||||
"state_id": 10401
|
||||
},
|
||||
{
|
||||
"block": "minecraft:iron_bars",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_post_ends",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side_alt",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "false",
|
||||
"north": "true",
|
||||
"south": "true",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 9711
|
||||
},
|
||||
{
|
||||
"block": "minecraft:cobweb",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/cobweb",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 2362
|
||||
},
|
||||
{
|
||||
"block": "minecraft:grindstone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/grindstone",
|
||||
"rotations": [
|
||||
1,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"face": "wall",
|
||||
"facing": "west"
|
||||
},
|
||||
"state_id": 24135
|
||||
},
|
||||
{
|
||||
"block": "minecraft:ladder",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/ladder",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 7312
|
||||
},
|
||||
{
|
||||
"block": "minecraft:amethyst_cluster",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/amethyst_cluster",
|
||||
"rotations": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 26764
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_mirrored",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
}
|
||||
],
|
||||
"model_quads": 179,
|
||||
"movement_ticks": 0,
|
||||
"os": "linux",
|
||||
"player_absorption": null,
|
||||
"player_dead": null,
|
||||
"player_exhaustion": null,
|
||||
"player_fall_distance": null,
|
||||
"player_food": null,
|
||||
"player_food_timer": null,
|
||||
"player_health": null,
|
||||
"player_hurt_cooldown": null,
|
||||
"player_on_ground": null,
|
||||
"player_position": null,
|
||||
"player_saturation": null,
|
||||
"player_velocity": null,
|
||||
"presented_frames": 30,
|
||||
"project": "Horizon",
|
||||
"resident_chunks": 9,
|
||||
"schema": 1,
|
||||
"scope": "Native resident-scene renderer with inspection camera and optional fixed-rate dry walking test; full gameplay remains unfinished",
|
||||
"sprite_layers": 18,
|
||||
"visible_model_faces": 5991,
|
||||
"walking": false,
|
||||
"window_size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"world_revision": 0,
|
||||
"native_scene_culling": {
|
||||
"blocks": 10919,
|
||||
"culled_faces": 59636,
|
||||
"visible_faces": 5991
|
||||
},
|
||||
"native_selection": {
|
||||
"matched_placements": 16,
|
||||
"selected_parts": 20,
|
||||
"client_jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "a2ff1c890d6f3a5292c3a9402f02ca5404a993dc117853b25cbe64ac92b76d30",
|
||||
"scope": "Actual native registry states, blockstate dispatch, tagged root baking and legacy collection using state.getSeed(position). All 16 featured placements match model names/transforms. An independently constructed native scene also matches total occupied blocks and visible/culled model faces using native parent resolution, rotated culling directions and Block.shouldRenderFace. No shader/pixel parity claim."
|
||||
},
|
||||
"resource_files": {
|
||||
"files": 5590,
|
||||
"sha256": "62f859d4d21b82158ab73e26cfa4973d58ab5926ab63d71c70c7a4d173502b7b"
|
||||
},
|
||||
"executable_sha256": "ac49c3978800a25550c082b05c1a56fc73a8d806ee1bdb0e4825a02051bf802b",
|
||||
"resource_manifest_sha256": "92a51de578be0e7c37d21e94caa3f22503f7d88b73827a5fce109b1b889e5d18",
|
||||
"sources": {
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "6884c7209f007ab9ee742b9c3c73828cfa1c6753d35b5fe25a87cab5955b33f8",
|
||||
"tools/test_native_client.py": "6c615fed67fd7bcf09b3184216e08a82012049880a0d4da7c89f86553090cbda",
|
||||
"crates/horizon-client/Cargo.toml": "d56524457d761c2613c0699b20e21ad6977d93e009d59ef150bbd9fc20d7a025",
|
||||
"crates/horizon-assets/Cargo.toml": "2f2cffacec0b4e22dd7cb032d594289bc51c94ae6cc4e985fee3e310f441d751",
|
||||
"crates/horizon-client/src/assets.rs": "e595afa610e0425d0b3ad694218794bf9e680e46ae80f3925c278ef1a823c914",
|
||||
"crates/horizon-client/src/camera.rs": "d386a56ca8fb3b37ba2b2ed9d09342f61b409a575bb21590e934120b4ccebfa6",
|
||||
"crates/horizon-client/src/clock.rs": "4851ada3e8e65d935eda8c0b57d3b51233b34f74aab4f040fd53db0e0d40b8df",
|
||||
"crates/horizon-client/src/collisions.rs": "112286b07c4cd11b36da8b6799e0e069e69dfddf9a8a3f9ce36dcb282c791d67",
|
||||
"crates/horizon-client/src/health.rs": "b5e2d3cde4bd58d906e6f6d47cd756ed23aa6706c71b10c3aedde30c11806403",
|
||||
"crates/horizon-client/src/hunger.rs": "01d8a35f570f2a0991ac17a078f2066a5a83037a728158585765723d208b4611",
|
||||
"crates/horizon-client/src/input.rs": "55b259ca6425c502270e7abc4d3ae1b3838633e2bd77d3817c6e00d9143a2beb",
|
||||
"crates/horizon-client/src/landing.rs": "b9d0ecc5ec60a09d75ab9fe778e0a2e5bbb36fd8364a7ce996405f3dc9cb3b9f",
|
||||
"crates/horizon-client/src/lib.rs": "bc1d0a7e42c11a9090abfebc4ed1f595415dd8b72a6a04b63c765b0deba29f6f",
|
||||
"crates/horizon-client/src/main.rs": "aeb6b5220f8b89a1c9e85bf23fa2bbbafbc876108e59a222d383ad6e6fa238a6",
|
||||
"crates/horizon-client/src/mesh.rs": "4ac8d85b30f599b37a98b92adcc016b16434816b93c401bd39b8215f591f9330",
|
||||
"crates/horizon-client/src/models/catalog.rs": "620103719167fc9ab76e730d68eeacb50014e95b7ad209ae7adf2cbbe69f70f7",
|
||||
"crates/horizon-client/src/models/cube.rs": "1067229f9dd9b276950bf7ec0c5f67061ce3d40a21932dca8034b9748e7439a4",
|
||||
"crates/horizon-client/src/models.rs": "98dd3b969947c2b297862a934e6235067ddc1fc8cda5adcc6276d19014d4b048",
|
||||
"crates/horizon-client/src/motion.rs": "833d7e14ee37f82bef05094c1f0fa681b5ead3b3bcf4e915fbd5bc94e46dd7ad",
|
||||
"crates/horizon-client/src/render.rs": "75cb40c257cf61e51009d292a06cd96532f59320b12ed7c3a509bbdbe1accdd4",
|
||||
"crates/horizon-client/src/sprites.rs": "292f844a31f6e8884008df9630e2b8862db1acfbc4640cc07d526e25f21f0bc5",
|
||||
"crates/horizon-client/src/world.rs": "0333ecf3e18ccc63117295feb2cf77661462ba13feb293eeec667c12811423b5",
|
||||
"crates/horizon-client/src/world.wgsl": "972a58ccb34e9965515adbb30c47a93fceca5b742390db6d9f69cba1ec31f559",
|
||||
"crates/horizon-assets/src/animation.rs": "ebbf7952146a0e66b41396174492f5702627170b03a57e6cd5a45c97a08c975e",
|
||||
"crates/horizon-assets/src/bake/transform.rs": "a95e658fef85b21bcb2f9f7512f98f98d57022d62c1199885b7133beae35a09d",
|
||||
"crates/horizon-assets/src/bake.rs": "f55dda6b6cee5ac6e65a8ee4837fdd2c6674437d59e59b4c45718f6324d4a4d5",
|
||||
"crates/horizon-assets/src/blockstate/bind.rs": "6278962e55c9786bba8184bdf2939af9c6e3b9002b08c3022129964b49a60009",
|
||||
"crates/horizon-assets/src/blockstate/choice.rs": "5a66c8b9833e2f19dd8b0773f3593d97ff5941d3c5b773896b98049efa1395ba",
|
||||
"crates/horizon-assets/src/blockstate.rs": "a4299dfd7adaeb4173982ffaa8e9c9eda2925739ae579a714193c99da2e7ce56",
|
||||
"crates/horizon-assets/src/json.rs": "99fe8af4fbf5d4eed408a92e829ac1a39597a0d92471a6bff73771fad9c830a8",
|
||||
"crates/horizon-assets/src/lib.rs": "e39f21c59a2c3e1c53d977b29bd5e0638e5fc41d86ff0fcc1882a6d90fd961e4",
|
||||
"crates/horizon-assets/src/model.rs": "57ddb3d65e88e7a8aa22c62bc298a2dae7f4e994326a873a31f06c0f36ed051b",
|
||||
"crates/horizon-assets/src/resolve.rs": "3927ac926cdcbd7d334901cc32d0ecc1e498b1bec98f76a46bca6d4964c13541",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaGallerySelectionOracle.java": "dc5433f1ce1de629b30cb70f031a43a691fc1df1fb218ce23de89769c164d562",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCuboidModelOracle.java": "7526f20513c549483122ab0d5ad24b9e87f38dc2f6aae55addd701a91ac85e43",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaHeightmapOracle.java": "145c943637ed177cc4ef8a85f2484da8afd164868e84a8463882feec1653a860",
|
||||
"tools/test_model_baking_parity.py": "392ffec44918fb91740ca4a1316d684480d39f14bd34d46175f7f44946d15bd7",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"tools/prepare_native_client.py": "159c12846058954a35ce86d415dc12fc89a6f11d46d21d1616ee686b7af4eee4",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/border.rs": "1386f8080521231d05ba3e84d94a3e1d5218d35ccb3d5e9fe2bbb05a8739e573",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "c650386f9860e44a96c55f18c8f1428ca715fcb0bc5c2434db5b1caa43df27fe",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "bcfb452752940ce53ae6dc267a3c4eb29459046a063c1f884684ab4f4bd0068f",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/Cargo.toml": "18bbad377a8047e4d4ecd0fc87d83d46d1c0f1ce2b8c47bbe64633e7b4420b57",
|
||||
"crates/horizon-world/src/active_effect_tick.rs": "88f19cfc3532c47a58c646bb3e9d99ff239a900752302b6a444dda3013e95cbf",
|
||||
"crates/horizon-world/src/active_effects.rs": "daaf352a69511a7d69fb329997f783b86585e486e0379c84ab0a55641771646c",
|
||||
"crates/horizon-world/src/attribute_health.rs": "1420a80787d10dd2e2954a3ee6193ff313289d00c7c78ca26ece8bafa21f4380",
|
||||
"crates/horizon-world/src/attribute_map.rs": "3d871cd530f5c035e0753f3ba065c2b9c5b49cdee75d4119f7dd584b22af67e6",
|
||||
"crates/horizon-world/src/attribute_updates.rs": "4cb322d75a50d222298994607097ba7f7e6674021128fa02a98a74c057ad05f1",
|
||||
"crates/horizon-world/src/attributes/entity.rs": "64ac99682a3aa06b1fb94b776b47794234c76b1cf70f1f54933d51e545e69279",
|
||||
"crates/horizon-world/src/attributes/live.rs": "8198c45134f69135d48ef203e71b6e702529568fd1ed9174d0aa843570bbf9e7",
|
||||
"crates/horizon-world/src/attributes/mod.rs": "5c2fcbbde58c19261874d227ea98332f00336c9fa53446da2e9adb6aa64a5e5a",
|
||||
"crates/horizon-world/src/attributes/operation_map.rs": "fc5bc8921d78ea6721a2eaa915e67483e2a33683927467bdba24f0492356ad97",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "39207247f2f6dd3ddc77640229044246f91b32054563f88a435f1bd92ad2092c",
|
||||
"crates/horizon-world/src/block_collision_scan.rs": "20802862364c110ff85eeaf48606596a8468b83768dda46b412d337958790b41",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_entity_push.rs": "12ee91bf604946234b24a0da4333f07d1830ab9743a422d41c8d0afac7d49cfd",
|
||||
"crates/horizon-world/src/block_landing.rs": "33083fe39266fbefec1b3ea1a19f2afc609791d189da247c895e116ad6eb266a",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/blocking_item_damage.rs": "afea3cb5761e8b82ee4d9bb4ef3c6fd10182a324dbaec99e6c9ebfac255dda09",
|
||||
"crates/horizon-world/src/blocking_rules.rs": "83c5e2105cec56a90182ce582e1c67ade2b189be6de1a34d08035000cc07c492",
|
||||
"crates/horizon-world/src/bundle_weight.rs": "a0e7b0587ab5d46cd55588f25d55a088b7a4725099c13ba6df146957be36014c",
|
||||
"crates/horizon-world/src/chunk.rs": "795895284d6e615bcb2082fceacdfe7025c152fb2934bb43f598f17a00ab46f1",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/climbing.rs": "6cd2f919872ff0b726effddaa57eccb805b8eae43f9d01144716010853891879",
|
||||
"crates/horizon-world/src/collision.rs": "a749794d5c27ccd6c0d964ad02f9dc31d49d9f4fe4b7366cd4bd8155e681b00b",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/combat_rules.rs": "01131f70d1acdd96a910e7f96deaa12e51a1e3bb9208085f04e3ec7b657d3cd4",
|
||||
"crates/horizon-world/src/component_durability.rs": "37a46e184f95bc5027e2b9af72ff52f729ad03601d08e1827f181fca383a35af",
|
||||
"crates/horizon-world/src/component_patch.rs": "f6f8992f241dfb25e012a06a7ba3fecab8d958686dddd096595a4806e56f0ab3",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/consumable.rs": "ba3575cb85866cb940f33a1ac86455d71cf0cc6395b848588a8ee1fe33f5c326",
|
||||
"crates/horizon-world/src/consume_effect.rs": "03f2aac6879ce133347d42f6f6667d62c06d956ff9faac5dc14182a788b6a236",
|
||||
"crates/horizon-world/src/damage_immunity.rs": "fd39c41124d694e755cf7faadcf93c636df4042c78ec345092a856b5f952dbcf",
|
||||
"crates/horizon-world/src/damage_reduction.rs": "f5a599ab11e077f526237018aeda803ea3c420c5b35c78ae9d85e32267e23bf3",
|
||||
"crates/horizon-world/src/damage_source.rs": "24945e397a926d34695652980923609e4723e02fe6b6e56d4aaf673e45d759f7",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/edge_backoff.rs": "5259d7aa44e64f88351d1556c44dd0edcad3b400a099c659755792efba7b5773",
|
||||
"crates/horizon-world/src/effect_attribute_modifiers.rs": "0bc7ab63d0f3f34a7133fe20364cae0ec1fdbd3773cba90faa1f08e0d63a5646",
|
||||
"crates/horizon-world/src/effect_notifications.rs": "ea66bfa010d6d44aee97b9672902f41cd99d0d80239f41c6d4eae5c9a9472d3d",
|
||||
"crates/horizon-world/src/effect_particles.rs": "a42dc4ec55929dce1db0f22f8816ecf7621fdce1cd2ac0c90f6a57fea4e0afd2",
|
||||
"crates/horizon-world/src/effect_sync.rs": "1388d4a69b42a14ff4cd474f5e36f0fad5a2874031e64fa2b19b2ea179deed2b",
|
||||
"crates/horizon-world/src/entity_collision.rs": "09f2fd7f6cd56fc282f468ecfa765a94506929e9684bd3a5c90123e5b51cd627",
|
||||
"crates/horizon-world/src/entity_fluid.rs": "02991040ae879a8914f09913128a3506e9e7a1ca33ffc0a22b5729a168346600",
|
||||
"crates/horizon-world/src/entity_fluid_tick.rs": "4f9e070b88a73c98a4e2e659360ddd6edee636bca29377f1ea9011fd5a556f64",
|
||||
"crates/horizon-world/src/entity_move.rs": "a40a50d3e841625a75d4cfbb7c2630ab5a62a574456567e7234f401ae8441b32",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/extra_items.rs": "6eba0a0c795d5fd841d31471708e78324b4852adebb2e6ed700dcc0caab668cd",
|
||||
"crates/horizon-world/src/fall_damage.rs": "8c28e2933493569fe05dea22332024287d28b0746b514dd465681040b003296b",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/fluid_box.rs": "b586af72b1c04a9354fe66205c28dc8b619e205ab9ea19a68232722e4b6e96c1",
|
||||
"crates/horizon-world/src/fluid_flow.rs": "7c7e486b5c565df3602799648b37b879bcca51414337f607962d6c7951b86d05",
|
||||
"crates/horizon-world/src/fluid_occupancy.rs": "26037579caeef6c8a5a2bde2c3d142d278558b76d77ebff401cee6e35f2ea961",
|
||||
"crates/horizon-world/src/fluid_shape.rs": "28bb65a72f5bd074a354ba38a1b1707fcb0947537977a11540bba0adb85995c2",
|
||||
"crates/horizon-world/src/food.rs": "3cf416fa632a5555a8116bb528a6e80bcb5b6b754b0748b4959ed310102418d3",
|
||||
"crates/horizon-world/src/food_properties.rs": "0926fa3f3bc3d0608c45d02f564355825ca3c3526a82bf9c1375c7a191fa5e12",
|
||||
"crates/horizon-world/src/food_storage.rs": "58c433801a285efcc973638c11d694a41f85dc96703a3a7ce8d3673f3eb31d52",
|
||||
"crates/horizon-world/src/free_space.rs": "913536bf4c85ddeeb378d76d1b5110b4175f5688e1a749f32fe6a6d86fbb478e",
|
||||
"crates/horizon-world/src/ground_support.rs": "3e371d74ecede4d30beef0a7e8a2ee33463584a5b1ed3d852b394efcce1ffbe0",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/identifier.rs": "37c921889c4f5d91f7c09ab2ee68d1a5e5a3c4fb1c49b4b189c987b4615fd2d6",
|
||||
"crates/horizon-world/src/interaction_shapes.rs": "f321284ddab440a394372b6dedc8b5cc29a653c0745251a9e96c650f21c33dea",
|
||||
"crates/horizon-world/src/inventory_pickup.rs": "ea830c7916e7f2d95c6db7ef48be1e876e6ebafcb438e47fc72f9a5bd7c37d07",
|
||||
"crates/horizon-world/src/inventory_tick.rs": "293a3d57a1689337cfd58e5a73dcdbed4cb360f94d98ff5458f0df92de387365",
|
||||
"crates/horizon-world/src/inventory_use.rs": "6a6c2ecc73c83dda4cd798c0304df12ace6096eb110d899f4f0c7ffd852bf001",
|
||||
"crates/horizon-world/src/item_after_use.rs": "2b6598ce5b7b304dea2c8057b4a1eb6530264ac4d0546c3da0c76deed9609da5",
|
||||
"crates/horizon-world/src/item_blocking.rs": "f6eee0d6d177cc3148960122327ba1b459a2f0e85241c1d9a3e40f0b8c169296",
|
||||
"crates/horizon-world/src/item_cooldowns.rs": "7b625868509ab3c51e72db0ac714bb0e7ec5e2610d37271005a1a737f4d14431",
|
||||
"crates/horizon-world/src/item_durability.rs": "9fdf835e5c7bd0e1dd63ef2ba0076b770cdd4d6d14cdcd11de27690f0702f94e",
|
||||
"crates/horizon-world/src/item_particles.rs": "861b14f65adb9b14f8158fe9f0b7128beac3df8107b1337c31b8b9b49434ba3f",
|
||||
"crates/horizon-world/src/item_stack_refs.rs": "18d3ca85cac0daf59200857513761359e5690f719cb3f7f64ae552f0c4169ea3",
|
||||
"crates/horizon-world/src/item_stack_storage.rs": "b4dcb83dcaa346848c5484161feb3e2cf08e83f7793d7ed83be25b14b9d12884",
|
||||
"crates/horizon-world/src/item_template.rs": "dc80025215d1867e656924ea2a9d273aacbcaea21293d986ba42d0004ee93b69",
|
||||
"crates/horizon-world/src/item_use.rs": "b1c79428986efbf9dd5ede703a39eb387fb6dcc7d9950f0e49243a353a5b8070",
|
||||
"crates/horizon-world/src/item_use_catalog.rs": "a9b53d2e816583239a75c3c61e78dacc5e3b27dee595be34b1c7fa169f17a571",
|
||||
"crates/horizon-world/src/item_use_lifecycle.rs": "4639b70440cf811e79de09c48a3e035143fcb6be8a64c2f61b10ae55a2f133b7",
|
||||
"crates/horizon-world/src/item_use_start.rs": "a84092dfb8b8f0a89d0928bb2f8ac252bd9bfd3f8d74fce1a7f7a5b3c3f4f50b",
|
||||
"crates/horizon-world/src/java_hash_map.rs": "955502e696d7b0b33bae3ec485c8eb1453a8956116aad68226cf1fc67d60babc",
|
||||
"crates/horizon-world/src/lib.rs": "e25b3543c07f31c2a9d23d811792de9a33290263c7c7445549a0682f6935d8a5",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/live_attribute_updates.rs": "778171faaaf7077deb0b62c4cc1db16351eba41adb8bb07656ba65e827056199",
|
||||
"crates/horizon-world/src/living_air.rs": "b2de36bb50bed15e2808fe4a874fcef07f9fea0d2c96385b7b5e8ee9560d4442",
|
||||
"crates/horizon-world/src/living_damage.rs": "2b448209629b9bf2e678d667ad0d6c7fa22146892dd106b169d96b31b0df12bb",
|
||||
"crates/horizon-world/src/living_fall.rs": "da0f176f4731e1c86e08bfeee8167742fd1b86380ff0e9304c13c1ce3f1c67ab",
|
||||
"crates/horizon-world/src/living_fluid.rs": "d7cd914cfb2a1f4876ce0ae95e999bf0ff1af732cce3ab4a3aa2d1ab881c7339",
|
||||
"crates/horizon-world/src/living_health.rs": "221659f85552424e937d503bba6d8003006b106ced042b32d3a6f6cc23e12ed0",
|
||||
"crates/horizon-world/src/living_hurt.rs": "844239ad7d15c39629bb3cfc06ebae6d1cff20b7627468f26e0ee8dff3abdcb8",
|
||||
"crates/horizon-world/src/living_landing.rs": "8bca4eb7977abc2b14fb7174be4ea355352106ea1e76ff5f3ad8696969d9eefd",
|
||||
"crates/horizon-world/src/living_motion.rs": "56f8c84cfbe205a7a69912d5f76b52ef1efca149c1b6801d4684e25fb179aeb9",
|
||||
"crates/horizon-world/src/living_use_flags.rs": "826f4fdeba7e208368cbbf910fa408db0afbc6442d842d178a70fae53e0d0ea6",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/movement_emission.rs": "76e7d6f5b19c94676190f54389f9c4ce12cf89945ccfcb9c750de473223e7753",
|
||||
"crates/horizon-world/src/movement_properties.rs": "6f01ab920b376a13f5ae12c3718f4dd067e1dff2b829585af00a8b2100f3775d",
|
||||
"crates/horizon-world/src/movement_restitution.rs": "04b4fe0947e7e52576145bd8ed15920278e8a538afcc74d125eaca513dffa0ef",
|
||||
"crates/horizon-world/src/movement_statistics.rs": "fe28061e29c41f8f399d29cce8c468a63854613702b5aa525c0f0fd98cb87f9a",
|
||||
"crates/horizon-world/src/movement_support.rs": "02d85cf572847f2e60b5a7f9d60b856888a67b3c1f4df03e81998c66fdf874be",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/object_open_map.rs": "b4934a9cc38df93ed206ab0bc3bbc4499acd8e40b41b7def7d47067b7170065b",
|
||||
"crates/horizon-world/src/object_open_set.rs": "d3e0373bf1b652dd054345d5a8e25ec828e06dd7cad65aada35163c95df4e637",
|
||||
"crates/horizon-world/src/piston_movement.rs": "7a3fd2549a582b5f3a5c21aa05d67d944d62ca1105856679e100ac5b44e9a52f",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/player_equipment.rs": "1fa8c53e67624c4641246249d79a800a28a4858c62482bd880b4e3b866b936ef",
|
||||
"crates/horizon-world/src/player_food.rs": "f188dc110745bcc7acc15e6c521db943b06b404f69cd251bf74a345516070304",
|
||||
"crates/horizon-world/src/player_health.rs": "8155b315453c569db2fbe46228886c5881d1fd55eb095c5849e69bdb500ba2bd",
|
||||
"crates/horizon-world/src/player_hurt.rs": "99c9bbd8587ec2dc287806049897b8034d2f5349ad47fc497b70d54148844a36",
|
||||
"crates/horizon-world/src/player_inventory.rs": "f4f67d8312793f25930626c4ac06db688fcf2e2292d6675071d105fb1708d952",
|
||||
"crates/horizon-world/src/player_travel.rs": "6841a677a900495eb6223031ef3ebe8d859bb98908dda0e2209e5f28839dc593",
|
||||
"crates/horizon-world/src/powder_snow_collision.rs": "7289946a21478d11abfd2bdcdddff3d7f98e25bf6a68564fed45c3cc01ac2a36",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/registry_collision_scan.rs": "97cc950a9a4ba387b78e368f36d595f8664ab7730d132900d220ce23b92826ea",
|
||||
"crates/horizon-world/src/registry_fall_ray.rs": "52935436132df505691144840dcbd858b15d00d8305997284e3a542ecf6bc0dc",
|
||||
"crates/horizon-world/src/registry_fluid.rs": "b8959c05850cfeaaad1e4de8ca7c7d0d6ac56da9b2c1de3ebefa5871a11ed35e",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/server_player_combat.rs": "0a94885c4b7a0d294ba7f4cee18b96ee59649b50112988250b53cc224059a979",
|
||||
"crates/horizon-world/src/server_player_damage.rs": "29af22dec321fe01776cee5334f050c5bc3e27a688f99c8c3da4c0ad8bc8254e",
|
||||
"crates/horizon-world/src/simple_container.rs": "0fedbc7e974b1db79b88bd6aff977654189a5d553cf42852fe8bf0885cf90b30",
|
||||
"crates/horizon-world/src/status_effect.rs": "588bfcf4d93f50be86cb89545bd5c431edbc71771f704ff55cb52906b1964c37",
|
||||
"crates/horizon-world/src/stored_consume.rs": "621a52c9fba447c393e561f881a16cf1f97d336e3a0ce493725ef51e2db12ffd",
|
||||
"crates/horizon-world/src/stored_effect_attributes.rs": "c79f6a52d3cfee1a5288225bf8fa91a7bf3ea8cd21faea9f6dc748ecefc6309a",
|
||||
"crates/horizon-world/src/suffocation.rs": "bed219dd5bbab6263b98fbe3d0eb512cb96c52ae847210efe49514d05f22f11e",
|
||||
"crates/horizon-world/src/swimming.rs": "49d2dae13c109b37ff832cde98a857944ff45247b864a527b9c4f03ecca7a7b7",
|
||||
"crates/horizon-world/src/synced_floats.rs": "0152f2752bafaf68769d56dbc88494a976496a680c6b113d6b48a446158ba072",
|
||||
"crates/horizon-world/src/synced_values.rs": "a1d4b53ae77d1899ba2b4ead67c9ec1e3c96615558e446f9d0760c1b4a520169",
|
||||
"crates/horizon-world/src/teleport_consume.rs": "d6a53bbb6ac4dbbd4c0591d0646017898a95beb8ef093dc5d81b9833963be6c3",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/use_remainder.rs": "f555335afeca7970888131a6da2f5a614a73253b631185d1ba804593a349535e",
|
||||
"crates/horizon-world/src/view_direction.rs": "e18120ae26dc5cf702b29fc4c8487088bab133c8ce5abce01226833fafb0d5a4",
|
||||
"crates/horizon-world/src/water_splash.rs": "e0461ae1b2e8c851cca6e3251a188334293292201d7f80dc9e7d60fd1815f4d1",
|
||||
"crates/horizon-world/src/world_movement.rs": "f8fe9e34f2395d2a04c839d1c8ba78e09ce493c26de6f6e4e237b9c19c061da5",
|
||||
"crates/horizon-world/src/world_ray.rs": "879bdbbe12f56deb705cc183933431489e840b71eade40c33391eed5949c2e61",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "74e4110fb19c4c4047192fd65c38015b8afc7f9fc50404d75380b5063808148c",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f"
|
||||
}
|
||||
}
|
||||
@@ -1,807 +0,0 @@
|
||||
{
|
||||
"adapter": {
|
||||
"backend": "Vulkan",
|
||||
"device": 0,
|
||||
"device_type": "Cpu",
|
||||
"name": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"vendor": 65541
|
||||
},
|
||||
"animated_sprites": 1,
|
||||
"animation_uploads": 1,
|
||||
"arch": "x86_64",
|
||||
"camera_pitch": -0.3839724354387525,
|
||||
"camera_position": [
|
||||
25.0,
|
||||
18.0,
|
||||
25.0
|
||||
],
|
||||
"camera_yaw": -2.356194490192345,
|
||||
"collision_camera": false,
|
||||
"culled_model_faces": 59636,
|
||||
"elapsed_seconds": 0.545908777,
|
||||
"error": null,
|
||||
"fall_damage_requests": 0,
|
||||
"last_requested_fall_damage": null,
|
||||
"merged_quads": 3169,
|
||||
"mesh_revision": 0,
|
||||
"model_blocks": 10919,
|
||||
"model_gallery": [
|
||||
{
|
||||
"block": "minecraft:oak_stairs",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_stairs_inner",
|
||||
"rotations": [
|
||||
2,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "north",
|
||||
"half": "top",
|
||||
"shape": "inner_left",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 5466
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone_slab",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_slab_top",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"type": "top",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 15250
|
||||
},
|
||||
{
|
||||
"block": "minecraft:anvil",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/anvil",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east"
|
||||
},
|
||||
"state_id": 12965
|
||||
},
|
||||
{
|
||||
"block": "minecraft:torch",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/torch",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
14
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 4926
|
||||
},
|
||||
{
|
||||
"block": "minecraft:lantern",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/lantern",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"hanging": "false",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 24197
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_post",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_side",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "true",
|
||||
"north": "true",
|
||||
"south": "false",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 8642
|
||||
},
|
||||
{
|
||||
"block": "minecraft:oak_fence_gate",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/oak_fence_gate_open",
|
||||
"rotations": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": true
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"in_wall": "false",
|
||||
"open": "true",
|
||||
"powered": "false"
|
||||
},
|
||||
"state_id": 10401
|
||||
},
|
||||
{
|
||||
"block": "minecraft:iron_bars",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_post_ends",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
},
|
||||
{
|
||||
"model": "minecraft:block/iron_bars_side_alt",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
18
|
||||
],
|
||||
"properties": {
|
||||
"east": "false",
|
||||
"north": "true",
|
||||
"south": "true",
|
||||
"waterlogged": "false",
|
||||
"west": "false"
|
||||
},
|
||||
"state_id": 9711
|
||||
},
|
||||
{
|
||||
"block": "minecraft:cobweb",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/cobweb",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 2362
|
||||
},
|
||||
{
|
||||
"block": "minecraft:grindstone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/grindstone",
|
||||
"rotations": [
|
||||
1,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"face": "wall",
|
||||
"facing": "west"
|
||||
},
|
||||
"state_id": 24135
|
||||
},
|
||||
{
|
||||
"block": "minecraft:ladder",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/ladder",
|
||||
"rotations": [
|
||||
0,
|
||||
3,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "west",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 7312
|
||||
},
|
||||
{
|
||||
"block": "minecraft:amethyst_cluster",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/amethyst_cluster",
|
||||
"rotations": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
22
|
||||
],
|
||||
"properties": {
|
||||
"facing": "east",
|
||||
"waterlogged": "false"
|
||||
},
|
||||
"state_id": 26764
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-7,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone_mirrored",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
-3,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
1,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
},
|
||||
{
|
||||
"block": "minecraft:stone",
|
||||
"models": [
|
||||
{
|
||||
"model": "minecraft:block/stone",
|
||||
"rotations": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"uv_lock": false
|
||||
}
|
||||
],
|
||||
"position": [
|
||||
5,
|
||||
4,
|
||||
26
|
||||
],
|
||||
"properties": {},
|
||||
"state_id": 1
|
||||
}
|
||||
],
|
||||
"model_quads": 179,
|
||||
"movement_ticks": 0,
|
||||
"os": "linux",
|
||||
"player_absorption": null,
|
||||
"player_dead": null,
|
||||
"player_exhaustion": null,
|
||||
"player_fall_distance": null,
|
||||
"player_food": null,
|
||||
"player_food_timer": null,
|
||||
"player_health": null,
|
||||
"player_hurt_cooldown": null,
|
||||
"player_on_ground": null,
|
||||
"player_position": null,
|
||||
"player_saturation": null,
|
||||
"player_sprint_trigger": null,
|
||||
"player_sprinting": null,
|
||||
"player_velocity": null,
|
||||
"presented_frames": 30,
|
||||
"project": "Horizon",
|
||||
"resident_chunks": 9,
|
||||
"schema": 1,
|
||||
"scope": "Native resident-scene renderer with inspection camera and optional fixed-rate dry walking test; full gameplay remains unfinished",
|
||||
"sprint_distance_cm": 0,
|
||||
"sprint_ticks": 0,
|
||||
"sprite_layers": 18,
|
||||
"visible_model_faces": 5991,
|
||||
"walk_distance_cm": 0,
|
||||
"walking": false,
|
||||
"window_size": [
|
||||
1280,
|
||||
720
|
||||
],
|
||||
"world_revision": 0,
|
||||
"native_scene_culling": {
|
||||
"blocks": 10919,
|
||||
"culled_faces": 59636,
|
||||
"visible_faces": 5991
|
||||
},
|
||||
"native_selection": {
|
||||
"matched_placements": 16,
|
||||
"selected_parts": 20,
|
||||
"client_jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "a2ff1c890d6f3a5292c3a9402f02ca5404a993dc117853b25cbe64ac92b76d30",
|
||||
"scope": "Actual native registry states, blockstate dispatch, tagged root baking and legacy collection using state.getSeed(position). All 16 featured placements match model names/transforms. An independently constructed native scene also matches total occupied blocks and visible/culled model faces using native parent resolution, rotated culling directions and Block.shouldRenderFace. No shader/pixel parity claim."
|
||||
},
|
||||
"resource_files": {
|
||||
"files": 5590,
|
||||
"sha256": "62f859d4d21b82158ab73e26cfa4973d58ab5926ab63d71c70c7a4d173502b7b"
|
||||
},
|
||||
"executable_sha256": "632eb61d13b3274d5c991f2f2daffd56891abf472b99085cf04f9237b5f21f28",
|
||||
"resource_manifest_sha256": "92a51de578be0e7c37d21e94caa3f22503f7d88b73827a5fce109b1b889e5d18",
|
||||
"sources": {
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "6884c7209f007ab9ee742b9c3c73828cfa1c6753d35b5fe25a87cab5955b33f8",
|
||||
"tools/test_native_client.py": "6c615fed67fd7bcf09b3184216e08a82012049880a0d4da7c89f86553090cbda",
|
||||
"crates/horizon-client/Cargo.toml": "d56524457d761c2613c0699b20e21ad6977d93e009d59ef150bbd9fc20d7a025",
|
||||
"crates/horizon-assets/Cargo.toml": "2f2cffacec0b4e22dd7cb032d594289bc51c94ae6cc4e985fee3e310f441d751",
|
||||
"crates/horizon-client/src/assets.rs": "e595afa610e0425d0b3ad694218794bf9e680e46ae80f3925c278ef1a823c914",
|
||||
"crates/horizon-client/src/camera.rs": "d386a56ca8fb3b37ba2b2ed9d09342f61b409a575bb21590e934120b4ccebfa6",
|
||||
"crates/horizon-client/src/clock.rs": "4851ada3e8e65d935eda8c0b57d3b51233b34f74aab4f040fd53db0e0d40b8df",
|
||||
"crates/horizon-client/src/collisions.rs": "112286b07c4cd11b36da8b6799e0e069e69dfddf9a8a3f9ce36dcb282c791d67",
|
||||
"crates/horizon-client/src/health.rs": "b5e2d3cde4bd58d906e6f6d47cd756ed23aa6706c71b10c3aedde30c11806403",
|
||||
"crates/horizon-client/src/hunger.rs": "01d8a35f570f2a0991ac17a078f2066a5a83037a728158585765723d208b4611",
|
||||
"crates/horizon-client/src/input.rs": "55b259ca6425c502270e7abc4d3ae1b3838633e2bd77d3817c6e00d9143a2beb",
|
||||
"crates/horizon-client/src/landing.rs": "b9d0ecc5ec60a09d75ab9fe778e0a2e5bbb36fd8364a7ce996405f3dc9cb3b9f",
|
||||
"crates/horizon-client/src/lib.rs": "d34c467ee87b869c6645052f286305e218c80ba258603317e9d951f1b4c5345d",
|
||||
"crates/horizon-client/src/main.rs": "14a459150f8dcc0a9bda2d91138e7e232d1e33e7b5f15fa17af8228653cbca2a",
|
||||
"crates/horizon-client/src/mesh.rs": "4ac8d85b30f599b37a98b92adcc016b16434816b93c401bd39b8215f591f9330",
|
||||
"crates/horizon-client/src/models/catalog.rs": "620103719167fc9ab76e730d68eeacb50014e95b7ad209ae7adf2cbbe69f70f7",
|
||||
"crates/horizon-client/src/models/cube.rs": "1067229f9dd9b276950bf7ec0c5f67061ce3d40a21932dca8034b9748e7439a4",
|
||||
"crates/horizon-client/src/models.rs": "98dd3b969947c2b297862a934e6235067ddc1fc8cda5adcc6276d19014d4b048",
|
||||
"crates/horizon-client/src/motion.rs": "1949f35da0e65ee71c52f53a2faf22601fbbb43387fbd411d6c9281b2221bc42",
|
||||
"crates/horizon-client/src/render.rs": "75cb40c257cf61e51009d292a06cd96532f59320b12ed7c3a509bbdbe1accdd4",
|
||||
"crates/horizon-client/src/sprint.rs": "6f5ba5ea8e9a19872b26c1d7b5073e29549f2d820a0fe46e5450c9e7446e98b2",
|
||||
"crates/horizon-client/src/sprites.rs": "292f844a31f6e8884008df9630e2b8862db1acfbc4640cc07d526e25f21f0bc5",
|
||||
"crates/horizon-client/src/world.rs": "0333ecf3e18ccc63117295feb2cf77661462ba13feb293eeec667c12811423b5",
|
||||
"crates/horizon-client/src/world.wgsl": "972a58ccb34e9965515adbb30c47a93fceca5b742390db6d9f69cba1ec31f559",
|
||||
"crates/horizon-assets/src/animation.rs": "ebbf7952146a0e66b41396174492f5702627170b03a57e6cd5a45c97a08c975e",
|
||||
"crates/horizon-assets/src/bake/transform.rs": "a95e658fef85b21bcb2f9f7512f98f98d57022d62c1199885b7133beae35a09d",
|
||||
"crates/horizon-assets/src/bake.rs": "f55dda6b6cee5ac6e65a8ee4837fdd2c6674437d59e59b4c45718f6324d4a4d5",
|
||||
"crates/horizon-assets/src/blockstate/bind.rs": "6278962e55c9786bba8184bdf2939af9c6e3b9002b08c3022129964b49a60009",
|
||||
"crates/horizon-assets/src/blockstate/choice.rs": "5a66c8b9833e2f19dd8b0773f3593d97ff5941d3c5b773896b98049efa1395ba",
|
||||
"crates/horizon-assets/src/blockstate.rs": "a4299dfd7adaeb4173982ffaa8e9c9eda2925739ae579a714193c99da2e7ce56",
|
||||
"crates/horizon-assets/src/json.rs": "99fe8af4fbf5d4eed408a92e829ac1a39597a0d92471a6bff73771fad9c830a8",
|
||||
"crates/horizon-assets/src/lib.rs": "e39f21c59a2c3e1c53d977b29bd5e0638e5fc41d86ff0fcc1882a6d90fd961e4",
|
||||
"crates/horizon-assets/src/model.rs": "57ddb3d65e88e7a8aa22c62bc298a2dae7f4e994326a873a31f06c0f36ed051b",
|
||||
"crates/horizon-assets/src/resolve.rs": "3927ac926cdcbd7d334901cc32d0ecc1e498b1bec98f76a46bca6d4964c13541",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaGallerySelectionOracle.java": "dc5433f1ce1de629b30cb70f031a43a691fc1df1fb218ce23de89769c164d562",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCuboidModelOracle.java": "7526f20513c549483122ab0d5ad24b9e87f38dc2f6aae55addd701a91ac85e43",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaHeightmapOracle.java": "145c943637ed177cc4ef8a85f2484da8afd164868e84a8463882feec1653a860",
|
||||
"tools/test_model_baking_parity.py": "392ffec44918fb91740ca4a1316d684480d39f14bd34d46175f7f44946d15bd7",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"tools/prepare_native_client.py": "159c12846058954a35ce86d415dc12fc89a6f11d46d21d1616ee686b7af4eee4",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/border.rs": "1386f8080521231d05ba3e84d94a3e1d5218d35ccb3d5e9fe2bbb05a8739e573",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "c650386f9860e44a96c55f18c8f1428ca715fcb0bc5c2434db5b1caa43df27fe",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "bcfb452752940ce53ae6dc267a3c4eb29459046a063c1f884684ab4f4bd0068f",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/Cargo.toml": "18bbad377a8047e4d4ecd0fc87d83d46d1c0f1ce2b8c47bbe64633e7b4420b57",
|
||||
"crates/horizon-world/src/active_effect_tick.rs": "88f19cfc3532c47a58c646bb3e9d99ff239a900752302b6a444dda3013e95cbf",
|
||||
"crates/horizon-world/src/active_effects.rs": "daaf352a69511a7d69fb329997f783b86585e486e0379c84ab0a55641771646c",
|
||||
"crates/horizon-world/src/attribute_health.rs": "1420a80787d10dd2e2954a3ee6193ff313289d00c7c78ca26ece8bafa21f4380",
|
||||
"crates/horizon-world/src/attribute_map.rs": "3d871cd530f5c035e0753f3ba065c2b9c5b49cdee75d4119f7dd584b22af67e6",
|
||||
"crates/horizon-world/src/attribute_updates.rs": "4cb322d75a50d222298994607097ba7f7e6674021128fa02a98a74c057ad05f1",
|
||||
"crates/horizon-world/src/attributes/entity.rs": "64ac99682a3aa06b1fb94b776b47794234c76b1cf70f1f54933d51e545e69279",
|
||||
"crates/horizon-world/src/attributes/live.rs": "8198c45134f69135d48ef203e71b6e702529568fd1ed9174d0aa843570bbf9e7",
|
||||
"crates/horizon-world/src/attributes/mod.rs": "5c2fcbbde58c19261874d227ea98332f00336c9fa53446da2e9adb6aa64a5e5a",
|
||||
"crates/horizon-world/src/attributes/operation_map.rs": "fc5bc8921d78ea6721a2eaa915e67483e2a33683927467bdba24f0492356ad97",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "39207247f2f6dd3ddc77640229044246f91b32054563f88a435f1bd92ad2092c",
|
||||
"crates/horizon-world/src/block_collision_scan.rs": "20802862364c110ff85eeaf48606596a8468b83768dda46b412d337958790b41",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_entity_push.rs": "12ee91bf604946234b24a0da4333f07d1830ab9743a422d41c8d0afac7d49cfd",
|
||||
"crates/horizon-world/src/block_landing.rs": "33083fe39266fbefec1b3ea1a19f2afc609791d189da247c895e116ad6eb266a",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/blocking_item_damage.rs": "afea3cb5761e8b82ee4d9bb4ef3c6fd10182a324dbaec99e6c9ebfac255dda09",
|
||||
"crates/horizon-world/src/blocking_rules.rs": "83c5e2105cec56a90182ce582e1c67ade2b189be6de1a34d08035000cc07c492",
|
||||
"crates/horizon-world/src/bundle_weight.rs": "a0e7b0587ab5d46cd55588f25d55a088b7a4725099c13ba6df146957be36014c",
|
||||
"crates/horizon-world/src/chunk.rs": "795895284d6e615bcb2082fceacdfe7025c152fb2934bb43f598f17a00ab46f1",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/climbing.rs": "6cd2f919872ff0b726effddaa57eccb805b8eae43f9d01144716010853891879",
|
||||
"crates/horizon-world/src/collision.rs": "a749794d5c27ccd6c0d964ad02f9dc31d49d9f4fe4b7366cd4bd8155e681b00b",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/combat_rules.rs": "01131f70d1acdd96a910e7f96deaa12e51a1e3bb9208085f04e3ec7b657d3cd4",
|
||||
"crates/horizon-world/src/component_durability.rs": "37a46e184f95bc5027e2b9af72ff52f729ad03601d08e1827f181fca383a35af",
|
||||
"crates/horizon-world/src/component_patch.rs": "f6f8992f241dfb25e012a06a7ba3fecab8d958686dddd096595a4806e56f0ab3",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/consumable.rs": "ba3575cb85866cb940f33a1ac86455d71cf0cc6395b848588a8ee1fe33f5c326",
|
||||
"crates/horizon-world/src/consume_effect.rs": "03f2aac6879ce133347d42f6f6667d62c06d956ff9faac5dc14182a788b6a236",
|
||||
"crates/horizon-world/src/damage_immunity.rs": "fd39c41124d694e755cf7faadcf93c636df4042c78ec345092a856b5f952dbcf",
|
||||
"crates/horizon-world/src/damage_reduction.rs": "f5a599ab11e077f526237018aeda803ea3c420c5b35c78ae9d85e32267e23bf3",
|
||||
"crates/horizon-world/src/damage_source.rs": "24945e397a926d34695652980923609e4723e02fe6b6e56d4aaf673e45d759f7",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/edge_backoff.rs": "5259d7aa44e64f88351d1556c44dd0edcad3b400a099c659755792efba7b5773",
|
||||
"crates/horizon-world/src/effect_attribute_modifiers.rs": "0bc7ab63d0f3f34a7133fe20364cae0ec1fdbd3773cba90faa1f08e0d63a5646",
|
||||
"crates/horizon-world/src/effect_notifications.rs": "ea66bfa010d6d44aee97b9672902f41cd99d0d80239f41c6d4eae5c9a9472d3d",
|
||||
"crates/horizon-world/src/effect_particles.rs": "a42dc4ec55929dce1db0f22f8816ecf7621fdce1cd2ac0c90f6a57fea4e0afd2",
|
||||
"crates/horizon-world/src/effect_sync.rs": "1388d4a69b42a14ff4cd474f5e36f0fad5a2874031e64fa2b19b2ea179deed2b",
|
||||
"crates/horizon-world/src/entity_collision.rs": "09f2fd7f6cd56fc282f468ecfa765a94506929e9684bd3a5c90123e5b51cd627",
|
||||
"crates/horizon-world/src/entity_fluid.rs": "02991040ae879a8914f09913128a3506e9e7a1ca33ffc0a22b5729a168346600",
|
||||
"crates/horizon-world/src/entity_fluid_tick.rs": "4f9e070b88a73c98a4e2e659360ddd6edee636bca29377f1ea9011fd5a556f64",
|
||||
"crates/horizon-world/src/entity_move.rs": "a40a50d3e841625a75d4cfbb7c2630ab5a62a574456567e7234f401ae8441b32",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/extra_items.rs": "6eba0a0c795d5fd841d31471708e78324b4852adebb2e6ed700dcc0caab668cd",
|
||||
"crates/horizon-world/src/fall_damage.rs": "8c28e2933493569fe05dea22332024287d28b0746b514dd465681040b003296b",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/fluid_box.rs": "b586af72b1c04a9354fe66205c28dc8b619e205ab9ea19a68232722e4b6e96c1",
|
||||
"crates/horizon-world/src/fluid_flow.rs": "7c7e486b5c565df3602799648b37b879bcca51414337f607962d6c7951b86d05",
|
||||
"crates/horizon-world/src/fluid_occupancy.rs": "26037579caeef6c8a5a2bde2c3d142d278558b76d77ebff401cee6e35f2ea961",
|
||||
"crates/horizon-world/src/fluid_shape.rs": "28bb65a72f5bd074a354ba38a1b1707fcb0947537977a11540bba0adb85995c2",
|
||||
"crates/horizon-world/src/food.rs": "3cf416fa632a5555a8116bb528a6e80bcb5b6b754b0748b4959ed310102418d3",
|
||||
"crates/horizon-world/src/food_properties.rs": "0926fa3f3bc3d0608c45d02f564355825ca3c3526a82bf9c1375c7a191fa5e12",
|
||||
"crates/horizon-world/src/food_storage.rs": "58c433801a285efcc973638c11d694a41f85dc96703a3a7ce8d3673f3eb31d52",
|
||||
"crates/horizon-world/src/free_space.rs": "913536bf4c85ddeeb378d76d1b5110b4175f5688e1a749f32fe6a6d86fbb478e",
|
||||
"crates/horizon-world/src/ground_support.rs": "3e371d74ecede4d30beef0a7e8a2ee33463584a5b1ed3d852b394efcce1ffbe0",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/identifier.rs": "37c921889c4f5d91f7c09ab2ee68d1a5e5a3c4fb1c49b4b189c987b4615fd2d6",
|
||||
"crates/horizon-world/src/interaction_shapes.rs": "f321284ddab440a394372b6dedc8b5cc29a653c0745251a9e96c650f21c33dea",
|
||||
"crates/horizon-world/src/inventory_pickup.rs": "ea830c7916e7f2d95c6db7ef48be1e876e6ebafcb438e47fc72f9a5bd7c37d07",
|
||||
"crates/horizon-world/src/inventory_tick.rs": "293a3d57a1689337cfd58e5a73dcdbed4cb360f94d98ff5458f0df92de387365",
|
||||
"crates/horizon-world/src/inventory_use.rs": "6a6c2ecc73c83dda4cd798c0304df12ace6096eb110d899f4f0c7ffd852bf001",
|
||||
"crates/horizon-world/src/item_after_use.rs": "2b6598ce5b7b304dea2c8057b4a1eb6530264ac4d0546c3da0c76deed9609da5",
|
||||
"crates/horizon-world/src/item_blocking.rs": "f6eee0d6d177cc3148960122327ba1b459a2f0e85241c1d9a3e40f0b8c169296",
|
||||
"crates/horizon-world/src/item_cooldowns.rs": "7b625868509ab3c51e72db0ac714bb0e7ec5e2610d37271005a1a737f4d14431",
|
||||
"crates/horizon-world/src/item_durability.rs": "9fdf835e5c7bd0e1dd63ef2ba0076b770cdd4d6d14cdcd11de27690f0702f94e",
|
||||
"crates/horizon-world/src/item_particles.rs": "861b14f65adb9b14f8158fe9f0b7128beac3df8107b1337c31b8b9b49434ba3f",
|
||||
"crates/horizon-world/src/item_stack_refs.rs": "18d3ca85cac0daf59200857513761359e5690f719cb3f7f64ae552f0c4169ea3",
|
||||
"crates/horizon-world/src/item_stack_storage.rs": "b4dcb83dcaa346848c5484161feb3e2cf08e83f7793d7ed83be25b14b9d12884",
|
||||
"crates/horizon-world/src/item_template.rs": "dc80025215d1867e656924ea2a9d273aacbcaea21293d986ba42d0004ee93b69",
|
||||
"crates/horizon-world/src/item_use.rs": "b1c79428986efbf9dd5ede703a39eb387fb6dcc7d9950f0e49243a353a5b8070",
|
||||
"crates/horizon-world/src/item_use_catalog.rs": "a9b53d2e816583239a75c3c61e78dacc5e3b27dee595be34b1c7fa169f17a571",
|
||||
"crates/horizon-world/src/item_use_lifecycle.rs": "4639b70440cf811e79de09c48a3e035143fcb6be8a64c2f61b10ae55a2f133b7",
|
||||
"crates/horizon-world/src/item_use_start.rs": "a84092dfb8b8f0a89d0928bb2f8ac252bd9bfd3f8d74fce1a7f7a5b3c3f4f50b",
|
||||
"crates/horizon-world/src/java_hash_map.rs": "955502e696d7b0b33bae3ec485c8eb1453a8956116aad68226cf1fc67d60babc",
|
||||
"crates/horizon-world/src/lib.rs": "e25b3543c07f31c2a9d23d811792de9a33290263c7c7445549a0682f6935d8a5",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/live_attribute_updates.rs": "778171faaaf7077deb0b62c4cc1db16351eba41adb8bb07656ba65e827056199",
|
||||
"crates/horizon-world/src/living_air.rs": "b2de36bb50bed15e2808fe4a874fcef07f9fea0d2c96385b7b5e8ee9560d4442",
|
||||
"crates/horizon-world/src/living_damage.rs": "2b448209629b9bf2e678d667ad0d6c7fa22146892dd106b169d96b31b0df12bb",
|
||||
"crates/horizon-world/src/living_fall.rs": "da0f176f4731e1c86e08bfeee8167742fd1b86380ff0e9304c13c1ce3f1c67ab",
|
||||
"crates/horizon-world/src/living_fluid.rs": "d7cd914cfb2a1f4876ce0ae95e999bf0ff1af732cce3ab4a3aa2d1ab881c7339",
|
||||
"crates/horizon-world/src/living_health.rs": "221659f85552424e937d503bba6d8003006b106ced042b32d3a6f6cc23e12ed0",
|
||||
"crates/horizon-world/src/living_hurt.rs": "844239ad7d15c39629bb3cfc06ebae6d1cff20b7627468f26e0ee8dff3abdcb8",
|
||||
"crates/horizon-world/src/living_landing.rs": "8bca4eb7977abc2b14fb7174be4ea355352106ea1e76ff5f3ad8696969d9eefd",
|
||||
"crates/horizon-world/src/living_motion.rs": "56f8c84cfbe205a7a69912d5f76b52ef1efca149c1b6801d4684e25fb179aeb9",
|
||||
"crates/horizon-world/src/living_use_flags.rs": "826f4fdeba7e208368cbbf910fa408db0afbc6442d842d178a70fae53e0d0ea6",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/movement_emission.rs": "76e7d6f5b19c94676190f54389f9c4ce12cf89945ccfcb9c750de473223e7753",
|
||||
"crates/horizon-world/src/movement_properties.rs": "6f01ab920b376a13f5ae12c3718f4dd067e1dff2b829585af00a8b2100f3775d",
|
||||
"crates/horizon-world/src/movement_restitution.rs": "04b4fe0947e7e52576145bd8ed15920278e8a538afcc74d125eaca513dffa0ef",
|
||||
"crates/horizon-world/src/movement_statistics.rs": "fe28061e29c41f8f399d29cce8c468a63854613702b5aa525c0f0fd98cb87f9a",
|
||||
"crates/horizon-world/src/movement_support.rs": "02d85cf572847f2e60b5a7f9d60b856888a67b3c1f4df03e81998c66fdf874be",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/object_open_map.rs": "b4934a9cc38df93ed206ab0bc3bbc4499acd8e40b41b7def7d47067b7170065b",
|
||||
"crates/horizon-world/src/object_open_set.rs": "d3e0373bf1b652dd054345d5a8e25ec828e06dd7cad65aada35163c95df4e637",
|
||||
"crates/horizon-world/src/piston_movement.rs": "7a3fd2549a582b5f3a5c21aa05d67d944d62ca1105856679e100ac5b44e9a52f",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/player_equipment.rs": "1fa8c53e67624c4641246249d79a800a28a4858c62482bd880b4e3b866b936ef",
|
||||
"crates/horizon-world/src/player_food.rs": "f188dc110745bcc7acc15e6c521db943b06b404f69cd251bf74a345516070304",
|
||||
"crates/horizon-world/src/player_health.rs": "8155b315453c569db2fbe46228886c5881d1fd55eb095c5849e69bdb500ba2bd",
|
||||
"crates/horizon-world/src/player_hurt.rs": "99c9bbd8587ec2dc287806049897b8034d2f5349ad47fc497b70d54148844a36",
|
||||
"crates/horizon-world/src/player_inventory.rs": "f4f67d8312793f25930626c4ac06db688fcf2e2292d6675071d105fb1708d952",
|
||||
"crates/horizon-world/src/player_travel.rs": "6841a677a900495eb6223031ef3ebe8d859bb98908dda0e2209e5f28839dc593",
|
||||
"crates/horizon-world/src/powder_snow_collision.rs": "7289946a21478d11abfd2bdcdddff3d7f98e25bf6a68564fed45c3cc01ac2a36",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/registry_collision_scan.rs": "97cc950a9a4ba387b78e368f36d595f8664ab7730d132900d220ce23b92826ea",
|
||||
"crates/horizon-world/src/registry_fall_ray.rs": "52935436132df505691144840dcbd858b15d00d8305997284e3a542ecf6bc0dc",
|
||||
"crates/horizon-world/src/registry_fluid.rs": "b8959c05850cfeaaad1e4de8ca7c7d0d6ac56da9b2c1de3ebefa5871a11ed35e",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/server_player_combat.rs": "0a94885c4b7a0d294ba7f4cee18b96ee59649b50112988250b53cc224059a979",
|
||||
"crates/horizon-world/src/server_player_damage.rs": "29af22dec321fe01776cee5334f050c5bc3e27a688f99c8c3da4c0ad8bc8254e",
|
||||
"crates/horizon-world/src/simple_container.rs": "0fedbc7e974b1db79b88bd6aff977654189a5d553cf42852fe8bf0885cf90b30",
|
||||
"crates/horizon-world/src/status_effect.rs": "588bfcf4d93f50be86cb89545bd5c431edbc71771f704ff55cb52906b1964c37",
|
||||
"crates/horizon-world/src/stored_consume.rs": "621a52c9fba447c393e561f881a16cf1f97d336e3a0ce493725ef51e2db12ffd",
|
||||
"crates/horizon-world/src/stored_effect_attributes.rs": "c79f6a52d3cfee1a5288225bf8fa91a7bf3ea8cd21faea9f6dc748ecefc6309a",
|
||||
"crates/horizon-world/src/suffocation.rs": "bed219dd5bbab6263b98fbe3d0eb512cb96c52ae847210efe49514d05f22f11e",
|
||||
"crates/horizon-world/src/swimming.rs": "49d2dae13c109b37ff832cde98a857944ff45247b864a527b9c4f03ecca7a7b7",
|
||||
"crates/horizon-world/src/synced_floats.rs": "0152f2752bafaf68769d56dbc88494a976496a680c6b113d6b48a446158ba072",
|
||||
"crates/horizon-world/src/synced_values.rs": "a1d4b53ae77d1899ba2b4ead67c9ec1e3c96615558e446f9d0760c1b4a520169",
|
||||
"crates/horizon-world/src/teleport_consume.rs": "d6a53bbb6ac4dbbd4c0591d0646017898a95beb8ef093dc5d81b9833963be6c3",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/use_remainder.rs": "f555335afeca7970888131a6da2f5a614a73253b631185d1ba804593a349535e",
|
||||
"crates/horizon-world/src/view_direction.rs": "e18120ae26dc5cf702b29fc4c8487088bab133c8ce5abce01226833fafb0d5a4",
|
||||
"crates/horizon-world/src/water_splash.rs": "e0461ae1b2e8c851cca6e3251a188334293292201d7f80dc9e7d60fd1815f4d1",
|
||||
"crates/horizon-world/src/world_movement.rs": "f8fe9e34f2395d2a04c839d1c8ba78e09ce493c26de6f6e4e237b9c19c061da5",
|
||||
"crates/horizon-world/src/world_ray.rs": "879bdbbe12f56deb705cc183933431489e840b71eade40c33391eed5949c2e61",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "74e4110fb19c4c4047192fd65c38015b8afc7f9fc50404d75380b5063808148c",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f"
|
||||
}
|
||||
}
|
||||
@@ -1,203 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"fixtures": 8338,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionContextOracle.java": "b9c34e7f7a7c14001e03373cbbd468a228c5301eb639460b4ce465d14e946113",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaFaceSupportOracle.java": "9ce939a435842867786fed648951bbe77f6ab843f6df09af15f3deb1948c4877",
|
||||
"tools/test_collision_context_parity.py": "75d6f01e072867d2bd286d2e518e123fcfe055a11ac1705ec99ecec3975cb8d2",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "cb1e87d449114a63edd904c0559d631e8fa9feeb27efd6539aacdcfeae178876",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-world/Cargo.toml": "977338bf3e654193685b015d383493b9f59ff6f5d6210bec212cef8ac4a50bed",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "a40c9d7a4e0a734c124dc856e31359fd4d8de3d1bfc79c86787afa8e8e05e480",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/collision.rs": "05313e0c1f3089524fe029f9aac3e439cd47f1c9584c8c7e154c9adcfa88c335",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/lib.rs": "f0997b21c8083de75f4f8883e8855e1d2d9f1876a2053a8a97b081deed5b0bcd",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/powder_snow_collision.rs": "7289946a21478d11abfd2bdcdddff3d7f98e25bf6a68564fed45c3cc01ac2a36",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "d35ded93fe6e95ea045cadcf4925e656dc34ef832b742179b9ad0cc49f902f31",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f",
|
||||
"crates/horizon-world/examples/collision_context_fixture.rs": "b7bf0f48f7dc0129c1ebe43c11cb4cad00194b501c2bcbb3220bc8779e695ba4"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-collision-context-parity/inputs.txt": "60b49e91a7a4999cfb8eb6ac3fbc6ec0a931d68cd53f9737959a2bd2b42be7a5"
|
||||
},
|
||||
"rust_output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"matched_output_lines": 225126
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"matched_output_lines": 225126
|
||||
}
|
||||
],
|
||||
"scope": "Actual CollisionContext factories and EntityCollisionContext/Empty/PositionCollisionContext queries on controlled player and marker snapshots. Checks entity identity, captured descending and placement flags, fluid collision flags, empty-stack AIR identity, height thresholds including f32 epsilon, null factories, callback arguments/order/failures and all five fluid type pairs. Entity lifecycle, inventory mutations after capture, experimental minecart contexts, contextual block shape dispatch and live movement integration remain pending."
|
||||
}
|
||||
@@ -1,205 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"fixtures": 58344,
|
||||
"block_states": 32,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionContextOracle.java": "b9c34e7f7a7c14001e03373cbbd468a228c5301eb639460b4ce465d14e946113",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaFaceSupportOracle.java": "9ce939a435842867786fed648951bbe77f6ab843f6df09af15f3deb1948c4877",
|
||||
"tools/test_collision_context_parity.py": "75d6f01e072867d2bd286d2e518e123fcfe055a11ac1705ec99ecec3975cb8d2",
|
||||
"tools/test_liquid_collision_parity.py": "dd77dfef7d3a66e81d92b66680d9626b6d69c54fc742bf5122674f05342fe788",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "cb1e87d449114a63edd904c0559d631e8fa9feeb27efd6539aacdcfeae178876",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-world/Cargo.toml": "977338bf3e654193685b015d383493b9f59ff6f5d6210bec212cef8ac4a50bed",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "a40c9d7a4e0a734c124dc856e31359fd4d8de3d1bfc79c86787afa8e8e05e480",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/collision.rs": "05313e0c1f3089524fe029f9aac3e439cd47f1c9584c8c7e154c9adcfa88c335",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/lib.rs": "f0997b21c8083de75f4f8883e8855e1d2d9f1876a2053a8a97b081deed5b0bcd",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/powder_snow_collision.rs": "7289946a21478d11abfd2bdcdddff3d7f98e25bf6a68564fed45c3cc01ac2a36",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "d35ded93fe6e95ea045cadcf4925e656dc34ef832b742179b9ad0cc49f902f31",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f",
|
||||
"crates/horizon-world/examples/collision_context_fixture.rs": "b7bf0f48f7dc0129c1ebe43c11cb4cad00194b501c2bcbb3220bc8779e695ba4"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-liquid-collision-parity/inputs.txt": "564e80e9a55a186cd70c21a1db14abf59849be90bc5493346e9e64ff9d3c9d8b"
|
||||
},
|
||||
"rust_output_sha256": "d845ce538e9ce157f6455b32e73e03e9d7df86ebc5c9ab80ebf94705500748ab",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "d845ce538e9ce157f6455b32e73e03e9d7df86ebc5c9ab80ebf94705500748ab",
|
||||
"matched_output_lines": 571179
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "d845ce538e9ce157f6455b32e73e03e9d7df86ebc5c9ab80ebf94705500748ab",
|
||||
"matched_output_lines": 571179
|
||||
}
|
||||
],
|
||||
"scope": "Native contextual LiquidBlock collision dispatch for all 32 water/lava states. Checks the always-fluid bypass, source-only selection, living-entity gating, supplied entity standing shapes, exact height boundaries, all 33 above-block fluid states, callback order and failure propagation, null/placement contexts and wrapping above-block coordinates. Full selected shape data and callback traces are compared. Entity-specific standing shape implementations, liquid simulation and live movement remain pending."
|
||||
}
|
||||
@@ -1,205 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"fixtures": 56448,
|
||||
"block_states": 32,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionContextOracle.java": "b9c34e7f7a7c14001e03373cbbd468a228c5301eb639460b4ce465d14e946113",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaFaceSupportOracle.java": "9ce939a435842867786fed648951bbe77f6ab843f6df09af15f3deb1948c4877",
|
||||
"tools/test_collision_context_parity.py": "75d6f01e072867d2bd286d2e518e123fcfe055a11ac1705ec99ecec3975cb8d2",
|
||||
"tools/test_scaffolding_collision_parity.py": "bab75e2cad68a3193035a87497eaa372466c405293cc547e39dbd7bd4450d69d",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "cb1e87d449114a63edd904c0559d631e8fa9feeb27efd6539aacdcfeae178876",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-world/Cargo.toml": "977338bf3e654193685b015d383493b9f59ff6f5d6210bec212cef8ac4a50bed",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "a40c9d7a4e0a734c124dc856e31359fd4d8de3d1bfc79c86787afa8e8e05e480",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/collision.rs": "05313e0c1f3089524fe029f9aac3e439cd47f1c9584c8c7e154c9adcfa88c335",
|
||||
"crates/horizon-world/src/collision_context.rs": "2176c7034e07f547510a8327cdad9d3b63f26e4754032b76b7d5fe13166c333c",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/lib.rs": "f0997b21c8083de75f4f8883e8855e1d2d9f1876a2053a8a97b081deed5b0bcd",
|
||||
"crates/horizon-world/src/liquid_collision.rs": "0f0a83b04e5a5bc9d98ed05fde4d6584ba69642e93522e726e4cfc325d6fcb1d",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/powder_snow_collision.rs": "7289946a21478d11abfd2bdcdddff3d7f98e25bf6a68564fed45c3cc01ac2a36",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "d35ded93fe6e95ea045cadcf4925e656dc34ef832b742179b9ad0cc49f902f31",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f",
|
||||
"crates/horizon-world/examples/collision_context_fixture.rs": "b7bf0f48f7dc0129c1ebe43c11cb4cad00194b501c2bcbb3220bc8779e695ba4"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-scaffolding-collision-parity/inputs.txt": "5945054e86700237a7b6de6b362a37a98bdc8afaa67004e8aaa92da1421b552c"
|
||||
},
|
||||
"rust_output_sha256": "33a33cd612c999ab21f1acbbdee522f2ec2b3f877d62f922c665715e3012e207",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "33a33cd612c999ab21f1acbbdee522f2ec2b3f877d62f922c665715e3012e207",
|
||||
"matched_output_lines": 524300
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "33a33cd612c999ab21f1acbbdee522f2ec2b3f877d62f922c665715e3012e207",
|
||||
"matched_output_lines": 524300
|
||||
}
|
||||
],
|
||||
"scope": "Actual CollisionContext.getCollisionShape dispatch and native scaffolding behavior for all 32 scaffolding states, nine context variants, descending flags, integer Y extremes, nonfinite positions and adjacent double values around the top/bottom float-epsilon thresholds. Full shape coordinates, extrema, box ordering and cube metadata match. A rejecting world proxy verifies selection performs no world reads. Scaffolding placement/update/falling behavior and live movement remain pending."
|
||||
}
|
||||
@@ -1,201 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"fixtures": 8338,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionContextOracle.java": "ee1525cc998c8b49fbc5318efffcec7b98cc8be3e4755d3bfc8458ac3c5e64c2",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaFaceSupportOracle.java": "9ce939a435842867786fed648951bbe77f6ab843f6df09af15f3deb1948c4877",
|
||||
"tools/test_collision_context_parity.py": "75d6f01e072867d2bd286d2e518e123fcfe055a11ac1705ec99ecec3975cb8d2",
|
||||
"tools/test_rust_parity.py": "29d3db08005873528894b45ca10dcd6278753650473b3eb574e53e06ede40ec6",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"Cargo.toml": "3f93319c1eb70dbd7ba25cd74ef343fbf35c52c7c4752f955605c58699cbff9d",
|
||||
"Cargo.lock": "cb1e87d449114a63edd904c0559d631e8fa9feeb27efd6539aacdcfeae178876",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-world/Cargo.toml": "977338bf3e654193685b015d383493b9f59ff6f5d6210bec212cef8ac4a50bed",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/biome/seed_hash.rs": "5afbb4921c750826b395a08bf06f382fc7f01b5759a93de02a2749c523e2a317",
|
||||
"crates/horizon-core/src/biome.rs": "908efa8cd4aa0a7adf1cb5e1a222e3dfb640eed5e9172e0fe7f0d1287afae7e8",
|
||||
"crates/horizon-core/src/carving/ellipsoid.rs": "09232a7588610e8a9176fd9c62d40afb1fb89f2ecab6d555536a1d847b142d86",
|
||||
"crates/horizon-core/src/carving.rs": "0aa3093caa0437868a8c0ed52a6c6e1993bd51c03583c670a2837e749eae5426",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/beardifier.rs": "bb1052e27dae4a01954ca78d7d5babafef85f3b2c704ccaf1920cb85a098cb50",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "ca0d77d3282e3746ddcbc92bee97dbf640b9a56214e6ac1537f51f9a5b63d6e7",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/face.rs": "f243bce81384040a95ce7984b02b5699206c596c537b2713097e86005b4d3a5c",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "e8d88a763de1525f77a30b99591641e8a8b80946263acbde035a9bcc356df960",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "4255e16837fde42a52ba118f60581d197c571bb530b60d635e506184ebf4db0b",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random/worldgen.rs": "9f07ff33bcc038d34e27aa5465753bb21df18f2975e43cae201f709bc186945a",
|
||||
"crates/horizon-core/src/random.rs": "ddb95d3a83e28ad605ff1f49f5df270cc543ca5ef1130e37d989dc74c8d861e6",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/text.rs": "e6553ddb5db5039e8dc4614b6a6dc9f35a26dc3d1673b68a04e72e7983b67abb",
|
||||
"crates/horizon-core/src/ticks/generation.rs": "be1237e790693f633a61714ddae68c6506a777588a8a3ab5efbe53a35774dbd2",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "01634630668172516b8b79d0907bad47f6e2c543a6d499c2fa4b201823b375cb",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_collision.rs": "a40c9d7a4e0a734c124dc856e31359fd4d8de3d1bfc79c86787afa8e8e05e480",
|
||||
"crates/horizon-world/src/block_entities.rs": "a9deae92e6e5a1fcf4f0476c33ea4d170ddad6fd4b3303e1bb66d933973d5e06",
|
||||
"crates/horizon-world/src/block_placement.rs": "524f4892d50bab77b7d89d19f7b048ffe746996f2ed7f376db2c6ab00ed75c24",
|
||||
"crates/horizon-world/src/block_properties.rs": "b0bd8a983336c48e488a20caa77dd5c39b1a74bbd14ebc03b3b64556a1c864fc",
|
||||
"crates/horizon-world/src/block_render.rs": "8df52ee11aef406a1571198a64048062a0ef6864e0058d9293a57f64b73c916a",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "28ce64375e09819a4f13da9cfbe37c08b5ad0daf01b289c1c360b4567e50e811",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/chunk_status.rs": "dbb8583cfa775203c544d24d69e03720385428f15a267a561356c21f5025e9c7",
|
||||
"crates/horizon-world/src/collision.rs": "05313e0c1f3089524fe029f9aac3e439cd47f1c9584c8c7e154c9adcfa88c335",
|
||||
"crates/horizon-world/src/collision_context.rs": "3053db15dff5776571a2c919634362fe43100978867f9e3ac46b2299563a6d4d",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "5996bc1c436fb6215d8fc3d0bb4de5dd9b966d842d432580d624195771697fb8",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/fluid.rs": "a0a1f34ba94d8b59dc975becee8952960764d67ae08cf2d6a8bcd40a614b15c4",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/lib.rs": "8f77b4a1c5e25ecf9336477c12e3141fafc0cd8884f3b198f2ec93b0eb47ae49",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry/json.rs": "7a683afcd1742c5307756927d7f0aa779c7d7992af87d8d371dd98108728e235",
|
||||
"crates/horizon-world/src/registry.rs": "f2e58b2b4d944ac8fc6226bd3352cefc3d2052d8473e02ccf7dc402b176df435",
|
||||
"crates/horizon-world/src/retrogen.rs": "6efd36a6293756688c1990a7965bd65609d7c5e2bf2a5f4f01d54932d2b9386b",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/worldgen/anchor.rs": "d156b8a0b147a274cdd143409b441f4f43edecde6e8ee14ef9cf0309f743143a",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/bamboo.rs": "d9b47113c99be34256e58308bc6f40072ff25c579d6bf995182aa862c0006102",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "3fe316b875aa32683759c337dc71f624910faf0812a2d6d83b8098d6d0bac7a0",
|
||||
"crates/horizon-world/src/worldgen/biome_chunk.rs": "8fdfe6ebe3ffeca97611fd5991a5bc6b2783ea1c62f4d8ef3b2dd53c04a5dc1d",
|
||||
"crates/horizon-world/src/worldgen/biome_predicate.rs": "bfc581bc40077cc74ffda43e990a55fe997adc04c7130f98e039c3305ca79aac",
|
||||
"crates/horizon-world/src/worldgen/biome_source/codec.rs": "2b9e4f5d679eb444cb73174f511e3b9f32e9eb138248ab12cffc6cfd76adf3a8",
|
||||
"crates/horizon-world/src/worldgen/biome_source/runtime.rs": "f0b02c1521178e4d0377c6ca62694604b6a773f1f234f070ff0cde4685911d45",
|
||||
"crates/horizon-world/src/worldgen/biome_source.rs": "e181e1736f3e0b75f7091a24c88de3fd116e01b98424d02382aea7a503d1eb54",
|
||||
"crates/horizon-world/src/worldgen/biome_temperature.rs": "cde4bbab5e260c4065b113376c423b8511ade93c5aa5fd976e245ee8a58b5ad1",
|
||||
"crates/horizon-world/src/worldgen/biome_weather.rs": "96b1f9494559ed31d06257b83d604d00cc069ccc8c7b68094117e034b4a71bd7",
|
||||
"crates/horizon-world/src/worldgen/block_blob.rs": "c608c57b3d77279646ecb89e50677dd8e452b0422ffd357ba755536c5589eb89",
|
||||
"crates/horizon-world/src/worldgen/block_column.rs": "f72c21a9066ee0aa68c2fb79fba436d05afb14c6ef5a2cb012f1ed35fc17cd22",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "36b4e46ee7f7f73bcb94d8bce8d99013e4b16234c9a03542eeb3186e88dd1c21",
|
||||
"crates/horizon-world/src/worldgen/block_pile.rs": "623e369b77e0526ed2756485a6c0bb09683cd28ad8876dea907360ca6665b39d",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/blue_ice.rs": "eedd77bdaff808330b864166d303378096daa5c7d235e925770b171c05109247",
|
||||
"crates/horizon-world/src/worldgen/bonus_chest.rs": "05d0f63fbc7412f13ba1fa37a7238114b8f70bfff318beb2dece590482d49cc0",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
"crates/horizon-world/src/worldgen/carver/generation.rs": "a4498d0d1457536de3922a08e9c40ccce8d2ef9cc263801c15a412327513c098",
|
||||
"crates/horizon-world/src/worldgen/carver.rs": "46b251e28225fe1250de38f49dec5dacda4e2c4ba1e556e21e6d1e14e2651fc3",
|
||||
"crates/horizon-world/src/worldgen/carving.rs": "4e77d4e5c4a0ca55ca3563b9bdf6f379342e0bdf9d019d60f7bc57ce4afb5fbd",
|
||||
"crates/horizon-world/src/worldgen/chorus_plant.rs": "29224c164ede919e280a65a68f155c873e2c8fd0aa7d7e244d8fa9e468760250",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/decoration.rs": "75a79b20b21e133816e729f16e758be6165d0db18a64bfbd5fd3618325a2adf3",
|
||||
"crates/horizon-world/src/worldgen/delta.rs": "c2bf49ddf3231d28c109e68871429bc13d76a7bebe14eb33e84aa856bdd66145",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/disk.rs": "6f8f9e059755af44c9bfa1b91eba54a7d13fad811dce31717c5502d7f6df33d7",
|
||||
"crates/horizon-world/src/worldgen/end_gateway.rs": "f53fde77d6a36a525cd15d890003b2c129d0689a4cbfa2cf443a0c2e3acae040",
|
||||
"crates/horizon-world/src/worldgen/end_podium.rs": "8f6d0d6d60ff0fde63de5781e867239db321f82cf12639f0537d410a3731ee1d",
|
||||
"crates/horizon-world/src/worldgen/feature.rs": "40500af71ee6628dfb27518262d99f08d0383ae6c7b9397452feef0c213eadd9",
|
||||
"crates/horizon-world/src/worldgen/feature_catalog.rs": "efc7b17b227e71622ef34108be9abd010f5675b68ea0409fcab82581d9aab88a",
|
||||
"crates/horizon-world/src/worldgen/feature_graph.rs": "da132fca9fdafb0d89a917d5f4b68c60b70fb33cadf948a107da0e35d83dcd91",
|
||||
"crates/horizon-world/src/worldgen/feature_region.rs": "df0ff142a461cafa9a3b42b949ad3376887f2be8d4ea5cc794a3ed2e977bb499",
|
||||
"crates/horizon-world/src/worldgen/feature_sort.rs": "3488a093dfe1321aaa29d8a30cfb115d8e666a81bf195514e87b170de626835c",
|
||||
"crates/horizon-world/src/worldgen/fluid_predicate.rs": "64197c9e63bebf1ce04bc280bfe980bb6c1b9aa887ca5cded904aeb0d9ae6c46",
|
||||
"crates/horizon-world/src/worldgen/height_provider.rs": "368d4dc119854742a045c4a717679c921456da681fc5f71aa9b37102d6f33b47",
|
||||
"crates/horizon-world/src/worldgen/material_condition/codec.rs": "09b909bc384472f76d163c8069ec6b507c7d5c6a028a36d5e0e3df20deff7b3b",
|
||||
"crates/horizon-world/src/worldgen/material_condition/density.rs": "df9d0761e978e5010663ae8b44f2d6c1ecb4907331e333bdb6a2b487c1e107de",
|
||||
"crates/horizon-world/src/worldgen/material_condition/library.rs": "a55534c5da97575a819af5a7dc0dbec9069993fa8b2619c6c9d5576946e683fa",
|
||||
"crates/horizon-world/src/worldgen/material_condition/noise.rs": "ffb59cc6be2275d7a5621bf7d768527e74a8326ed7ad78618746711540921675",
|
||||
"crates/horizon-world/src/worldgen/material_condition/rule.rs": "fed643352efbcb1f68f29b6241896617db889fc7c577a6247564e01922fec1fe",
|
||||
"crates/horizon-world/src/worldgen/material_condition.rs": "d638dcb8cbcb5da20b3cb29602b0ae6a86c4fdf9d8c0fb725de8ec5fc108717e",
|
||||
"crates/horizon-world/src/worldgen/material_extensions.rs": "ab806eb679d5116e1aebb64fca70e1499ae71f83c9507a8cb4c3201c2b1bf037",
|
||||
"crates/horizon-world/src/worldgen/material_stage.rs": "698cbc786eff13c246e2bc2ea062401918cd4265899fbc3d53abc87e45a8e7a1",
|
||||
"crates/horizon-world/src/worldgen/material_surface.rs": "5d37b90099df3d6da0845dab164e71469fb287019c2ee74bc6714f3b9d6d6d5b",
|
||||
"crates/horizon-world/src/worldgen/ore_feature.rs": "83b89fd3be691c5412c0215b6abefdcaa44119a05aa41217e061970eb7e12ebd",
|
||||
"crates/horizon-world/src/worldgen/placement/chain.rs": "9218399b4d3757f7bbc550d7729a7201f32a1c83a7030865e0c12aab8a80d116",
|
||||
"crates/horizon-world/src/worldgen/placement/context.rs": "a278304795136677ad4b4933ea50c972b9729a1c671c03fa309c193e224b1fd6",
|
||||
"crates/horizon-world/src/worldgen/placement/layer.rs": "a0f5ca776f33f9d4f72b8fdcd163426152e5e43cb4a7572fc1d4fc57bf965de1",
|
||||
"crates/horizon-world/src/worldgen/placement.rs": "b0397e5818fae84358546193a95f84bcb0b5bffafce909e6fcb3386179ee8023",
|
||||
"crates/horizon-world/src/worldgen/replace_blobs.rs": "bf3377d86d2570cd15288ba69dde64a2cf67c5bcbb9a31d0c23421964af74afa",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/rule_test.rs": "d1662ec492489ebaa4b87e20f9a8c809dcf3a223a151211bd65ec241a63692fc",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen/simple_block.rs": "9ba1a88d5db4925f8c37366557887f776c805f9a6444781615b5dbaff52e92a4",
|
||||
"crates/horizon-world/src/worldgen/snow_freeze.rs": "9040be3d5c7f8f0fd812d2df45e154bf8a9eeef038530b83fa4159d246eac35f",
|
||||
"crates/horizon-world/src/worldgen/speleothem.rs": "c71651c1c97818a8a85863e14414d6139ea3bdeb897fa422043bcc1499d99aae",
|
||||
"crates/horizon-world/src/worldgen/spike.rs": "eacf0d9d3d2bc3d4bcf62bc87555f90031138236a5bfef0eb5270204f7c2a4fc",
|
||||
"crates/horizon-world/src/worldgen/spring.rs": "830849e9b89fcdf09e9b06fbefdcdebe3c8c3f82804f60b8bd5de04ba303cb62",
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "c8687e15a4887a9200c8d365857d801efaa8f90e669eee3e600a1db4905119eb",
|
||||
"crates/horizon-world/src/worldgen/state_provider/noise.rs": "7ee369c2a032e5620cb9bdf9ee7adad1f70870fb0a27efb7b7c514d92f83491f",
|
||||
"crates/horizon-world/src/worldgen/state_provider/properties.rs": "9909139aaca1dc4f743957257fadaa9d423d21fa401fa9abc050505f79365139",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "be29ada818826a90afe01ab60916360fdfc4cbde5af15c9359cd56b1f1f7b156",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "d35ded93fe6e95ea045cadcf4925e656dc34ef832b742179b9ad0cc49f902f31",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "fd1f2e0afc15daf66f484ea40a1f2b7013650bda0941b23c64c81ee9f79cb673",
|
||||
"crates/horizon-world/src/worldgen/underwater_magma.rs": "7317e40af5ee5a9780f90ce358fa5d3e7f5b3d513b731df6ff97754d9c2a0154",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/vines.rs": "ee9b79b65012bd86a838241d2ef708680f7fe8eafc8aa656dae9cf2abf3c6418",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen/write_zone.rs": "8e17a179764d3f68c05882aef35f6810c28a0000f9a83e58bd6030660b76e64e",
|
||||
"crates/horizon-world/src/worldgen.rs": "e8e9f099ee1fcec8eedce31805d676d3f89c18e84f494a147ffcbfee23d3d54f",
|
||||
"crates/horizon-world/examples/collision_context_fixture.rs": "c4df3b01bf9d7e58076c848fbb41f93677ea4f0fdaab768a131d9e77c7bee5cd"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-collision-context-parity/inputs.txt": "60b49e91a7a4999cfb8eb6ac3fbc6ec0a931d68cd53f9737959a2bd2b42be7a5"
|
||||
},
|
||||
"rust_output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"matched_output_lines": 225126
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "7b23eb34c86c3db5a9e90bdd8ef772b79b2a06c8460542e032589f7962fd8f64",
|
||||
"matched_output_lines": 225126
|
||||
}
|
||||
],
|
||||
"scope": "Actual CollisionContext factories and EntityCollisionContext/Empty/PositionCollisionContext queries on controlled player and marker snapshots. Checks entity identity, captured descending and placement flags, fluid collision flags, empty-stack AIR identity, height thresholds including f32 epsilon, null factories, callback arguments/order/failures and all five fluid type pairs. Entity lifecycle, inventory mutations after capture, experimental minecart contexts, contextual block shape dispatch and live movement integration remain pending."
|
||||
}
|
||||
@@ -1,307 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"java": "openjdk 25.0.4.1 2026-08-18",
|
||||
"rustc": "rustc 1.99.0 (b940084d7 2026-09-28)",
|
||||
"manifest_sha1": "4fe1aa1ef8da1cb95c5bad1fb98890ca56dd8ca3",
|
||||
"commands": 16770,
|
||||
"command_counts": {
|
||||
"noise": 2111,
|
||||
"quantize": 4116,
|
||||
"index": 229,
|
||||
"climate_parameter": 25,
|
||||
"climate_point": 183,
|
||||
"noise_settings": 217,
|
||||
"settings_create": 182,
|
||||
"aquifer": 9136,
|
||||
"noise_aquifer": 379,
|
||||
"registry": 24,
|
||||
"router": 168
|
||||
},
|
||||
"noise_aquifer_injected_failures": {
|
||||
"0": 3,
|
||||
"1": 3,
|
||||
"2": 3,
|
||||
"3": 3,
|
||||
"4": 3,
|
||||
"5": 3
|
||||
},
|
||||
"noise_aquifer_outcomes": {
|
||||
"1 false": 5800,
|
||||
"0 false": 9995,
|
||||
"default_solid false": 12655,
|
||||
"2 false": 35365,
|
||||
"0 true": 1114,
|
||||
"2 true": 2021,
|
||||
"1 true": 43,
|
||||
"5 false": 443,
|
||||
"5 true": 5,
|
||||
"6 false": 295,
|
||||
"6 true": 8,
|
||||
"7 false": 49,
|
||||
"7 true": 1,
|
||||
"4 false": 51,
|
||||
"4 true": 4,
|
||||
"error false": 17,
|
||||
"3 false": 81,
|
||||
"error true": 2
|
||||
},
|
||||
"noise_registry_entries": 64,
|
||||
"density_registry_entries": 55,
|
||||
"noise_settings_entries": 7,
|
||||
"biome_parameter_entries": {
|
||||
"minecraft:nether": 5,
|
||||
"minecraft:overworld": 7594
|
||||
},
|
||||
"biome_tables_sha256": {
|
||||
"minecraft:nether": "09e477f851380a6e726ea85fee39cd1d41c7f160fe424f58cb3f0056b5c11218",
|
||||
"minecraft:overworld": "6bc45ce2eed04b6afecdfaf2cf89273e83dad071aeb45638e181d33fe5180f57"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-worldgen-parity/registries.json": "c6868228cc1002755dab31d947e953cc4be785a1b6ae82697755817a238b7de9",
|
||||
".local/rust-worldgen-parity/inputs.txt": "4afb482c8aa6e654ef47b9696f76c16fa862414248202c9bf748941bfc8d0877",
|
||||
".local/rust-worldgen-parity/biome-presets-client.json": "b03e2fbe85c191a22f333bc989bd2a73c66f0f9fbcd9ddb54774f17c247832e9",
|
||||
".local/rust-worldgen-parity/biome-presets-server.json": "b03e2fbe85c191a22f333bc989bd2a73c66f0f9fbcd9ddb54774f17c247832e9"
|
||||
},
|
||||
"noise_resources_sha256": {
|
||||
"data/minecraft/worldgen/noise/aquifer_barrier.json": "864a9d66a03b081adc8d4bf51a6d0cd5fdd94a0ebf1cecadec2aed9e549db7e4",
|
||||
"data/minecraft/worldgen/noise/aquifer_fluid_level_floodedness.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/aquifer_fluid_level_spread.json": "6afc3f09b6616f799d739b5b114c4436059dcc60308af55fe96a8594de815214",
|
||||
"data/minecraft/worldgen/noise/aquifer_lava.json": "96e1c4e411ffe302c5541cd2ee8462e1992f0290d623c560f353c39981737346",
|
||||
"data/minecraft/worldgen/noise/badlands_pillar.json": "79c0d0628db949d3b83bbca145da427bcdc3ff585b0ad736f7cb20e4c593c9a2",
|
||||
"data/minecraft/worldgen/noise/badlands_pillar_roof.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/badlands_surface.json": "79365a5c2017e93878d989a176520ba9cbdf8685cff8b3cb148730d949d98b09",
|
||||
"data/minecraft/worldgen/noise/calcite.json": "331259d84572c32b4b268d069e0132da9e6623ba614080e34b815472c7f4ee0c",
|
||||
"data/minecraft/worldgen/noise/cave_cheese.json": "24c6846b7fc1f7c652bf185797fe98b943146b6aaf8766d1bff2066c59b7ed24",
|
||||
"data/minecraft/worldgen/noise/cave_entrance.json": "f75146a7b1a033998edd3c77319f78243fe933bdcda2067b78658940f145cac6",
|
||||
"data/minecraft/worldgen/noise/cave_layer.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/clay_bands_offset.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/continentalness.json": "b7ce5ac29a2c7a7cfbfaa1e1eeca9ba8f4a52139e59318850fa2407242c69ba8",
|
||||
"data/minecraft/worldgen/noise/continentalness_large.json": "76834cff0227d52b19b5932142925f4fc639e713c2180e489f813701ca45f53e",
|
||||
"data/minecraft/worldgen/noise/erosion.json": "af8a7a0f16ff3e568ad646df9cbc28e04a31b16dad4f162705c0f7c747da6983",
|
||||
"data/minecraft/worldgen/noise/erosion_large.json": "d20c2c6ec805a366b105924b3cee29ac5b84cc06d636b539ae0047aac413b60a",
|
||||
"data/minecraft/worldgen/noise/gravel.json": "87d627634161e51a79512f3d3f42f990d2a185e35198eb5e2161939d866751e0",
|
||||
"data/minecraft/worldgen/noise/gravel_layer.json": "a4b45bdb6efef2509b053b970f6e84250d7b16d54f3906bc7fcf2665ada2a692",
|
||||
"data/minecraft/worldgen/noise/ice.json": "85d03cc06d6bc552dc399dcc90ca9749c2625ddf0049dc0f95684631a7c6e66e",
|
||||
"data/minecraft/worldgen/noise/iceberg_pillar.json": "98816326f84a21ce29421a9cba3ad85e5a26069312c9819aaf5662691e777fd5",
|
||||
"data/minecraft/worldgen/noise/iceberg_pillar_roof.json": "864a9d66a03b081adc8d4bf51a6d0cd5fdd94a0ebf1cecadec2aed9e549db7e4",
|
||||
"data/minecraft/worldgen/noise/iceberg_surface.json": "79365a5c2017e93878d989a176520ba9cbdf8685cff8b3cb148730d949d98b09",
|
||||
"data/minecraft/worldgen/noise/jagged.json": "d64347f4f9acb984075e3b4945b4699907ec6d893588388dd8f738f29f75f4d1",
|
||||
"data/minecraft/worldgen/noise/nether/temperature.json": "5a67fbc28b5c2578b4ca5f6abdd115c715ea2ef1be3e1a7a8eb1a0de4c3a8f7c",
|
||||
"data/minecraft/worldgen/noise/nether/vegetation.json": "5a67fbc28b5c2578b4ca5f6abdd115c715ea2ef1be3e1a7a8eb1a0de4c3a8f7c",
|
||||
"data/minecraft/worldgen/noise/nether_state_selector.json": "116c8bf1d676fd3a3dea3908e074a4f4b7ee55d3263e93abf5889b41bfc77f5b",
|
||||
"data/minecraft/worldgen/noise/nether_wart.json": "4518b186ffe4b65394a35276c8708037c6f3f73c7cb95ef6d41a5cd4b8d234f6",
|
||||
"data/minecraft/worldgen/noise/netherrack.json": "cef60938a0304eec78a6bdebd24b80a45c5d1bad894c6c012e3413ecc485a81a",
|
||||
"data/minecraft/worldgen/noise/noodle.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/noodle_ridge_a.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/noodle_ridge_b.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/noodle_thickness.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/offset.json": "45f51565587e2dc055271648037c0ec3466815e82f0d762e0198c16285fc8ae7",
|
||||
"data/minecraft/worldgen/noise/ore_gap.json": "6afc3f09b6616f799d739b5b114c4436059dcc60308af55fe96a8594de815214",
|
||||
"data/minecraft/worldgen/noise/ore_vein_a.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/ore_vein_b.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/ore_veininess.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/packed_ice.json": "0f51993727dcb0aa7c6cb9288e462443e711e9980c12927435126a3c45922786",
|
||||
"data/minecraft/worldgen/noise/patch.json": "83a0052d4220c67c5513bce689d681e3af3325c18fec612cdd4941fc738f4be0",
|
||||
"data/minecraft/worldgen/noise/pillar.json": "5a67fbc28b5c2578b4ca5f6abdd115c715ea2ef1be3e1a7a8eb1a0de4c3a8f7c",
|
||||
"data/minecraft/worldgen/noise/pillar_rareness.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/pillar_thickness.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/powder_snow.json": "98816326f84a21ce29421a9cba3ad85e5a26069312c9819aaf5662691e777fd5",
|
||||
"data/minecraft/worldgen/noise/ridge.json": "e05d077746b27d662a8c981807819df3e3bb1f1779d2245dd911c8193e03bbf8",
|
||||
"data/minecraft/worldgen/noise/small_patch.json": "9ecc836feb68b42d717217e028f2a72112179f1097f5bd156b1d3f1db637732e",
|
||||
"data/minecraft/worldgen/noise/soul_sand_layer.json": "a4b45bdb6efef2509b053b970f6e84250d7b16d54f3906bc7fcf2665ada2a692",
|
||||
"data/minecraft/worldgen/noise/spaghetti_2d.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/spaghetti_2d_elevation.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/spaghetti_2d_modulator.json": "d210211c0c76c53f15908f0b004a7e98e9d753ed996cd5468f2068f2e23932d1",
|
||||
"data/minecraft/worldgen/noise/spaghetti_2d_thickness.json": "d210211c0c76c53f15908f0b004a7e98e9d753ed996cd5468f2068f2e23932d1",
|
||||
"data/minecraft/worldgen/noise/spaghetti_3d_1.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/spaghetti_3d_2.json": "e755b926628bc49edf48a3bd3b1e1bc3e2895b774f5e2e81f1d4340782a9fc56",
|
||||
"data/minecraft/worldgen/noise/spaghetti_3d_rarity.json": "d210211c0c76c53f15908f0b004a7e98e9d753ed996cd5468f2068f2e23932d1",
|
||||
"data/minecraft/worldgen/noise/spaghetti_3d_thickness.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/spaghetti_roughness.json": "6afc3f09b6616f799d739b5b114c4436059dcc60308af55fe96a8594de815214",
|
||||
"data/minecraft/worldgen/noise/spaghetti_roughness_modulator.json": "7f137a0382721b8c7b3227e65dc32a3f6d9c3d5893458b03e892797ae31d85d7",
|
||||
"data/minecraft/worldgen/noise/sulfur_cave_gradient.json": "4900ffd885ce33b220a673ba0a248504c78f9f2cdfce824106a237d9ad18a6a7",
|
||||
"data/minecraft/worldgen/noise/surface.json": "79365a5c2017e93878d989a176520ba9cbdf8685cff8b3cb148730d949d98b09",
|
||||
"data/minecraft/worldgen/noise/surface_secondary.json": "ae23cb210db7b64b66b327dbbf1e7b2acb5c15cb6fe5df0455eb29910d9312eb",
|
||||
"data/minecraft/worldgen/noise/surface_swamp.json": "19e08e0d1dff257cf748d3cef79e939e8f25cc5e7226653c789008171f40695b",
|
||||
"data/minecraft/worldgen/noise/temperature.json": "9b1d5a87d575abf2891882ec3e1544b964cd15fedc84ad14d2abbd3b48ee2e4b",
|
||||
"data/minecraft/worldgen/noise/temperature_large.json": "4fe64b952b751eb7e45b4d1e274add508b504ee8bbc54cad417ce3a3b068d42e",
|
||||
"data/minecraft/worldgen/noise/vegetation.json": "ff4c10776eb2822f9f66dec4e9878a1bc797aca711480bf8430f851ff9af77dc",
|
||||
"data/minecraft/worldgen/noise/vegetation_large.json": "20f4a255e3f9452f4cf983b3efed71ead184d04f4070283f355ad4d97993d133"
|
||||
},
|
||||
"density_resources_sha256": {
|
||||
"data/minecraft/worldgen/density_function/end/base_3d_noise.json": "38db7d590abc3144e3357a79562d649d9880bc2c62ddc99480d93f4b6401c9a6",
|
||||
"data/minecraft/worldgen/density_function/end/islands.json": "6e4f02929580ecc34bfb059855b4e88d080dc7ca6c9984f216bdaa32e6b47700",
|
||||
"data/minecraft/worldgen/density_function/end/sloped_cheese.json": "5dee072865321e57e5e231e60a57bfcd1919454f93da33b3c1651b3712f2cfb2",
|
||||
"data/minecraft/worldgen/density_function/nether/base_3d_noise.json": "76cfd16e6fc2b1ce8bdb5f5ee277d431c167bc01afc2462bffff09eb5f0bd582",
|
||||
"data/minecraft/worldgen/density_function/overworld/base_3d_noise.json": "2791a1e6c5c730eac1bd35aaea9a7ab22855872fdb92349192d045330fd4614f",
|
||||
"data/minecraft/worldgen/density_function/overworld/caves/entrances.json": "63a1b8351e6dea212501c36f515f32e5a0e960228b5b5ccf0dc5b43855cbc1ab",
|
||||
"data/minecraft/worldgen/density_function/overworld/caves/noodle.json": "3bce7453470fd37e3bfc11dc8584494aab094f9fd820038dc5592cb47e825a69",
|
||||
"data/minecraft/worldgen/density_function/overworld/caves/pillars.json": "069d35fbdaed7d74521fc3e9355a94e778450b52a05f1efbd470ce3917b8a207",
|
||||
"data/minecraft/worldgen/density_function/overworld/caves/spaghetti_2d.json": "a99c68ac415596788c84e93e81c96c9786e31db21a81157459a13272cda4cb1f",
|
||||
"data/minecraft/worldgen/density_function/overworld/caves/spaghetti_2d_thickness_modulator.json": "4f987a0b9e8c0adb02df47034fa8b3cebfbfb2c8e607123614ef009a16bfaf6c",
|
||||
"data/minecraft/worldgen/density_function/overworld/caves/spaghetti_roughness_function.json": "03bd1b405e53aeb75b6a3440d97975c25b6f11c7fc07149471b86c80fbdb6ea4",
|
||||
"data/minecraft/worldgen/density_function/overworld/chunk_surface_level.json": "93a4e26ce4a1144c42040f52ca375f0dec94648c70ccdcc52db4a7f55ca526a5",
|
||||
"data/minecraft/worldgen/density_function/overworld/continents.json": "0f2ff487c0556391ae2d56b7cab6990d45766ade2503236fe2669f83a64517be",
|
||||
"data/minecraft/worldgen/density_function/overworld/depth.json": "9fcd7c8badcae4dc8e86303b0f72b05b5fd998d5bb7ac637729dd7e688688069",
|
||||
"data/minecraft/worldgen/density_function/overworld/erosion.json": "8173a3df61a3c5cfe352fb4a8fa64e99840836e42f2f4b0ddf8035f4d28f97a5",
|
||||
"data/minecraft/worldgen/density_function/overworld/factor.json": "f7cd1629f1a034504bd74fd38af5ea75a59257c565b5d919a6212e2e08778e30",
|
||||
"data/minecraft/worldgen/density_function/overworld/final_density.json": "a7e6b9f4618e27cb08ec37a294d8ca2a96747128a8d65d788dc418fda372cfb1",
|
||||
"data/minecraft/worldgen/density_function/overworld/jaggedness.json": "5e8acc680409ae0b56596be02954eb5b49a72069d004e5dcf9a92c5e106ccdb2",
|
||||
"data/minecraft/worldgen/density_function/overworld/offset.json": "da6b4e686d8eb16c19443a1126168b6f2719712c02b690b9d7384ce53badf995",
|
||||
"data/minecraft/worldgen/density_function/overworld/ore_vein/copper_density.json": "3b16d3a4499981f40bfd2b33786a99046bbca0c958f8f41692ffcbf44ae927d7",
|
||||
"data/minecraft/worldgen/density_function/overworld/ore_vein/gap.json": "89ccfa58c6b8ae3e3954d2ff2dbcc42a8a3ae24a7b07437dbfb85fdced55945a",
|
||||
"data/minecraft/worldgen/density_function/overworld/ore_vein/iron_density.json": "8de70a31c97e2a8299679770d53c8e366ace1aa8585e8d840375d25f85b72f8f",
|
||||
"data/minecraft/worldgen/density_function/overworld/ore_vein/mask.json": "7f92df0b19e7d29fef01abc7025fea2bdae7a57453e186785cde2fc7d08aa5bc",
|
||||
"data/minecraft/worldgen/density_function/overworld/ore_vein/richness.json": "3eb0183e295a5f9c54aab936b706b4b9d570ddf56c983ae89b91151e6e38fb9d",
|
||||
"data/minecraft/worldgen/density_function/overworld/ore_vein/toggle.json": "49b9db48740578911d0f8a2de40f02eced3ae742f03ebb05fee381af579cc9ed",
|
||||
"data/minecraft/worldgen/density_function/overworld/preliminary_surface_level.json": "4b6ce4c38ede0bec7485d4c029b9fcc7ceb5b26977c2c391a650fe8f3a3272b6",
|
||||
"data/minecraft/worldgen/density_function/overworld/ridges.json": "bf66a03bd8474d09dad4da23f4b7e76816b83e23df9f53d9c0b7c529c25ed9c1",
|
||||
"data/minecraft/worldgen/density_function/overworld/ridges_folded.json": "c8a4343b56273a476648a84fbbe07d8c473c1dd3769749260db6340ba5b37f9a",
|
||||
"data/minecraft/worldgen/density_function/overworld/sloped_cheese.json": "5e2e7756881a4f2acf2e8c8dc826a04681939ff1dc7508ce868e865e92a069d7",
|
||||
"data/minecraft/worldgen/density_function/overworld/temperature.json": "3c2f498cbf4636cd1fa7f555c14220a733c9d07fb5a1563f11c6144a27f31ce8",
|
||||
"data/minecraft/worldgen/density_function/overworld/vegetation.json": "c902ef045f63a568ef4c3d834716c67b5835f0994997ee45756837de111a806c",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/chunk_surface_level.json": "378eef8542e7ee3adffeaf746e0c776d1e00ff75cf030d9244292acd796739f6",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/depth.json": "35bbe18bc8eaec3bc8d81f1b3130018874d6cc8fa516c1e8380bdb8caf68c803",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/factor.json": "b42bc13d4d3c1cbeb7c6dfa2e16f4ef532ad0cff3a92d20bace01711fee6edd4",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/final_density.json": "cde96d8a5efa63cd20cea615dd1172e5e6f2626e9275d359fa2864e77083ac4f",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/jaggedness.json": "9f9a8993ce50cd2f0736ef98c3f8ff55db02d47b2a3e4f6aacae7c45a3c95bcc",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/offset.json": "0bb9ae6088ea4dbfdf79f6f2b2eed789c68e9a4e919a31bf912f91ddeda28e8b",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/preliminary_surface_level.json": "e8a82a9dfe183f4e624ea7a268efa2c54376caf99139596a26ad1dd27e887e5f",
|
||||
"data/minecraft/worldgen/density_function/overworld_amplified/sloped_cheese.json": "d8609154b76d0eefcfbc3746fa84f32cb04c5817a2fd1b80e72ee0ae9d88e96c",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/chunk_surface_level.json": "72f29b5fa9c01afa296d3679e6be662ee1b0bfdc1ba40cc2092ea74380be5c47",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/continents.json": "cfab013269cff17cfdf95497f87e70591378e7a39da44a241199fb64b304d411",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/depth.json": "9ec8ced85b58494f5400d4a5f6a27f1d4d44271d7a87adb8c5d842319eb5997f",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/erosion.json": "773d626db8e356d92a321270895ce085287d2befcb4504842371c38fd10102ac",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/factor.json": "0e7aa57eca20ebd6d2f089a9a4a34502efe902295812650f71b2ff087bb8b15f",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/final_density.json": "6f644644293c5489c499dc57663f2c12de60fc720bc4f1120efd343246eb159e",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/jaggedness.json": "30090703d4d9e493d40d60e06ee12f1310a608e20b73aeb8f86efa8e31b11453",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/offset.json": "75517306420732023e2dfeeb253439d8f0edcde9bb8b10ee7870d1bdb072ec22",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/preliminary_surface_level.json": "ece7767faac91980f5349ddfdc6040dc4ebbfce71a9f4d5842fa1b7bb169db3b",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/sloped_cheese.json": "347e160b5f951137b5f82a39c18572f8851c5a22484d11f31d1f90f5e5f6ac99",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/temperature.json": "051138f2c2f0ca4050b92f7320ddea461dca2038a49eb6f9931ecbf39129f4ef",
|
||||
"data/minecraft/worldgen/density_function/overworld_large_biomes/vegetation.json": "187b08814a3831cd0ff2f405c6683e7213a79dc7eeec44cd46136e350b0718b7",
|
||||
"data/minecraft/worldgen/density_function/shift_x.json": "0db6e5f781089feede9d8d2936d7564024752e34006b8bc9f2a138749f91e3e7",
|
||||
"data/minecraft/worldgen/density_function/shift_z.json": "0b561cdfafa9e82f431a8051576eb2ddc386d01459df571d7040021b0debb762",
|
||||
"data/minecraft/worldgen/density_function/y.json": "e7766e59792605f5c3d8e05ff6263db1dc6c91343c736b3ab7a58ddee9771282",
|
||||
"data/minecraft/worldgen/density_function/zero.json": "8aed642bf5118b9d3c859bd4be35ecac75b6e873cce34e7b6f554b06f75550d7"
|
||||
},
|
||||
"noise_settings_resources_sha256": {
|
||||
"data/minecraft/worldgen/noise_settings/amplified.json": "07fbadd0fd71e16e5497c575d3c86d997166087ccfaaba70a589a440b915024e",
|
||||
"data/minecraft/worldgen/noise_settings/caves.json": "29a378b845f7bff27a8badecba7ecf2bb22d0d4224b751ab6d91677c83bc6a6a",
|
||||
"data/minecraft/worldgen/noise_settings/end.json": "d0fd92ddd39081f1779ce5482041a837fb4a03841ea4d843556f17b557e31f4b",
|
||||
"data/minecraft/worldgen/noise_settings/floating_islands.json": "54923e55bfad4274bea513eccb42e1eb3625fb47ae00905537e0d3d68f82045d",
|
||||
"data/minecraft/worldgen/noise_settings/large_biomes.json": "dcb29a9e3fb630f2b76a52d759c6925b40e67cd13bc7f9ae93976f0633cc2c05",
|
||||
"data/minecraft/worldgen/noise_settings/nether.json": "e6d7856fe4523e4c3fa4dce756b6b1e211bfc263c5e417fb6294d032b8f53e9b",
|
||||
"data/minecraft/worldgen/noise_settings/overworld.json": "d093895d50edd79d53555b33b62d767115399764e32a4f9ae2687739f785d4b9"
|
||||
},
|
||||
"inputs_sha256": "4afb482c8aa6e654ef47b9696f76c16fa862414248202c9bf748941bfc8d0877",
|
||||
"rust_output_sha256": "c39201a8d64b2ec12dc08d8eddcb962d336885a749200a0a33c0fefd7910c193",
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaWorldgenOracle.java": "272b7e7c90dfc1344f6964033b61ee27ac867da7b375e406586b88de08d02b08",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBiomeExport.java": "f9a773713cf21b69bfa10018b76f27b953bda140ede9934f43d3aa3091101cf5",
|
||||
"tools/test_worldgen_parity.py": "699826ef3d3f1ac5419b91153539bf0857e931fd128a39fc47d8c8071cc03268",
|
||||
"tools/test_rust_parity.py": "7efa699a38c5820424f5fc8992ee601dbfe26d6482da9d2dab2c17c41fe8f12a",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"crates/horizon-core/src/bin/density_parity.rs": "e5b1dd33b7d01306c73cf072629b4fb186e9ab87b672a00108999d1a72263fd0",
|
||||
"crates/horizon-core/src/bin/float_log_parity.rs": "4a655fcf8822ee7668c4bd126bc84d0b118864a6fc7f5a6aeee667d8bf2590b1",
|
||||
"crates/horizon-core/src/bin/geometry_parity.rs": "27f6c09fe5018ac3de8e70e0f0bbf78f9abb14f5e4783bcaf46e8ca87b9c6f8a",
|
||||
"crates/horizon-core/src/bin/noise_parity.rs": "c135bfc708d853e7061e81487d2cfe10de64b2f65677d3b4837cbfe0b8341010",
|
||||
"crates/horizon-core/src/bin/parity.rs": "f35d928c66f958de39fac5e7e836a657eed95f83599e84899f7ea7a5802ba481",
|
||||
"crates/horizon-core/src/bin/tick_parity.rs": "a54c164fe4814034d369947a887f5273966f5a878ba849204b80d1c729526a8f",
|
||||
"crates/horizon-core/src/density/arithmetic.rs": "372faec96c923e2cf4aa6c66c1ac398e676853274557823850dbc8933dd15ab1",
|
||||
"crates/horizon-core/src/density/cache.rs": "38d0b6c9dd04ffef979fdad3f29cfebf98d331c8c9d430be5f39aa34f6c30975",
|
||||
"crates/horizon-core/src/density/end_islands.rs": "168b9384237bd2e41d0ae5a74e944da4dc74e493bdec31fb73184c9a49e3de55",
|
||||
"crates/horizon-core/src/density/graph/compiler.rs": "ac67deeb16f16d0859aa20e5a165811a29aca0b910037ee6bf5098211f3a6ede",
|
||||
"crates/horizon-core/src/density/graph/mod.rs": "b776e7da934cb03051a3053d56d461c71e9978e084922fe4194147aa580c07bf",
|
||||
"crates/horizon-core/src/density/graph/seeded.rs": "6bcdcaa3dffcfa9df673bbbea35120057a16ba3d2b506c52709c36cf8976b74a",
|
||||
"crates/horizon-core/src/density/graph/tests.rs": "6bfb8cbff462587dd147b0775ea01d370abbd97544b9bd596c792df1b5f7e634",
|
||||
"crates/horizon-core/src/density/interpolation.rs": "8c890f52b6467f38a94c654986a6a484b8e0b296ab98c398e60a6ce465b5b010",
|
||||
"crates/horizon-core/src/density/interval.rs": "b42629163baa6b599a233afe8596d1c370cd81d015cc6fc36a9663aa47b98424",
|
||||
"crates/horizon-core/src/density/mod.rs": "69f89566a78456c29caaa39dacedfe711ca59e49b78f64e68b0414fb6a73d8fc",
|
||||
"crates/horizon-core/src/density/power.rs": "d5b7270a128d4264268cd772109ad16d71a8ec3ff2d3b63b84cb985296d54a91",
|
||||
"crates/horizon-core/src/density/rounding.rs": "71840c5206ff8d218ac29bf6f66915d5212764ba270c675711a866ba5b55a7a6",
|
||||
"crates/horizon-core/src/density/selection.rs": "0dd26af2e85004ec5e053039ad11c384c17c56ace9ab45eb3f5cb3503c0b0330",
|
||||
"crates/horizon-core/src/density/slice.rs": "5d77605573c0deda47778f1f78f7fa3fbf1944d8f5efbcc65cf589181cadf80b",
|
||||
"crates/horizon-core/src/density/spline.rs": "6bb2e40f940fc6544d6fb09cb0b8cac722be03bc663dbdfb0f61faae207400bc",
|
||||
"crates/horizon-core/src/density/surface.rs": "159e0e69cda74f870e80ea64fe523c4397e64af4ccb861bb9fd07b2c3cb91b00",
|
||||
"crates/horizon-core/src/density/terrain_noise.rs": "8d0059d25eb5d248cb97a4c5a2e670d61528928ea151495c004f25adb723fe3e",
|
||||
"crates/horizon-core/src/density/tests.rs": "7817796ee40d0ae241bfbebec6bca190e0a8e7d5a1caa8ddf858c3eaa58b8858",
|
||||
"crates/horizon-core/src/density/world_fields.rs": "c1ce305cb8046b384d90c564cafb24af7365d580389637910f3d8b0cc18eb583",
|
||||
"crates/horizon-core/src/geometry/mod.rs": "dc92f73885dd0a7760743bf74f1ab8afa839d61cef2dfef890f8a23b67b4742e",
|
||||
"crates/horizon-core/src/geometry/movement.rs": "930e34abef6f6eeec1ee7a6c920b5ba01bfe37b90678884490f4be53241f6b96",
|
||||
"crates/horizon-core/src/geometry/shape/create.rs": "189812b91d5e0e3ad963afcd1a6e2831b31b8188df91a904ef27061e644806ad",
|
||||
"crates/horizon-core/src/geometry/shape/join.rs": "f1b51887b7bf9482557e3ffa99e136f2e5db07ceeb05fdb116adf45e87129075",
|
||||
"crates/horizon-core/src/geometry/shape.rs": "de22acd7430df3f69ef3632d427c57dffe57f3bdb78950bc75eac7e179ccf9df",
|
||||
"crates/horizon-core/src/geometry/sweep.rs": "abd6009c61555161ef2f18b431b2aa384b126c0871cae8b96a62358498a56a1d",
|
||||
"crates/horizon-core/src/geometry/traversal.rs": "77a3da570a0b85582b669cf4d841cba4b06327006dda26d4a26df4e8ce05bae4",
|
||||
"crates/horizon-core/src/geometry/trig.rs": "05cef9341a298a474221a0556a11ddf47650393ea7a97b4b2022a4da6628fe37",
|
||||
"crates/horizon-core/src/lib.rs": "3968e2a337a6a23226c485057c79359e66df16683f00fb4ebc9fabb03910a015",
|
||||
"crates/horizon-core/src/noise/mod.rs": "1dab5a713abf702402e69ace1bf9e476bba544b0ede5a61c3c3afc60af0a03f3",
|
||||
"crates/horizon-core/src/noise/normal.rs": "e9e7a46472a54a02c98c46da819842090567153b32fe0c84249009ef19af7aad",
|
||||
"crates/horizon-core/src/noise/perlin.rs": "e73815447432eab7542f67366cb3f1b368d164e33f6c9cdbd045ac8e4db0932a",
|
||||
"crates/horizon-core/src/noise/simplex.rs": "6c0dbc15b2b7510195dd28fceca01dcaac1847ccc4a84d299c351589c642fe7a",
|
||||
"crates/horizon-core/src/noise/stack.rs": "7f6ef0e7d920139ef1a6ad3ec5640f92765715f86dcc5ec29f1a149984f45fa3",
|
||||
"crates/horizon-core/src/noise/volume.rs": "3f05d2b1780acfdfee60037677d309937a5033b45ef428fc2d540942d4b56b43",
|
||||
"crates/horizon-core/src/position/iter.rs": "32d2d8e74821cc4e49e3354202d35d3120e4415bfdda9375a73f2137ef651129",
|
||||
"crates/horizon-core/src/position.rs": "e10101088e6902386b9b6d27773d44312f1ff72bebb19e57967a54945dde9dcd",
|
||||
"crates/horizon-core/src/random/hash.rs": "0f88a127a1ba2705d3d6c0ebd009324d6ba86ffa2d27edf2d2a84765e690e4a3",
|
||||
"crates/horizon-core/src/random/positional.rs": "35494745e5d4cf89e282c3ae0ee245e9f2640ddbbc03bc0055df742006a9c862",
|
||||
"crates/horizon-core/src/random.rs": "92135a94c79111cc810b4b071dbd76043ee47c2585fd431e7486ea381f19e5db",
|
||||
"crates/horizon-core/src/storage.rs": "f6c32201c64aefde06e57a2c767be46918df613548a322801546b133799cc33d",
|
||||
"crates/horizon-core/src/ticks/heap.rs": "bf28afab8af77c3d243aa96cd8a1fb8d934140a4dbd07dbfdbf4e7908bb4b845",
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "84852599dde78687d782f115a5b4b3ef6856c1f9cc92917255167e89c72ab01e",
|
||||
"crates/horizon-core/tests/density_world_fields.rs": "e193e45080817ef92547828a8d106482a376b9f788e39d4d3831f44e9d693148",
|
||||
"crates/horizon-world/examples/collision_fixture.rs": "ee754b5b42e0a51fe0a305b3f4bb56522ff3fffae564180aab8087b1b9e44afc",
|
||||
"crates/horizon-world/examples/tick_fixture.rs": "df267c307e0491a238b2d93edf0384514f38f8ee3252e315b989de56c6e17990",
|
||||
"crates/horizon-world/examples/world_fixture.rs": "a3c4c0f5131ae051b24662eff0ed11ed797c6fd5069fbfdf819f0e3fcdfb2cf4",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "5af97baa6681bc7aa04d981ec5c07c38cb27f28213abf34b1e83270828dd2980",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/collision.rs": "6c40ab491efd0332bd4e65a1a112f3598f9eb0ea2f32f9c8cc7e81278d003251",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/lib.rs": "a6376d79c90ebdee539f4b460a9dd18d75e0c049c24f028d00c9c45c85ebf668",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/region.rs": "72b642e87fed37ed17f54d4c30f96c3b64d26c14bc0589c31ef40ff1616188fc",
|
||||
"crates/horizon-world/src/registry.rs": "f46065659e60eb5e84ad69b9f3b5e94dc87ee19de16408817e26f23d16b6c7e7",
|
||||
"crates/horizon-world/src/tick_data.rs": "f8d04a69ea263f4168bce33f92e5b4ee2fe07d7caf50a1621c6b3ef6eb2479f3",
|
||||
"crates/horizon-world/src/worldgen/aquifer/config.rs": "fcd2cc3a520c1527c88f095a3b5d38487e7ebb1ccecc5f757f93d04a069add4f",
|
||||
"crates/horizon-world/src/worldgen/aquifer/noise_based.rs": "74daaa389b5c3dfdc99214dfff256a9e172f83548d2326cbc941d9637cc53fb7",
|
||||
"crates/horizon-world/src/worldgen/aquifer.rs": "cb4b66d87de3f9f79ae6ffe4badd6f0f44886cd42ad9de2771b8b56c4f1e28c7",
|
||||
"crates/horizon-world/src/worldgen/biome.rs": "b3b73091aa5ec989d916206567c5e4b0e997b007a5bb9c0ca5c53ada9d5fe81f",
|
||||
"crates/horizon-world/src/worldgen/climate/codec.rs": "d567adeb5d837816fca69102db51d790f71aec1b51c09298230d24612e400a14",
|
||||
"crates/horizon-world/src/worldgen/climate/index.rs": "c5ce61679a5f0e0f2f0af2a373424effa124d0cce8250609eff38b7034650756",
|
||||
"crates/horizon-world/src/worldgen/climate.rs": "1b9ad44407f40aee4c1cd5357a5c9c443c1b105728f01cf5c644072f99f8357e",
|
||||
"crates/horizon-world/src/worldgen/density.rs": "65a98c156a290a6b374ef670d28cd5dfbe0aa93171824d1bbd96422536273f84",
|
||||
"crates/horizon-world/src/worldgen/router.rs": "2cee7cf15a0d2ada12be6b39d83e78177fd3033922e4f4cce87a64073cec2847",
|
||||
"crates/horizon-world/src/worldgen/settings.rs": "a8fe87752e1982ef11cb67f8d80d8e3428b2c27db178044cb425ba803e689e59",
|
||||
"crates/horizon-world/src/worldgen.rs": "24f440a4be7546e79b4f462dd18aad9031e94dc87c5f1d32b78912650f7dd162",
|
||||
"crates/horizon-world/tests/biome_data.rs": "d4de462ccc3e6ad5760490330e0f0cd8a45734077708a2eca95ca06e65f779b0",
|
||||
"crates/horizon-world/tests/collision_data.rs": "45f3d33b36efe720e99ebf75b9f4fbddd777cebea4618bba245ca106b3443391",
|
||||
"crates/horizon-world/tests/tick_data.rs": "ab345209367db6963b987797992c4a06433bd2039e6021bd834f6305324c04d7",
|
||||
"crates/horizon-world/tests/world_io.rs": "4a42630c99ce89b27cc2be1a1b961ad880f62762ab661f9e92ef9bcf7f3e76e0",
|
||||
"crates/horizon-core/Cargo.toml": "e21b502c949da93cf67826592459b687a8cbf737ef92fee514e3ed2cc7cd27ad",
|
||||
"crates/horizon-world/Cargo.toml": "977338bf3e654193685b015d383493b9f59ff6f5d6210bec212cef8ac4a50bed",
|
||||
"Cargo.toml": "dc370d5fdde37238c3e4820046f11c3201020406a4edfa1308257c13edbdcda4",
|
||||
"Cargo.lock": "7307d0c887364db36d327685ecf0671b75305e31e5ba5fbdcdbb15eaf156d20e"
|
||||
},
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "c39201a8d64b2ec12dc08d8eddcb962d336885a749200a0a33c0fefd7910c193",
|
||||
"matched_output_lines": 922238,
|
||||
"biome_export_sha256": "b03e2fbe85c191a22f333bc989bd2a73c66f0f9fbcd9ddb54774f17c247832e9"
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "c39201a8d64b2ec12dc08d8eddcb962d336885a749200a0a33c0fefd7910c193",
|
||||
"matched_output_lines": 922238,
|
||||
"biome_export_sha256": "b03e2fbe85c191a22f333bc989bd2a73c66f0f9fbcd9ddb54774f17c247832e9"
|
||||
}
|
||||
],
|
||||
"scope": "Direct normal-noise JSON decoding using the actual pinned vanilla CODEC. Every bundled noise registry resource, explicit/default parameters, empty and full amplitude modifiers, normalization modes, inclusive field bounds with signed-zero comparator ordering, malformed types, null fields, duplicate and ignored keys, decimal/exponent integer truncation and wrapping, signed zero, seeded modern/legacy and Nether construction, octave metadata, range and normalization bits, scalar noise values and parent random state. JSON resource contents stay private. Strict JSON parsing; no claim for Gson's permissive non-JSON syntax. Bundled density registries are also decoded with actual vanilla registry-aware CODECs: named forward references, all bundled function kinds, declared range/axes, raw compilation errors, seeded optimized roots, cache allocation, scalar values, strided bulk values, repeated cache hits and surface-volume errors are compared using RandomState's actual compile context. All seven bundled noise-setting resources contribute their actual eight-field NoiseRouter.CODEC objects to RandomState. Router fields are compiled in declaration order with a shared compiler/context; cache allocation, raw/optimized scalar and repeated strided volume values, successful single-layer surface volumes and invalid surface-volume shapes are compared. Actual RandomState climate sampler binding and quart-to-block coordinate wrapping are checked at ordinary and extreme positions. Float-to-long climate quantization and long-to-float conversion include subnormals, signed zeros, NaNs, infinities, cast saturation and seeded random bit patterns. Actual vanilla Climate.Parameter and ParameterPoint JSON codecs compare scalar, two-element list and min/max object intervals, float endpoint bounds/ordering, required coordinate/offset fields, negative zero, precision-sensitive float parsing, malformed types and duplicate keys. Climate parameter distances, wrapping squared fitness, stable search-tree leaf order and nearest lookup are compared across every supported branching value 2..32, sizes around branch powers, the 65536-entry API bound, duplicates, warm ties, fresh lookups, brute-force lookup and extreme signed-long endpoints/targets. The Rust tree is immutable with per-worker search state instead of hidden thread locals; invalid or degenerate searches return typed errors. Inline arbitrary distance metrics and behavior outside the bounded API are not covered. Built-in Overworld and Nether quantized biome parameter tables are exported independently by each authenticated JAR and required to agree before Rust consumes them. The Rust multi-noise resolver and actual vanilla MultiNoiseBiomeSource compare biome identities through scalar climate queries and prepared bulk quart volumes, including forward/reverse/repeated query order, wrapped extreme origins and shared previous-result state. Biome holder keys in the reference are registration placeholders; no biome property or gameplay behavior is evaluated. The Rust loader reads a Horizon quantized table format, not the vanilla biome codec, and the preset builders themselves have not been ported. Source and private fixture mutations during validation invalidate the report. The two-field 26.3 NoiseSettings codec, create helper and LevelHeightAccessor clamping are also compared across bundled noise members, dimension/alignment bounds, zero/negative runtime heights, disjoint ranges, wrapped integer arithmetic and decimal/exponent integer conversion. Global fluid cutoff selection and the actual disabled Aquifer implementation are compared with original default block-state identities, extreme sea levels/coordinates, signed-zero/subnormal/nonfinite density and counted picker calls; developer fluid-disable behavior is outside the regular-mode corpus. The actual noise-based Aquifer.Config codec and runtime are compared across bundled aquifer settings, modern/legacy world-seeded aquifer factories, synthetic density roots, nondefault water/lava states, cave/void air, nonfinite sampler overrides, strided volume extents, wrapped coordinates, repeated and reversed queries, counted picker calls, sampler call order/values, injected failures and retry state, scheduling flags, populated location/status caches and sorted surface-cache entries. Oversized or wrapped-invalid grid allocations and developer fluid-disable behavior are outside the bounded regular-mode API. Terrain filling is not yet validated. Router, vertical noise and optional aquifer members are decoded from each noise-setting resource; complete NoiseGeneratorSettings, material rules, nonempty world fields, biome registry/codecs and complete chunk biome assignment, generated chunks, gameplay and rendering remain pending. Inline noise holders and general codec behavior beyond the covered fixtures remain pending."
|
||||
}
|
||||
@@ -1,342 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"measurement": "Shader world activation/startup probes; not FPS or physical M2 measurements",
|
||||
"release": "0.20.0",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"local_source_commit": "99d6aae5e06a3fc9a9a69c433f48f32729776861",
|
||||
"linux_opengl": {
|
||||
"schema": 1,
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"results": [
|
||||
{
|
||||
"observed_mode": "world",
|
||||
"title_screen_observed": false,
|
||||
"world_loaded": true,
|
||||
"ready_client_ticks": 40,
|
||||
"window_active": true,
|
||||
"overlay_present": false,
|
||||
"overlay_wait_ticks": 79,
|
||||
"heap_max_bytes": 6442450944,
|
||||
"iris_capture_status": "available",
|
||||
"iris_shaders_enabled": true,
|
||||
"shader_required": true,
|
||||
"iris_expected_pack_matches": true,
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 800,
|
||||
"sampled_pixels": 4288,
|
||||
"distinct_sampled_rgb": 3777,
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.5 (Core Profile) Mesa 26.0.8-1ubuntu0.3",
|
||||
"private_png_sha256": "1a221bb9bedb21770f08ffcde593539c02d4e7cad48516bf7fad4215d7b14cde",
|
||||
"profile": "cinematic",
|
||||
"preferred_backend": "opengl",
|
||||
"launcher_exit_code": 0,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Short scene startup and nonuniform framebuffer readback only.",
|
||||
"World mode uses the ordinary limited demo; world files remain private.",
|
||||
"No exhaustive gameplay, visual-correctness, FPS or M2 Pro performance claim.",
|
||||
"Vulkan preference can fall back; inspect the observed backend.",
|
||||
"PNG images, assets and full logs remain in the private runtime directory."
|
||||
]
|
||||
},
|
||||
"linux_vulkan_failure": {
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.awt.AWTError",
|
||||
"java.lang.NullPointerException",
|
||||
"java.lang.RuntimeException",
|
||||
"net.minecraft.ReportedException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.4.335 llvmpipe Mesa 26.0.8-1ubuntu0.3 (LLVM 21.1.8)"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": false,
|
||||
"readback_callback_received": false,
|
||||
"readback_inspections": [],
|
||||
"probe_failure_categories": [],
|
||||
"vulkan_error_codes": [],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.renderer.Lightmap.handler$zzk000$distanthorizons$render",
|
||||
"net.minecraft.client.renderer.Lightmap.render",
|
||||
"net.minecraft.client.renderer.GameRenderer.render"
|
||||
],
|
||||
"profile": "cinematic",
|
||||
"preferred_backend": "vulkan"
|
||||
},
|
||||
"linux_vulkan_without_dh": {
|
||||
"private_dh_jar_removed": true,
|
||||
"new_demo_world": true,
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"original_mod_sha256": "e651ef49bc97486e8dacfd4b640465c442525cd645e2dba71ddea9fb64347dd8",
|
||||
"failure": {
|
||||
"exit_code": 1,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.AssertionError",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "llvmpipe (LLVM 21.1.8, 256 bits)",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.4.335 llvmpipe Mesa 26.0.8-1ubuntu0.3 (LLVM 21.1.8)"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": true,
|
||||
"readback_callback_received": true,
|
||||
"readback_inspections": [
|
||||
{
|
||||
"framebuffer_width": 1280,
|
||||
"framebuffer_height": 800,
|
||||
"sampled_pixels": 4288,
|
||||
"distinct_sampled_rgb": 1804
|
||||
}
|
||||
],
|
||||
"probe_failure_categories": [
|
||||
"shader_inactive"
|
||||
],
|
||||
"vulkan_error_codes": [],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.Screenshot.lambda$takeScreenshot$1",
|
||||
"com.mojang.renderpearl.backend.vulkan.DestructionQueue.rotate",
|
||||
"com.mojang.renderpearl.backend.vulkan.VulkanCommandEncoder.submit",
|
||||
"com.mojang.renderpearl.frontend.FrontendCommandEncoder.submit"
|
||||
]
|
||||
}
|
||||
},
|
||||
"mac_source_commit": "857c5a4aa553f83799631ad48340e43a13c78549",
|
||||
"mac_run_url": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37198566508",
|
||||
"mac_cases": [
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"cinematic",
|
||||
"--backend",
|
||||
"opengl",
|
||||
"--world",
|
||||
"--shaders"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"fixture": "client-graphics",
|
||||
"profile": "cinematic",
|
||||
"completed": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"cinematic",
|
||||
"--backend",
|
||||
"vulkan",
|
||||
"--world",
|
||||
"--shaders"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"fixture": "client-graphics",
|
||||
"profile": "cinematic",
|
||||
"completed": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Linux llvmpipe software renderer; no physical M2 shader performance or native GPU test.",
|
||||
"OpenGL requires actual pinned shader activation and matching runtime pack identity, with nonuniform readback, focused gameplay, saved data and clean exit.",
|
||||
"Linux Vulkan plus DH fails before readback; selected stack locations alone do not establish the root cause.",
|
||||
"Removing DH privately produces an ordinary Vulkan world readback but Iris reports shaders inactive; the required-activation assertion rejects it.",
|
||||
"Both hosted Mac cases hit the 240-second private fixture timeout; earlier diagnostics do not retain stages or waiting state. They do not establish shader compatibility or incompatibility.",
|
||||
"Full logs, raw PNGs, world data, assets and shader ZIPs remain private.",
|
||||
"Diagnostic repeat: OpenGL loads a world but retains a screen before readback; Vulkan initializes its device but records no waiting-state snapshot. Both time out; screen identity and root causes are unknown."
|
||||
],
|
||||
"mac_diagnostic_repeat": {
|
||||
"source_commit": "ed416c91cf980f136b7431314bccea7f266fe049",
|
||||
"run_url": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37199837867",
|
||||
"cases": [
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"cinematic",
|
||||
"--backend",
|
||||
"opengl",
|
||||
"--world",
|
||||
"--shaders"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": -15,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.IllegalStateException",
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "OpenGL",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Software Renderer",
|
||||
"graphics_backend": "OpenGL",
|
||||
"graphics_driver": "4.1 APPLE-23.1.1"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": false,
|
||||
"readback_callback_received": false,
|
||||
"readback_inspections": [],
|
||||
"last_waiting_state": {
|
||||
"world_loaded": true,
|
||||
"player_present": true,
|
||||
"overlay_present": false,
|
||||
"screen_present": true,
|
||||
"window_active": true,
|
||||
"paused": false,
|
||||
"ready_client_ticks": 0
|
||||
},
|
||||
"probe_failure_categories": [],
|
||||
"vulkan_error_codes": [],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [
|
||||
"net.minecraft.client.renderer.LevelRenderer.mixinextras$bridge$renderGroup$135",
|
||||
"net.minecraft.client.renderer.LevelRenderer.wrapOperation$bio000$iris$beginTerrainLayer",
|
||||
"net.minecraft.client.renderer.LevelRenderer.executeSolid",
|
||||
"net.minecraft.client.renderer.LevelRenderer.lambda$addMainPass$0",
|
||||
"com.mojang.blaze3d.framegraph.FrameGraphBuilder.execute",
|
||||
"net.minecraft.client.renderer.LevelRenderer.render",
|
||||
"net.minecraft.client.renderer.GameRenderer.mixinextras$bridge$render$86",
|
||||
"net.minecraft.client.renderer.GameRenderer.wrapOperation$bjf000$iris$renderLevel"
|
||||
],
|
||||
"fixture": "client-graphics",
|
||||
"profile": "cinematic",
|
||||
"completed": false,
|
||||
"timed_out": true,
|
||||
"timeout_seconds": 240
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"case": [
|
||||
"--profile",
|
||||
"cinematic",
|
||||
"--backend",
|
||||
"vulkan",
|
||||
"--world",
|
||||
"--shaders"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"failure": [
|
||||
{
|
||||
"exit_code": -15,
|
||||
"result_count": 0,
|
||||
"java_exception_types": [
|
||||
"java.lang.RuntimeException"
|
||||
],
|
||||
"expected_demo_authentication_errors_observed": true,
|
||||
"backend_attempts": [
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "load_library",
|
||||
"result": "success"
|
||||
},
|
||||
{
|
||||
"backend": "Vulkan",
|
||||
"operation": "create_device",
|
||||
"result": "success"
|
||||
}
|
||||
],
|
||||
"created_devices": [
|
||||
{
|
||||
"gpu": "Apple Paravirtual device",
|
||||
"graphics_backend": "Vulkan",
|
||||
"graphics_driver": "1.2.350 MoltenVK 1.4.2"
|
||||
}
|
||||
],
|
||||
"client_initializer_reached": true,
|
||||
"readback_requested": false,
|
||||
"readback_callback_received": false,
|
||||
"readback_inspections": [],
|
||||
"last_waiting_state": null,
|
||||
"probe_failure_categories": [],
|
||||
"vulkan_error_codes": [],
|
||||
"fatal_jvm_error": false,
|
||||
"observed_graphics_stack_methods": [],
|
||||
"fixture": "client-graphics",
|
||||
"profile": "cinematic",
|
||||
"completed": false,
|
||||
"timed_out": true,
|
||||
"timeout_seconds": 240
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,160 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"purpose": "Functional software identity capture, not a performance comparison",
|
||||
"minecraft": "26.3",
|
||||
"platform": "Linux x86_64 software OpenGL",
|
||||
"source_commit": "110c75d712ed4827ae5e72c613f834bcc4e97da2",
|
||||
"original_mod_sha256": "98f8db7ca8962a71625eef835f57d25c8afb802f2cf1b7c4c832fc070757e011",
|
||||
"results": [
|
||||
{
|
||||
"kind": "frames",
|
||||
"elapsed_seconds": 15.335704769,
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_vm_name": "OpenJDK 64-Bit Server VM",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"mods": [
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+38c7a2d55d",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+26.3",
|
||||
"[email protected]+74ed1ea502",
|
||||
"[email protected]+0ae6f91102",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+4be74c3f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+6b5b47fd5d",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+427eab975d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+47f74c9802",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+cf6bc2db5d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+ffef5f6702",
|
||||
"[email protected]+4068fd645d",
|
||||
"[email protected]+ed66f0a35d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+79385d0b5d",
|
||||
"[email protected]+b9d63e335d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+901a437c02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+4fc5413f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+48607d035d",
|
||||
"[email protected]+74ed1ea502",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+52268a0e02",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+26.3",
|
||||
"java@25",
|
||||
"[email protected]+mc26.3",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+mc26.3",
|
||||
"[email protected]",
|
||||
"[email protected]"
|
||||
],
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"samples": 38,
|
||||
"csv_count_matched": true
|
||||
},
|
||||
{
|
||||
"kind": "ticks",
|
||||
"elapsed_seconds": 15.009787535,
|
||||
"java_vendor": "Ubuntu",
|
||||
"java_vm_name": "OpenJDK 64-Bit Server VM",
|
||||
"java_runtime_version": "25.0.4.1+1-1-26.04.4-Ubuntu",
|
||||
"mods": [
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+38c7a2d55d",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+26.3",
|
||||
"[email protected]+74ed1ea502",
|
||||
"[email protected]+0ae6f91102",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+4be74c3f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+74ed1ea55d",
|
||||
"[email protected]+6b5b47fd5d",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+427eab975d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+47f74c9802",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+cf6bc2db5d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+ffef5f6702",
|
||||
"[email protected]+4068fd645d",
|
||||
"[email protected]+ed66f0a35d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+fcdff87f5d",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+79385d0b5d",
|
||||
"[email protected]+b9d63e335d",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+901a437c02",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+4fc5413f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+48607d035d",
|
||||
"[email protected]+74ed1ea502",
|
||||
"[email protected]+3434d6d902",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+fcdff87f02",
|
||||
"[email protected]+52268a0e02",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+26.3",
|
||||
"java@25",
|
||||
"[email protected]+mc26.3",
|
||||
"[email protected]",
|
||||
"[email protected]",
|
||||
"[email protected]+mc26.3",
|
||||
"[email protected]",
|
||||
"[email protected]"
|
||||
],
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"samples": 301,
|
||||
"csv_count_matched": true
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual frame and integrated-server tick reports contain identical Java identity and 59 loaded mod versions, captured before each recording starts.",
|
||||
"The short 15-second recording validates metadata and file output only; it is not a valid performance comparison or a Mac result.",
|
||||
"The actual old/new report pair loads in the offline viewer with matching CSV timelines, an explicit Horizon mod-version difference and unknown legacy Java implementation warnings.",
|
||||
"Synthetic changed versions, reordered mod lists, missing legacy identity, escaped mod names and expanded lists at 390px pass offline checks."
|
||||
]
|
||||
}
|
||||
@@ -1,274 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"original_mod_sha256": "7e0ffb16fbda2117ce3cfe9fc6249ff3c06c63be764207963ba331871ed6fabd",
|
||||
"groups": [
|
||||
{
|
||||
"label": "initial",
|
||||
"initial_warmup_checks": 1000000,
|
||||
"per_observation_warmup_checks": 0,
|
||||
"observations": 1,
|
||||
"compiler_diagnostics": false,
|
||||
"compilation_waits": false,
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 2000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 120024838,
|
||||
"wall_ns": 161908976
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 2000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 225290712,
|
||||
"wall_ns": 296105327
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "compiler-diagnostic",
|
||||
"initial_warmup_checks": 1000000,
|
||||
"per_observation_warmup_checks": 4000000,
|
||||
"observations": 3,
|
||||
"compiler_diagnostics": true,
|
||||
"compilation_waits": false,
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 338028221,
|
||||
"wall_ns": 414836219,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 116948835,
|
||||
"wall_ns": 177862175,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 118223124,
|
||||
"wall_ns": 134092410,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 102856262,
|
||||
"wall_ns": 102881634,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 277210100,
|
||||
"wall_ns": 346114782,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 98829230,
|
||||
"wall_ns": 109874899,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 99766363,
|
||||
"wall_ns": 120221997,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 78614507,
|
||||
"wall_ns": 116017886,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "normal-early",
|
||||
"initial_warmup_checks": 1000000,
|
||||
"per_observation_warmup_checks": 4000000,
|
||||
"observations": 3,
|
||||
"compiler_diagnostics": false,
|
||||
"compilation_waits": false,
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 250273130,
|
||||
"wall_ns": 250904773,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 96863757,
|
||||
"wall_ns": 97499670,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 76736599,
|
||||
"wall_ns": 76731887,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 76672774,
|
||||
"wall_ns": 76673216,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 260828228,
|
||||
"wall_ns": 292619474,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 100375163,
|
||||
"wall_ns": 120697389,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 97211084,
|
||||
"wall_ns": 108680199,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 63241981,
|
||||
"wall_ns": 63241886,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "normal-long-warmup",
|
||||
"initial_warmup_checks": 10000000,
|
||||
"per_observation_warmup_checks": 4000000,
|
||||
"observations": 3,
|
||||
"compiler_diagnostics": false,
|
||||
"compilation_waits": true,
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 331478729,
|
||||
"wall_ns": 331596880,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 111403835,
|
||||
"wall_ns": 111532068,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 108573471,
|
||||
"wall_ns": 108571667,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 111501423,
|
||||
"wall_ns": 111493145,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 260347437,
|
||||
"wall_ns": 260362090,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 74253874,
|
||||
"wall_ns": 74284701,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 96313457,
|
||||
"wall_ns": 96305444,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 89780106,
|
||||
"wall_ns": 89771945,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Exploratory fixed-order single forks. Earlier fixture protocols were not committed; warmup and diagnostics differ between groups.",
|
||||
"Current production arithmetic is the same binary in all groups. Only the final protocol is reproducible from source commit c6ec0b5.",
|
||||
"Retains favorable and unfavorable observations; do not combine different protocols into a statistical speedup estimate.",
|
||||
"Not game FPS/RAM, Mac GPU, retained-memory or cross-hardware performance evidence."
|
||||
]
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "7e0ffb16fbda2117ce3cfe9fc6249ff3c06c63be764207963ba331871ed6fabd",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 164904484,
|
||||
"wall_ns": 164901169,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 59683623,
|
||||
"wall_ns": 59686627,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 52733305,
|
||||
"wall_ns": 52727455,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 52487556,
|
||||
"wall_ns": 52487087,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 151660192,
|
||||
"wall_ns": 151647654,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 56070222,
|
||||
"wall_ns": 56068070,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 47850398,
|
||||
"wall_ns": 47843978,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 47739572,
|
||||
"wall_ns": 47735606,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual public full-data lookup inside Fabric with generated numeric column data.",
|
||||
"Thirty owners span positive/negative origins and six detail levels; output digests and source fingerprints match.",
|
||||
"The actual redirect method is checked in each mode; source column data remains unchanged.",
|
||||
"Three sequential warmed caller-loop observations are not independent forks; JIT compilation can vary.",
|
||||
"Not whole-game FPS/RAM, rendered-pixel equivalence or a Mac GPU benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "c6ec0b5e14d2ea3546fb8858be4a655634a93387",
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37171062262",
|
||||
"job": "portable-mod (ubuntu-latest)",
|
||||
"artifact": "horizon-ubuntu-latest",
|
||||
"command": "python tools/test_terrain_position.py"
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "7e0ffb16fbda2117ce3cfe9fc6249ff3c06c63be764207963ba331871ed6fabd",
|
||||
"platform": "Linux x86_64",
|
||||
"graphics": "llvmpipe software OpenGL",
|
||||
"settings": {
|
||||
"heap_bytes": 3221225472,
|
||||
"gc": "G1",
|
||||
"compact_headers": true,
|
||||
"render_distance": 12,
|
||||
"simulation_distance": 12,
|
||||
"lod_radius_chunks": 128,
|
||||
"lod_quality": "MEDIUM/MEDIUM/BLOCK",
|
||||
"terrain_workers": 2,
|
||||
"runtime_ratio": 0.5,
|
||||
"world_difficulty": "PEACEFUL"
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"profile": "m2-balanced",
|
||||
"position_enabled": false,
|
||||
"elapsed_seconds": 120.557552272,
|
||||
"frame_samples": 221,
|
||||
"tick_samples": 2401,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"frame_stats": {
|
||||
"count": 221,
|
||||
"meanMs": 539.3068458597285,
|
||||
"p50Ms": 512.140615,
|
||||
"p95Ms": 731.515105,
|
||||
"p99Ms": 811.750394,
|
||||
"maxMs": 995.181191,
|
||||
"meanRate": 1.8542319788391781,
|
||||
"lowOnePercentRate": 1.1163478251626853,
|
||||
"over16Ms": 221,
|
||||
"over33Ms": 221,
|
||||
"over50Ms": 221,
|
||||
"over100Ms": 221
|
||||
},
|
||||
"tick_stats": {
|
||||
"count": 2401,
|
||||
"meanMs": 9.190547997917534,
|
||||
"p50Ms": 8.84372,
|
||||
"p95Ms": 16.100883,
|
||||
"p99Ms": 21.297713,
|
||||
"maxMs": 50.24744,
|
||||
"meanRate": 108.8074400162632,
|
||||
"lowOnePercentRate": 34.084420672139515,
|
||||
"over16Ms": 99,
|
||||
"over33Ms": 6,
|
||||
"over50Ms": 1,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_rss_peak_sampled_bytes": 2961256448,
|
||||
"launcher_exit_code": 0
|
||||
},
|
||||
{
|
||||
"profile": "terrain-position",
|
||||
"position_enabled": true,
|
||||
"elapsed_seconds": 120.41545128,
|
||||
"frame_samples": 219,
|
||||
"tick_samples": 2401,
|
||||
"excluded_frames": 0,
|
||||
"dropped_samples": 0,
|
||||
"visual_settings_changed": [],
|
||||
"frame_stats": {
|
||||
"count": 219,
|
||||
"meanMs": 543.8858950547946,
|
||||
"p50Ms": 511.34048,
|
||||
"p95Ms": 780.127415,
|
||||
"p99Ms": 989.910492,
|
||||
"maxMs": 1062.14914,
|
||||
"meanRate": 1.8386209480561242,
|
||||
"lowOnePercentRate": 0.9801615082035254,
|
||||
"over16Ms": 219,
|
||||
"over33Ms": 219,
|
||||
"over50Ms": 219,
|
||||
"over100Ms": 219
|
||||
},
|
||||
"tick_stats": {
|
||||
"count": 2401,
|
||||
"meanMs": 9.594661623490213,
|
||||
"p50Ms": 9.152511,
|
||||
"p95Ms": 17.227297,
|
||||
"p99Ms": 25.78339,
|
||||
"maxMs": 56.681493,
|
||||
"meanRate": 104.22462398796237,
|
||||
"lowOnePercentRate": 30.354925598948153,
|
||||
"over16Ms": 143,
|
||||
"over33Ms": 9,
|
||||
"over50Ms": 1,
|
||||
"over100Ms": 0
|
||||
},
|
||||
"process_rss_peak_sampled_bytes": 2989678592,
|
||||
"launcher_exit_code": 0
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "c6ec0b5e14d2ea3546fb8858be4a655634a93387",
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37171062262",
|
||||
"runtime_mod_matches_linux_ci": true,
|
||||
"initial_player_snapshot_sha256": "b4d11dbd6443625415a1e32aa242d0e2d09cd77ddb1becfde5d35cb6ab8d278a",
|
||||
"initial_level_snapshot_sha256": "86a3c75ea993e50c4428da4dbadc5856688a9367f035c41b8bb49863a9aeb644",
|
||||
"first_saved_player_position": [
|
||||
-56.5,
|
||||
69.0,
|
||||
55.5
|
||||
],
|
||||
"first_saved_player_rotation": [
|
||||
141.5,
|
||||
16.950002670288086
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"Fixed-order candidate then control single pair, separate copies of the same private world; approximately 307 seconds from demo-popup dismissal to capture for each. Initial player camera and both first saved camera positions matched.",
|
||||
"Stationary view includes LOD terrain; both recordings have zero paused/unfocused exclusions and matching captured settings apart from the isolated hook. No statistical speed estimate is established.",
|
||||
"Preceding 60-second JFR captures ran separately before the frame recording; JIT/cache/profiling effects are not eliminated.",
|
||||
"Candidate saved, reloaded, saved again and quit; control saved and quit. Both foreground launchers returned 0, with no crash reports or remaining game processes.",
|
||||
"Scene differs from earlier release captures, so comparisons across releases are not valid. Private test-world camera preparation is not included in the mod or release packs.",
|
||||
"No FPS improvement is established. Software rendering dominates this machine; these are functional observations, not Mac, GPU or unified-memory performance results. RSS is process resident memory, not complete GPU/unified RAM."
|
||||
]
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "7e0ffb16fbda2117ce3cfe9fc6249ff3c06c63be764207963ba331871ed6fabd",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 331478729,
|
||||
"wall_ns": 331596880,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 111403835,
|
||||
"wall_ns": 111532068,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 108573471,
|
||||
"wall_ns": 108571667,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 111501423,
|
||||
"wall_ns": 111493145,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_hook_checked": true,
|
||||
"owners": 30,
|
||||
"queries": 491520,
|
||||
"nonzero": 327049,
|
||||
"lookup_digest": "c9745cc2e7cf6c486a92f87635c87590db61127063970c8a8c7bfb2ef5282cca",
|
||||
"data_fingerprint": -5590987990034711991,
|
||||
"data_unchanged": true,
|
||||
"measured_checks": 6000000,
|
||||
"checksum": 274877907204874744,
|
||||
"allocated_bytes": 400,
|
||||
"cpu_ns": 260347437,
|
||||
"wall_ns": 260362090,
|
||||
"observations": [
|
||||
{
|
||||
"cpu_ns": 74253874,
|
||||
"wall_ns": 74284701,
|
||||
"allocated_bytes": 400
|
||||
},
|
||||
{
|
||||
"cpu_ns": 96313457,
|
||||
"wall_ns": 96305444,
|
||||
"allocated_bytes": 0
|
||||
},
|
||||
{
|
||||
"cpu_ns": 89780106,
|
||||
"wall_ns": 89771945,
|
||||
"allocated_bytes": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual public full-data lookup inside Fabric with generated numeric column data.",
|
||||
"Thirty owners span positive/negative origins and six detail levels; output digests and source fingerprints match.",
|
||||
"The actual redirect method is checked in each mode; source column data remains unchanged.",
|
||||
"Three sequential warmed caller-loop observations are not independent forks; JIT compilation can vary.",
|
||||
"Not whole-game FPS/RAM, rendered-pixel equivalence or a Mac GPU benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "c6ec0b5e14d2ea3546fb8858be4a655634a93387",
|
||||
"command": "python tools/test_terrain_position.py",
|
||||
"protocol": {
|
||||
"initial_warmup_checks": 10000000,
|
||||
"initial_compilation_wait_ms": 1000,
|
||||
"observation_count": 3,
|
||||
"per_observation_warmup_checks": 4000000,
|
||||
"per_observation_compilation_wait_ms": 200,
|
||||
"per_observation_measured_checks": 2000000,
|
||||
"run_order": [
|
||||
false,
|
||||
true
|
||||
],
|
||||
"compiler_diagnostics": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "c506982631880604513de8ef85e3b4461fbb898702e60b4a6f74ca3b3d4a687f",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_io_worker_checked": true,
|
||||
"ordinary_join_checked": true,
|
||||
"shared_future_preserved": true,
|
||||
"exception_identity_checked": true,
|
||||
"completed_interrupt_checked": true,
|
||||
"cancelled_completion_checked": true,
|
||||
"preinterrupted_pending_checked": true
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_io_worker_checked": true,
|
||||
"ordinary_join_checked": true,
|
||||
"shared_future_preserved": true,
|
||||
"exception_identity_checked": true,
|
||||
"completed_interrupt_checked": true,
|
||||
"cancelled_completion_checked": true,
|
||||
"preinterrupted_pending_checked": true
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual game IOWorker under Fabric, with controlled cached blending-read futures.",
|
||||
"DH worker interruption releases only its waiter; the shared future remains consumable.",
|
||||
"Ordinary callers retain join behavior; completed values, cancellation and exception identity are checked.",
|
||||
"This is a shutdown correctness fixture, not an FPS or world-generation throughput benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "9a1b22aa56f58a3ee39a3564be859a662d2beedc",
|
||||
"workflow_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37166150119",
|
||||
"job": "portable-mod (ubuntu-latest)",
|
||||
"artifact": "horizon-ubuntu-latest",
|
||||
"command": "python tools/test_terrain_read.py"
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"original_mod_sha256": "c506982631880604513de8ef85e3b4461fbb898702e60b4a6f74ca3b3d4a687f",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"applied_io_worker_checked": true,
|
||||
"ordinary_join_checked": true,
|
||||
"shared_future_preserved": true,
|
||||
"exception_identity_checked": true,
|
||||
"completed_interrupt_checked": true,
|
||||
"cancelled_completion_checked": true,
|
||||
"preinterrupted_pending_checked": true
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"applied_io_worker_checked": true,
|
||||
"ordinary_join_checked": true,
|
||||
"shared_future_preserved": true,
|
||||
"exception_identity_checked": true,
|
||||
"completed_interrupt_checked": true,
|
||||
"cancelled_completion_checked": true,
|
||||
"preinterrupted_pending_checked": true
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual game IOWorker under Fabric, with controlled cached blending-read futures.",
|
||||
"DH worker interruption releases only its waiter; the shared future remains consumable.",
|
||||
"Ordinary callers retain join behavior; completed values, cancellation and exception identity are checked.",
|
||||
"This is a shutdown correctness fixture, not an FPS or world-generation throughput benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "9a1b22aa56f58a3ee39a3564be859a662d2beedc",
|
||||
"environment": "local Linux x64 software graphics; actual Fabric fixture",
|
||||
"command": "python tools/test_terrain_read.py"
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39",
|
||||
"architecture": "x86_64",
|
||||
"minecraft": "26.3",
|
||||
"distant_horizons": "3.3.4",
|
||||
"results": [
|
||||
{
|
||||
"enabled": false,
|
||||
"allocated_bytes": 245760208,
|
||||
"cpu_ns": 423649902,
|
||||
"wall_ns": 481491629,
|
||||
"nodes_per_tick": 512,
|
||||
"measured_ticks": 20000,
|
||||
"verified_transitions": 6000,
|
||||
"checksum": 10240000
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"allocated_bytes": 208,
|
||||
"cpu_ns": 185922780,
|
||||
"wall_ns": 192151484,
|
||||
"nodes_per_tick": 512,
|
||||
"measured_ticks": 20000,
|
||||
"verified_transitions": 6000,
|
||||
"checksum": 10240000
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Actual publisher tick holder under Fabric, warmed with preallocated nodes and a reused action list.",
|
||||
"Checks duplicate/null membership, enable/disable precedence, published iteration order and clear boundaries.",
|
||||
"Only private membership checks change; action collections and traversal remain upstream.",
|
||||
"CPU and allocation measure the calling thread in one isolated loop; no statistical speed claim.",
|
||||
"Not a game FPS, visible terrain completion, whole-game RAM or Mac GPU benchmark."
|
||||
],
|
||||
"provenance": {
|
||||
"source_commit": "e091816ce06686d64d0f7a181a42701aa67e5bf7",
|
||||
"ci_run": "https://github.com/ludovic111/minecraft-optimization-lab/actions/runs/37162939262",
|
||||
"artifact": "horizon-ubuntu-latest"
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Darwin 25.6.0 arm64; logical CPUs 3
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.346; 1643.771 ms; worker allocation 1403064 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.514; 1061.526 ms; worker allocation 15456 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.466; 1238.603 ms; worker allocation 1449704 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.063; 11385.730 ms; worker allocation 204024 bytes
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.703; 785.293 ms; worker allocation 1417064 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.509; 1097.416 ms; worker allocation 14496 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.431; 1293.360 ms; worker allocation 1529184 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.065; 10727.658 ms; worker allocation 198104 bytes
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.620; 896.747 ms; worker allocation 1490864 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.518; 1062.565 ms; worker allocation 13096 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.605; 975.086 ms; worker allocation 1450064 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.060; 11976.557 ms; worker allocation 196840 bytes
|
||||
@@ -1,14 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Linux 6.17.0-1022-azure x86_64; logical CPUs 4
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 1.000; 578.014 ms; worker allocation 1450616 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.525; 1041.454 ms; worker allocation 64976 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.976; 591.683 ms; worker allocation 1451744 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.076; 10349.493 ms; worker allocation 145264 bytes
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 1.000; 577.632 ms; worker allocation 1451096 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.523; 1043.863 ms; worker allocation 65120 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.977; 591.337 ms; worker allocation 1410264 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.076; 10334.845 ms; worker allocation 124264 bytes
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.987; 583.777 ms; worker allocation 1490096 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.524; 1038.102 ms; worker allocation 64656 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.952; 606.495 ms; worker allocation 1408464 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.076; 10346.209 ms; worker allocation 165856 bytes
|
||||
@@ -1,14 +0,0 @@
|
||||
Java openjdk 25.0.4.1 2026-08-18 LTS
|
||||
Platform Windows 2025Server AMD64; logical CPUs 4
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.952; 557.784 ms; worker allocation 1491496 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.556; 1038.982 ms; worker allocation 17776 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.852; 623.419 ms; worker allocation 1410384 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.078; 10247.387 ms; worker allocation 214896 bytes
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.998; 548.088 ms; worker allocation 1489616 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.574; 1034.032 ms; worker allocation 15096 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.867; 630.903 ms; worker allocation 1449664 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.078; 10266.232 ms; worker allocation 214904 bytes
|
||||
upstream requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.996; 549.301 ms; worker allocation 1448456 bytes
|
||||
precise requested ratio 0.500; 50000 tasks of 10000 ns; worker CPU/wall 0.452; 1036.321 ms; worker allocation 13776 bytes
|
||||
upstream requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.971; 563.129 ms; worker allocation 1409664 bytes
|
||||
precise requested ratio 0.050; 50000 tasks of 10000 ns; worker CPU/wall 0.100; 10276.324 ms; worker allocation 214744 bytes
|
||||
@@ -5,7 +5,7 @@ use horizon_client::{
|
||||
Result,
|
||||
camera::{
|
||||
AvatarBob, BobState, Camera, CameraEntity, CameraFluid, CameraType, FovPlayer, HurtBob,
|
||||
LivingCamera, UseItem, bob_matrix, field_of_view_modifier,
|
||||
LivingCamera, UseItem, bob_matrix, field_of_view_modifier, perspective,
|
||||
},
|
||||
};
|
||||
use horizon_core::{
|
||||
@@ -258,6 +258,15 @@ fn camera(c: &Value, out: &mut impl Write) -> Result<()> {
|
||||
fb(fov),
|
||||
fb(hud)
|
||||
)?;
|
||||
let (w, h, far) = (fl(&op[4]), fl(&op[5]), fl(&op[6]));
|
||||
let matrix =
|
||||
|m: [f32; 16]| m.iter().map(|&x| format!(" {}", fb(x))).collect::<String>();
|
||||
writeln!(
|
||||
out,
|
||||
"projection{}{}",
|
||||
matrix(perspective(fov, w, h, far, 0.05, true)),
|
||||
matrix(perspective(hud, w, h, far, 0.05, true))
|
||||
)?;
|
||||
}
|
||||
other => panic!("{other}"),
|
||||
}
|
||||
|
||||
@@ -0,0 +1,461 @@
|
||||
//! Probe for test_first_person_parity.py: drives horizon_client::first_person
|
||||
//! and attack_strength over the harness's scripted clicks, targets and use
|
||||
//! results, printing what VanillaFirstPersonOracle prints.
|
||||
use horizon_client::{
|
||||
Result,
|
||||
attack_strength::{AttackStrength, HeldStack},
|
||||
first_person::{
|
||||
Clicks, Hand, HandHeights, HandWorld, Hit, SwingAnimation, SwingState, UseResult,
|
||||
swing_duration,
|
||||
},
|
||||
};
|
||||
use serde_json::Value;
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
fs::File,
|
||||
io::{BufRead, BufReader, BufWriter, Write},
|
||||
};
|
||||
|
||||
fn fb(v: f32) -> String {
|
||||
format!("{:08x}", v.to_bits())
|
||||
}
|
||||
fn fl(v: &Value) -> f32 {
|
||||
f32::from_bits(u32::from_str_radix(v.as_str().unwrap(), 16).unwrap())
|
||||
}
|
||||
fn dl(v: &Value) -> f64 {
|
||||
f64::from_bits(u64::from_str_radix(v.as_str().unwrap(), 16).unwrap())
|
||||
}
|
||||
|
||||
/// An `ItemStack` object: the hands hold indices into `Probe::stacks`, so
|
||||
/// shrinking keeps its identity as vanilla's in-place `shrink` does.
|
||||
#[derive(Clone)]
|
||||
struct Stack {
|
||||
item: String,
|
||||
count: i32,
|
||||
}
|
||||
impl Stack {
|
||||
fn empty(&self) -> bool {
|
||||
self.item == "minecraft:air" || self.count <= 0
|
||||
}
|
||||
/// `getItem` and `getCount` of an empty stack are air and 0.
|
||||
fn effective(&self) -> (&str, i32) {
|
||||
if self.empty() {
|
||||
("minecraft:air", 0)
|
||||
} else {
|
||||
(&self.item, self.count)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct Probe<'a> {
|
||||
case: &'a Value,
|
||||
step: &'a Value,
|
||||
creative: bool,
|
||||
stacks: Vec<Stack>,
|
||||
/// The stacks in the main and off hand.
|
||||
hands: [usize; 2],
|
||||
blocks: HashMap<[i32; 3], String>,
|
||||
swing: SwingState,
|
||||
events: Vec<String>,
|
||||
heights: HandHeights,
|
||||
}
|
||||
fn hand_name(hand: Hand) -> &'static str {
|
||||
match hand {
|
||||
Hand::Main => "main",
|
||||
Hand::Off => "off",
|
||||
}
|
||||
}
|
||||
impl Probe<'_> {
|
||||
fn stack(&self, hand: Hand) -> &Stack {
|
||||
&self.stacks[self.hands[hand as usize]]
|
||||
}
|
||||
fn new_stack(&mut self, v: &Value) -> usize {
|
||||
// ItemStack.EMPTY is index 0.
|
||||
if v.is_null() {
|
||||
return 0;
|
||||
}
|
||||
self.stacks.push(Stack {
|
||||
item: v[0].as_str().unwrap().into(),
|
||||
count: v[1].as_i64().unwrap() as i32,
|
||||
});
|
||||
self.stacks.len() - 1
|
||||
}
|
||||
fn table<'b>(&'b self, name: &str) -> &'b Value {
|
||||
&self.case["rust"][name]
|
||||
}
|
||||
fn attack_speed(&self) -> f64 {
|
||||
let item = self.stack(Hand::Main).effective().0;
|
||||
self.table("attack_speed").get(item).map_or(4.0, dl)
|
||||
}
|
||||
fn scripted(&mut self, kind: &str, hand: Hand) -> UseResult {
|
||||
let name = self.step["uses"][kind].as_str().unwrap().to_string();
|
||||
self.events
|
||||
.push(format!("use {kind} {} {name}", hand_name(hand)));
|
||||
let result = match name.as_str() {
|
||||
"success" => UseResult::Success { swing: true },
|
||||
"server" | "consume" => UseResult::Success { swing: false },
|
||||
"fail" => UseResult::Fail,
|
||||
_ => UseResult::Pass,
|
||||
};
|
||||
if matches!(result, UseResult::Success { .. }) && self.step["shrink"].as_bool().unwrap() {
|
||||
let i = self.hands[hand as usize];
|
||||
if i != 0 {
|
||||
self.stacks[i].count -= 1;
|
||||
}
|
||||
}
|
||||
result
|
||||
}
|
||||
}
|
||||
impl HandWorld for Probe<'_> {
|
||||
fn hit(&mut self) -> Hit {
|
||||
let h = &self.step["hit"];
|
||||
match h[0].as_str().unwrap() {
|
||||
"block" => Hit::Block {
|
||||
pos: [0, 1, 2].map(|i| h[i + 1].as_i64().unwrap() as i32),
|
||||
face: h[4].as_u64().unwrap() as u8,
|
||||
},
|
||||
"entity" => Hit::Entity,
|
||||
_ => Hit::Miss,
|
||||
}
|
||||
}
|
||||
fn is_air(&mut self, pos: [i32; 3]) -> bool {
|
||||
self.blocks.get(&pos).is_none_or(|b| b == "minecraft:air")
|
||||
}
|
||||
fn creative(&self) -> bool {
|
||||
self.creative
|
||||
}
|
||||
fn spectator(&self) -> bool {
|
||||
false
|
||||
}
|
||||
fn instabuild(&self) -> bool {
|
||||
self.creative
|
||||
}
|
||||
fn hands_busy(&self) -> bool {
|
||||
self.step["busy"].as_bool().unwrap()
|
||||
}
|
||||
fn using_item(&self) -> bool {
|
||||
self.step["using"].as_bool().unwrap()
|
||||
}
|
||||
fn item_enabled(&mut self, _: Hand) -> bool {
|
||||
true
|
||||
}
|
||||
fn held_empty(&mut self, hand: Hand) -> bool {
|
||||
self.stack(hand).empty()
|
||||
}
|
||||
fn held_count(&mut self, hand: Hand) -> i32 {
|
||||
self.stack(hand).effective().1
|
||||
}
|
||||
fn infinite_materials(&self) -> bool {
|
||||
self.creative
|
||||
}
|
||||
fn cannot_attack(&mut self) -> bool {
|
||||
false
|
||||
}
|
||||
fn piercing_weapon(&mut self) -> bool {
|
||||
false
|
||||
}
|
||||
fn attack_animation(&mut self) -> SwingAnimation {
|
||||
SwingAnimation::DEFAULT
|
||||
}
|
||||
fn interact_animation(&mut self, _: Hand) -> SwingAnimation {
|
||||
SwingAnimation::DEFAULT
|
||||
}
|
||||
fn piercing_attack(&mut self, _: SwingAnimation) {
|
||||
unreachable!()
|
||||
}
|
||||
fn attack_entity(&mut self) -> bool {
|
||||
self.events.push("attack".into());
|
||||
true
|
||||
}
|
||||
fn block_action_restricted(&mut self, _: [i32; 3]) -> bool {
|
||||
false
|
||||
}
|
||||
fn within_border(&mut self, _: [i32; 3]) -> bool {
|
||||
true
|
||||
}
|
||||
fn attack_block(&mut self, _: [i32; 3]) {}
|
||||
/// `BlockBehaviour.getDestroyProgress` with `Player.getDestroySpeed` for
|
||||
/// a player on the ground, out of water, with no mining efficiency.
|
||||
fn destroy_progress(&mut self, pos: [i32; 3]) -> f32 {
|
||||
let block = self.blocks.get(&pos).cloned().unwrap_or_default();
|
||||
let b = &self.table("blocks")[block.as_str()];
|
||||
let hardness = fl(&b[0]);
|
||||
if hardness == -1.0 {
|
||||
return 0.0;
|
||||
}
|
||||
let item = self.stack(Hand::Main).effective().0.to_string();
|
||||
let tool = &self.table("tools")[format!("{item} {block}").as_str()];
|
||||
let (mut speed, correct) = if tool.is_null() {
|
||||
(1.0f32, false)
|
||||
} else {
|
||||
(fl(&tool[0]), tool[1].as_bool().unwrap())
|
||||
};
|
||||
if let Some(amp) = self.case["haste"].as_i64() {
|
||||
speed *= 1.0 + (amp as i32 + 1) as f32 * 0.2;
|
||||
}
|
||||
if let Some(amp) = self.case["fatigue"].as_i64() {
|
||||
speed *= horizon_core::jmath::pow(0.3, f64::from(amp as i32 + 1)) as f32;
|
||||
}
|
||||
let harvest = !b[1].as_bool().unwrap() || correct;
|
||||
speed / hardness / if harvest { 30.0 } else { 100.0 }
|
||||
}
|
||||
fn destroy_block(&mut self, pos: [i32; 3]) -> bool {
|
||||
let item = self.stack(Hand::Main).effective().0;
|
||||
// Item.canDestroyBlock: swords' tools cannot destroy in creative.
|
||||
let sword = item.ends_with("_sword");
|
||||
let ok = !(sword && self.creative) && !self.is_air(pos);
|
||||
if ok {
|
||||
self.blocks.insert(pos, "minecraft:air".into());
|
||||
}
|
||||
self.events
|
||||
.push(format!("destroy {} {} {} {ok}", pos[0], pos[1], pos[2]));
|
||||
ok
|
||||
}
|
||||
/// The stack object itself: `destroyingItem` is a reference.
|
||||
fn main_hand_key(&mut self) -> String {
|
||||
self.hands[0].to_string()
|
||||
}
|
||||
fn same_destroying_item(&mut self, key: &str) -> bool {
|
||||
// ItemStack.EMPTY (index 0) before any break.
|
||||
let then = &self.stacks[key.parse::<usize>().unwrap_or(0)];
|
||||
then.effective().0 == self.stack(Hand::Main).effective().0
|
||||
}
|
||||
fn destroy_stage(&mut self, pos: [i32; 3], stage: Option<i32>) {
|
||||
self.events.push(format!(
|
||||
"stage {} {} {} {}",
|
||||
pos[0],
|
||||
pos[1],
|
||||
pos[2],
|
||||
stage.unwrap_or(-1)
|
||||
));
|
||||
}
|
||||
fn swing(&mut self, hand: Hand, animation: SwingAnimation) {
|
||||
let duration = swing_duration(
|
||||
animation,
|
||||
self.case["haste"].as_i64().map(|a| a as i32),
|
||||
self.case["fatigue"].as_i64().map(|a| a as i32),
|
||||
);
|
||||
let started = self.swing.start_if_able(hand, animation, duration);
|
||||
self.events.push(format!(
|
||||
"swing {} {} {started}",
|
||||
hand_name(hand),
|
||||
animation.duration
|
||||
));
|
||||
}
|
||||
fn reset_attack_strength(&mut self) {
|
||||
unreachable!("ResetWorld resets the tickers")
|
||||
}
|
||||
fn entity_within_border(&mut self) -> bool {
|
||||
true
|
||||
}
|
||||
fn use_on_entity(&mut self, hand: Hand) -> Option<UseResult> {
|
||||
self.step["hit"][1]
|
||||
.as_bool()
|
||||
.unwrap()
|
||||
.then(|| self.scripted("entity", hand))
|
||||
}
|
||||
fn use_on_block(&mut self, hand: Hand) -> UseResult {
|
||||
self.scripted("block", hand)
|
||||
}
|
||||
fn use_item(&mut self, hand: Hand) -> UseResult {
|
||||
self.scripted("item", hand)
|
||||
}
|
||||
fn item_used(&mut self, hand: Hand) {
|
||||
self.events.push(format!("used {}", hand_name(hand)));
|
||||
self.heights.item_used(hand);
|
||||
}
|
||||
fn release_using(&mut self) {
|
||||
self.events.push("release".into());
|
||||
}
|
||||
}
|
||||
fn held(stack: &Stack) -> Option<HeldStack> {
|
||||
(!stack.empty()).then(|| HeldStack {
|
||||
item: stack.item.clone(),
|
||||
rest: stack.count.to_string(),
|
||||
})
|
||||
}
|
||||
|
||||
fn run(case: &Value, out: &mut impl Write) -> Result<()> {
|
||||
let empty = Value::Null;
|
||||
let mut probe = Probe {
|
||||
case,
|
||||
step: &empty,
|
||||
creative: case["creative"].as_bool().unwrap(),
|
||||
stacks: vec![Stack {
|
||||
item: "minecraft:air".into(),
|
||||
count: 0,
|
||||
}],
|
||||
hands: [0, 0],
|
||||
blocks: case["blocks"]
|
||||
.as_array()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.map(|b| {
|
||||
(
|
||||
[0, 1, 2].map(|i| b[i].as_i64().unwrap() as i32),
|
||||
b[3].as_str().unwrap().to_string(),
|
||||
)
|
||||
})
|
||||
.collect(),
|
||||
swing: SwingState::default(),
|
||||
events: Vec::new(),
|
||||
heights: HandHeights::default(),
|
||||
};
|
||||
probe.hands[0] = probe.new_stack(&case["main"]);
|
||||
probe.hands[1] = probe.new_stack(&case["off"]);
|
||||
writeln!(out, "attack_speed {:x}", probe.attack_speed().to_bits())?;
|
||||
let mut clicks = Clicks::default();
|
||||
let mut strength = AttackStrength::default();
|
||||
// FirstPersonHandsAndItems' visible items start as ItemStack.EMPTY.
|
||||
let mut visible = [0usize, 0usize];
|
||||
for (s, step) in case["steps"].as_array().unwrap().iter().enumerate() {
|
||||
probe.step = step;
|
||||
probe.events.clear();
|
||||
if !step["set"].is_null() {
|
||||
let i = probe.new_stack(&step["set"]["stack"]);
|
||||
let hand = if step["set"]["hand"] == "main" { 0 } else { 1 };
|
||||
probe.hands[hand] = i;
|
||||
}
|
||||
clicks.tick(
|
||||
&mut ResetWorld {
|
||||
probe: &mut probe,
|
||||
strength: &mut strength,
|
||||
},
|
||||
step["ac"].as_u64().unwrap() as u32,
|
||||
step["uc"].as_u64().unwrap() as u32,
|
||||
step["ad"].as_bool().unwrap(),
|
||||
step["ud"].as_bool().unwrap(),
|
||||
);
|
||||
probe.swing.tick();
|
||||
let main = probe.stack(Hand::Main).clone();
|
||||
strength.tick(held(&main));
|
||||
// FirstPersonHandsAndItems.tick: shouldInstantlyReplaceVisibleItem
|
||||
// (ItemStack.matchesIgnoringComponents; every item plays the swap
|
||||
// animation), then the heights.
|
||||
let mut changed = [false; 2];
|
||||
for h in 0..2 {
|
||||
let (a, b) = (visible[h], probe.hands[h]);
|
||||
let same = a == b || probe.stacks[a].effective() == probe.stacks[b].effective();
|
||||
if same {
|
||||
visible[h] = b;
|
||||
}
|
||||
changed[h] = visible[h] != b;
|
||||
}
|
||||
let speed = probe.attack_speed();
|
||||
let replace = probe.heights.tick(
|
||||
probe.step["busy"].as_bool().unwrap(),
|
||||
strength.swap_scale(1.0, speed),
|
||||
changed,
|
||||
);
|
||||
for h in 0..2 {
|
||||
if replace[h] {
|
||||
visible[h] = probe.hands[h];
|
||||
}
|
||||
}
|
||||
for e in &probe.events {
|
||||
writeln!(out, "{e}")?;
|
||||
}
|
||||
let sw = &probe.swing;
|
||||
let current = sw.current.map_or("- 0".to_string(), |c| {
|
||||
format!("{} {}", hand_name(c.hand), c.duration_ticks)
|
||||
});
|
||||
let h = &probe.heights;
|
||||
let d = &clicks.destroying;
|
||||
writeln!(
|
||||
out,
|
||||
"tick {s} {current} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}",
|
||||
sw.ticks,
|
||||
fb(sw.animation),
|
||||
fb(sw.old_animation),
|
||||
fb(sw.animation(0.5)),
|
||||
strength.ticker,
|
||||
strength.swap_ticker,
|
||||
fb(strength.swap_scale(1.0, speed)),
|
||||
fb(h.main),
|
||||
fb(h.old_main),
|
||||
fb(h.off),
|
||||
fb(h.old_off),
|
||||
clicks.miss_time,
|
||||
clicks.right_click_delay,
|
||||
d.delay,
|
||||
d.active,
|
||||
fb(d.progress)
|
||||
)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// The probe with the attack-strength tickers it resets.
|
||||
struct ResetWorld<'p, 'c> {
|
||||
probe: &'p mut Probe<'c>,
|
||||
strength: &'p mut AttackStrength,
|
||||
}
|
||||
macro_rules! forward {
|
||||
($($name:ident($($arg:ident: $t:ty),*) -> $r:ty;)*) => {
|
||||
$(fn $name(&mut self, $($arg: $t),*) -> $r { self.probe.$name($($arg),*) })*
|
||||
};
|
||||
}
|
||||
impl HandWorld for ResetWorld<'_, '_> {
|
||||
forward! {
|
||||
hit() -> Hit;
|
||||
is_air(pos: [i32; 3]) -> bool;
|
||||
item_enabled(hand: Hand) -> bool;
|
||||
held_empty(hand: Hand) -> bool;
|
||||
held_count(hand: Hand) -> i32;
|
||||
cannot_attack() -> bool;
|
||||
piercing_weapon() -> bool;
|
||||
attack_animation() -> SwingAnimation;
|
||||
interact_animation(hand: Hand) -> SwingAnimation;
|
||||
piercing_attack(a: SwingAnimation) -> ();
|
||||
attack_entity() -> bool;
|
||||
block_action_restricted(pos: [i32; 3]) -> bool;
|
||||
within_border(pos: [i32; 3]) -> bool;
|
||||
attack_block(pos: [i32; 3]) -> ();
|
||||
destroy_progress(pos: [i32; 3]) -> f32;
|
||||
destroy_block(pos: [i32; 3]) -> bool;
|
||||
main_hand_key() -> String;
|
||||
same_destroying_item(key: &str) -> bool;
|
||||
destroy_stage(pos: [i32; 3], stage: Option<i32>) -> ();
|
||||
swing(hand: Hand, a: SwingAnimation) -> ();
|
||||
entity_within_border() -> bool;
|
||||
use_on_entity(hand: Hand) -> Option<UseResult>;
|
||||
use_on_block(hand: Hand) -> UseResult;
|
||||
use_item(hand: Hand) -> UseResult;
|
||||
item_used(hand: Hand) -> ();
|
||||
release_using() -> ();
|
||||
}
|
||||
fn creative(&self) -> bool {
|
||||
self.probe.creative()
|
||||
}
|
||||
fn spectator(&self) -> bool {
|
||||
false
|
||||
}
|
||||
fn instabuild(&self) -> bool {
|
||||
self.probe.instabuild()
|
||||
}
|
||||
fn hands_busy(&self) -> bool {
|
||||
self.probe.hands_busy()
|
||||
}
|
||||
fn using_item(&self) -> bool {
|
||||
self.probe.using_item()
|
||||
}
|
||||
fn infinite_materials(&self) -> bool {
|
||||
self.probe.infinite_materials()
|
||||
}
|
||||
fn reset_attack_strength(&mut self) {
|
||||
self.strength.reset();
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
let input = BufReader::new(File::open(&args[1])?);
|
||||
let mut out = BufWriter::new(File::create(&args[2])?);
|
||||
for (n, line) in input.lines().enumerate() {
|
||||
let c: Value = serde_json::from_str(&line?)?;
|
||||
writeln!(out, "== {n}")?;
|
||||
run(&c, &mut out)?;
|
||||
}
|
||||
out.flush()?;
|
||||
Ok(())
|
||||
}
|
||||
@@ -583,6 +583,44 @@ impl Camera {
|
||||
modify_fov_based_on_death_or_fluid(partial, 70.0, effect_scale, dead, fluid)
|
||||
}
|
||||
}
|
||||
/// `Projection.getMatrix` for a perspective set up by `setupPerspective`:
|
||||
/// JOML's `Matrix4f.setPerspective(fov * DEG_TO_RAD, width / height, near,
|
||||
/// far, zZeroToOne)`, column-major. Vanilla passes its planes reversed
|
||||
/// (`near` is `zFar`); the hand pass here keeps them in order.
|
||||
pub fn perspective(
|
||||
fov_degrees: f32,
|
||||
width: f32,
|
||||
height: f32,
|
||||
near: f32,
|
||||
far: f32,
|
||||
zero_to_one: bool,
|
||||
) -> [f32; 16] {
|
||||
let h = horizon_core::jmath::tan(f64::from(fov_degrees * DEG_TO_RAD * 0.5)) as f32;
|
||||
let aspect = width / height;
|
||||
let mut m = [0.0f32; 16];
|
||||
m[0] = 1.0 / (h * aspect);
|
||||
m[5] = 1.0 / h;
|
||||
let e = 1.0e-6f32;
|
||||
if far > 0.0 && far.is_infinite() {
|
||||
m[10] = e - 1.0;
|
||||
m[14] = (e - if zero_to_one { 1.0 } else { 2.0 }) * near;
|
||||
} else if near > 0.0 && near.is_infinite() {
|
||||
m[10] = (if zero_to_one { 0.0 } else { 1.0 }) - e;
|
||||
m[14] = ((if zero_to_one { 1.0 } else { 2.0 }) - e) * far;
|
||||
} else {
|
||||
m[10] = (if zero_to_one { far } else { far + near }) / (near - far);
|
||||
m[14] = (if zero_to_one { far } else { far + far }) * near / (near - far);
|
||||
}
|
||||
m[11] = -1.0;
|
||||
m
|
||||
}
|
||||
/// `GameRenderer.render3dHud`: the first-person hand and held items are
|
||||
/// drawn with their own projection at `hudFov` (70 degrees, changed only by
|
||||
/// death and fluids), never the FOV option or the sprint, speed and bow
|
||||
/// modifier.
|
||||
pub fn hand_projection(hud_fov: f32, width: f32, height: f32, far: f32) -> [f32; 16] {
|
||||
perspective(hud_fov, width, height, 0.05, far, true)
|
||||
}
|
||||
/// `Camera.modifyFovBasedOnDeathOrFluid`. `dead` is the camera entity's
|
||||
/// `deathTime` while it is a living entity that is dead or dying.
|
||||
pub fn modify_fov_based_on_death_or_fluid(
|
||||
|
||||
@@ -365,12 +365,7 @@ impl PlayerEffects {
|
||||
f *= 1.0 + (a + 1) as f32 * 0.2;
|
||||
}
|
||||
if let Some(a) = self.amplifier("mining_fatigue") {
|
||||
f *= match a {
|
||||
0 => 0.3,
|
||||
1 => 0.09,
|
||||
2 => 0.0027,
|
||||
_ => 8.1e-4,
|
||||
};
|
||||
f *= horizon_core::jmath::pow(0.3, f64::from(a + 1)) as f32;
|
||||
}
|
||||
f
|
||||
}
|
||||
|
||||
@@ -0,0 +1,601 @@
|
||||
//! The local player's hand: the arm swing (`LivingEntity.SwingState`,
|
||||
//! `getModifiedSwingDuration`), the first-person equip heights
|
||||
//! (`FirstPersonHandsAndItems.tick` and `itemUsed`), and the click handling
|
||||
//! that starts swings: `Minecraft.startAttack`, `continueAttack`,
|
||||
//! `startUseItem` and `handleKeybinds`' attack and use part, with
|
||||
//! `MultiPlayerGameMode`'s block breaking (`startDestroyBlock`,
|
||||
//! `continueDestroyBlock`, `stopDestroyBlock`).
|
||||
//!
|
||||
//! What those read and do in the world is behind [`HandWorld`].
|
||||
|
||||
/// `InteractionHand`.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum Hand {
|
||||
Main,
|
||||
Off,
|
||||
}
|
||||
impl Hand {
|
||||
pub const BOTH: [Hand; 2] = [Hand::Main, Hand::Off];
|
||||
}
|
||||
|
||||
/// `SwingAnimation`: its type (`SwingAnimationType` ordinal) and duration.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub struct SwingAnimation {
|
||||
pub kind: u8,
|
||||
pub duration: i32,
|
||||
}
|
||||
impl SwingAnimation {
|
||||
/// `SwingAnimation.DEFAULT`: WHACK for 6 ticks.
|
||||
pub const DEFAULT: SwingAnimation = SwingAnimation {
|
||||
kind: 1,
|
||||
duration: 6,
|
||||
};
|
||||
}
|
||||
|
||||
/// `LivingEntity.SwingDescription`.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub struct SwingDescription {
|
||||
pub hand: Hand,
|
||||
pub animation: SwingAnimation,
|
||||
pub duration_ticks: i32,
|
||||
}
|
||||
|
||||
/// `LivingEntity.SwingState`.
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq)]
|
||||
pub struct SwingState {
|
||||
pub current: Option<SwingDescription>,
|
||||
pub ticks: i32,
|
||||
pub old_animation: f32,
|
||||
pub animation: f32,
|
||||
}
|
||||
impl SwingState {
|
||||
/// `startIfAble`: a swing restarts unless the current one is in its
|
||||
/// first half (past its first tick).
|
||||
pub fn start_if_able(&mut self, hand: Hand, animation: SwingAnimation, duration: i32) -> bool {
|
||||
if let Some(c) = self.current
|
||||
&& self.ticks <= c.duration_ticks / 2
|
||||
&& self.ticks > 0
|
||||
{
|
||||
return false;
|
||||
}
|
||||
let swing = SwingDescription {
|
||||
hand,
|
||||
animation,
|
||||
duration_ticks: duration,
|
||||
};
|
||||
if self.current != Some(swing) {
|
||||
self.old_animation = 0.0;
|
||||
self.animation = 0.0;
|
||||
}
|
||||
self.current = Some(swing);
|
||||
self.ticks = 0;
|
||||
true
|
||||
}
|
||||
/// `tick` (from `LivingEntity.baseTick`).
|
||||
pub fn tick(&mut self) {
|
||||
self.old_animation = self.animation;
|
||||
if let Some(c) = self.current {
|
||||
if c.duration_ticks > 0 {
|
||||
self.animation = (self.ticks as f32 / c.duration_ticks as f32).min(1.0);
|
||||
}
|
||||
let ticks = self.ticks;
|
||||
self.ticks += 1;
|
||||
if ticks > c.duration_ticks {
|
||||
self.current = None;
|
||||
self.animation = 0.0;
|
||||
}
|
||||
} else {
|
||||
self.animation = 0.0;
|
||||
}
|
||||
}
|
||||
/// `getAnimation(partialTicks)`: a restarted swing keeps moving forward.
|
||||
pub fn animation(&self, partial: f32) -> f32 {
|
||||
if self.animation >= self.old_animation {
|
||||
crate::camera::lerp(partial, self.old_animation, self.animation)
|
||||
} else {
|
||||
crate::camera::lerp(partial, self.old_animation, self.animation + 1.0)
|
||||
}
|
||||
}
|
||||
pub fn swinging(&self) -> bool {
|
||||
self.current.is_some()
|
||||
}
|
||||
/// The hand of the current swing (`state.attackHand`), main by default.
|
||||
pub fn attack_hand(&self) -> Hand {
|
||||
self.current.map_or(Hand::Main, |c| c.hand)
|
||||
}
|
||||
}
|
||||
|
||||
/// `LivingEntity.getModifiedSwingDuration`: `dig_speed` is
|
||||
/// `MobEffectUtil.getDigSpeedAmplification` while haste or conduit power is
|
||||
/// active, `fatigue` the mining fatigue amplifier.
|
||||
pub fn swing_duration(
|
||||
animation: SwingAnimation,
|
||||
dig_speed: Option<i32>,
|
||||
fatigue: Option<i32>,
|
||||
) -> i32 {
|
||||
let duration = animation.duration;
|
||||
if let Some(amplification) = dig_speed {
|
||||
duration - (1 + amplification)
|
||||
} else if let Some(amplifier) = fatigue {
|
||||
duration + (1 + amplifier) * 2
|
||||
} else {
|
||||
duration
|
||||
}
|
||||
}
|
||||
|
||||
/// `FirstPersonHandsAndItems`' equip heights.
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
pub struct HandHeights {
|
||||
pub main: f32,
|
||||
pub old_main: f32,
|
||||
pub off: f32,
|
||||
pub old_off: f32,
|
||||
}
|
||||
impl Default for HandHeights {
|
||||
fn default() -> Self {
|
||||
HandHeights {
|
||||
main: 0.0,
|
||||
old_main: 0.0,
|
||||
off: 0.0,
|
||||
old_off: 0.0,
|
||||
}
|
||||
}
|
||||
}
|
||||
/// What `FirstPersonHandsAndItems.tick` decides about a hand's visible item.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub struct HandChange {
|
||||
/// The visible item is not the hand's item after the instant replacement
|
||||
/// (`mainHandItem != nextMainHand`): the hand lowers.
|
||||
pub changed: bool,
|
||||
/// The visible item becomes the hand's item this tick.
|
||||
pub replace: bool,
|
||||
}
|
||||
impl HandHeights {
|
||||
/// `FirstPersonHandsAndItems.tick`'s heights. `changed` says per hand
|
||||
/// whether the visible item differs from the held one once
|
||||
/// `shouldInstantlyReplaceVisibleItem` has run; `swap_scale` is
|
||||
/// `getItemSwapScale(1.0F)`. Returns whether each hand's visible item
|
||||
/// is replaced at the end.
|
||||
pub fn tick(&mut self, hands_busy: bool, swap_scale: f32, changed: [bool; 2]) -> [bool; 2] {
|
||||
self.old_main = self.main;
|
||||
self.old_off = self.off;
|
||||
if hands_busy {
|
||||
self.main = (self.main - 0.4).clamp(0.0, 1.0);
|
||||
self.off = (self.off - 0.4).clamp(0.0, 1.0);
|
||||
} else {
|
||||
let attack = swap_scale;
|
||||
let main_target = if changed[0] {
|
||||
0.0
|
||||
} else {
|
||||
attack * attack * attack
|
||||
};
|
||||
let off_target = if changed[1] { 0.0 } else { 1.0 };
|
||||
self.main += (main_target - self.main).clamp(-0.4, 0.4);
|
||||
self.off += (off_target - self.off).clamp(-0.4, 0.4);
|
||||
}
|
||||
[self.main < 0.1, self.off < 0.1]
|
||||
}
|
||||
/// `itemUsed`: the hand drops to the bottom and rises again.
|
||||
pub fn item_used(&mut self, hand: Hand) {
|
||||
match hand {
|
||||
Hand::Main => self.main = 0.0,
|
||||
Hand::Off => self.off = 0.0,
|
||||
}
|
||||
}
|
||||
/// `Mth.lerp(partialTicks, oMainHandHeight, mainHandHeight)` and the
|
||||
/// off hand's.
|
||||
pub fn interpolated(&self, partial: f32) -> [f32; 2] {
|
||||
[
|
||||
crate::camera::lerp(partial, self.old_main, self.main),
|
||||
crate::camera::lerp(partial, self.old_off, self.off),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/// `HitResult` at the crosshair (`Minecraft.hitResult`).
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
pub enum Hit {
|
||||
Miss,
|
||||
Block { pos: [i32; 3], face: u8 },
|
||||
Entity,
|
||||
}
|
||||
|
||||
/// `InteractionResult` as `startUseItem` reads it.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum UseResult {
|
||||
/// `Success` with its `SwingSource`: whether the client swings.
|
||||
Success {
|
||||
swing: bool,
|
||||
},
|
||||
Pass,
|
||||
Fail,
|
||||
}
|
||||
|
||||
/// What the click handling reads and does in the world.
|
||||
pub trait HandWorld {
|
||||
fn hit(&mut self) -> Hit;
|
||||
fn is_air(&mut self, pos: [i32; 3]) -> bool;
|
||||
/// `MultiPlayerGameMode.localPlayerMode`.
|
||||
fn creative(&self) -> bool;
|
||||
fn spectator(&self) -> bool;
|
||||
/// `Abilities.instabuild`.
|
||||
fn instabuild(&self) -> bool;
|
||||
fn hands_busy(&self) -> bool;
|
||||
fn using_item(&self) -> bool;
|
||||
/// `ItemStack.isItemEnabled` for the item in a hand.
|
||||
fn item_enabled(&mut self, hand: Hand) -> bool;
|
||||
fn held_empty(&mut self, hand: Hand) -> bool;
|
||||
fn held_count(&mut self, hand: Hand) -> i32;
|
||||
/// `Player.hasInfiniteMaterials`.
|
||||
fn infinite_materials(&self) -> bool;
|
||||
/// `Player.cannotAttackWithItem(heldItem, 0)`.
|
||||
fn cannot_attack(&mut self) -> bool;
|
||||
/// The main-hand item is a `PIERCING_WEAPON`.
|
||||
fn piercing_weapon(&mut self) -> bool;
|
||||
fn attack_animation(&mut self) -> SwingAnimation;
|
||||
fn interact_animation(&mut self, hand: Hand) -> SwingAnimation;
|
||||
/// `MultiPlayerGameMode.piercingAttack`.
|
||||
fn piercing_attack(&mut self, animation: SwingAnimation);
|
||||
/// `Player.attack` on the targeted entity when the item's attack range
|
||||
/// allows it; false when out of range.
|
||||
fn attack_entity(&mut self) -> bool;
|
||||
/// `Player.blockActionRestricted` for the game mode.
|
||||
fn block_action_restricted(&mut self, pos: [i32; 3]) -> bool;
|
||||
/// `WorldBorder.isWithinBounds`.
|
||||
fn within_border(&mut self, pos: [i32; 3]) -> bool;
|
||||
/// `BlockState.attack` on the first hit of a break.
|
||||
fn attack_block(&mut self, pos: [i32; 3]);
|
||||
/// `BlockState.getDestroyProgress` for the player.
|
||||
fn destroy_progress(&mut self, pos: [i32; 3]) -> f32;
|
||||
/// `MultiPlayerGameMode.destroyBlock`.
|
||||
fn destroy_block(&mut self, pos: [i32; 3]) -> bool;
|
||||
/// A key for the main-hand stack, kept as `destroyingItem`.
|
||||
fn main_hand_key(&mut self) -> String;
|
||||
/// `ItemStack.isSameItemSameComponents(selected, destroyingItem)` for
|
||||
/// the stack `main_hand_key` gave when the break started. Vanilla keeps
|
||||
/// a reference to that stack, so it compares what it holds now.
|
||||
fn same_destroying_item(&mut self, key: &str) -> bool {
|
||||
self.main_hand_key() == key
|
||||
}
|
||||
/// Breaking progress shown (`destroyBlockProgress`), or cleared with `None`.
|
||||
fn destroy_stage(&mut self, pos: [i32; 3], stage: Option<i32>);
|
||||
/// `player.swing(hand, animation, false)`.
|
||||
fn swing(&mut self, hand: Hand, animation: SwingAnimation);
|
||||
/// `Player.resetAttackStrengthTicker`.
|
||||
fn reset_attack_strength(&mut self);
|
||||
/// The targeted entity's block position is inside the world border.
|
||||
fn entity_within_border(&mut self) -> bool;
|
||||
/// The use attempts of `startUseItem`: on the targeted entity (`None`
|
||||
/// when it is out of interaction range), the targeted block, and the
|
||||
/// item alone.
|
||||
fn use_on_entity(&mut self, hand: Hand) -> Option<UseResult>;
|
||||
fn use_on_block(&mut self, hand: Hand) -> UseResult;
|
||||
fn use_item(&mut self, hand: Hand) -> UseResult;
|
||||
/// `LocalPlayer.itemUsed`.
|
||||
fn item_used(&mut self, hand: Hand);
|
||||
/// `MultiPlayerGameMode.releaseUsingItem`.
|
||||
fn release_using(&mut self);
|
||||
}
|
||||
|
||||
/// `MultiPlayerGameMode`'s block breaking.
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub struct Destroying {
|
||||
pub delay: i32,
|
||||
pub active: bool,
|
||||
pub pos: [i32; 3],
|
||||
pub face: u8,
|
||||
pub item: String,
|
||||
pub progress: f32,
|
||||
pub ticks: f32,
|
||||
}
|
||||
impl Default for Destroying {
|
||||
/// `destroyBlockPos` starts at (-1, -1, -1) and `destroyingItem` empty
|
||||
/// (an empty key).
|
||||
fn default() -> Self {
|
||||
Destroying {
|
||||
delay: 0,
|
||||
active: false,
|
||||
pos: [-1; 3],
|
||||
face: 0,
|
||||
item: String::new(),
|
||||
progress: 0.0,
|
||||
ticks: 0.0,
|
||||
}
|
||||
}
|
||||
}
|
||||
impl Destroying {
|
||||
/// `getDestroyStage`.
|
||||
pub fn stage(&self) -> i32 {
|
||||
if self.progress > 0.0 {
|
||||
(self.progress * 10.0) as i32
|
||||
} else {
|
||||
-1
|
||||
}
|
||||
}
|
||||
fn same_target(&self, w: &mut impl HandWorld, pos: [i32; 3]) -> bool {
|
||||
pos == self.pos && w.same_destroying_item(&self.item)
|
||||
}
|
||||
/// `startDestroyBlock`.
|
||||
pub fn start(&mut self, w: &mut impl HandWorld, pos: [i32; 3], face: u8) -> bool {
|
||||
if w.block_action_restricted(pos) || !w.within_border(pos) {
|
||||
return false;
|
||||
}
|
||||
if w.instabuild() {
|
||||
w.destroy_block(pos);
|
||||
self.delay = 5;
|
||||
} else if !self.active || !self.same_target(w, pos) {
|
||||
let not_air = !w.is_air(pos);
|
||||
if not_air && self.progress == 0.0 {
|
||||
w.attack_block(pos);
|
||||
}
|
||||
if not_air && w.destroy_progress(pos) >= 1.0 {
|
||||
w.destroy_block(pos);
|
||||
} else {
|
||||
self.active = true;
|
||||
self.pos = pos;
|
||||
self.face = face;
|
||||
self.item = w.main_hand_key();
|
||||
self.progress = 0.0;
|
||||
self.ticks = 0.0;
|
||||
w.destroy_stage(pos, Some(self.stage()));
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
/// `stopDestroyBlock`.
|
||||
pub fn stop(&mut self, w: &mut impl HandWorld) {
|
||||
if self.active {
|
||||
self.active = false;
|
||||
self.progress = 0.0;
|
||||
w.destroy_stage(self.pos, None);
|
||||
w.reset_attack_strength();
|
||||
}
|
||||
}
|
||||
/// `continueDestroyBlock`: true while the hand keeps swinging.
|
||||
pub fn continue_destroy(&mut self, w: &mut impl HandWorld, pos: [i32; 3], face: u8) -> bool {
|
||||
if self.delay > 0 {
|
||||
self.delay -= 1;
|
||||
return true;
|
||||
}
|
||||
if w.instabuild() && w.within_border(pos) {
|
||||
self.delay = 5;
|
||||
w.destroy_block(pos);
|
||||
return true;
|
||||
}
|
||||
if !self.same_target(w, pos) {
|
||||
return self.start(w, pos, face);
|
||||
}
|
||||
if w.is_air(pos) {
|
||||
self.active = false;
|
||||
return false;
|
||||
}
|
||||
self.progress += w.destroy_progress(pos);
|
||||
self.ticks += 1.0;
|
||||
if self.progress >= 1.0 {
|
||||
self.active = false;
|
||||
w.destroy_block(pos);
|
||||
self.progress = 0.0;
|
||||
self.ticks = 0.0;
|
||||
self.delay = 5;
|
||||
} else if self.face != face {
|
||||
self.face = face;
|
||||
}
|
||||
w.destroy_stage(self.pos, Some(self.stage()));
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
/// `Minecraft`'s attack and use handling.
|
||||
#[derive(Clone, Debug, Default, PartialEq)]
|
||||
pub struct Clicks {
|
||||
pub miss_time: i32,
|
||||
pub right_click_delay: i32,
|
||||
pub destroying: Destroying,
|
||||
}
|
||||
impl Clicks {
|
||||
/// `Minecraft.startAttack`: whether the click ended the attack (broke
|
||||
/// the block outright).
|
||||
pub fn start_attack(&mut self, w: &mut impl HandWorld) -> bool {
|
||||
if self.miss_time > 0 || w.hands_busy() {
|
||||
return false;
|
||||
}
|
||||
if w.spectator() {
|
||||
return true;
|
||||
}
|
||||
if !w.item_enabled(Hand::Main) || w.cannot_attack() {
|
||||
return false;
|
||||
}
|
||||
let animation = w.attack_animation();
|
||||
if w.piercing_weapon() {
|
||||
w.piercing_attack(animation);
|
||||
return true;
|
||||
}
|
||||
let mut end = false;
|
||||
let mut miss = false;
|
||||
match w.hit() {
|
||||
// MultiPlayerGameMode.attack.
|
||||
Hit::Entity => {
|
||||
if w.attack_entity() {
|
||||
w.reset_attack_strength();
|
||||
if w.instabuild() {
|
||||
self.destroying.delay = 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
Hit::Block { pos, face } if !w.is_air(pos) => {
|
||||
self.destroying.start(w, pos, face);
|
||||
end = w.is_air(pos);
|
||||
}
|
||||
Hit::Block { .. } | Hit::Miss => miss = true,
|
||||
}
|
||||
if miss {
|
||||
if !w.creative() {
|
||||
self.miss_time = 10;
|
||||
}
|
||||
w.reset_attack_strength();
|
||||
}
|
||||
w.swing(Hand::Main, animation);
|
||||
end
|
||||
}
|
||||
/// `Minecraft.continueAttack`.
|
||||
pub fn continue_attack(&mut self, w: &mut impl HandWorld, down: bool) {
|
||||
if !down {
|
||||
self.miss_time = 0;
|
||||
}
|
||||
if self.miss_time > 0 || w.using_item() || w.piercing_weapon() {
|
||||
return;
|
||||
}
|
||||
let animation = w.attack_animation();
|
||||
match w.hit() {
|
||||
Hit::Block { pos, face } if down => {
|
||||
if !w.is_air(pos) && self.destroying.continue_destroy(w, pos, face) {
|
||||
w.swing(Hand::Main, animation);
|
||||
}
|
||||
}
|
||||
_ => self.destroying.stop(w),
|
||||
}
|
||||
}
|
||||
/// `Minecraft.startUseItem`.
|
||||
pub fn start_use_item(&mut self, w: &mut impl HandWorld) {
|
||||
if self.destroying.active {
|
||||
return;
|
||||
}
|
||||
self.right_click_delay = 4;
|
||||
if w.hands_busy() {
|
||||
return;
|
||||
}
|
||||
for hand in Hand::BOTH {
|
||||
if !w.item_enabled(hand) {
|
||||
return;
|
||||
}
|
||||
let animation = w.interact_animation(hand);
|
||||
match w.hit() {
|
||||
Hit::Entity => {
|
||||
if !w.entity_within_border() {
|
||||
return;
|
||||
}
|
||||
if let Some(UseResult::Success { swing }) = w.use_on_entity(hand) {
|
||||
if swing {
|
||||
w.swing(hand, animation);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
Hit::Block { .. } => {
|
||||
let count = w.held_count(hand);
|
||||
match w.use_on_block(hand) {
|
||||
UseResult::Success { swing } => {
|
||||
if swing {
|
||||
w.swing(hand, animation);
|
||||
if !w.held_empty(hand)
|
||||
&& (w.held_count(hand) != count || w.infinite_materials())
|
||||
{
|
||||
w.item_used(hand);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
UseResult::Fail => return,
|
||||
UseResult::Pass => {}
|
||||
}
|
||||
}
|
||||
Hit::Miss => {}
|
||||
}
|
||||
if !w.held_empty(hand)
|
||||
&& let UseResult::Success { swing } = w.use_item(hand)
|
||||
{
|
||||
if swing {
|
||||
w.swing(hand, animation);
|
||||
}
|
||||
w.item_used(hand);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
/// The attack and use part of `Minecraft.tick`: `rightClickDelay`, the
|
||||
/// clicks `handleKeybinds` consumes, held use and attack, then
|
||||
/// `missTime`. `attack_down` is `keyAttack.isDown()` with no screen and
|
||||
/// the mouse grabbed.
|
||||
pub fn tick(
|
||||
&mut self,
|
||||
w: &mut impl HandWorld,
|
||||
attack_clicks: u32,
|
||||
use_clicks: u32,
|
||||
attack_down: bool,
|
||||
use_down: bool,
|
||||
) {
|
||||
if self.right_click_delay > 0 {
|
||||
self.right_click_delay -= 1;
|
||||
}
|
||||
let mut instant = false;
|
||||
if w.using_item() {
|
||||
if !use_down {
|
||||
w.release_using();
|
||||
}
|
||||
} else {
|
||||
for _ in 0..attack_clicks {
|
||||
instant |= self.start_attack(w);
|
||||
}
|
||||
for _ in 0..use_clicks {
|
||||
self.start_use_item(w);
|
||||
}
|
||||
}
|
||||
if use_down && self.right_click_delay == 0 && !w.using_item() {
|
||||
self.start_use_item(w);
|
||||
}
|
||||
self.continue_attack(w, !instant && attack_down);
|
||||
if self.miss_time > 0 {
|
||||
self.miss_time -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
#[test]
|
||||
fn a_swing_lasts_its_duration_and_restarts_after_half() {
|
||||
let mut s = SwingState::default();
|
||||
assert!(s.start_if_able(Hand::Main, SwingAnimation::DEFAULT, 6));
|
||||
let mut seen = Vec::new();
|
||||
for _ in 0..9 {
|
||||
s.tick();
|
||||
seen.push(s.animation);
|
||||
}
|
||||
assert_eq!(
|
||||
seen,
|
||||
[
|
||||
0.0,
|
||||
1.0 / 6.0,
|
||||
2.0 / 6.0,
|
||||
0.5,
|
||||
4.0 / 6.0,
|
||||
5.0 / 6.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
);
|
||||
assert!(!s.swinging());
|
||||
s.start_if_able(Hand::Main, SwingAnimation::DEFAULT, 6);
|
||||
s.tick();
|
||||
s.tick();
|
||||
assert!(!s.start_if_able(Hand::Main, SwingAnimation::DEFAULT, 6));
|
||||
s.tick();
|
||||
s.tick();
|
||||
assert!(s.start_if_able(Hand::Main, SwingAnimation::DEFAULT, 6));
|
||||
s.tick();
|
||||
// Restarting the same swing wraps forward rather than snapping back.
|
||||
assert_eq!(
|
||||
s.animation(0.5),
|
||||
(s.old_animation + s.animation + 1.0) / 2.0
|
||||
);
|
||||
}
|
||||
#[test]
|
||||
fn haste_shortens_and_fatigue_lengthens_swings() {
|
||||
let d = SwingAnimation::DEFAULT;
|
||||
assert_eq!(swing_duration(d, None, None), 6);
|
||||
assert_eq!(swing_duration(d, Some(1), Some(0)), 4);
|
||||
assert_eq!(swing_duration(d, None, Some(2)), 12);
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,7 @@ mod game_mode;
|
||||
mod ghasts;
|
||||
mod golems;
|
||||
mod growth;
|
||||
mod hand;
|
||||
mod item_draw;
|
||||
mod jukebox;
|
||||
mod lan;
|
||||
@@ -685,12 +686,18 @@ struct Game<'a> {
|
||||
orbs: Vec<ExperienceOrb>,
|
||||
xp_delay: u32,
|
||||
last_level_up: u64,
|
||||
/// Arm swing: ticks into the 6-tick swing (None when idle), previous/current progress.
|
||||
swing: Option<u32>,
|
||||
swing_anim: (f32, f32),
|
||||
/// Main-hand equip height (previous, current) and the item it shows.
|
||||
hand_height: (f32, f32),
|
||||
hand_item: Option<ItemStack>,
|
||||
/// The arm swing (`LivingEntity.SwingState`) and how many swings started.
|
||||
swing: horizon_client::first_person::SwingState,
|
||||
swings_started: u32,
|
||||
/// The first-person equip heights and the items the hands show (with
|
||||
/// the slot each came from).
|
||||
heights: horizon_client::first_person::HandHeights,
|
||||
visible_hands: [(usize, Option<ItemStack>); 2],
|
||||
/// `Minecraft`'s attack handling, attack clicks since the last tick and
|
||||
/// the attack strength tickers the hand reads.
|
||||
clicks: horizon_client::first_person::Clicks,
|
||||
attack_clicks: u32,
|
||||
hand_strength: horizon_client::attack_strength::AttackStrength,
|
||||
settings: Settings,
|
||||
/// Where the options screen returns: true = title, false = pause menu.
|
||||
options_from_title: bool,
|
||||
@@ -2789,7 +2796,7 @@ impl Game<'_> {
|
||||
// ticks; ServerLevel.tick then runs the scheduled and random block
|
||||
// ticks before any entity, so what they drop or spawn (dispensed
|
||||
// items, popped crops) moves on the tick it appears, as in vanilla.
|
||||
self.tick_mining()?;
|
||||
self.tick_local_hand()?;
|
||||
self.postprocess_chunks()?;
|
||||
if running {
|
||||
self.tick_blocks()?;
|
||||
@@ -2841,7 +2848,7 @@ impl Game<'_> {
|
||||
self.tick_particles();
|
||||
}
|
||||
if self.right && self.use_delay == 0 && self.screen == Screen::Playing {
|
||||
self.use_item()?;
|
||||
self.use_with_hand()?;
|
||||
self.use_delay = 4;
|
||||
}
|
||||
Ok(())
|
||||
@@ -6374,38 +6381,6 @@ impl Game<'_> {
|
||||
}
|
||||
self.damage_held(1);
|
||||
}
|
||||
/// LivingEntity.swing: restart the 6-tick arm swing.
|
||||
fn swing_arm(&mut self) {
|
||||
if self.swing.is_none_or(|t| t >= 3) {
|
||||
self.swing = Some(0);
|
||||
}
|
||||
}
|
||||
/// LivingEntity.updateSwingTime and ItemInHandRenderer.tick (equip height).
|
||||
fn tick_hand(&mut self) {
|
||||
self.swing_anim.0 = self.swing_anim.1;
|
||||
if let Some(t) = self.swing {
|
||||
let t = t + 1;
|
||||
if t >= 6 {
|
||||
self.swing = None;
|
||||
self.swing_anim.1 = 0.0;
|
||||
} else {
|
||||
self.swing = Some(t);
|
||||
self.swing_anim.1 = t as f32 / 6.0;
|
||||
}
|
||||
}
|
||||
self.hand_height.0 = self.hand_height.1;
|
||||
let held = self.inventory[self.selected].clone();
|
||||
let same = match (&held, &self.hand_item) {
|
||||
(Some(a), Some(b)) => a.item == b.item,
|
||||
(None, None) => true,
|
||||
_ => false,
|
||||
};
|
||||
let target = if same { 1.0 } else { 0.0 };
|
||||
self.hand_height.1 += (target - self.hand_height.1).clamp(-0.4, 0.4);
|
||||
if self.hand_height.1 < 0.1 {
|
||||
self.hand_item = held;
|
||||
}
|
||||
}
|
||||
/// FirstPersonHandsAndItemsRenderer: the right arm or held item in view
|
||||
/// space, converted to camera-relative world space.
|
||||
fn hand_geometry(&mut self, alpha: f64) -> Vec<Vertex> {
|
||||
@@ -6423,14 +6398,15 @@ impl Game<'_> {
|
||||
return out;
|
||||
}
|
||||
let a = alpha as f32;
|
||||
let attack = self.swing_anim.0 + (self.swing_anim.1 - self.swing_anim.0) * a;
|
||||
let attack = if self.swing.is_none() && self.swing_anim.1 == 0.0 {
|
||||
0.0
|
||||
// FirstPersonHandsAndItemsRenderer: the swing of the hand that
|
||||
// swings, and its inverse arm height (the swap scale is 1 for every
|
||||
// item but spears).
|
||||
let attack = if self.swing.attack_hand() == horizon_client::first_person::Hand::Main {
|
||||
self.swing.animation(a)
|
||||
} else {
|
||||
attack
|
||||
0.0
|
||||
};
|
||||
let height = self.hand_height.0 + (self.hand_height.1 - self.hand_height.0) * a;
|
||||
let inverse_height = 1.0 - height;
|
||||
let inverse_height = 1.0 - self.heights.interpolated(a)[0];
|
||||
let (yaw, pitch) = (self.yaw.to_radians(), self.pitch.to_radians());
|
||||
let forward = glam::Vec3::new(
|
||||
-yaw.sin() * pitch.cos(),
|
||||
@@ -6451,7 +6427,8 @@ impl Game<'_> {
|
||||
if self.held_map_geometry(to_world, attack, inverse_height, packed, &mut out) {
|
||||
return out;
|
||||
}
|
||||
match self.hand_item.clone() {
|
||||
let [main_item, _] = self.visible_hand_items();
|
||||
match main_item {
|
||||
None => {
|
||||
let Some(arm) = self.res.player_arm.clone() else {
|
||||
return out;
|
||||
@@ -7319,6 +7296,7 @@ impl Game<'_> {
|
||||
additive: &additive,
|
||||
celestial: &celestial,
|
||||
hand: &hand,
|
||||
hand_fov_degrees: self.hud_fov_degrees(alpha as f32, camera.to_array()),
|
||||
screen: &screen,
|
||||
border,
|
||||
game_time: self.world.game_time as f32,
|
||||
@@ -7491,22 +7469,20 @@ impl Game<'_> {
|
||||
}
|
||||
match button {
|
||||
MouseButton::Left => {
|
||||
if pressed && self.attack() {
|
||||
return Ok(());
|
||||
// KeyMapping.click: Minecraft.tick starts the attack.
|
||||
if pressed {
|
||||
self.attack_clicks += 1;
|
||||
}
|
||||
self.toggles
|
||||
.button(2, pressed, false, self.settings.toggle_attack);
|
||||
self.left = self.toggles.is_down(2);
|
||||
if pressed {
|
||||
self.destroy_delay = 0;
|
||||
}
|
||||
}
|
||||
MouseButton::Right => {
|
||||
self.toggles
|
||||
.button(3, pressed, false, self.settings.toggle_use);
|
||||
self.right = self.toggles.is_down(3);
|
||||
if pressed {
|
||||
self.use_item()?;
|
||||
self.use_with_hand()?;
|
||||
self.use_delay = 4;
|
||||
}
|
||||
}
|
||||
@@ -8357,10 +8333,13 @@ pub fn run() -> Result<()> {
|
||||
orbs: Vec::new(),
|
||||
xp_delay: 0,
|
||||
last_level_up: 0,
|
||||
swing: None,
|
||||
swing_anim: (0.0, 0.0),
|
||||
hand_height: (1.0, 1.0),
|
||||
hand_item: None,
|
||||
swing: Default::default(),
|
||||
swings_started: 0,
|
||||
heights: Default::default(),
|
||||
visible_hands: [(0, None), (0, None)],
|
||||
clicks: Default::default(),
|
||||
attack_clicks: 0,
|
||||
hand_strength: Default::default(),
|
||||
settings,
|
||||
options_from_title: false,
|
||||
dragging: false,
|
||||
|
||||
@@ -183,7 +183,7 @@ impl Game<'_> {
|
||||
true
|
||||
}
|
||||
/// The armor stand under the crosshair, its distance and the hit point.
|
||||
fn armor_stand_hit(&self) -> Option<(usize, f64, [f64; 3])> {
|
||||
pub(super) fn armor_stand_hit(&self) -> Option<(usize, f64, [f64; 3])> {
|
||||
let eye = self.eye_position()?;
|
||||
let dir = view_vector(self.yaw, self.pitch);
|
||||
let reach: f64 = if self.creative { 5.0 } else { 3.0 };
|
||||
|
||||
@@ -597,7 +597,7 @@ impl Game<'_> {
|
||||
self.swing_arm();
|
||||
true
|
||||
}
|
||||
fn boat_hit(&self) -> Option<(usize, f64)> {
|
||||
pub(super) fn boat_hit(&self) -> Option<(usize, f64)> {
|
||||
let eye = self.eye_position()?;
|
||||
let dir = view_vector(self.yaw, self.pitch);
|
||||
let reach: f64 = if self.creative { 5.0 } else { 3.0 };
|
||||
|
||||
@@ -722,10 +722,9 @@ impl Game<'_> {
|
||||
.play("minecraft:entity.ender_dragon.hurt", Some(at), 5.0, pitch);
|
||||
}
|
||||
/// Player melee on the dragon's parts or a crystal under the crosshair.
|
||||
pub(super) fn attack_dragon(&mut self) -> bool {
|
||||
let Some(eye) = self.eye_position() else {
|
||||
return false;
|
||||
};
|
||||
/// The dragon part under the crosshair within reach: its id and distance.
|
||||
pub(super) fn dragon_hit(&self) -> Option<(u32, f64)> {
|
||||
let eye = self.eye_position()?;
|
||||
let dir = super::view_vector(self.yaw, self.pitch);
|
||||
let reach: f64 = if self.creative { 5.0 } else { 3.0 };
|
||||
let mut best: Option<(u32, f64)> = None;
|
||||
@@ -750,7 +749,12 @@ impl Game<'_> {
|
||||
best = Some((id, t0));
|
||||
}
|
||||
}
|
||||
let Some((id, d)) = best else { return false };
|
||||
best
|
||||
}
|
||||
pub(super) fn attack_dragon(&mut self) -> bool {
|
||||
let Some((id, d)) = self.dragon_hit() else {
|
||||
return false;
|
||||
};
|
||||
if !self.before_block(d) || self.mob_hit().is_some_and(|m| m.1 < d) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -86,6 +86,15 @@ impl Game<'_> {
|
||||
false,
|
||||
)
|
||||
}
|
||||
/// `Camera.calculateHudFov`: the first-person hand's field of view.
|
||||
pub(super) fn hud_fov_degrees(&self, partial: f32, camera: [f64; 3]) -> f32 {
|
||||
self.view.calculate_hud_fov(
|
||||
partial,
|
||||
self.fov_effect_scale(),
|
||||
self.death_time(),
|
||||
self.camera_fluid(camera),
|
||||
)
|
||||
}
|
||||
/// The pose `GameRenderer.renderLevel` multiplies into the projection:
|
||||
/// `bobHurt`, then `bobView` with the View Bobbing option.
|
||||
pub(super) fn bob_matrix(&self, partial: f32) -> glam::Mat4 {
|
||||
|
||||
@@ -0,0 +1,372 @@
|
||||
//! The local player's hand: clicks and held attack through
|
||||
//! `horizon_client::first_person` (`Minecraft.startAttack` /
|
||||
//! `continueAttack`, `MultiPlayerGameMode` block breaking), the arm swing
|
||||
//! (`LivingEntity.SwingState`) and the first-person equip heights
|
||||
//! (`FirstPersonHandsAndItems`) with the item swap ticker they read.
|
||||
use super::{Game, Mining, Screen};
|
||||
use horizon_client::{
|
||||
Result,
|
||||
attack_strength::HeldStack,
|
||||
first_person::{Hand, HandWorld, Hit, SwingAnimation, UseResult, swing_duration},
|
||||
items::ItemStack,
|
||||
};
|
||||
|
||||
/// The off hand's place in `visible_hands` (the main hand uses its hotbar slot).
|
||||
const OFFHAND: usize = usize::MAX;
|
||||
|
||||
impl Game<'_> {
|
||||
/// `LivingEntity.swing` with `getModifiedSwingDuration`.
|
||||
pub(super) fn swing_hand(&mut self, hand: Hand, animation: SwingAnimation) {
|
||||
let effects = &self.potions.effects;
|
||||
let dig_speed = effects
|
||||
.amplifier("haste")
|
||||
.max(effects.amplifier("conduit_power"));
|
||||
let fatigue = effects.amplifier("mining_fatigue");
|
||||
let duration = swing_duration(animation, dig_speed, fatigue);
|
||||
if self.swing.start_if_able(hand, animation, duration) {
|
||||
self.swings_started += 1;
|
||||
}
|
||||
}
|
||||
/// `swing(InteractionHand.MAIN_HAND)` with the default animation.
|
||||
pub(super) fn swing_arm(&mut self) {
|
||||
self.swing_hand(Hand::Main, SwingAnimation::DEFAULT);
|
||||
}
|
||||
/// `Player.resetAttackStrengthTicker`.
|
||||
pub(super) fn reset_attack_strength(&mut self) {
|
||||
self.attack_ticks = 0;
|
||||
self.hand_strength.reset();
|
||||
}
|
||||
/// The attack and use part of `Minecraft.tick` for the local player:
|
||||
/// attack clicks since the last tick and the held attack button.
|
||||
pub(super) fn tick_local_hand(&mut self) -> Result<()> {
|
||||
let attack_clicks = std::mem::take(&mut self.attack_clicks);
|
||||
if self.screen == Screen::Playing && self.title.is_none() {
|
||||
let mut clicks = std::mem::take(&mut self.clicks);
|
||||
// keyAttack.isDown(); playing implies the grabbed mouse here
|
||||
// (scripts under --control hold buttons without grabbing it).
|
||||
let down = self.left;
|
||||
let ticks = self.clicks.destroying.ticks;
|
||||
let mut world = GameHands {
|
||||
game: self,
|
||||
error: None,
|
||||
};
|
||||
clicks.tick(&mut world, attack_clicks, 0, down, false);
|
||||
let error = world.error.take();
|
||||
self.clicks = clicks;
|
||||
if let Some(e) = error {
|
||||
return Err(e);
|
||||
}
|
||||
// A tick of breaking: the hit sound every fourth tick and the
|
||||
// cracking particles.
|
||||
let d = &self.clicks.destroying;
|
||||
if d.active && d.ticks > ticks {
|
||||
let (pos, first) = (d.pos, (d.ticks as u32 - 1).is_multiple_of(4));
|
||||
let state = self.world.block(pos[0], pos[1], pos[2]);
|
||||
if first {
|
||||
let sounds = self.res.facts.get(state).sounds.clone();
|
||||
self.audio.play(
|
||||
&sounds.hit,
|
||||
Some(pos.map(|v| f64::from(v) + 0.5)),
|
||||
(sounds.volume + 1.0) / 8.0,
|
||||
sounds.pitch * 0.5,
|
||||
);
|
||||
}
|
||||
if let Some(hit) = self.pick() {
|
||||
self.crack_particle(pos, hit.face, state);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Minecraft.tick: a screen keeps the attack from starting.
|
||||
self.clicks.miss_time = 10000;
|
||||
}
|
||||
let d = &self.clicks.destroying;
|
||||
self.mining = d.active.then_some(Mining {
|
||||
pos: d.pos,
|
||||
progress: d.progress,
|
||||
ticks: d.ticks as u32,
|
||||
});
|
||||
Ok(())
|
||||
}
|
||||
/// `BlockBehaviour.getDestroyProgress` with `Player.getDestroySpeed`.
|
||||
pub(super) fn destroy_progress(&self, pos: [i32; 3]) -> f32 {
|
||||
let state = self.world.block(pos[0], pos[1], pos[2]);
|
||||
let facts = self.res.facts.get(state);
|
||||
if facts.hardness == -1.0 {
|
||||
return 0.0;
|
||||
}
|
||||
let held = self.held();
|
||||
let mut speed = self.res.items.mining_speed(held, &facts.name);
|
||||
speed = self.modify_destroy_speed(speed);
|
||||
if let Some(eye) = self.eye_position()
|
||||
&& self
|
||||
.res
|
||||
.facts
|
||||
.get(self.world.block(
|
||||
eye[0].floor() as i32,
|
||||
eye[1].floor() as i32,
|
||||
eye[2].floor() as i32,
|
||||
))
|
||||
.fluid
|
||||
== horizon_client::blocks::Fluid::Water
|
||||
{
|
||||
speed *= self.submerged_mining_speed();
|
||||
}
|
||||
if self.player.as_ref().is_some_and(|p| !p.ground.on_ground) {
|
||||
speed /= 5.0;
|
||||
}
|
||||
let harvest = !facts.requires_tool || self.res.items.correct_for_drops(held, &facts.name);
|
||||
speed / facts.hardness / if harvest { 30.0 } else { 100.0 }
|
||||
}
|
||||
/// Whether an attack would hit an entity rather than the block behind
|
||||
/// it: the crosshair's `EntityHitResult`.
|
||||
fn entity_targeted(&self) -> bool {
|
||||
let before = |d: Option<f64>| d.is_some_and(|d| self.before_block(d));
|
||||
before(self.painting_hit().map(|h| h.1))
|
||||
|| before(self.frame_hit().map(|h| h.1))
|
||||
|| before(self.armor_stand_hit().map(|h| h.1))
|
||||
|| before(self.boat_hit().map(|h| h.1))
|
||||
|| before(self.cart_hit().map(|h| h.1))
|
||||
|| before(self.dragon_hit().map(|h| h.1))
|
||||
|| before(self.mob_hit().map(|h| h.1))
|
||||
}
|
||||
/// `LocalPlayer.isHandsBusy`: paddling a boat.
|
||||
fn hands_busy(&self) -> bool {
|
||||
self.riding
|
||||
.is_some_and(|id| self.boats.iter().any(|b| b.id == id))
|
||||
&& [
|
||||
winit::keyboard::KeyCode::KeyW,
|
||||
winit::keyboard::KeyCode::KeyS,
|
||||
winit::keyboard::KeyCode::KeyA,
|
||||
winit::keyboard::KeyCode::KeyD,
|
||||
]
|
||||
.iter()
|
||||
.any(|k| self.keys.contains(k))
|
||||
}
|
||||
/// `MultiPlayerGameMode.startUseItem`'s bookkeeping around the game's
|
||||
/// use: nothing starts while a block is being broken or the hands are
|
||||
/// busy, and `LocalPlayer.itemUsed` drops the hand after a use that
|
||||
/// swung and spent (or, with infinite materials, kept) the item, or that
|
||||
/// started using it.
|
||||
pub(super) fn use_with_hand(&mut self) -> Result<()> {
|
||||
if self.clicks.destroying.active || self.hands_busy() {
|
||||
return Ok(());
|
||||
}
|
||||
let before = self.held().cloned();
|
||||
let swings = self.swings_started;
|
||||
let using = self.using.is_some();
|
||||
self.use_item()?;
|
||||
let swung = self.swings_started != swings;
|
||||
let after = self.held().cloned();
|
||||
let spent = match (&before, &after) {
|
||||
(Some(a), Some(b)) => a.count != b.count || a.item != b.item || self.creative,
|
||||
_ => false,
|
||||
};
|
||||
if (swung && spent) || (!using && self.using.is_some() && after.is_some()) {
|
||||
self.heights.item_used(Hand::Main);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
/// `LocalPlayer.tick`: the swing (`LivingEntity.baseTick`), the attack
|
||||
/// strength and item swap tickers (`Player.tick`), then
|
||||
/// `FirstPersonHandsAndItems.tick`.
|
||||
pub(super) fn tick_hand(&mut self) {
|
||||
self.swing.tick();
|
||||
let main = self.inventory[self.selected].clone();
|
||||
self.hand_strength.tick(main.as_ref().map(|s| HeldStack {
|
||||
item: s.item.to_string(),
|
||||
rest: format!("{} {} {:?}", s.count, s.damage, s.extra),
|
||||
}));
|
||||
let next = [(self.selected, main), (OFFHAND, self.offhand.clone())];
|
||||
// shouldInstantlyReplaceVisibleItem: the same stack, or an equal one
|
||||
// (matchesIgnoringComponents; every item plays the swap animation).
|
||||
// A stack that stays in its slot with the same item is the same
|
||||
// stack, whatever its count (vanilla shrinks and grows it in place).
|
||||
let mut changed = [false; 2];
|
||||
for h in 0..2 {
|
||||
let same = match (&self.visible_hands[h], &next[h]) {
|
||||
((_, None), (_, None)) => true,
|
||||
((slot, Some(a)), (next_slot, Some(b))) => {
|
||||
a.item == b.item
|
||||
&& (slot == next_slot || (a.count == b.count && a.extra == b.extra))
|
||||
}
|
||||
_ => false,
|
||||
};
|
||||
if same {
|
||||
self.visible_hands[h] = next[h].clone();
|
||||
}
|
||||
changed[h] = !same;
|
||||
}
|
||||
let speed = self.main_hand_attack_speed();
|
||||
let replace = self.heights.tick(
|
||||
self.hands_busy(),
|
||||
self.hand_strength.swap_scale(1.0, speed),
|
||||
changed,
|
||||
);
|
||||
for h in 0..2 {
|
||||
if replace[h] {
|
||||
self.visible_hands[h] = next[h].clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
/// `Attributes.ATTACK_SPEED` with the main-hand item's modifier.
|
||||
fn main_hand_attack_speed(&self) -> f64 {
|
||||
horizon_client::attack_strength::BASE_ATTACK_SPEED
|
||||
+ self
|
||||
.held()
|
||||
.and_then(|h| self.res.items.get(&h.item))
|
||||
.map_or(0.0, |i| f64::from(i.attack_speed))
|
||||
}
|
||||
/// The visible main- and off-hand items.
|
||||
pub(super) fn visible_hand_items(&self) -> [Option<ItemStack>; 2] {
|
||||
[
|
||||
self.visible_hands[0].1.clone(),
|
||||
self.visible_hands[1].1.clone(),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/// The game as `first_person`'s world: the crosshair, breaking and attacking.
|
||||
struct GameHands<'g, 'a> {
|
||||
game: &'g mut Game<'a>,
|
||||
error: Option<Box<dyn std::error::Error>>,
|
||||
}
|
||||
impl GameHands<'_, '_> {
|
||||
fn keep(&mut self, r: Result<()>) {
|
||||
if let Err(e) = r
|
||||
&& self.error.is_none()
|
||||
{
|
||||
self.error = Some(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
impl HandWorld for GameHands<'_, '_> {
|
||||
fn hit(&mut self) -> Hit {
|
||||
if self.game.entity_targeted() {
|
||||
return Hit::Entity;
|
||||
}
|
||||
match self.game.pick() {
|
||||
Some(h) => Hit::Block {
|
||||
pos: h.pos,
|
||||
face: match h.face {
|
||||
[0, -1, 0] => 0,
|
||||
[0, 1, 0] => 1,
|
||||
[0, 0, -1] => 2,
|
||||
[0, 0, 1] => 3,
|
||||
[-1, 0, 0] => 4,
|
||||
_ => 5,
|
||||
},
|
||||
},
|
||||
None => Hit::Miss,
|
||||
}
|
||||
}
|
||||
fn is_air(&mut self, pos: [i32; 3]) -> bool {
|
||||
let state = self.game.world.block(pos[0], pos[1], pos[2]);
|
||||
self.game.res.facts.get(state).name.ends_with("air")
|
||||
}
|
||||
fn creative(&self) -> bool {
|
||||
self.game.creative
|
||||
}
|
||||
fn spectator(&self) -> bool {
|
||||
self.game.spectator()
|
||||
}
|
||||
fn instabuild(&self) -> bool {
|
||||
self.game.creative
|
||||
}
|
||||
fn hands_busy(&self) -> bool {
|
||||
self.game.hands_busy()
|
||||
}
|
||||
fn using_item(&self) -> bool {
|
||||
self.game.using.is_some()
|
||||
}
|
||||
fn item_enabled(&mut self, _: Hand) -> bool {
|
||||
true
|
||||
}
|
||||
fn held_empty(&mut self, hand: Hand) -> bool {
|
||||
match hand {
|
||||
Hand::Main => self.game.held().is_none(),
|
||||
Hand::Off => self.game.offhand.is_none(),
|
||||
}
|
||||
}
|
||||
fn held_count(&mut self, hand: Hand) -> i32 {
|
||||
let stack = match hand {
|
||||
Hand::Main => self.game.held(),
|
||||
Hand::Off => self.game.offhand.as_ref(),
|
||||
};
|
||||
stack.map_or(0, |s| s.count as i32)
|
||||
}
|
||||
fn infinite_materials(&self) -> bool {
|
||||
self.game.creative
|
||||
}
|
||||
fn cannot_attack(&mut self) -> bool {
|
||||
false
|
||||
}
|
||||
fn piercing_weapon(&mut self) -> bool {
|
||||
false
|
||||
}
|
||||
fn attack_animation(&mut self) -> SwingAnimation {
|
||||
SwingAnimation::DEFAULT
|
||||
}
|
||||
fn interact_animation(&mut self, _: Hand) -> SwingAnimation {
|
||||
SwingAnimation::DEFAULT
|
||||
}
|
||||
fn piercing_attack(&mut self, _: SwingAnimation) {}
|
||||
fn attack_entity(&mut self) -> bool {
|
||||
self.game.attack()
|
||||
}
|
||||
fn block_action_restricted(&mut self, _: [i32; 3]) -> bool {
|
||||
!self.game.may_build()
|
||||
}
|
||||
fn within_border(&mut self, _: [i32; 3]) -> bool {
|
||||
true
|
||||
}
|
||||
fn attack_block(&mut self, _: [i32; 3]) {}
|
||||
fn destroy_progress(&mut self, pos: [i32; 3]) -> f32 {
|
||||
self.game.destroy_progress(pos)
|
||||
}
|
||||
fn destroy_block(&mut self, pos: [i32; 3]) -> bool {
|
||||
if self.is_air(pos) {
|
||||
return false;
|
||||
}
|
||||
// Item.canDestroyBlock: swords, tridents and maces cannot break
|
||||
// blocks in creative.
|
||||
let held = self.game.held().map(|s| s.item.to_string());
|
||||
if self.game.creative
|
||||
&& held.is_some_and(|i| {
|
||||
i.ends_with("_sword") || i == "minecraft:trident" || i == "minecraft:mace"
|
||||
})
|
||||
{
|
||||
return false;
|
||||
}
|
||||
let r = self.game.break_block(pos);
|
||||
self.keep(r);
|
||||
true
|
||||
}
|
||||
fn main_hand_key(&mut self) -> String {
|
||||
self.game
|
||||
.held()
|
||||
.map_or(String::new(), |s| format!("{} {:?}", s.item, s.extra))
|
||||
}
|
||||
fn destroy_stage(&mut self, _: [i32; 3], _: Option<i32>) {}
|
||||
fn swing(&mut self, hand: Hand, animation: SwingAnimation) {
|
||||
self.game.swing_hand(hand, animation);
|
||||
}
|
||||
fn reset_attack_strength(&mut self) {
|
||||
self.game.reset_attack_strength();
|
||||
}
|
||||
fn entity_within_border(&mut self) -> bool {
|
||||
true
|
||||
}
|
||||
fn use_on_entity(&mut self, _: Hand) -> Option<UseResult> {
|
||||
None
|
||||
}
|
||||
fn use_on_block(&mut self, _: Hand) -> UseResult {
|
||||
UseResult::Pass
|
||||
}
|
||||
fn use_item(&mut self, _: Hand) -> UseResult {
|
||||
UseResult::Pass
|
||||
}
|
||||
fn item_used(&mut self, hand: Hand) {
|
||||
self.game.heights.item_used(hand);
|
||||
}
|
||||
fn release_using(&mut self) {}
|
||||
}
|
||||
@@ -29,8 +29,7 @@ pub(super) struct GuestPlay {
|
||||
using: Option<(usize, u32)>,
|
||||
use_delay: u32,
|
||||
attack_ticks: u32,
|
||||
swing: Option<u32>,
|
||||
swing_anim: (f32, f32),
|
||||
swing: horizon_client::first_person::SwingState,
|
||||
/// The block being dug and the face the client aimed at.
|
||||
digging: Option<([i32; 3], [i32; 3])>,
|
||||
last_progress: i32,
|
||||
@@ -131,8 +130,7 @@ impl Game<'_> {
|
||||
let using = std::mem::replace(&mut self.using, play.using.take());
|
||||
let use_delay = std::mem::replace(&mut self.use_delay, play.use_delay);
|
||||
let attack_ticks = std::mem::replace(&mut self.attack_ticks, play.attack_ticks);
|
||||
let swing = std::mem::replace(&mut self.swing, play.swing.take());
|
||||
let swing_anim = std::mem::replace(&mut self.swing_anim, play.swing_anim);
|
||||
let swing = std::mem::replace(&mut self.swing, play.swing);
|
||||
let (left, right) = (self.left, self.right);
|
||||
self.left = play.digging.is_some();
|
||||
self.right = play.using.is_some() || self.using.is_some();
|
||||
@@ -153,7 +151,6 @@ impl Game<'_> {
|
||||
play.use_delay = std::mem::replace(&mut self.use_delay, use_delay);
|
||||
play.attack_ticks = std::mem::replace(&mut self.attack_ticks, attack_ticks);
|
||||
play.swing = std::mem::replace(&mut self.swing, swing);
|
||||
play.swing_anim = std::mem::replace(&mut self.swing_anim, swing_anim);
|
||||
self.container = container;
|
||||
self.screen = screen;
|
||||
if sneak {
|
||||
@@ -689,7 +686,7 @@ impl Game<'_> {
|
||||
.mining
|
||||
.as_ref()
|
||||
.map_or(-1, |m| (m.progress.clamp(0.0, 1.0) * 10.0) as i32 - 1);
|
||||
let swinging = play.swing.is_some();
|
||||
let swinging = play.swing.swinging();
|
||||
if progress != play.last_progress && progress >= 0 {
|
||||
play.last_progress = progress;
|
||||
host.hub.broadcast_near(
|
||||
@@ -779,7 +776,7 @@ impl Game<'_> {
|
||||
};
|
||||
let (id, at) = (g.entity_id, g.position);
|
||||
let play = host.play.get_mut(&conn).expect("play");
|
||||
let swinging = play.swing == Some(0);
|
||||
let swinging = play.swing.swinging() && play.swing.ticks == 0;
|
||||
if swinging && !play.swung {
|
||||
host.hub.swing(id, 0, at, Some(conn));
|
||||
}
|
||||
|
||||
@@ -890,7 +890,7 @@ impl Game<'_> {
|
||||
self.swing_arm();
|
||||
true
|
||||
}
|
||||
fn cart_hit(&self) -> Option<(usize, f64)> {
|
||||
pub(super) fn cart_hit(&self) -> Option<(usize, f64)> {
|
||||
let eye = self.eye_position()?;
|
||||
let dir = view_vector(self.yaw, self.pitch);
|
||||
let reach: f64 = if self.creative { 5.0 } else { 3.0 };
|
||||
|
||||
@@ -297,8 +297,8 @@ impl Game<'_> {
|
||||
}
|
||||
let crouching = p.pose == Pose::Crouching;
|
||||
let (position, flying) = (p.position, p.flying || p.fall_flying);
|
||||
let attack = self.swing_anim;
|
||||
let swinging = self.swing.is_some();
|
||||
let attack = (self.swing.old_animation, self.swing.animation);
|
||||
let swinging = self.swing.swinging();
|
||||
let (yaw, pitch) = (self.yaw, self.pitch);
|
||||
let main = self.inventory[self.selected]
|
||||
.as_ref()
|
||||
|
||||
@@ -78,6 +78,9 @@ pub struct Frame<'a> {
|
||||
pub celestial: &'a [Vertex],
|
||||
/// First-person hand and held item, drawn after clearing depth.
|
||||
pub hand: &'a [Vertex],
|
||||
/// `CameraRenderState.hudFov`: the hand's own field of view
|
||||
/// (`GameRenderer.render3dHud`).
|
||||
pub hand_fov_degrees: f32,
|
||||
/// Full-screen camera effects drawn over the world and hand, under the HUD.
|
||||
pub screen: &'a [crate::screen_effects::ScreenQuad],
|
||||
/// The world border wall, when near enough to be drawn.
|
||||
@@ -139,6 +142,9 @@ pub struct Renderer {
|
||||
screen_buffer: wgpu::Buffer,
|
||||
screen_capacity: u64,
|
||||
entity_group: wgpu::BindGroup,
|
||||
/// The entity resources with the hand's projection (`hand_globals`).
|
||||
hand_group: wgpu::BindGroup,
|
||||
hand_globals: wgpu::Buffer,
|
||||
entity_buffer: wgpu::Buffer,
|
||||
entity_capacity: u64,
|
||||
group: wgpu::BindGroup,
|
||||
@@ -470,6 +476,12 @@ impl Renderer {
|
||||
usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
|
||||
mapped_at_creation: false,
|
||||
});
|
||||
let hand_globals = device.create_buffer(&wgpu::BufferDescriptor {
|
||||
label: Some("First-person hand globals"),
|
||||
size: std::mem::size_of::<Globals>() as u64,
|
||||
usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
|
||||
mapped_at_creation: false,
|
||||
});
|
||||
let (mips, mip_levels) = mip_chain(sprite_pixels, sprite_size, layers);
|
||||
let sprite_texture = device.create_texture_with_data(
|
||||
&queue,
|
||||
@@ -665,6 +677,32 @@ impl Renderer {
|
||||
},
|
||||
],
|
||||
});
|
||||
let hand_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
|
||||
label: Some("First-person hand resources"),
|
||||
layout: &entity_bindings,
|
||||
entries: &[
|
||||
wgpu::BindGroupEntry {
|
||||
binding: 0,
|
||||
resource: hand_globals.as_entire_binding(),
|
||||
},
|
||||
wgpu::BindGroupEntry {
|
||||
binding: 1,
|
||||
resource: wgpu::BindingResource::TextureView(&atlas_view),
|
||||
},
|
||||
wgpu::BindGroupEntry {
|
||||
binding: 2,
|
||||
resource: wgpu::BindingResource::Sampler(&atlas_sampler),
|
||||
},
|
||||
wgpu::BindGroupEntry {
|
||||
binding: 3,
|
||||
resource: wgpu::BindingResource::TextureView(&lightmap_view),
|
||||
},
|
||||
wgpu::BindGroupEntry {
|
||||
binding: 4,
|
||||
resource: wgpu::BindingResource::Sampler(&lightmap_sampler),
|
||||
},
|
||||
],
|
||||
});
|
||||
let entity_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
||||
label: Some("Entity layout"),
|
||||
bind_group_layouts: &[Some(&entity_bindings)],
|
||||
@@ -1065,6 +1103,8 @@ impl Renderer {
|
||||
screen_buffer,
|
||||
screen_capacity,
|
||||
entity_group,
|
||||
hand_group,
|
||||
hand_globals,
|
||||
entity_buffer,
|
||||
entity_capacity,
|
||||
group,
|
||||
@@ -1492,6 +1532,20 @@ impl Renderer {
|
||||
};
|
||||
self.queue
|
||||
.write_buffer(&self.globals, 0, bytemuck::bytes_of(&globals));
|
||||
// GameRenderer.render3dHud: the hand's projection at hudFov, with the
|
||||
// bob in its pose rather than the projection (same product).
|
||||
let hand_projection = Mat4::from_cols_array(&crate::camera::hand_projection(
|
||||
frame.hand_fov_degrees,
|
||||
self.config.width as f32,
|
||||
self.config.height.max(1) as f32,
|
||||
(frame.distance * 4.0).max(1024.0),
|
||||
));
|
||||
let hand_globals = Globals {
|
||||
view_proj: (hand_projection * frame.bob * view).to_cols_array_2d(),
|
||||
..globals
|
||||
};
|
||||
self.queue
|
||||
.write_buffer(&self.hand_globals, 0, bytemuck::bytes_of(&hand_globals));
|
||||
// Frustum culling and camera-relative origins.
|
||||
let planes = frustum(view_proj);
|
||||
let camera = frame.camera;
|
||||
@@ -1803,7 +1857,7 @@ impl Renderer {
|
||||
..Default::default()
|
||||
});
|
||||
pass.set_pipeline(&self.entity_pipeline);
|
||||
pass.set_bind_group(0, &self.entity_group, &[]);
|
||||
pass.set_bind_group(0, &self.hand_group, &[]);
|
||||
pass.set_index_buffer(self.indices.slice(..), wgpu::IndexFormat::Uint32);
|
||||
pass.set_vertex_buffer(0, self.entity_buffer.slice(..));
|
||||
pass.draw_indexed(
|
||||
|
||||
@@ -41,6 +41,7 @@ pub mod entities;
|
||||
pub mod entity_nbt;
|
||||
pub mod environment;
|
||||
pub mod fastutil_order;
|
||||
pub mod first_person;
|
||||
pub mod flatgen;
|
||||
pub mod fog;
|
||||
pub mod font;
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
---- Minecraft Chunk IO Error Report ----
|
||||
// Let's not do it again...
|
||||
|
||||
Time: 2026-10-11 16:47:20
|
||||
Description: Chunk save failure
|
||||
|
||||
java.io.IOException: No space left on device
|
||||
at java.base/sun.nio.ch.UnixFileDispatcherImpl.pwrite0(Native Method)
|
||||
at java.base/sun.nio.ch.UnixFileDispatcherImpl.pwrite(UnixFileDispatcherImpl.java:71)
|
||||
at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:135)
|
||||
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:102)
|
||||
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:72)
|
||||
at java.base/sun.nio.ch.FileChannelImpl.writeInternal(FileChannelImpl.java:1261)
|
||||
at java.base/sun.nio.ch.FileChannelImpl.implWrite(FileChannelImpl.java:1234)
|
||||
at java.base/sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:1216)
|
||||
at net.minecraft.world.level.chunk.storage.RegionFile.write(RegionFile.java:420)
|
||||
at net.minecraft.world.level.chunk.storage.RegionFile$ChunkBuffer.close(RegionFile.java:393)
|
||||
at java.base/java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:320)
|
||||
at java.base/java.io.FilterOutputStream.close(FilterOutputStream.java:190)
|
||||
at java.base/java.io.FilterOutputStream.close(FilterOutputStream.java:190)
|
||||
at net.minecraft.world.level.chunk.storage.RegionFileStorage.write(RegionFileStorage.java:117)
|
||||
at net.minecraft.world.level.chunk.storage.IOWorker.runStore(IOWorker.java:280)
|
||||
at net.minecraft.world.level.chunk.storage.IOWorker.storePendingChunk(IOWorker.java:270)
|
||||
at net.minecraft.util.thread.StrictQueue$RunnableWithPriority.run(StrictQueue.java:50)
|
||||
at net.minecraft.util.Util.runNamed(Util.java:351)
|
||||
at net.minecraft.util.thread.AbstractConsecutiveExecutor.pollTask(AbstractConsecutiveExecutor.java:50)
|
||||
at net.minecraft.util.thread.AbstractConsecutiveExecutor.run(AbstractConsecutiveExecutor.java:60)
|
||||
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||
at java.base/java.lang.Thread.run(Thread.java:1474)
|
||||
|
||||
|
||||
A detailed walkthrough of the error, its code path and all known details is as follows:
|
||||
---------------------------------------------------------------------------------------
|
||||
|
||||
-- Head --
|
||||
Thread: IO-Worker-37
|
||||
Stacktrace:
|
||||
at java.base/sun.nio.ch.UnixFileDispatcherImpl.pwrite0(Native Method)
|
||||
at java.base/sun.nio.ch.UnixFileDispatcherImpl.pwrite(UnixFileDispatcherImpl.java:71)
|
||||
at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:135)
|
||||
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:102)
|
||||
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:72)
|
||||
at java.base/sun.nio.ch.FileChannelImpl.writeInternal(FileChannelImpl.java:1261)
|
||||
at java.base/sun.nio.ch.FileChannelImpl.implWrite(FileChannelImpl.java:1234)
|
||||
at java.base/sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:1216)
|
||||
at net.minecraft.world.level.chunk.storage.RegionFile.write(RegionFile.java:420)
|
||||
at net.minecraft.world.level.chunk.storage.RegionFile$ChunkBuffer.close(RegionFile.java:393)
|
||||
at java.base/java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:320)
|
||||
at java.base/java.io.FilterOutputStream.close(FilterOutputStream.java:190)
|
||||
at java.base/java.io.FilterOutputStream.close(FilterOutputStream.java:190)
|
||||
at net.minecraft.world.level.chunk.storage.RegionFileStorage.write(RegionFileStorage.java:117)
|
||||
at net.minecraft.world.level.chunk.storage.IOWorker.runStore(IOWorker.java:280)
|
||||
at net.minecraft.world.level.chunk.storage.IOWorker.storePendingChunk(IOWorker.java:270)
|
||||
at net.minecraft.util.thread.StrictQueue$RunnableWithPriority.run(StrictQueue.java:50)
|
||||
at net.minecraft.util.Util.runNamed(Util.java:351)
|
||||
at net.minecraft.util.thread.AbstractConsecutiveExecutor.pollTask(AbstractConsecutiveExecutor.java:50)
|
||||
|
||||
-- Chunk Info --
|
||||
Details:
|
||||
Level: aiworld
|
||||
Dimension: minecraft:overworld
|
||||
Storage: chunk
|
||||
Position: [680, 15]
|
||||
Stacktrace:
|
||||
at net.minecraft.server.MinecraftServer.lambda$storeChunkIoError$0(MinecraftServer.java:2225)
|
||||
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||
at java.base/java.lang.Thread.run(Thread.java:1474)
|
||||
|
||||
-- System Details --
|
||||
Details:
|
||||
Minecraft Version: 26.3
|
||||
Minecraft Version ID: 26.3
|
||||
Operating System: Linux (amd64) version 6.18.55
|
||||
Java Version: 25.0.4.1, N/A
|
||||
Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Oracle Corporation
|
||||
Memory: 239988568 bytes (228 MiB) / 1694498816 bytes (1616 MiB) up to 3221225472 bytes (3072 MiB)
|
||||
Memory (heap): init: 436MiB, used: 1383MiB, committed: 1616MiB, max: 3072MiB
|
||||
Memory (non-heap): init: 007MiB, used: 123MiB, committed: 135MiB, max: 000MiB
|
||||
CPUs: 24
|
||||
processor: ~~ERROR~~ NoClassDefFoundError: Could not initialize class oshi.software.os.linux.LinuxOperatingSystem
|
||||
Graphics card #0 name: AD103 [GeForce RTX 4080]
|
||||
Graphics card #0 vendor: NVIDIA Corporation (0x10de)
|
||||
Graphics card #0 VRAM (MiB): 16416.00
|
||||
Graphics card #0 deviceId: 0x2704
|
||||
Graphics card #0 versionInfo: unknown
|
||||
memory: ~~ERROR~~ NoClassDefFoundError: Could not initialize class oshi.hardware.platform.linux.LinuxGlobalMemory
|
||||
Space in storage for jna.tmpdir (MiB): <path not set>
|
||||
Space in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB): <path not set>
|
||||
Space in storage for io.netty.native.workdir (MiB): <path not set>
|
||||
Space in storage for java.io.tmpdir (MiB): available: 8.54, total: 936786.75
|
||||
Space in storage for workdir (MiB): available: 8.54, total: 936786.75
|
||||
software: ~~ERROR~~ NoClassDefFoundError: Could not initialize class oshi.software.os.linux.LinuxOperatingSystem
|
||||
JVM Flags: 1 total; -Xmx3g
|
||||
Debug Flags: 0 total;
|
||||
@@ -0,0 +1,35 @@
|
||||
# Horizon documentation
|
||||
|
||||
To play, use [the launcher](../launcher/README.md). These pages are for developers.
|
||||
|
||||
## Build and run
|
||||
|
||||
- [Build from source](../README.md#build-from-source): your own copy of the game, resource preparation, `cargo run`.
|
||||
- [Native client](native-client.md): options, controls, the dedicated server, `horizon-ctl` scripting, packaging, architecture.
|
||||
- [Launcher](../launcher/README.md): installs, updates and starts builds; its CLI and MCP server; releasing it.
|
||||
|
||||
## Parity
|
||||
|
||||
- [Rust rewrite status](rust-parity.md): completion criteria, how to reproduce the validation, and per-area scope.
|
||||
- [Parity workflow](parity-workflow.md): `tools/parity.py`, the gate, other machines, merging.
|
||||
- Area notes: [block behaviours and ticking](parity/blocks.md), [section meshing](parity/meshing.md).
|
||||
- [Decompilation and research lab](research-lab.md) and [decompilation status](decompilation-status.md): the local game inspection workspace the harnesses build on.
|
||||
|
||||
## Architecture: world generation
|
||||
|
||||
- [World generation](world-generation.md): the pipeline from noise to features.
|
||||
- [Noise generation](noise-generation.md), [compiled density functions](density-functions.md), [structure density](structure-density.md), [terrain filling](terrain-filling.md).
|
||||
- Biomes: [lookup](biome-lookup.md), [temperatures](biome-temperatures.md).
|
||||
- Surfaces: [material surfaces](material-surfaces.md), [material conditions](material-conditions.md), [rule libraries](material-rule-libraries.md), [vertical anchors](vertical-anchors.md), [value providers](value-providers.md).
|
||||
- [Carving](carving.md), [heightmaps](heightmaps.md), [feature placement](feature-placement.md).
|
||||
|
||||
## Architecture: world data and simulation
|
||||
|
||||
- [World data](world-data.md): chunk storage, palettes, region files.
|
||||
- [Block-state codecs](block-state-codecs.md), [scheduled ticks](scheduled-ticks.md).
|
||||
- [Collision geometry](collision-geometry.md): shapes, collision, movement and fluids.
|
||||
- [Face visibility](face-visibility.md): which model faces the mesher emits.
|
||||
|
||||
## The earlier Java track (no longer developed)
|
||||
|
||||
- [Java performance packs](java-packs.md), with [Vulkan on your Mac](vulkan.md), [collector comparisons](collectors.md), [profiling](profiling.md), [process memory](process-memory.md) and [tick state](tick-state.md); [server quickstart](server-quickstart.txt).
|
||||
@@ -1,54 +0,0 @@
|
||||
# Adaptive distant-terrain budget
|
||||
|
||||
The optional `adaptive` profile keeps the balanced profile's full-detail distance,
|
||||
distant radius, worker count and simulation settings. Its original controller changes
|
||||
only Distant Horizons' background worker duty cycle. Existing stable downloads remain
|
||||
available while this experiment is validated.
|
||||
|
||||
Import adaptive into a separate Prism instance with the same Java, heap, world copy
|
||||
and graphics settings as balanced. `/horizon adaptive on` and `/horizon adaptive off`
|
||||
change the policy for the current session. Changes are refused during recording;
|
||||
`/horizon status` shows the current budget.
|
||||
|
||||
The opt-in configuration is `config/horizon-adaptive.properties`:
|
||||
|
||||
```properties
|
||||
enabled=true
|
||||
targetFps=60
|
||||
```
|
||||
|
||||
The target is clamped to 10–240 FPS and respects a lower configured frame cap.
|
||||
Every two seconds of focused gameplay, the policy considers mean frame duration,
|
||||
the fraction of frames exceeding twice the target duration, and current used heap.
|
||||
Slow frames or heap usage above 85% cut the duty cycle to 65% of its previous
|
||||
value, with a 0.05 floor or the user's lower ceiling. Three consecutive healthy
|
||||
windows permit a 0.025 increase. The user-configured DH ratio remains the ceiling.
|
||||
Menus, pauses and loss of focus release the temporary override and discard the partial
|
||||
window. Another mod's existing or changed override makes the controller yield.
|
||||
The controller does not write DH settings to disk.
|
||||
|
||||
Frame intervals include presentation and frame pacing. A GPU bottleneck can also
|
||||
trigger this heuristic even when background CPU work was not responsible. Terrain
|
||||
generation may take longer. Reducing duty cycle does not free cached terrain or
|
||||
guarantee lower peak memory. No resolution, visual-quality, worker-count,
|
||||
simulation-distance or tick-rate change is made.
|
||||
|
||||
The pinned DH public `threadRuntimeRatio()` API wraps its live configuration entry.
|
||||
Inspection confirmed that its executor reads the effective entry after each task
|
||||
and sleeps according to that ratio. Changes affect subsequent pacing without
|
||||
restarting the pool; individual long-running tasks cannot be preempted. API code
|
||||
stays in the upstream dependency. Only original `dev.horizonlab` classes are packaged.
|
||||
|
||||
Compare **balanced against adaptive**, first with matched cold terrain exploration
|
||||
and then matched warm terrain. Record three alternating runs per condition. Check
|
||||
average FPS, slowest-1% FPS, p99 frame duration, integrated-server tick times,
|
||||
sampled peak heap and process mean CPU cores. Also judge terrain completion time:
|
||||
improved pacing at the expense of excessive generation delay is a tradeoff to measure.
|
||||
The local software renderer validates integration only; the M2 Pro must provide
|
||||
the actual performance result.
|
||||
|
||||
JVM heap/nonheap samples are taken once per second during recorded gameplay, plus
|
||||
start/end samples. Short spikes can be missed. Process CPU time covers the whole
|
||||
recording, including menus, all Java threads and the integrated server; one mean CPU
|
||||
core means one CPU-second per elapsed second. JVM memory excludes some native
|
||||
allocations and GPU memory and is not process RSS.
|
||||
@@ -1,124 +0,0 @@
|
||||
# Client startup and world-rendering probes
|
||||
|
||||
Compilation does not show whether a client creates its graphics device, reaches
|
||||
the menu, enters a world or reads back a rendered frame. The private graphics
|
||||
probe runs the actual pinned game and performance mods to check those steps.
|
||||
It is a separate test mod, excluded from production JARs and playable packs.
|
||||
|
||||
The required macOS CI cases use the recommended OpenGL `core-performance` and
|
||||
`m2-balanced` profiles. Each profile starts at the title screen and then, in a
|
||||
separate instance, creates or opens an ordinary limited-demo world. World mode
|
||||
dismisses the demo-help popup, waits for focused, unpaused gameplay, reads back
|
||||
the main render target, and stops the client so its integrated server saves.
|
||||
The readiness counter resets while a loading overlay is present: a title screen
|
||||
object can already exist underneath asynchronous loading. Private screenshots
|
||||
must have a nonuniform sample grid and a verified file hash;
|
||||
world mode also checks for saved world data after a clean process exit.
|
||||
|
||||
The startup wrapper observes backend library/device creation and preserves the
|
||||
original calls and thrown exceptions. Selected diagnostics contain initialization
|
||||
stages, bounded exception type names, Vulkan error-code identifiers and device
|
||||
labels. Failed probes also select up to eight graphics stack method names, without
|
||||
module prefixes, filenames, line numbers or messages. Those observed locations
|
||||
do not by themselves identify a root cause. Expected demo authentication errors
|
||||
are reported separately. Full log
|
||||
messages, raw screenshots, assets and world files stay under gitignored `.local/`.
|
||||
Nonuniform pixels are not proof of correct visuals, full LOD completion or
|
||||
exhaustive gameplay equivalence.
|
||||
|
||||
The [selected live observations](../benchmarks/client-graphics-2026-10-04/live-observations.json)
|
||||
record passing title and demo-world readbacks for both profiles on the hosted
|
||||
macOS ARM64 runner. Both world cases are focused, produce saved data and exit
|
||||
cleanly. All four CI jobs pass for that source head. Its independently built
|
||||
macOS production JAR matches published 0.20.0 byte-for-byte and contains neither
|
||||
probe class. The observed macOS OpenGL device is **Apple Software Renderer**;
|
||||
these are platform runtime checks, not physical Apple GPU performance results.
|
||||
|
||||
## Run locally
|
||||
|
||||
Build the original mod first, then use the platform's display:
|
||||
|
||||
```sh
|
||||
python3 tools/build_mod.py
|
||||
python3 tools/test_client_graphics.py --native-display
|
||||
python3 tools/test_client_graphics.py --native-display --world
|
||||
```
|
||||
|
||||
These default to core and balanced, with a 3 GiB heap. That budget can trigger
|
||||
DH's low-memory warning; the 16 GB Mac starter suggests 6 GiB. A short startup
|
||||
check is not a recommendation for sustained memory or distant-generation load.
|
||||
On headless Linux, omit `--native-display` to use Xvfb, or run through `vscreen`
|
||||
with its display available. World mode creates private, disposable demo worlds
|
||||
in its isolated runtime folders. No Microsoft credentials are needed for the
|
||||
game's limited demo. It does not accept the dedicated-server EULA.
|
||||
|
||||
The selected output is `dist/client-graphics-smoke.json`. Each case records the
|
||||
observed backend rather than inferring it from the preference. Normal CI retains
|
||||
separate title/world JSONs. Neither the fixture nor screenshots enter releases.
|
||||
|
||||
## Vulkan investigation
|
||||
|
||||
The manual **macOS Vulkan research** workflow separately probes vanilla, core and
|
||||
the distant-terrain Vulkan profile. It runs every case, retains selected successful
|
||||
and failed outcomes, and exits unsuccessfully when a case fails. Its exploratory
|
||||
results do not count as passing the required OpenGL checks.
|
||||
Its optional `world` input selects disposable demo-world probes for every case;
|
||||
the default still probes titles.
|
||||
|
||||
Local Linux software OpenGL/Vulkan title readbacks passed. Early macOS OpenGL
|
||||
title checks for core and balanced also passed with **Apple Software Renderer**.
|
||||
The macOS runner's **Apple Paravirtual device**, using MoltenVK 1.4.2, created
|
||||
Vulkan devices but all three Vulkan cases failed with `VK_ERROR_FEATURE_NOT_PRESENT`.
|
||||
The failure also occurs with vanilla; these observations do not isolate an
|
||||
optimization-mod fault or prove behavior on a physical M2 GPU.
|
||||
|
||||
The separate [readback-stage observations](../benchmarks/mac-vulkan-2026-10-04/live-observations.json)
|
||||
from manual run 37193558884 show that all three cases reached the client test
|
||||
initializer and requested readback before failing. They produced no completed
|
||||
readback report. This narrows the observed sequence; it does not establish whether
|
||||
the screenshot operation itself or subsequent rendering failed. Graphics stack
|
||||
locations from the next run, 37193954843, place each observed failure in the
|
||||
screenshot callback after Vulkan submission. Later probes also record callback
|
||||
entry, a whitelist of numeric readback dimensions/sample counts, and fixed failure
|
||||
categories from our own assertions. Separately logged Vulkan codes are not
|
||||
treated as the cause of a probe assertion.
|
||||
|
||||
Run 37194354615 identifies the actual probe assertion: each callback received a
|
||||
1280×646 image, but its 4,160 sampled pixels had only one distinct RGB colour.
|
||||
The strict nonuniform-readback assertion rejected all three cases. Overlay state
|
||||
was not recorded in those failures; later probes wait for its removal before
|
||||
counting readiness. This tests an initialization hypothesis while preserving the
|
||||
same nonuniform-image requirement. It is not evidence that the game's displayed
|
||||
Vulkan window was uniform or that a physical M2 GPU has the same problem.
|
||||
|
||||
After the overlay guard, run 37194690645 has mixed results: core and distant-terrain
|
||||
title probes pass on the Apple Paravirtual Vulkan device, with no overlay and
|
||||
nonuniform readback, then exit cleanly. Vanilla still fails the uniform-readback
|
||||
assertion. The overall research run therefore remains failed. These outcomes
|
||||
justify retaining the readiness guard; they do not establish the cause of the
|
||||
remaining failure, full visual correctness, world rendering or physical M2 speed.
|
||||
|
||||
The subsequent world-mode run 37195149166 passes all three cases on the hosted
|
||||
Apple Paravirtual Vulkan device. Each reaches focused gameplay without an overlay,
|
||||
returns a nonuniform framebuffer, produces saved demo-world data and exits with
|
||||
code zero. This verifies short Vulkan world startup on that runner, while the
|
||||
failed title observations remain retained. A local Linux core Vulkan world probe
|
||||
also passes, and its private screenshot was visually inspected. These checks do
|
||||
not prove exhaustive graphics/gameplay equivalence, completed distant terrain,
|
||||
physical M2 GPU compatibility or an FPS improvement.
|
||||
|
||||
For an isolated private preference override:
|
||||
|
||||
```sh
|
||||
python3 tools/test_client_graphics.py --native-display --profile baseline --backend vulkan
|
||||
python3 tools/test_client_graphics.py --native-display --profile core-performance --backend vulkan
|
||||
```
|
||||
|
||||
Overrides use separate runtime folders. The shipped profiles retain their
|
||||
configured preferences. These probes make no FPS, CPU/RAM reduction, hardware-GPU
|
||||
compatibility or M2 Pro performance claim. Actual-world performance comparisons
|
||||
still use the [Mac first-test procedure](mac-first-test.md).
|
||||
|
||||
For a shader-enabled world rather than a disabled shader configuration, use the
|
||||
separate [cinematic shader probe](shader-world-smoke.md). It requires actual Iris
|
||||
runtime activation and the pinned pack identity.
|
||||
@@ -1,73 +0,0 @@
|
||||
# Compact object headers experiment
|
||||
|
||||
Java 25 HotSpot offers `-XX:+UseCompactObjectHeaders`. This changes object-header
|
||||
representation without replacing game logic. Oracle documents the header format
|
||||
and enable flag in its [Java 25 GC guide](https://docs.oracle.com/en/java/javase/25/gctuning/other-considerations.html).
|
||||
Object alignment and fields determine whether a particular allocation gets smaller.
|
||||
Native renderer buffers and GPU allocations are outside this optimization.
|
||||
|
||||
## Try on your Mac
|
||||
|
||||
Import the balanced pack normally. In Prism, edit the instance's Java settings
|
||||
check the Java Arguments override box, and add `-XX:+UseCompactObjectHeaders` to its JVM arguments, retaining any existing
|
||||
arguments. Use Java 25 HotSpot matching your CPU architecture. Restart the game.
|
||||
Remove the argument to return to the launcher's default, or use
|
||||
`-XX:-UseCompactObjectHeaders` to explicitly test the disabled mode. Do not supply
|
||||
both flags. Packs do not automatically enable this option.
|
||||
|
||||
For an isolated comparison, duplicate the same balanced instance and use explicit
|
||||
off/on flags. Keep collector, heap, world copy, camera route and all video settings
|
||||
matched. Alternate at least three warmed 120-second recordings. The 0.8 recorder
|
||||
captures the actual `compact_object_headers` setting and `garbage_collectors` names;
|
||||
check these in the offline viewer. Older reports show "not captured", rather than
|
||||
an assumed default. Launcher and JVM defaults can differ.
|
||||
|
||||
Local demo and server tools accept `--compact-headers`. This enables the option
|
||||
only in that process. The server still requires local EULA acceptance before it runs.
|
||||
|
||||
## Isolated allocation measurement
|
||||
|
||||
```sh
|
||||
python3 tools/build_mod.py --benchmark-headers
|
||||
```
|
||||
|
||||
The original benchmark uses the verified game/Distant Horizons publisher types
|
||||
on its classpath, without redistributing them. It forks separate JVMs with explicit
|
||||
off/on flags three times. Each type gets three discarded warm-up batches followed
|
||||
by three measured batches of 100,000 objects. `ThreadMXBean` counts allocated bytes;
|
||||
reference-array storage is allocated before measurement. Objects escape through a
|
||||
volatile array, and their values are checked after measurement. The benchmark
|
||||
asserts that the running VM reports the requested flag. Output includes Java/OS/CPU
|
||||
architecture and goes to gitignored `dist/object-header-benchmark.txt`.
|
||||
|
||||
Local Linux x64 and hosted Linux x64, Windows x64 and Apple Silicon macOS 26
|
||||
measurements yielded the same medians:
|
||||
|
||||
| Type | Headers off, bytes/object | Headers on, bytes/object |
|
||||
| --- | ---: | ---: |
|
||||
| Minecraft `AABB` | 64 | 56 |
|
||||
| Minecraft `Vec3` | 40 | 32 |
|
||||
| Distant Horizons `DhChunkPos` | 24 | 24 |
|
||||
| Boxed `Long`, outside cache | 24 | 16 |
|
||||
| Plain `Object` | 16 | 8 |
|
||||
|
||||
[Raw platform results](../benchmarks/object-headers-2026-10-03) come from
|
||||
[CI run 37153955462](https://github.com/ludovic111/Horizon/actions/runs/37153955462).
|
||||
Each platform has nine measured batches per type/mode across three JVM forks.
|
||||
The hosted ARM Mac has three logical CPUs and is not the user's M2 Pro.
|
||||
|
||||
These are allocations for specific object layouts, not a measured reduction in
|
||||
whole-game retained heap, process RSS, FPS or server TPS. Changing headers can
|
||||
also change runtime tradeoffs. Real workloads and the user's M2 Pro remain the
|
||||
decision point. CI runs the probe on Windows, Linux and Apple Silicon macOS and
|
||||
runs the metric tests with compact headers enabled as well as the default.
|
||||
|
||||
## Fresh video settings correction in 0.8
|
||||
|
||||
Minecraft 26.3 applies its selected graphics preset at startup. A fresh minimal
|
||||
0.7 options file had the correct data-version marker but omitted an explicit
|
||||
custom preset, allowing the default Fancy preset to override full-detail distance
|
||||
to 16 chunks. Version 0.8 explicitly selects the custom preset so the pack's
|
||||
12-chunk budget (8 in low-memory) is retained. This fixes configuration, without
|
||||
reducing simulation distance or changing gameplay. Runtime reports capture the
|
||||
effective settings; always compare those, not just pack labels.
|
||||
@@ -1,118 +0,0 @@
|
||||
# Core performance comparison
|
||||
|
||||
`core-performance` adds the pinned core performance mods while retaining the
|
||||
baseline's 12 full-detail chunks, 12 simulation chunks, suggested heap, custom
|
||||
graphics preset and OpenGL backend. Neither profile installs distant terrain or
|
||||
Iris shaders; every original experimental controller is disabled. Use this pair
|
||||
for the first comparison at the same view distance, then test balanced separately
|
||||
for its additional 128-chunk distant horizon.
|
||||
|
||||
The loaded-mod report also exposes dependencies bundled inside those downloads,
|
||||
such as Transition and Trender in this observed core run. The comparator treats
|
||||
these software changes as explicit experiment variables. Matching configuration
|
||||
is not proof of pixel-identical rendering or exhaustive gameplay equivalence.
|
||||
|
||||
## Three repeated pairs on 0.20.0
|
||||
|
||||
The later series uses the exact published 0.20.0 mod with fresh JVMs and identical
|
||||
initial private world copies. Each run warms for 180 seconds in focused gameplay,
|
||||
then records frames and integrated-server ticks for 120 seconds. A separate test
|
||||
fixture in both profiles holds the same stationary camera. It is absent from
|
||||
playable packs. The workload remains 12 full-detail / 12 simulation chunks,
|
||||
1280×800, FOV 70, no LOD/shaders, G1, compact headers and a 3 GiB maximum heap.
|
||||
Private copies use Peaceful difficulty and a fixed noon clock/weather; distributed
|
||||
packs retain normal rules. All original experimental controllers are disabled.
|
||||
|
||||
| Pair | Baseline FPS | Core FPS | Baseline peak RSS | Core peak RSS | Baseline CPU | Core CPU |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| 1 | 5.39 | 6.53 | 2,310.68 MiB | 2,043.46 MiB | 2.931 cores | 2.898 cores |
|
||||
| 2 | 5.55 | 6.32 | 2,572.06 MiB | 2,031.07 MiB | 2.928 cores | 2.981 cores |
|
||||
| 3 | 5.39 | 6.52 | 2,172.38 MiB | 2,121.73 MiB | 2.942 cores | 2.950 cores |
|
||||
|
||||
Paired average-FPS changes are **+21.28%, +14.00%, +20.96%**. Their arithmetic
|
||||
mean is +18.75%; this is a descriptive average of three changes, not a pooled
|
||||
frame estimate or a statistical significance claim. The slowest-1%-average rate
|
||||
is higher in all pairs, while p95 frame intervals are 8.43–21.25% lower. Peak
|
||||
sampled RSS changes are **−11.56%, −21.03%, −2.33%**. Memory varies substantially
|
||||
across fresh processes, so the earlier single pair's 22% reduction is not a
|
||||
stable memory-saving estimate.
|
||||
|
||||
Average process CPU changes are −1.11%, +1.81%, +0.30%: there is no consistent
|
||||
absolute CPU reduction while rendering more frames. Peak sampled JVM heap is
|
||||
slightly higher in the third core run. GC accounting time is 113→92 ms, 57→154 ms
|
||||
and 157→96 ms across the three pairs, so it is mixed too. These are collector
|
||||
MXBean totals, not JFR stop-the-world pause measurements; no JFR profiling runs
|
||||
alongside these captures.
|
||||
|
||||
Every accepted run has nonempty frame/tick CSVs with verified counts and mean
|
||||
durations, zero excluded frames or dropped samples, matching captured settings
|
||||
and no visual-setting changes. Sampled tick-manager state remains normal at
|
||||
20 configured TPS with no observed freeze, step, sprint or rate changes. Observed
|
||||
invocation throughput ranges from 19.997 to 20.006 TPS; mean tick execution time
|
||||
is 26.43–32.91% lower with core. This stationary integrated-server workload does
|
||||
not establish capacity for a populated dedicated server. Saved cameras, positions,
|
||||
clock/rules and clean process exits are checked for every run. All three real
|
||||
JSON/CSV pairs pass desktop/mobile comparison and chart checks.
|
||||
|
||||
The original third-pair candidate lost focus when the headless input tool's
|
||||
single long sleep overflowed and its keyboard disappeared. Its 448 eligible
|
||||
frames, 211 excluded frame starts and 1,391 measured ticks over about 120 seconds
|
||||
are excluded. The preceding valid baseline is retained separately as unpaired
|
||||
data. The complete third pair was repeated from fresh copies after replacing
|
||||
the long sleep with several shorter sleeps in one persistent process and adding
|
||||
an input-process liveness check. Neither excluded attempt enters the summary.
|
||||
|
||||
The [selected repeated observations](../benchmarks/core-client-repeats-2026-10-04/live-observations.json)
|
||||
include all six accepted runs, the excluded attempts, each pair's comparison,
|
||||
loaded mod identities and private capture/fixture hashes. This is still one
|
||||
stationary view on an i7-7500U Linux **llvmpipe software renderer**. Baseline is
|
||||
always first within each pair. OS cache, JIT, entity activity and thermal effects
|
||||
remain uncontrolled variables. Three pairs do not prove a universal improvement;
|
||||
Apple Silicon/native GPU performance, movement and terrain generation remain to
|
||||
be measured. See the [Mac first-test guide](mac-first-test.md) for a matched-view
|
||||
comparison on the user's hardware.
|
||||
|
||||
## Earlier single pair on 0.19.0
|
||||
|
||||
The selected 4 October 2026 live observations use separate private world copies,
|
||||
a stationary camera, native Linux x64 Java 25, G1, compact headers and the same
|
||||
3 GiB maximum heap. The test copies use Peaceful difficulty and a noon clock with
|
||||
weather/time advancement disabled to reduce lighting variation. Distributed packs
|
||||
do not change world rules. First saved cameras and saved clock/rules are checked.
|
||||
JFR begins roughly 121 seconds after demo dismissal; a separate 120-second frame
|
||||
capture begins roughly 307 seconds after dismissal.
|
||||
|
||||
| Observation | Vanilla baseline | Core mods |
|
||||
| --- | ---: | ---: |
|
||||
| Eligible frames | 651 | 785 |
|
||||
| Average frame rate | 5.44 FPS | 6.56 FPS |
|
||||
| 95th-percentile frame interval | 194.89 ms | 163.18 ms |
|
||||
| Sampled peak process RSS | 2,710.76 MiB | 2,108.96 MiB |
|
||||
| Average process CPU | 2.81 cores | 2.88 cores |
|
||||
| Tick execution mean | 8.98 ms | 6.37 ms |
|
||||
| Recorded tick samples | 2,401 | 2,402 |
|
||||
|
||||
In this single fixed-order, software-rendered pair, average FPS is about 20.7%
|
||||
higher and sampled peak RSS about 22.2% lower with the core stack. Process CPU is
|
||||
slightly higher while more frames are rendered. Tick execution durations are
|
||||
lower; their inverse is execution capacity, not observed TPS. Both captures span
|
||||
about 120 seconds and record approximately 20 tick samples per elapsed second.
|
||||
These are descriptive observations, not a statistical or universal speedup claim.
|
||||
They do not isolate which mod caused a difference. Entity activity, completion
|
||||
of rendering work, cache/JIT and thermal state remain possible variables. RSS
|
||||
excludes a complete GPU/unified-memory measurement; Apple Silicon performance
|
||||
remains unmeasured. Hardware graphics measurements remain needed; the separate repeated series above
|
||||
uses a different warm-up protocol and must not be pooled with this pair.
|
||||
|
||||
Preceding JFR counter rates for the server and render thread are lower with the
|
||||
core stack, but total and longest measured GC pauses are higher in that profile.
|
||||
Those recordings precede the frame captures, so rates/pauses must not be treated
|
||||
as if they covered the later frame interval. Selected observations retain both
|
||||
findings instead of presenting only favorable measurements.
|
||||
|
||||
The [selected raw observations](../benchmarks/core-client-2026-10-04/live-observations.json)
|
||||
retain software identity, protocol and both positive and negative measurements.
|
||||
Both clients save and exit with code zero; the core world reloads and saves again.
|
||||
Actual JSON/CSV viewer and mobile checks pass. Windows, macOS ARM and Linux builds
|
||||
pass, with byte-identical local and independent Linux production JARs. These are
|
||||
platform build checks, not game graphics tests on each platform.
|
||||
@@ -1,58 +0,0 @@
|
||||
# Avoid allocating iterators for empty culling whitelists
|
||||
|
||||
A local game JFR found `HashMap.KeySet` iterator allocation in Entity Culling's
|
||||
dynamic entity/block-entity whitelist checks on `CullThread`. The pinned 1.11.2
|
||||
methods create a set iterator before discovering that there are no handlers.
|
||||
|
||||
The optional hook returns the JDK's shared empty iterator while the live set is
|
||||
empty. It checks that set every call; it does not cache a whitelist, remember an
|
||||
empty state, skip a registered handler, or alter culling decisions. Nonempty
|
||||
sets use their original iterator, callback order, type guard and short circuit.
|
||||
No per-call callback object is introduced by the hook.
|
||||
|
||||
Use the `culling-empty` profile for an isolated comparison with `m2-balanced`.
|
||||
Both keep the same graphics, LOD radius, worker budget and other controller
|
||||
settings. The hook is opt-in, restricted to Entity Culling 1.11.2, and can be
|
||||
disabled with `enabled=false` in `config/horizon-culling-empty.properties` and a
|
||||
restart. Frame reports record `empty_culling_whitelist`; the CLI and offline
|
||||
viewer disclose a difference as an experiment variable.
|
||||
|
||||
`python tools/test_culling_empty.py` runs the actual publisher methods inside
|
||||
Fabric. It checks empty iterator dispatch, registration after initialization,
|
||||
duplicate registration, real block-entity callback order/short circuit, null and
|
||||
wrong-type inputs, and returning to an empty state. The menu-only fixture does
|
||||
not exercise callbacks using a valid world entity; nonempty entity iteration
|
||||
uses the original implementation. Private instrumentation and fixture JARs
|
||||
never enter release packs. Full game logs remain private.
|
||||
|
||||
A local warmed loop of four million empty checks allocated 128,001,248 bytes
|
||||
upstream versus 1,248 with the hook. CPU was 41 ms versus 33 ms in that single
|
||||
observation. These counts isolate this allocation path; JIT escape analysis can
|
||||
produce different results in other calling contexts. They are not game FPS,
|
||||
whole-game RAM, statistical speed estimates or Mac GPU results. Repeated matching workloads and real hardware tests remain needed. A fixed-order
|
||||
Linux software-rendered pair observed about 97,445 versus 35,128 allocated bytes
|
||||
per second on `CullThread`, over separate 64-second counter spans. The captured
|
||||
graphics matched and both recordings excluded zero frames, but this one pair is
|
||||
not a repeatable FPS or retained-RAM result. The candidate also encountered an
|
||||
intermittent shutdown wait after its world had saved; the control exited normally.
|
||||
See the [terrain read shutdown check](terrain-read-wait.md).
|
||||
|
||||
For local world smoke checks, the baseline and candidate use separate copies of
|
||||
the same peaceful demo-world snapshot. An earlier capture was interrupted by a
|
||||
zombie killing the player and is excluded from performance comparisons. Release
|
||||
packs do not change world difficulty. Frame reports now capture actual world
|
||||
difficulty at their start/end boundaries so comparison tools can flag a mismatch.
|
||||
|
||||
The [sanitized Linux CI result](../benchmarks/culling-empty-2026-10-04/linux-applied-hooks.json)
|
||||
includes its source/workflow provenance and independently checks live registration
|
||||
and the applied shortcut. CPU timings can include JIT folding of this empty loop;
|
||||
they are not per-check costs or estimates of game speed.
|
||||
|
||||
The final candidate JAR (`c506982631880604513de8ef85e3b4461fbb898702e60b4a6f74ca3b3d4a687f`)
|
||||
then recorded 579 frame intervals and 2,408 integrated-server tick durations over
|
||||
120 seconds, with zero excluded frames and matching CSV counts/means. Its actual
|
||||
frame report retained custom graphics, render/simulation distances 12/12, DH radius
|
||||
128 at MEDIUM/MEDIUM quality, two workers at runtime ratio 0.5, compact headers,
|
||||
and both the culling shortcut and scoped terrain-read fix enabled. No captured
|
||||
visual setting changed. This verifies integration; it is not a repeated hardware
|
||||
performance comparison.
|
||||
@@ -1,67 +0,0 @@
|
||||
# Reuse numeric scratch vectors in visibility tests
|
||||
|
||||
A game allocation profile found temporary vectors in the pinned Entity Culling
|
||||
1.11.2 visibility library. Its visibility check creates a direction vector, then
|
||||
normalizes it; its ray intersection creates a second vector for reciprocals.
|
||||
These vectors remain within the calculation and carry only numeric values.
|
||||
|
||||
The opt-in hook redirects those two constructors to separate vectors owned by
|
||||
that culling instance. All three components are reset each time. Upstream
|
||||
normalization, division, intersection, traversal, caches and decisions stay in
|
||||
place. No approximation, ray limit, global pool or shared scratch object is added.
|
||||
The instance already keeps mutable camera, target, hit-block and cache state;
|
||||
the hook retains that single-caller contract. It does not make an instance safe
|
||||
for concurrent or reentrant calls. Two retained numeric objects per instance
|
||||
replace temporary objects on this path.
|
||||
|
||||
Use `culling-rays` for an isolated comparison with `m2-balanced`. Graphics, LOD
|
||||
radius, worker budget and other controller settings match. All other profiles,
|
||||
including the combined foreground experiments, explicitly keep this hook off.
|
||||
It only applies to Entity Culling 1.11.2. To disable, set `enabled=false` in
|
||||
`config/horizon-culling-rays.properties` and restart. Frame reports record the
|
||||
actual `culling_ray_scratch` state; the CLI and offline viewer disclose changes
|
||||
in that state.
|
||||
|
||||
`python tools/test_culling_rays.py` runs the publisher's actual geometry with the
|
||||
hook disabled and enabled. It compares boolean and provider-query digests for
|
||||
12,800 bounding-box checks across eight occluder patterns and two interleaved
|
||||
instances. Each mode performed the same 105,239 block reads. It also checks
|
||||
2,197 direct ray cases covering signed zero, tiny and large values, infinities
|
||||
and NaN, unchanged input vectors, separate instance scratch objects and retained
|
||||
arithmetic values. The test uses private fixture invokers; its JAR and accessors
|
||||
never enter a release pack. These cases support this workload's equivalence,
|
||||
rather than proving every world's rendered pixels or every mod callback.
|
||||
|
||||
A local warmed loop of two million visibility checks allocated 24,318,096 bytes
|
||||
with the original constructors versus 920 with scratch reuse. Single caller CPU
|
||||
observations were about 167 versus 149 ms. Another unchanged run allocated only
|
||||
6,259,360 bytes, illustrating how JIT compilation and escape analysis vary during
|
||||
these loops. No fixed per-check allocation or statistical speedup is inferred.
|
||||
The independent Linux CI run allocated only 1,040 bytes upstream versus 920
|
||||
with scratch reuse, and its caller CPU observation was about 102 versus 119 ms.
|
||||
That run provides no useful allocation reduction and is slower in this loop.
|
||||
The hook therefore stays isolated and disabled in every recommended profile.
|
||||
Raw [local](../benchmarks/culling-rays-2026-10-04/local-applied-hooks.json) and
|
||||
[CI](../benchmarks/culling-rays-2026-10-04/linux-applied-hooks.json) observations
|
||||
include source and workflow provenance. This is not a whole-game FPS/RAM or Mac
|
||||
GPU benchmark; repeated real hardware comparisons and live allocation profiles
|
||||
are required.
|
||||
|
||||
A fixed-order live Linux software-rendering pair observed about 28.18 KB/s
|
||||
allocated by `CullThread` with the hook off and 27.96 KB/s with it on, over
|
||||
roughly 64-second counter spans. This does not establish a useful reduction.
|
||||
Allocation samples were dominated by whitelist iteration; the recorded stacks
|
||||
did not include either ray constructor. The separate `culling-empty` experiment
|
||||
addresses that observed path. The clean 120-second frame captures produced
|
||||
599 control and 584 candidate frames, with zero exclusions and matching CSV
|
||||
counts; captured graphics and worker settings matched except the ray flag.
|
||||
Both worlds saved and exited without crash reports or remaining game processes.
|
||||
The outer control launcher returned 143 without exposing the game exit status;
|
||||
that return is not counted as a verified normal game exit. Selected
|
||||
[live observations](../benchmarks/culling-rays-2026-10-04/live-observations.json)
|
||||
retain the recording limits. These are per-thread diagnostic observations, not
|
||||
retained memory, a statistical comparison, or a Mac result.
|
||||
|
||||
The factory hook follows the upstream [Mixin constructor redirect contract](https://github.com/SpongePowered/Mixin/blob/master/src/main/java/org/spongepowered/asm/mixin/injection/Redirect.java).
|
||||
Compilation uses a checksum-verified publisher JAR; the release mod contains only
|
||||
original Horizon classes. Profiles without Entity Culling must still load.
|
||||
@@ -1,143 +0,0 @@
|
||||
# Debounce queue experiment
|
||||
|
||||
The local profile showed substantial allocation on the distant-terrain chunk
|
||||
update queue thread. Direct per-thread allocation counters confirmed activity
|
||||
there; sampled stacks repeatedly entered player-position reads and queue
|
||||
reinsertion. Inspection of the pinned DH 3.3.4 bytecode explains a mechanism:
|
||||
an update younger than its existing 250 ms debounce deadline is removed and
|
||||
reinserted, while the outer queue loop sleeps only when both queues are empty.
|
||||
A nonempty pending queue can therefore retry continuously before it can do work.
|
||||
|
||||
The optional `queue-wait` profile keeps balanced graphics, distances, simulation
|
||||
settings, mods and worker budgets. Its original hook performs the existing
|
||||
debounce reinsertion, then requests a wait of up to 1 ms, bounded by the remaining
|
||||
deadline, if no preprocessing work is pending. It only waits on the queue worker,
|
||||
never a caller such as the render thread. Incoming queued work unparks a debounce
|
||||
wait. Starting with 0.9, incoming work can also wake an empty queue's idle wait,
|
||||
which previously slept for 50 ms. The idle park ends by the next 50 ms cache
|
||||
maintenance deadline; early wakeups do not trigger maintenance more often than
|
||||
that cadence. OS scheduling determines when the worker resumes.
|
||||
The same update object, priority queue, debounce timestamp, overload policy,
|
||||
executor dispatch and normal simulation remain in use. Executor-unavailable and
|
||||
rejected-dispatch retries are outside this hook.
|
||||
|
||||
`adaptive-queue` combines this hook with the existing adaptive terrain budget
|
||||
and precise worker pacing. Use `queue-wait` versus `m2-balanced` to isolate the
|
||||
queue change, and `adaptive-queue` versus `adaptive-pacing` to evaluate the
|
||||
combination. Each profile explicitly enables only its requested experiments.
|
||||
Set `enabled=false` in `config/horizon-queue-wait.properties` and restart to
|
||||
disable the queue hook. It is disabled by default and requires exact DH 3.3.4.
|
||||
|
||||
Requested waits are not hard latency bounds: operating-system timers can
|
||||
overshoot, and arrival/worker scheduling affect responsiveness. Debounce parking
|
||||
leaves the interruption flag intact, so the existing shutdown loop handles it.
|
||||
The wakeable idle wait throws with a cleared interrupt flag, as `Thread.sleep`
|
||||
did; the original catch restores the flag and exits on the next loop check.
|
||||
New arrival wakeups reduce the chance of delaying useful preprocessing, but
|
||||
real terrain completion, block-change visibility and platform behavior need
|
||||
evaluation alongside CPU, allocations and frame pacing.
|
||||
|
||||
## Idle wakeup experiment in 0.9
|
||||
|
||||
After building, run
|
||||
`python -c "from tools.build_mod import benchmark_idle; benchmark_idle()"`.
|
||||
An actual publisher queue starts empty; synthetic incoming work is published
|
||||
about 5 ms into an idle interval. Separate upstream-sleep and wakeable-park workers
|
||||
check the same update identity and empty queue after removal. Four warm-up pairs
|
||||
precede 20 alternating measured pairs. Output reports actual arrival time and
|
||||
publication-start-to-pop latency. Local Linux medians were 45.181 ms upstream and
|
||||
0.199 ms wakeable.
|
||||
|
||||
Hosted medians and nearest-rank p95 over 20 measured trials:
|
||||
|
||||
| Platform | Upstream median | Wakeable median | Wakeable p95 | Wakeable maximum |
|
||||
| --- | ---: | ---: | ---: | ---: |
|
||||
| macOS ARM64 | 84.273 ms | 0.068 ms | 0.103 ms | 16.096 ms |
|
||||
| Linux x64 | 45.065 ms | 0.053 ms | 0.073 ms | 0.073 ms |
|
||||
| Windows x64 | 45.159 ms | 0.074 ms | 0.127 ms | 0.182 ms |
|
||||
|
||||
The upstream Mac maximum was 108.892 ms; its requested 50 ms sleep overshot.
|
||||
The wakeable Mac maximum also shows scheduler variability. The hosted ARM Mac
|
||||
has three logical CPUs and is not the user's M2 Pro. [Raw trials](../benchmarks/idle-queue-2026-10-03)
|
||||
are from [CI run 37155695460](https://github.com/ludovic111/Horizon/actions/runs/37155695460).
|
||||
|
||||
This isolates idle wakeup, including enqueue/pop overhead. It does not simulate
|
||||
the existing 250 ms debounce, preprocessing, chunk generation, meshing, network
|
||||
delivery or a visible block update. Those delays remain separate. OS scheduling
|
||||
can change latency; this is not an FPS measurement or a hard responsiveness bound.
|
||||
Concurrency tests cover arrival before park, arrival while parked, pending
|
||||
interrupts and interruption while parked. The runtime hook still requires exact
|
||||
DH 3.3.4 and is enabled only with the existing queue experiment.
|
||||
|
||||
## Isolated measurement
|
||||
|
||||
Run `python -c "from tools.build_mod import benchmark_debounce; benchmark_debounce()"`
|
||||
after building the mod. It uses the actual publisher's `ChunkPosQueue`, with
|
||||
synthetic entries and a 250 ms pending-debounce interval. The upstream mode
|
||||
repeatedly pops and reinserts the nearest update; the waiting mode inserts the
|
||||
same bounded-wait policy between retries. Warm-ups precede three alternating
|
||||
trials at one and 64 queued entries. Each trial checks update identity, nearest
|
||||
priority and queue count, then reports wall time, worker CPU and worker allocation.
|
||||
|
||||
This benchmark isolates redundant polling; it does not simulate game chunk
|
||||
lighting, rendering, network traffic or terrain completion. Thread CPU counters
|
||||
can be coarse, particularly on Windows, so a zero reading is below measurement
|
||||
resolution, not proof of zero CPU cost. Allocation counts are cumulative bytes
|
||||
allocated during the interval, not retained heap or process memory. Hardware,
|
||||
timer behavior and workload can change results. The CI publishes raw output
|
||||
for Linux, Windows and Apple Silicon macOS. No game-FPS claim follows from this
|
||||
microbenchmark alone.
|
||||
|
||||
## Hosted results, 3 October 2026
|
||||
|
||||
Raw output is checked in under
|
||||
[`benchmarks/debounce-queue-2026-10-03`](../benchmarks/debounce-queue-2026-10-03/).
|
||||
The tables show medians of three trials. Allocations and CPU refer only to this
|
||||
synthetic queue polling interval, not the entire game. The macOS runner is hosted
|
||||
Apple Silicon with three logical CPUs; it is not the user's M2 Pro.
|
||||
|
||||
| Platform / queued entries | Upstream allocation | Waiting allocation | Upstream worker CPU | Waiting worker CPU |
|
||||
| --- | ---: | ---: | ---: | ---: |
|
||||
| macOS ARM64 / 1 | 80,066,144 B | 768 B | 247.157 ms | 0.873 ms |
|
||||
| macOS ARM64 / 64 | 34,344,320 B | 2,112 B | 248.550 ms | 1.154 ms |
|
||||
| Linux x64 / 1 | 99,456,064 B | 7,520 B | 248.446 ms | 2.960 ms |
|
||||
| Linux x64 / 64 | 31,971,072 B | 7,488 B | 249.987 ms | 2.890 ms |
|
||||
| Windows x64 / 1 | 95,728,256 B | 5,536 B | 250.000 ms | Below counter resolution |
|
||||
| Windows x64 / 64 | 32,051,200 B | 5,376 B | 250.000 ms | Below counter resolution |
|
||||
|
||||
Each upstream interval lasted about 250 ms. Waiting medians were 250.068 ms on
|
||||
Linux, 250.593–250.856 ms on Windows, and 251.431–252.426 ms on macOS. One macOS
|
||||
trial lasted 258.012 ms, demonstrating timer overshoot. These are interval-ending
|
||||
times; they are not measurements of a real block change reaching the screen.
|
||||
|
||||
The real 0.7.0 adaptive-queue demo world renders and records with the hook enabled.
|
||||
Thread inspection reached the injected debounce parking path. A 120-second run
|
||||
wrote 643 frame intervals and 2,408 server ticks with matching CSV counts/means,
|
||||
and 119–120 RSS samples. Distant-terrain data continued updating; game worlds and
|
||||
DH databases closed cleanly. A separate 60-second profile confirmed allocation
|
||||
counter activity on the queue thread. Its workload/cache state differs from the
|
||||
earlier profile, so those profiles are not a numerical before/after comparison.
|
||||
|
||||
## Stationary live allocation observation, 4 October 2026
|
||||
|
||||
A [selected real-game pair](../benchmarks/debounce-queue-2026-10-04/live-observations.json)
|
||||
uses separate copies of the same private world, matching graphics/JVM settings
|
||||
and first saved cameras, with the released 0.18 production JAR. Both captures
|
||||
have zero exclusions/drops and both worlds save and exit with code zero. JFR
|
||||
starts roughly 121 seconds after demo dismissal; the later 120-second frame
|
||||
capture starts roughly 307 seconds after dismissal.
|
||||
|
||||
Overworld queue allocation counters record about 15.3 MB/s upstream versus
|
||||
11.5 KB/s with waiting across their roughly 64-second spans. This supports a
|
||||
large targeted allocation difference in this observation. Work/geometry volumes
|
||||
are not quantitatively controlled, and daylight, entities and cache/JIT state
|
||||
can differ. The later control capture has 230 frames versus 225 with waiting;
|
||||
sampled peak RSS is lower in control and whole-process CPU differs little.
|
||||
No useful game FPS, retained-memory or whole-process CPU gain is established.
|
||||
This is Linux software rendering, not an Apple Silicon test. The hook remains
|
||||
optional, and actual terrain update latency still needs hardware measurement.
|
||||
|
||||
Both JSON/CSV viewer charts and the 390-pixel layout pass. An earlier failed
|
||||
capture had zero eligible frames and 209 exclusions after the virtual keyboard
|
||||
ended and the game paused. The viewer rejects that real report, clears prior
|
||||
comparison results and asks for focused gameplay; it is excluded from the pair.
|
||||
@@ -1,70 +0,0 @@
|
||||
# Rejected dispatch retry experiment
|
||||
|
||||
A local game recording showed allocation samples repeatedly entering DH's
|
||||
`ThreadPoolExecutor.AbortPolicy`, exception construction and diagnostic strings.
|
||||
The direct allocation counters showed substantial allocation on render-loader
|
||||
workers. This was a scheduler retry path, rather than evidence of useful terrain
|
||||
generation. Inspecting the pinned DH 3.3.4 dispatcher confirmed that rejection
|
||||
requeues the same tracked task and immediately tries it again while retaining
|
||||
the dispatcher lock. A busy or unavailable physical pool can make that loop
|
||||
allocate and prevent other executors from progressing.
|
||||
|
||||
The optional `dispatch-retry` profile uses balanced graphics, mods, distances,
|
||||
worker count and heap guidance. It enables only the new dispatcher hook; adaptive
|
||||
budgeting, precise worker pacing and queue waiting stay disabled. Other profiles
|
||||
explicitly disable the new hook, so existing isolated comparisons remain useful.
|
||||
It requires exact DH 3.3.4. Set `enabled=false` in
|
||||
`config/horizon-dispatch-retry.properties` and restart to disable it.
|
||||
|
||||
After one rejection for an executor in a dispatch pass, the hook ends that
|
||||
executor's inner submission loop. Other executors can consume available logical
|
||||
slots in the same pass. The original catch still requeues the original task or
|
||||
clears it during shutdown. The original lock, priority ordering, occupied-slot
|
||||
increments/decrements, exception handling and scheduled-future cancellation
|
||||
remain in use. A rejected pass requests a later retry after 1 ms; a pass with
|
||||
only paused executors retains DH's original 1000 ms interval. Shutdown prevents
|
||||
new retry scheduling. OS timers and lock contention can delay the requested retry.
|
||||
|
||||
This bounds repeated rejection within each pass. It still constructs an exception
|
||||
for a rejected submission, and frequent callers can cause additional passes.
|
||||
It is not a complete replacement scheduler or proof of faster terrain completion.
|
||||
No simulation rule, server tick rate, render distance or voxel content is changed.
|
||||
|
||||
## Applied-hook integration test
|
||||
|
||||
Build with `python tools/build_mod.py`, then run `python tools/test_dispatch.py`.
|
||||
On Linux the latter uses Xvfb; `--native-display` uses an existing display.
|
||||
The tool builds a private fixture mod under `.local/mod-build`, runs two isolated
|
||||
Fabric clients with the dispatcher hook disabled and enabled, and exits before
|
||||
opening a world. It uses the local demo launcher and requires no account.
|
||||
Official game libraries/assets and publisher mods remain private downloads.
|
||||
The fixture never enters a release pack or production JAR.
|
||||
|
||||
The fixture creates an actual publisher dispatcher with two executors. It replaces
|
||||
one executor's physical pool with a one-worker, one-slot pool and deliberately
|
||||
fills it with blocking work outside the dispatcher. This reproduces rejection
|
||||
while logical slots remain free. Upstream retains the caller in the retry loop
|
||||
during a 200 ms observation window and stalls independent queued work. With the
|
||||
hook, the caller returns and the other executor progresses before releasing the
|
||||
blocked physical worker. Both runs then require each tracked task to run exactly
|
||||
once, empty logical queues, zero occupied slots and physical-worker shutdown.
|
||||
|
||||
The sanitized output reports the submission caller's wall time, CPU time and
|
||||
allocated bytes, plus total observed physical-pool rejections. Retry-scheduler
|
||||
CPU/allocation is excluded from the caller counters. The observation window and
|
||||
earlier patched return produce different caller durations; these measurements
|
||||
describe the rejected-submission path, not normal task throughput. Linux CI runs
|
||||
the applied hooks; Windows and ARM Mac CI compile the fixture and production mod.
|
||||
|
||||
In [Linux CI run 37158922187](https://github.com/ludovic111/Horizon/actions/runs/37158922187),
|
||||
[the raw fixture result](../benchmarks/dispatch-retry-2026-10-04/linux-applied-hooks.json)
|
||||
reported 216,987,192 caller allocation bytes and 63,790 rejections upstream,
|
||||
versus 103,384 caller bytes and 6 rejections with the hook. Caller wall times were
|
||||
401.549 ms and 0.959 ms respectively. These are single, unwarmed failure-path
|
||||
observations, including initialization/JIT effects, rather than normal throughput
|
||||
or a fixed-duration whole-process comparison. Both modes completed two tasks.
|
||||
|
||||
An initial patched Linux game also loaded, recorded 120 seconds and shut down
|
||||
normally. Its subsequent JFR capture avoided the earlier allocation storm.
|
||||
The captures had different cache histories; they do not establish an FPS or
|
||||
whole-game memory improvement, and this is not an M2 graphics benchmark.
|
||||
@@ -1,32 +0,0 @@
|
||||
# Combined foreground-first experiments
|
||||
|
||||
`foreground-first` combines the adaptive background-terrain budget, precise
|
||||
worker pacing, bounded/wakeable queue waits and rejected-dispatch retries.
|
||||
From version 0.13 it also includes compact per-tick membership storage; the
|
||||
original action collections and their iteration order remain unchanged.
|
||||
`foreground-vulkan` uses the same combination with Vulkan preference and the
|
||||
game's OpenGL fallback. Both retain balanced mods, 12 full-detail chunks,
|
||||
128-chunk LOD radius, two DH workers and simulation distance 12.
|
||||
|
||||
The adaptive target is 120 FPS to suit the first M2 Pro/ProMotion testing target.
|
||||
It is a heuristic frame-time goal, not an FPS cap or a guaranteed rate. The
|
||||
controller reduces background duty cycle when frames fall behind that target
|
||||
or heap pressure rises. This can delay distant-terrain completion. It cannot
|
||||
identify whether GPU, CPU, disk, generation or other work caused a slow frame.
|
||||
Uncapped game options do not override VSync, driver or display behavior.
|
||||
|
||||
Start with balanced, then compare the combined OpenGL profile at equal graphics,
|
||||
heap and world settings. The individual profiles remain available for isolating
|
||||
each hook. Compare `foreground-first` against `foreground-vulkan` only after the
|
||||
isolated Vulkan pack works on the device. Each combined profile explicitly
|
||||
enables these controls; changing `/horizon adaptive off` disables only the
|
||||
adaptive controller. Other hooks require their configuration flag and restart.
|
||||
|
||||
Change `targetFps` in `config/horizon-adaptive.properties` to evaluate a different
|
||||
goal, then restart. The recorder captures the goal, actual applied hook flags,
|
||||
backend and effective video settings. Java compact headers and collector changes
|
||||
remain separate optional experiments. Normal simulation/tick rules are retained.
|
||||
|
||||
These profiles combine measured scheduler mechanisms, not independently measured
|
||||
Minecraft FPS gains that can be added together. Their interaction, visible
|
||||
terrain latency, memory and frame pacing need whole-game testing on real GPUs.
|
||||
@@ -1,72 +0,0 @@
|
||||
# Matched graphics API comparison
|
||||
|
||||
Three core-profile pairs compare OpenGL with Vulkan at the same stationary view.
|
||||
On this Linux software renderer, Vulkan produces only 1.22–1.74% more average FPS
|
||||
while using 11.23–12.95% more process CPU. Frame-time tails and sampled RSS are
|
||||
mixed, and integrated-server tick execution is slower. Playable backend defaults
|
||||
remain unchanged. These results do not predict physical M2 GPU performance.
|
||||
|
||||
## Protocol
|
||||
|
||||
Each fresh process uses the exact published 0.20.0 mod, identical core mods,
|
||||
private camera fixture, initial world copy and 3 GiB maximum / 512 MiB initial
|
||||
heap. Both APIs use 12 full-detail / 12 simulation chunks, 1280×800, FOV 70,
|
||||
uncapped FPS, no LOD/shaders, G1 and compact headers. Every original experimental
|
||||
controller is disabled. The private camera is fixed and world copies use Peaceful
|
||||
difficulty with noon/weather advancement rules fixed. Playable packs retain
|
||||
normal rules.
|
||||
|
||||
Runs warm for 180 seconds, then record frames and ticks for 120 seconds. Each
|
||||
pair runs OpenGL first and Vulkan second. Actual devices report llvmpipe LLVM
|
||||
21.1.8, with Mesa 26.0.8 OpenGL 4.5 or Vulkan 1.4.335. The Vulkan preference is
|
||||
verified against the observed backend; a fallback would invalidate this series.
|
||||
The host is an i7-7500U with 2 physical cores / 4 logical processors and about
|
||||
30.2 GiB system RAM. Native GPU access is unavailable to this user.
|
||||
|
||||
## Results
|
||||
|
||||
| Pair | OpenGL FPS | Vulkan FPS | OpenGL CPU | Vulkan CPU | OpenGL peak RSS | Vulkan peak RSS | Tick mean, OpenGL → Vulkan |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| 1 | 6.5786 | 6.6765 | 2.895 cores | 3.248 cores | 2,362.36 MiB | 2,337.00 MiB | 6.455 → 7.460 ms |
|
||||
| 2 | 6.5869 | 6.6671 | 2.918 cores | 3.246 cores | 2,471.90 MiB | 2,526.52 MiB | 6.845 → 7.602 ms |
|
||||
| 3 | 6.5632 | 6.6775 | 2.879 cores | 3.252 cores | 2,424.70 MiB | 2,459.63 MiB | 6.499 → 7.593 ms |
|
||||
|
||||
Paired FPS changes are +1.49%, +1.22%, +1.74%, with a descriptive arithmetic
|
||||
mean of +1.48%. CPU changes are +12.18%, +11.23%, +12.95% (mean +12.12%).
|
||||
These three fixed-order pairs do not establish statistical significance.
|
||||
|
||||
p95 frame intervals change −2.08%, +0.94%, −1.43%; slowest-1%-average FPS
|
||||
changes −2.19%, −7.63%, +5.49%. Peak sampled RSS changes −1.07%, +2.21%,
|
||||
+1.44%. GC accounting is mixed and is not a measured stop-the-world pause total.
|
||||
Tick execution means increase 11.06–16.84%, while observed invocation throughput
|
||||
remains near 20 TPS with normal sampled tick-manager state in all runs.
|
||||
|
||||
Process CPU includes native rendering and the integrated server. Higher tick
|
||||
durations in a shared rendering process do not isolate a server algorithm change
|
||||
or establish dedicated-server capacity. Tick reports do not capture the client
|
||||
graphics API; their captured-settings match must be interpreted alongside each
|
||||
paired frame report's explicit backend/driver differences.
|
||||
|
||||
## Validation and limits
|
||||
|
||||
All six clients save and exit cleanly. Raw frame/tick CSV counts and mean durations
|
||||
match the JSONs, with zero exclusions/drops. Runtime and fixture hashes, mod
|
||||
identities, other captured settings, saved camera/position and clock/weather rules
|
||||
match. Frame comparisons retain only the deliberate backend/driver mismatches.
|
||||
Both first-pair warmed views were visually inspected before recording and showed
|
||||
the same forest/terrain. This is not an exhaustive pixel-equivalence test.
|
||||
|
||||
All three actual frame/tick JSON+CSV pairs pass desktop/mobile viewer and chart
|
||||
checks; representative screenshots were inspected. The
|
||||
[selected observations](../benchmarks/graphics-api-2026-10-04/live-observations.json)
|
||||
retain all six runs, every paired metric, configuration, device identities and
|
||||
private capture/fixture hashes. Raw logs, CSVs, images and worlds remain private.
|
||||
|
||||
One stationary view, a software renderer, fixed order and three pairs cannot
|
||||
establish movement/generation behavior, native GPU or Mac speedups, full visual
|
||||
equivalence or populated-server capacity. OS cache, JIT, entities and thermal
|
||||
effects can still vary. Sampled RSS covers the settled recording, can miss spikes
|
||||
and is not complete GPU/unified-memory accounting. Do not pool these API pairs
|
||||
with heap or vanilla/core experiments. See the [Mac procedure](mac-first-test.md)
|
||||
for physical-device comparisons and the [graphics probes](client-graphics-smoke.md)
|
||||
for separate hosted-Mac startup results.
|
||||
@@ -1,70 +0,0 @@
|
||||
# Heap budget experiment
|
||||
|
||||
Halving the maximum Java heap from 3 GiB to 1.5 GiB does not halve total process
|
||||
RAM in this workload. Three repeated core-profile pairs show nearly unchanged
|
||||
average FPS and variable sampled RSS reductions, with more GC accounting time
|
||||
in every smaller-heap run. Playable memory recommendations remain unchanged.
|
||||
|
||||
## Matched experiment
|
||||
|
||||
These runs use the exact published 0.20.0 mod and the same private camera fixture
|
||||
as the [repeated core comparison](core-performance.md). Both sides use the core
|
||||
stack, 12 full-detail / 12 simulation chunks, 1280×800, FOV 70, uncapped FPS,
|
||||
OpenGL, no LOD/shaders, G1 and compact headers. Only maximum heap differs. The
|
||||
initial heap is 512 MiB in both sides. Every run uses a fresh process and the same
|
||||
initial world copy, warms for 180 seconds and records for 120 seconds. Each pair
|
||||
runs 3 GiB first, followed by 1.5 GiB.
|
||||
|
||||
The host is an i7-7500U with 2 physical cores / 4 logical processors and about
|
||||
30.2 GiB total RAM, using Linux llvmpipe software rendering. This is not a test
|
||||
under low system-memory pressure. Private copies use Peaceful difficulty and
|
||||
fixed noon/weather advancement rules. The camera is stationary and every
|
||||
original experimental controller is disabled. Those fixture rules are absent
|
||||
from playable packs.
|
||||
|
||||
## Results
|
||||
|
||||
| Pair | 3 GiB FPS | 1.5 GiB FPS | 3 GiB peak RSS | 1.5 GiB peak RSS | 3 GiB p95 frame | 1.5 GiB p95 frame | GC accounting |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| 1 | 6.4549 | 6.5133 | 2,080.07 MiB | 2,041.48 MiB | 166.26 ms | 173.65 ms | 95 → 162 ms |
|
||||
| 2 | 6.5528 | 6.5115 | 2,482.75 MiB | 1,997.45 MiB | 166.18 ms | 174.22 ms | 72 → 93 ms |
|
||||
| 3 | 6.5624 | 6.5556 | 2,242.84 MiB | 1,989.43 MiB | 166.55 ms | 165.82 ms | 71 → 105 ms |
|
||||
|
||||
Paired average-FPS changes are +0.90%, −0.63%, −0.10%. Their descriptive
|
||||
arithmetic mean is +0.06%; this does not establish an FPS improvement. Peak
|
||||
sampled RSS is 1.86%, 19.55% and 11.30% lower, illustrating substantial process
|
||||
variation. A smaller configured heap limit is not a total resident-memory cap.
|
||||
The smaller-heap captures still use roughly 1.94–1.99 GiB of sampled process RSS.
|
||||
|
||||
p95 frame intervals are 4.44% and 4.84% worse in the first two pairs and 0.44%
|
||||
better in the third. Slowest-1%-average FPS changes are −0.06%, −5.08%, +10.03%.
|
||||
CPU changes are −5.10%, +0.24%, −0.17%, without a consistent absolute reduction.
|
||||
GC accounting time increases 29–71%; these MXBean totals are not measured
|
||||
stop-the-world pause durations. Tick execution means change −7.25%, +9.22%,
|
||||
+1.15%, while observed invocation throughput stays near 20 TPS in every run.
|
||||
|
||||
## Validation and limits
|
||||
|
||||
All six clients save and exit with code zero. Frame/tick CSV counts and mean
|
||||
durations match their JSONs, with zero exclusions or dropped samples. Captured
|
||||
settings, Java/collector/header configuration and loaded mod identities match
|
||||
apart from the intentional heap maximum. Sampled tick-manager state remains
|
||||
normal at 20 configured TPS, without freeze, step, sprint or rate changes. Saved
|
||||
camera, position, clock and weather rules match across runs.
|
||||
|
||||
All three actual frame/tick JSON+CSV pairs pass desktop/mobile viewer checks,
|
||||
including duration traces and the visible intentional heap mismatch. The
|
||||
[selected observations](../benchmarks/heap-budget-2026-10-04/live-observations.json)
|
||||
retain all six runs, paired metrics, configuration, software identity and private
|
||||
capture/fixture hashes. Raw worlds, CSVs and complete logs remain private.
|
||||
|
||||
These are sampled peaks during settled recordings, not whole-session startup
|
||||
peaks or complete GPU/unified-memory accounting. Three fixed-order pairs in one
|
||||
world cannot establish capacity for exploration, generation, long sessions,
|
||||
shaders, distant terrain, all hardware or 50 dedicated-server players. JIT, OS
|
||||
cache, entities and thermal effects can still vary. Do not pool this experiment
|
||||
with vanilla/core comparisons or infer physical M2 results from it.
|
||||
|
||||
The 16 GB Mac starter retains its 6 GiB recommendation for balanced distant
|
||||
terrain. See the [Mac test procedure](mac-first-test.md) and
|
||||
[memory measurement limits](process-memory.md) when measuring another budget.
|
||||
+17
-84
@@ -8,11 +8,9 @@ Build **horizon-mac-starter-0.21.0.zip** with `python3 tools/build_release.py` (
|
||||
|
||||
Use native **Java 25 ARM64**, maximum heap **6144 MiB**, minimum **512 MiB** on a 16 GB M2 Pro Mac. Prism can download Java automatically. Start at 1280×800 or 1920×1200; full Retina resolution is a larger GPU workload. [START-HERE.txt](../packs/START-HERE.txt) has details. The same `.mrpack` files import into Prism on Windows and Linux.
|
||||
|
||||
If Prism is already installed, follow the [Mac import and first comparison guide](mac-first-test.md).
|
||||
|
||||
Core and balanced also pass [macOS title/demo-world rendering probes](client-graphics-smoke.md)
|
||||
on the hosted ARM64 software renderer, including readback, saves and clean exits.
|
||||
Physical M2 GPU performance and macOS 27 remain to be tested.
|
||||
Core and balanced passed macOS title and demo-world rendering probes on the hosted
|
||||
ARM64 software renderer, including readback, saves and clean exits. Physical M2
|
||||
GPU performance and macOS 27 were never tested.
|
||||
|
||||
| Profile | Full-detail chunks | Distant LOD radius | Suggested maximum heap |
|
||||
| --- | ---: | ---: | ---: |
|
||||
@@ -46,76 +44,24 @@ For the first comparison at the same view distance, use `baseline` versus
|
||||
The latter adds only the pinned core performance mods and leaves every original
|
||||
controller disabled. Then test balanced separately for its additional distant
|
||||
terrain. Matching captured settings does not prove pixel-identical rendering.
|
||||
[Core comparison protocol and selected observations](core-performance.md)
|
||||
include three repeated matched-view software-rendered pairs with 14–21% higher
|
||||
FPS in this workload; M2 performance remains unmeasured.
|
||||
|
||||
[Heap budget experiment](heap-budget.md): three pairs with 3 GiB versus
|
||||
1.5 GiB maximum heap show variable RAM savings and GC/frame-time tradeoffs;
|
||||
playable defaults remain unchanged.
|
||||
The profiles marked *experiment* each isolate one change to Distant Horizons,
|
||||
EntityCulling or the JVM (adaptive terrain throttling, precise worker pacing,
|
||||
debounce-queue waits, rejected-dispatch retries, empty culling whitelists,
|
||||
culling ray scratch vectors, terrain quad reuse, terrain position arithmetic,
|
||||
tick membership storage, a smaller heap, compact object headers). Each kept the
|
||||
upstream behaviour it replaced and was measured only on Linux software rendering,
|
||||
where none showed a gain large enough to enable by default; balanced keeps them
|
||||
all off. Their write-ups were removed once the Rust rewrite replaced this track;
|
||||
they remain in Git history. Matched software-rendered pairs showed `core-performance`
|
||||
14–21% faster than `baseline`, and Vulkan about 1.5% more FPS for about 12% more
|
||||
CPU; neither is evidence for a Mac GPU.
|
||||
|
||||
[Matched graphics API comparison](graphics-api-comparison.md): Vulkan adds
|
||||
about 1.5% average FPS but about 12% CPU in three Linux software-rendered pairs;
|
||||
backend defaults remain unchanged and physical Mac performance is unmeasured.
|
||||
|
||||
The optional `queue-wait` pack yields during pending distant-terrain debounce retries; `adaptive-queue` combines it with the existing controllers. [Queue experiment and measurement limits](debounce-queue.md).
|
||||
|
||||
Version 0.16 adds a separate [terrain position arithmetic experiment](terrain-position.md)
|
||||
for the sampled full-data lookup. It retains the pinned library’s unusual
|
||||
negative-coordinate rounding and invalid-level errors. Balanced keeps it off;
|
||||
whole-game and Mac performance still require measurement.
|
||||
|
||||
Version 0.15 adds an isolated [culling ray scratch experiment](culling-rays.md)
|
||||
that reuses two numeric vectors within each culling instance while retaining
|
||||
upstream arithmetic and decisions. Balanced keeps it off; hardware gains remain
|
||||
unmeasured.
|
||||
|
||||
Version 0.14 adds an isolated [empty culling whitelist experiment](culling-empty.md)
|
||||
that avoids allocating iterators while there are no dynamic handlers. Live
|
||||
registration and nonempty callbacks retain upstream behavior. Balanced keeps it
|
||||
off; whole-game gains still need hardware comparisons. DH profiles also request
|
||||
a scoped [interruptible blending-read wait](terrain-read-wait.md) to let
|
||||
background workers leave a pending metadata read during shutdown.
|
||||
|
||||
Version 0.13 adds an isolated [tick membership experiment](tick-membership.md)
|
||||
that reuses compact storage for DH's private per-tick membership checks. The
|
||||
combined foreground profiles include it too; balanced keeps it off. The applied
|
||||
holder test verifies action semantics and removes repeated entry allocations;
|
||||
whole-game FPS and RAM gains still need hardware measurements.
|
||||
|
||||
Version 0.12 captures effective distant-terrain quality, radius, worker budgets,
|
||||
Iris state and field of view. Start/end snapshots flag changed visual settings;
|
||||
[measurement details](terrain-measurements.md) explain their limits.
|
||||
|
||||
Version 0.11 adds combined foreground-first OpenGL/Vulkan profiles with a 120 FPS
|
||||
adaptive goal, plus explicit collector experiments and GC measurement guidance.
|
||||
See [combined controls](foreground-first.md), [Vulkan on your Mac](vulkan.md)
|
||||
and [collector comparisons](collectors.md). The frame goal is not a rendering cap.
|
||||
|
||||
Version 0.10 adds an isolated [rejected-dispatch retry experiment](dispatch-retry.md).
|
||||
It bounds retry passes when a DH worker rejects queued work, preserving original
|
||||
requeue handling and allowing other executors to progress. Balanced keeps it off.
|
||||
|
||||
Version 0.9 also makes the queue's idle wait wakeable for incoming work, preserving
|
||||
its debounce rules and bounded cache-maintenance cadence. It remains part of the
|
||||
optional queue profiles, with separate wake-latency measurements.
|
||||
|
||||
Version 0.8 fixes a fresh-instance graphics preset that could override the selected
|
||||
render distance. It also records actual GC/header settings and supports an optional
|
||||
[compact object headers experiment](compact-headers.md) for Java 25; packs
|
||||
do not enable that JVM flag automatically.
|
||||
To try the game's own Vulkan backend on a Mac, see [Vulkan on your Mac](vulkan.md);
|
||||
to compare garbage collectors, see [collector comparisons](collectors.md).
|
||||
|
||||
## Measure on your hardware
|
||||
|
||||
The optional [adaptive terrain experiment](adaptive-terrain.md) throttles distant
|
||||
terrain background work when frames slow down or heap pressure rises, keeping the
|
||||
balanced profile's view distances and simulation settings. It remains opt-in until
|
||||
real hardware demonstrates a benefit.
|
||||
|
||||
The additional [precise worker pacing experiment](worker-pacing.md) makes short
|
||||
terrain tasks respect their duty-cycle budget and avoids boxed worker timestamps.
|
||||
It changes generation speed and CPU use, so it stays separate from balanced.
|
||||
|
||||
Press **F8** during gameplay to start a 120-second recording, or again to stop early. Rebind in Controls if needed. This also works with restricted chat accounts. Alternatively: `/horizon bench <label> 120`, `/horizon stop`, `/horizon status`.
|
||||
|
||||
Use separate identical world copies and the same camera route, resolution, render/simulation distance, heap, VSync and FPS limit. Warm up, then alternate at least three baseline/optimized runs. Test fresh chunk exploration separately. For everyday play cap FPS or enable VSync to reduce power usage.
|
||||
@@ -128,22 +74,9 @@ python3 tools/compare_benchmarks.py baseline-frames.json optimized-frames.json -
|
||||
|
||||
Open `Compare-Benchmarks.html` from the starter ZIP or [the source file](../tools/Compare-Benchmarks.html) in your browser to compare without Python. Select each JSON and optionally its matching CSV. It exports summary JSON, flags settings and duration differences, and charts frames by recorded active time or ticks by sample number. It is self-contained and makes no network requests.
|
||||
|
||||
Version 0.18 adds an isolated [terrain quad reuse experiment](quad-reuse.md).
|
||||
It reuses a temporary quad discarded by successful premerge when the existing
|
||||
pool would otherwise allocate. Generated geometry and thread ownership checks
|
||||
pass; allocation results are not whole-game RAM or FPS evidence. It remains off
|
||||
in combined profiles.
|
||||
|
||||
Version 0.17 also records loaded mod versions and the Java vendor, VM and runtime
|
||||
build in client and server reports. Both comparison tools flag software changes
|
||||
as explicit experiment variables; older reports remain usable with an unknown
|
||||
software warning. The viewer can expand the complete loaded mod list.
|
||||
[Live software identity check](../benchmarks/software-identity-2026-10-04/live-observations.json)
|
||||
records the metadata and file-count validation; its short capture is not a
|
||||
performance comparison.
|
||||
|
||||
|
||||
The comparison flags captured setting differences, but cannot verify route, world, shader state or cache warm-up. See [validation evidence](playable-validation.md). Software-renderer test FPS is not evidence of a Mac/GPU speedup.
|
||||
The comparison flags captured setting differences, but cannot verify route, world, shader state or cache warm-up. Software-renderer test FPS is not evidence of a Mac/GPU speedup.
|
||||
|
||||
For CPU/allocation investigation, [capture and stream a private JFR summary](profiling.md).
|
||||
It distinguishes directly observed allocation counters from sampled hot methods;
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
# First test on the M2 Pro Mac
|
||||
|
||||
For the 16 GB M2 Pro, start with the 0.21.0 packs. No release downloads are published; build them with `python3 tools/build_release.py`. Core and balanced
|
||||
pass title/demo-world rendering and save/exit probes on the hosted macOS ARM64
|
||||
software renderer. Gameplay and FPS on this physical Mac remain unmeasured.
|
||||
The Linux software-rendering observations do not predict an M2 speedup.
|
||||
|
||||
## Import after installing Prism
|
||||
|
||||
1. Build `horizon-mac-starter-0.21.0.zip` with `python3 tools/build_release.py`, copy it
|
||||
from `dist/` to the Mac and extract it in Finder.
|
||||
2. In Prism, choose **Add Instance > Import**, then select
|
||||
`horizon-m2-balanced-0.21.0.mrpack` from the extracted folder. The individual
|
||||
`.mrpack` is the import file; the starter ZIP contains several different packs.
|
||||
[Prism's import guide](https://prismlauncher.org/wiki/help-pages/zip-import/)
|
||||
describes the supported archive formats.
|
||||
3. Sign into your Microsoft account inside Prism, using your own Java Edition
|
||||
license. This project needs no account credentials.
|
||||
4. Open Prism's global **Settings > Java** and enable **Autodetect Java version**
|
||||
and **Auto-download Mojang Java**. This pack requires Java 25. On Apple Silicon,
|
||||
use ARM64/aarch64 Java. If you select Java manually, use the instance's
|
||||
**Edit > Settings > Java > Java installation > Auto-Detect** and select native
|
||||
Java 25. [Prism's Java guide](https://prismlauncher.org/wiki/getting-started/installing-java/)
|
||||
explains automatic downloads and manual selection.
|
||||
5. In the instance's **Edit > Settings > Java**, enable the Memory override and
|
||||
set maximum memory to **6144 MiB**, minimum to **512 MiB**. This is a starting
|
||||
heap budget, not a measurement of total process or unified GPU memory.
|
||||
6. Launch and create a new test world, or use a copy of a Minecraft 26.3 world.
|
||||
Save, quit, reopen and check normal movement, breaking/placing blocks and
|
||||
inventory interaction before benchmarking. Start at a modest window size,
|
||||
such as 1280×800; the recorder reports the actual framebuffer dimensions,
|
||||
which may differ from the logical window size on a Retina display.
|
||||
|
||||
Balanced uses 12 full-detail chunks and a 128-chunk distant terrain radius.
|
||||
Allow the distant cache to settle. Distant terrain uses simplified geometry and
|
||||
does not extend normal simulation. The cinematic and Vulkan packs are separate
|
||||
experiments to try after this first launch succeeds.
|
||||
|
||||
## Measure performance at the same view distance
|
||||
|
||||
Import `horizon-baseline-0.21.0.mrpack` and
|
||||
`horizon-core-performance-0.21.0.mrpack` from the same starter folder. Both use
|
||||
12 full-detail chunks, 12 simulation chunks and no distant LOD or shaders. Core
|
||||
adds the pinned performance mods; all original experimental controllers are off.
|
||||
Comparing these two isolates the core stack more closely than comparing baseline
|
||||
with balanced's additional distant terrain.
|
||||
|
||||
Use identical separate world copies, the same Java/heap/JVM flags, actual
|
||||
framebuffer size, FOV, graphics quality, VSync, FPS limit and camera route. Close
|
||||
other game instances, plug in the Mac and keep its power mode consistent. Use
|
||||
uncapped FPS with VSync off for both measurements if you want to measure available
|
||||
throughput; return to a display-appropriate cap or VSync for everyday play.
|
||||
|
||||
Warm each run for at least three minutes after entering the world and dismissing
|
||||
menus. Longer generation workloads may need more time. Press **F8** (possibly
|
||||
**Fn+F8**) in focused gameplay for a 120-second recording. Keep the view or route
|
||||
consistent and avoid menus during recording. After it finishes, save and quit.
|
||||
Repeat three pairs in this order:
|
||||
|
||||
| Pair | First run | Second run |
|
||||
| --- | --- | --- |
|
||||
| 1 | baseline | core-performance |
|
||||
| 2 | baseline | core-performance |
|
||||
| 3 | baseline | core-performance |
|
||||
|
||||
This alternates profiles but always puts baseline first within a pair. It reduces
|
||||
dependence on one run; it does not remove order, cache or thermal effects. Keep
|
||||
fresh terrain exploration separate from already-generated terrain. Also test
|
||||
normal gameplay after the stationary view; matching settings is not exhaustive
|
||||
gameplay or visual equivalence.
|
||||
|
||||
## Read the results
|
||||
|
||||
Open each instance's Minecraft folder in Prism and find `horizon-benchmarks/`.
|
||||
Keep each run's frame JSON/CSV and tick JSON/CSV together. Open
|
||||
`Compare-Benchmarks.html` from the starter folder and select one baseline frame
|
||||
JSON plus its CSV and the paired core frame JSON plus its CSV. Then compare the
|
||||
paired tick files separately. The viewer works locally without uploading files.
|
||||
|
||||
Check settings mismatches, exclusions, dropped samples and tick-state warnings
|
||||
before comparing FPS, p95/p99 frame intervals, peak sampled RSS and average process
|
||||
CPU. Compare all three pairs rather than selecting the best result. Normal tick
|
||||
invocation throughput should remain near 20 TPS; inverse tick execution duration
|
||||
is not TPS. RSS is sampled once per second and does not cover all unified GPU
|
||||
memory. See [tick-state limits](tick-state.md) and [memory limits](process-memory.md).
|
||||
|
||||
Finally test balanced for the longer horizon using the same route and resolution,
|
||||
with a settled distant cache. Treat its extra view distance as a changed visual
|
||||
workload, then decide whether the appearance and performance meet your goal.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 170 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
@@ -8,7 +8,7 @@ hardness/tool rules, collect drops from the block loot tables, place blocks,
|
||||
craft in the 2x2 inventory grid or on a crafting table, and save and reload worlds
|
||||
in vanilla's Anvil format.
|
||||
|
||||
**Status:** playable, in development. The [Java parity table](../README.md#project-status)
|
||||
**Status:** playable; players get it through [the launcher](../launcher/README.md). The [Java parity table](../README.md#project-status)
|
||||
in the README scores each subsystem against vanilla and lists what is still
|
||||
missing; [Rust rewrite status](rust-parity.md) has the details.
|
||||
|
||||
@@ -17,7 +17,7 @@ missing; [Rust rewrite status](rust-parity.md) has the details.
|
||||
Use current stable Rust (1.90+), Python 3.10+ and JDK 25. Horizon never
|
||||
downloads the game: resource preparation imports **your own copy** (the 26.3
|
||||
client from your official launcher install, and the 26.3 server jar you
|
||||
downloaded yourself; see [Bring your own copy](../README.md#bring-your-own-copy)),
|
||||
downloaded yourself; see [Build from source](../README.md#build-from-source)),
|
||||
verifies it against the pinned checksums, runs vanilla's data generator and small
|
||||
exporters against those jars, and extracts the jar's assets and data into ignored
|
||||
`.local/horizon-client/26.3/`. Sounds (about 380 MB) are copied from your
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
# Optimization research plan
|
||||
|
||||
## Starting point
|
||||
|
||||
The first playable Java foundation is described in [Java performance packs](java-packs.md). Client optimization has priority. Vanilla gameplay, world formats and multiplayer behavior must be preserved; existing modpack compatibility is not required. Any language, renderer or architecture is in scope when measured gains justify it. Windows/Linux and Apple Silicon/Intel macOS are targets, with the M2 Pro/16 GB Mac prioritized.
|
||||
|
||||
Inspect both pinned game JARs locally, retain bytecode as the reference, and measure actual Minecraft workloads before selecting a subsystem to replace. The Rust face-count experiment establishes a small correctness/benchmark workflow; it does not identify a Minecraft bottleneck.
|
||||
|
||||
Whole-game translation is a long-term research objective. Decompiled Java is an inspection artifact, not the original source tree: build configuration, comments, tooling history, and some source-level constructs cannot be recovered faithfully. A mechanically translated Rust game would also have to preserve behavior, data formats, networking and rendering. An isolated hot-path replacement is a useful first experiment.
|
||||
|
||||
The Rust rewrite now has an original `horizon-core` foundation and a bytecode
|
||||
differential runner for selected position, random-stream and packed-storage
|
||||
operations. [Rust parity status](rust-parity.md) distinguishes that tested slice
|
||||
from the unimplemented gameplay and renderer. This establishes compatibility
|
||||
testing infrastructure; it does not select an FPS bottleneck or supply a playable
|
||||
Rust client.
|
||||
|
||||
## Local code map
|
||||
|
||||
These entry points were verified present in the decompiled 26.3 client. Paths below are relative to `.local/minecraft/26.3/sources/client/net/minecraft/`; shared/server logic can also be inspected in the dedicated-server tree.
|
||||
|
||||
| Area | Local entry points | Questions to measure |
|
||||
| --- | --- | --- |
|
||||
| Client loop | `client/Minecraft.java` | CPU frame-time distribution, allocation/GC, render-thread stalls |
|
||||
| Server loop | `server/MinecraftServer.java`, `server/level/ServerLevel.java` | Tick time, entity/block tick work, waiting on chunk jobs |
|
||||
| Section compilation | `client/renderer/chunk/SectionCompiler.java`, `SectionRenderDispatcher.java` in that directory | Work per rebuild, queue latency, allocations, upload overhead |
|
||||
| World generation | `world/level/levelgen/NoiseChunk.java`, `NoiseBasedChunkGenerator.java` in that directory | Time per newly generated chunk, cache reuse, generation scheduling |
|
||||
| Lighting | `world/level/lighting/LevelLightEngine.java` | Update propagation work and queue contention |
|
||||
| Block storage | `world/level/chunk/PalettedContainer.java` | Palette access costs, locality, mutation behavior |
|
||||
| Region I/O | `world/level/chunk/storage/RegionFile.java` | Serialization/compression cost versus disk waits |
|
||||
|
||||
The local inventory contains every class, bytecode size, method count, and source-file relationship. Large classes are navigation hints; bytecode size does not establish execution cost. Generated registries can be large while irrelevant to steady-state frame time.
|
||||
|
||||
## Capture a real baseline
|
||||
|
||||
Use a licensed launcher installation and a copy of a test world. Keep raw captures and world data in `.local/`. Record game version/hash, mod versions, Java version/flags, CPU/GPU, OS, resolution, render/simulation distance, world seed, route, and warm-up duration.
|
||||
|
||||
Use at least these separate scenarios:
|
||||
|
||||
1. A fixed stationary view after chunks settle.
|
||||
2. A reproducible movement route through already generated chunks.
|
||||
3. The same route through newly generated terrain.
|
||||
4. A controlled entity/redstone workload on the dedicated server.
|
||||
5. World loading/saving as a separate latency test.
|
||||
|
||||
For a running local Java process, JDK tooling can capture a bounded recording:
|
||||
|
||||
```sh
|
||||
jcmd -l
|
||||
# Replace 12345 with the Minecraft JVM PID, and use an absolute capture path.
|
||||
jcmd 12345 JFR.start name=mc-baseline settings=profile duration=120s filename=/absolute/path/to/repo/.local/baseline.jfr
|
||||
jfr summary .local/baseline.jfr
|
||||
jfr print --events jdk.ExecutionSample,jdk.GarbageCollection .local/baseline.jfr > .local/baseline-events.txt
|
||||
```
|
||||
|
||||
Collect CPU profiles, allocation/GC information, frame-time percentiles, server tick-time percentiles, and relevant GPU timings. JFR samples alone do not measure FPS or GPU cost. JVM compilation/warm-up, profiling overhead, world generation, and background activity must be controlled when comparing runs. The [core comparison](core-performance.md) now contains stationary Linux software-rendering observations; Mac GPU, movement/generation and populated dedicated-server measurements remain open.
|
||||
|
||||
## First native integration experiment
|
||||
|
||||
Choose a kernel only after a profile shows enough inclusive cost to justify it. A candidate should have a clear input/output boundary and deterministic reference tests. Candidate areas include occupancy preprocessing, palette scans, or batched generation calculations; these are hypotheses to investigate.
|
||||
|
||||
Measure an improved Java implementation first. Then compare an original Rust implementation with equivalent work and account for Java/native transition cost, data marshaling, allocation, and scheduling. Use coarse batches rather than a call per block. Preserve Minecraft behavior for boundaries, partial/transparent blocks, lighting, saved data, and deterministic world generation wherever the selected kernel touches them.
|
||||
|
||||
Ship any integration as an original mod/native library loaded into the user's local game. Do not bundle a modified Minecraft client/server. Add a fallback to the reference implementation and differential tests using locally generated fixtures.
|
||||
|
||||
## Gates before expanding scope
|
||||
|
||||
| Gate | Evidence required |
|
||||
| --- | --- |
|
||||
| Bottleneck selected | Reproducible real-game profile and workload definition |
|
||||
| Kernel equivalent | Boundary cases and randomized differential tests, including real input shapes |
|
||||
| Native call worthwhile | End-to-end measurements including copying and transitions |
|
||||
| Game improves | Repeated real-game frame/tick distributions, allocations, memory, and CPU/GPU cost |
|
||||
| More Rust justified | Improvement persists across workloads without changing gameplay |
|
||||
|
||||
If a subsystem occupies fraction `p` of total measured time, even eliminating its cost gives a theoretical maximum overall speedup of `1 / (1 - p)`. For example, a subsystem consuming 10% of frame time cannot alone yield a 2× whole-game speedup. Apply this before undertaking a large rewrite.
|
||||
@@ -1,170 +0,0 @@
|
||||
# First playable release validation
|
||||
|
||||
Version 0.2.0 targets Minecraft 26.3 / Fabric 0.19.5 / Java 25. This is an initial playable Java optimization stack, not a completed renderer rewrite. Measurements here establish what was actually checked.
|
||||
|
||||
## Local checks
|
||||
|
||||
- Official client runs through a Wayland virtual screen in built-in limited demo mode, without Microsoft credentials. Normal Mac play uses licensed Prism sign-in.
|
||||
- Balanced stack (Sodium, Lithium, FerriteCore, ImmediatelyFast, EntityCulling, Distant Horizons, Fabric API, Horizon) reaches the menu, loads the demo world, logs in locally, renders terrain, and saves/quits.
|
||||
- DH generates and accepts the current configuration schema: 128-chunk LOD radius, two background threads at 0.5 run-time ratio, priority 3. No old-version guessed config keys.
|
||||
- A missing desktop AWT component in the local headless JRE initially caused a DH cloud-texture error. Installing the complete Java 25 runtime resolved it; this was an environment issue, not a packaged mod change.
|
||||
- Native libraries are chosen by OS and architecture, including ARM64 selection when the official manifest has OS-only rules. Builds use portable `/` ZIP paths on Windows too.
|
||||
- The official Prism 11.1.1 macOS ZIP was downloaded, SHA-256 verified, and its actual app layout checked. Its launcher executable is a universal Mach-O containing x86_64 and arm64. The starter does not redistribute it or disable macOS security checks.
|
||||
- Dedicated-server optimized dependencies and original mod initialize with the real server game JAR; EULA-false startup exits as expected. No license acceptance is made on the user's behalf. Integrated-server gameplay is a separate client check.
|
||||
- The original recorder loads with the vanilla renderer and F8 starts/stops it during actual demo gameplay. A persistent virtual keyboard is needed on this headless compositor: removing the last temporary keyboard otherwise removes window focus and auto-pauses the game. This is a test harness detail, not a change to pause behavior or focus exclusions.
|
||||
- That runtime check wrote both raw CSV/JSON pairs, containing 69 actual frame intervals and 744 actual integrated-server tick durations. GPU/backend/driver and render settings were captured. The comparison tool successfully reads these real report files. This short, cold, software-rendered run validates capture/output only; it is not a performance baseline to compare with a real Mac.
|
||||
- Build/metrics/pack tests pass on actual hosted Apple Silicon macOS 26, Windows x64 and Linux x64 runners. The Windows run exposed an existing decompilation-coverage path separator mismatch; paths are now normalized to match JAR SourceFile metadata.
|
||||
- 17 offline Python tests cover corrupt/cached artifacts, server extraction/traversal rejection, decompilation inventory, publication exclusions, dependency closure, safe download paths, pack format, OS/ARM native selection, and comparison mismatches.
|
||||
- Original Java metrics tests cover percentiles, the average of the slowest 1% (not the reciprocal of p99), stall boundaries, bounded samples/overflow, filename sanitization, exclusions and player counts.
|
||||
- Existing three Rust differential tests, formatting and Clippy checks pass. Rust kernels remain unintegrated.
|
||||
|
||||
- The exact published balanced pack was then re-run through real demo world rendering, with its published original mod binary checked byte-for-byte against the runtime. F8 produced nonempty frame/tick JSON and matching raw CSV; each reported sample count and mean duration were checked against the CSV.
|
||||
|
||||
## Interpretation limits
|
||||
|
||||
The exact 0.11.0 JAR (SHA-256
|
||||
`c2f59ca0b2f1e356f51b41cd0d9f1d98d6b86e240f5b5a1424f27de57f0e9c4a`)
|
||||
ran `foreground-first` with an explicit G1 collector, compact headers and 3 GiB
|
||||
heap. Its 120-second OpenGL world capture produced 640 frame intervals and
|
||||
2,401 server ticks with matching CSV counts/means and 120 RSS samples each.
|
||||
All four controls and the wakeable idle path were reported enabled, with adaptive
|
||||
goal 120 FPS, uncapped rendering and actual distances 12/12. World saves, all
|
||||
three DH database closures, worker shutdown and client quit completed. The offline
|
||||
viewer displayed the actual combined state, goal/cap distinction and collector
|
||||
accounting guidance. These software-rendered checks validate integration rather
|
||||
than establishing M2 FPS, RAM, LOD-completion or real-GPU visual improvements.
|
||||
|
||||
The same exact JAR then ran `foreground-vulkan` with all controls enabled,
|
||||
adaptive goal 120, uncapped rendering and distances 12/12. The actual Vulkan
|
||||
backend and driver were captured. Its 120-second recording produced 618 frame
|
||||
intervals and 2,413 server ticks with matching CSV counts/means and 120 RSS
|
||||
samples each. This verifies the combination on Linux software Vulkan; it does
|
||||
not validate MoltenVK, all distant-geometry visuals or GPU performance on the Mac.
|
||||
|
||||
The exact 0.10.0 JAR (SHA-256
|
||||
`101790057c969333e2d9753640d4996649e8ced27e465897d8b6beab2474ed4c`)
|
||||
ran the standalone dispatch-retry profile with 3 GiB heap and compact headers.
|
||||
Its 120-second recording produced 568 frame intervals and 2,407 server ticks,
|
||||
with matching CSV counts/means and 120/119 RSS samples. The actual frame report
|
||||
retained custom graphics preset and 12/12 render/simulation distances, enabled
|
||||
the dispatcher hook, and disabled adaptive/pacing/debounce/idle hooks. The world
|
||||
saved, all three DH databases closed, worker threads stopped and the client quit.
|
||||
The offline viewer read actual dispatch metadata, JVM settings, RSS and CSV.
|
||||
Applied-hook fixtures verify exact task completion, independent-executor progress,
|
||||
recovered slots and shutdown against the actual upstream rejection path in Linux
|
||||
CI; Windows and ARM macOS compile the fixture. [Results and limits](dispatch-retry.md)
|
||||
describe synthetic, caller-only failure-path measurements. An unchanged client
|
||||
from the same saved world did not reproduce the earlier game allocation storm;
|
||||
these variable captures do not prove a repeatable game-FPS or RAM improvement.
|
||||
|
||||
The exact 0.9.0 JAR (SHA-256
|
||||
`2c5a731d4c93df427cc6054f120a52bf9456b3343b94ad9b79de1584b14d783f`)
|
||||
ran the combined queue/adaptive/pacing profile with a 3 GiB heap and compact
|
||||
headers enabled. Thread inspection reached the new wakeable idle park in all
|
||||
three dimension queues. The 120-second capture produced 806 frame intervals and
|
||||
2,411 server ticks, with matching CSV counts/means and 120 RSS samples each.
|
||||
The frame report captures the idle hook as true and actual render/simulation
|
||||
distances 12/12. The offline viewer reads the new flag, JVM settings and raw CSV;
|
||||
general viewer checks also pass. World/database/worker shutdown completed cleanly.
|
||||
Concurrency tests and the actual publisher-queue wake-latency probe pass on
|
||||
Linux, Windows and hosted Apple Silicon macOS; [raw results and limits](debounce-queue.md)
|
||||
keep idle wakeup separate from terrain completion and FPS. A 3 GiB heap passing
|
||||
this short world test is not a recommendation for heavy or long-running worlds.
|
||||
|
||||
The exact 0.8.0 JAR (SHA-256
|
||||
`b674be112cd148406b6b79c14f54b91a4da1ac0e03fe744aaee857c5a51eae8a`)
|
||||
loaded the complete adaptive-queue stack with compact headers enabled. A fresh
|
||||
options file retained custom graphics preset, render distance 12 and simulation
|
||||
distance 12 in the actual frame report. The 120-second run produced 793 frame
|
||||
intervals and 2,409 server-tick samples; CSV counts and mean durations match JSON.
|
||||
Both reports captured compact headers as true, G1 collector names and 120 RSS
|
||||
samples. The offline viewer displayed these actual settings, RSS and CSV charts;
|
||||
general frame/tick, invalid-input, escaping and mobile checks also passed.
|
||||
World/database shutdown completed cleanly. This software-rendered integration
|
||||
test is not a matched RAM/FPS comparison. Cross-platform builds, native-reader
|
||||
tests, metrics under compact headers, isolated allocation probes and 20 Python
|
||||
tests passed on Linux, Windows and hosted Apple Silicon macOS 26. See
|
||||
[object layouts and measurement limits](compact-headers.md).
|
||||
|
||||
Generated pack options now carry data version 5023, verified against `version.json`
|
||||
inside the checksum-verified Minecraft 26.3 JAR. Without this marker, the game's
|
||||
legacy-options migration reset the intended backend to Default. The fixed Vulkan
|
||||
preference starts the actual Vulkan backend with the pinned Sodium/DH/ImmediatelyFast
|
||||
stack, renders the demo world, and records 256 frame intervals / 2,372 server ticks
|
||||
over 120 seconds with matching CSV/JSON and 119–121 RSS samples. The frame report
|
||||
identifies Vulkan and its driver. DH data continues updating and saves/databases
|
||||
close cleanly. With an unavailable Vulkan driver path confined to a separate test
|
||||
process, the game reports backend creation failure and reaches the menu using its
|
||||
OpenGL fallback. These checks do not establish Vulkan speed, distant-LOD visual
|
||||
correctness, shader compatibility, or behavior on the user's Mac. Balanced remains
|
||||
the OpenGL first test; Vulkan remains an optional independent comparison.
|
||||
|
||||
The 0.7.0 optional debounce queue hook initializes and renders with the combined
|
||||
adaptive/pacing controls. The exact candidate JAR wrote 643 frame intervals and
|
||||
2,408 server-tick samples over 120 seconds; CSV counts and means match the reports,
|
||||
which capture all three controls as enabled and include resident-memory samples.
|
||||
Thread inspection reached the injected debounce parking path, DH terrain data
|
||||
continued updating, and worlds/databases/workers closed cleanly. The actual
|
||||
publisher queue microbenchmark passes identity/priority/count checks on Linux,
|
||||
Windows and Apple Silicon macOS; its raw results and timing overshoot are documented
|
||||
in [the queue experiment](debounce-queue.md). These are separate from game-FPS,
|
||||
block-update-latency or RAM-reduction claims. All fourteen pack overrides retain
|
||||
simulation distance 12 and explicitly set the intended experimental flags.
|
||||
|
||||
The 0.6.0 resident-memory sampler ran in the actual adaptive-pacing demo world.
|
||||
A 120-second recording produced 370 frame intervals and 2,407 server-tick samples;
|
||||
both CSV counts and mean durations match their JSON summaries. Each report has
|
||||
120 successful RSS samples, a peak of about 2,643 MiB, and a last-sample age under
|
||||
800 ms. The runtime JAR matches the release candidate byte-for-byte. After capture,
|
||||
the sampler thread waits without further scheduled reads. Native-read tests also
|
||||
pass on hosted Windows x64, Linux x64 and Apple Silicon macOS 26; unsupported
|
||||
reader behavior preserves timing samples and omits unavailable RSS fields.
|
||||
These numbers validate reporting in this particular software-rendered workload,
|
||||
not a RAM reduction or a prediction of the user's Mac memory use.
|
||||
|
||||
The 0.5.0 offline viewer passed Chromium checks using real frame/tick JSON and CSV
|
||||
files, charts, exports, malformed inputs, kind mismatches, escaped profile labels,
|
||||
and mobile layout. It is self-contained and has no network dependencies. Its game
|
||||
runtime classes are identical to 0.4.0, apart from mod version metadata.
|
||||
|
||||
The 0.4.0 worker-pacing hook also renders the demo world with the complete mod stack.
|
||||
Both pacing and adaptive controls are captured as enabled in the final build's
|
||||
120-second frame report. It produced 359 frame intervals and 2,401 integrated-server
|
||||
tick samples, verified against raw CSV counts and heap/resource fields. The DH database
|
||||
received terrain-data updates during this run. The earlier hook build saved/quitted
|
||||
and closed its databases/workers cleanly. Hosted executor benchmarks pass on Linux,
|
||||
Windows and Apple Silicon macOS; [their results](worker-pacing.md) remain separate
|
||||
from game-performance claims. The revised policy tests include 1 ms and 15 ms timer
|
||||
overshoot and bounded credit after long stalls.
|
||||
|
||||
The 0.3.0 adaptive profile rendered the actual demo world and applied live DH duty-cycle
|
||||
changes from 0.5 down to 0.05 under software-renderer frame pressure. Opening the pause
|
||||
menu released the override and reported an effective ratio of 0.5 again. A separate
|
||||
baseline instance starts without DH. API adapter tests cover suspension/resumption,
|
||||
changed user ceilings, and yielding to an existing or changed override from another mod.
|
||||
The real recorder wrote 193 frame intervals and 1,651 integrated-server tick samples,
|
||||
with matching CSV counts, sampled heap peaks and process CPU data. Dedicated-server
|
||||
0.3.0 dependencies initialize and exit with EULA false. No populated server result
|
||||
is inferred. The updated offline suite has 19 Python tests, including upgrade backups
|
||||
and refusing to replace an unrelated JAR with a matching filename.
|
||||
|
||||
A 60-second JFR recording identified foreground, server and DH worker activity. It
|
||||
also demonstrated why allocation sampling must be corroborated: large sample weights
|
||||
at timestamp boxing did not correspond to the largest per-thread allocation counter
|
||||
deltas. Profiles stay private under `.local/`; neither sample weights nor this
|
||||
software-renderer workload establish a real-hardware optimization result.
|
||||
|
||||
The local Linux host uses **Mesa llvmpipe software rendering**. It is useful for mod/mixin/startup/report validation, not for predicting M2 Pro, Windows GPU or Linux discrete-GPU performance. Warm-up/world loading on this host is slow. Demo credentials produce expected unavailable account-properties/Realms logs, and chat availability can be restricted; the independent F8 measurement shortcut avoids relying on chat.
|
||||
|
||||
CI compiles/builds on Linux and Apple Silicon macOS (Windows was dropped from scope on 2026-10-08; earlier Windows results below are historical). Successful compilation is not graphics, authentication, UI or Mac-driver runtime validation. macOS 27 and the user's actual M2 Pro have not been tested here. Optional cinematic shaders and Vulkan are experiments; the OpenGL balanced pack is the first manual test.
|
||||
|
||||
The [core comparison](core-performance.md) records numerical observations for
|
||||
matched software-rendered workloads. They do not establish a Mac or hardware-GPU
|
||||
speedup, least-memory result, exhaustive vanilla equivalence, universal GPU
|
||||
support, or a 50-active-player result. Worlds need copies, repeated matched routes
|
||||
and real hardware measurements before decisions about deeper replacements. New
|
||||
terrain generation and steady-state rendering are separate workloads.
|
||||
|
||||
## Release content
|
||||
|
||||
Packs embed only the original MIT Horizon JAR and config. Mod/game/library downloads retain upstream licenses and are checked against pinned hashes. No game JAR, class, decompiled source, asset, world or credential is committed or uploaded in a starter. The narrow publication allowance is for original Java under `dev/horizonlab`, and the built JAR checks its emitted class namespace.
|
||||
@@ -42,13 +42,12 @@ collectors these can include cycle duration and overlapping phases; it is not a
|
||||
direct stop-the-world pause measurement. The viewer calls it collection time.
|
||||
Use [JFR pause events](profiling.md) when investigating GC-induced stalls.
|
||||
|
||||
The [three-pair heap experiment](heap-budget.md) compares 3 GiB and 1.5 GiB
|
||||
maximum heaps with the same core stack. It records variable RSS savings, nearly
|
||||
unchanged average FPS and increased GC accounting; playable defaults remain
|
||||
A three-pair heap experiment compared 3 GiB and 1.5 GiB
|
||||
maximum heaps with the same core stack. It recorded variable RSS savings, nearly
|
||||
unchanged average FPS and increased GC accounting; playable defaults stayed
|
||||
unchanged.
|
||||
|
||||
The native-read test exercises the real library, overlapping recordings,
|
||||
background execution, idle cancellation and unavailable-reader behavior on
|
||||
the build platform. This validates measurement availability, not an FPS or
|
||||
RAM optimization result. Real game integration and platform results are
|
||||
recorded in the release validation document after they finish.
|
||||
RAM optimization result.
|
||||
@@ -1,106 +0,0 @@
|
||||
# Reusing discarded terrain quads
|
||||
|
||||
A private live allocation recording sampled Distant Horizons 3.3.4's
|
||||
`LodQuadBuilder.getOrCreateBufferQuad` on terrain render-loader threads. The
|
||||
builder obtains a temporary quad before trying to merge it with the last face.
|
||||
After a successful adjacent-face premerge, the incoming temporary quad is
|
||||
unused. The original method returns without retaining it in its existing pool.
|
||||
|
||||
The isolated `quad-reuse` profile keeps at most one such discarded quad per
|
||||
builder. It supplies that object only at the two fresh-constructor sites in
|
||||
`getOrCreateBufferQuad`; selection from the publisher's existing pool stays
|
||||
upstream. A successful merge requires a false error flag on both quads, matching
|
||||
the constructor's initial error state. The existing setter replaces every other
|
||||
stored field before use. This preserves the existing pool's ordering and error
|
||||
flags instead of adding a discarded object to that pool. No geometry list,
|
||||
merge predicate, sorting, lighting, texture/material identifier, upload budget,
|
||||
world data or simulation rule is replaced.
|
||||
|
||||
The hook requires exactly DH 3.3.4 and validates both constructor and both
|
||||
premerge call sites. It is off in every other profile, including combined
|
||||
profiles. Disable `enabled` in `config/horizon-quad-reuse.properties` and restart
|
||||
to compare with the same profile. Reports capture the actual applied flag.
|
||||
|
||||
The applied Fabric fixture generates 55,296 input faces spanning all directions,
|
||||
opaque/translucent colors, light levels and material/tile identifiers. It checks
|
||||
all stored quad fields before and after upstream merging, including sort keys
|
||||
and error flags. A deliberately poisoned existing-pool object checks that its
|
||||
state stays upstream. Identity checks reject aliases in live geometry lists.
|
||||
Four concurrent builder workers compare geometry and reject shared live quads.
|
||||
These are generated geometry checks, not rendered-pixel comparison on each GPU.
|
||||
|
||||
Private exploratory loops measured about 145 MB caller allocation upstream and
|
||||
2 MB with reuse over 3,072,000 faces. The same reduction appeared in the initial
|
||||
production-hook fixture. CPU observations varied: one private pair favored the
|
||||
hook, another favored upstream, and the first production pair favored the hook.
|
||||
Fixed-order sequential observations do not establish a statistical speedup.
|
||||
The fixture favors merging and does not represent every terrain workload.
|
||||
|
||||
The hook adds a reference and can retain one discarded object per builder.
|
||||
Lower allocation is not a measurement of lower retained heap, process RSS,
|
||||
unified memory, game FPS or Apple Silicon performance. Live startup, capture,
|
||||
save/reload and independent platform checks are required before recommending it.
|
||||
|
||||
Raw [production-hook results](../benchmarks/quad-reuse-2026-10-04/local-applied-hooks.json)
|
||||
and [private exploratory observations](../benchmarks/quad-reuse-2026-10-04/exploratory-observations.json)
|
||||
retain protocol and provenance limits. The current fixture fingerprints include
|
||||
opaque/translucent list boundaries, face indices and list sizes. A baseline
|
||||
without DH reaches the menu and exits with code zero.
|
||||
|
||||
The independent [Linux CI fixture](../benchmarks/quad-reuse-2026-10-04/linux-applied-hooks.json)
|
||||
matched the geometry and four-worker fingerprints. Its allocation totals matched
|
||||
the local reduction, but caller CPU was about 40.4 ms upstream versus 44.1 ms
|
||||
with reuse, so this check does not support a universal CPU improvement. Windows,
|
||||
macOS ARM and Linux checks pass, and the Linux production JAR matches the local
|
||||
binary byte-for-byte.
|
||||
|
||||
The [live software-rendered observations](../benchmarks/quad-reuse-2026-10-04/live-observations.json)
|
||||
record 220 control versus 224 candidate frames over roughly 120 seconds, with
|
||||
zero exclusions and matching captured settings and first saved cameras. Peak
|
||||
sampled RSS differed by less than one percent. Preceding render-loader allocation
|
||||
counter rates were higher with reuse in this pair. Task completion/geometry
|
||||
volumes and cache/JIT effects are not quantitatively controlled, so neither the
|
||||
small frame/RSS differences nor these counters establish a useful game
|
||||
performance or memory improvement. The candidate saved, reloaded, saved again
|
||||
and exited with code zero; the control saved, closed its terrain databases and
|
||||
exited with code zero.
|
||||
Actual JSON/CSV comparison and mobile layout checks pass. The hook remains an
|
||||
optional experiment, disabled in combined profiles.
|
||||
|
||||
The [initial shallow-size observations](../benchmarks/quad-reuse-2026-10-04/shallow-size-observations.json)
|
||||
measure the actual hooked classes with `Instrumentation.getObjectSize` inside
|
||||
four separate Fabric demo clients on local Linux x64 Java 25. They use four
|
||||
adjacent north-facing quads, which premerge to one geometry quad in every mode.
|
||||
|
||||
| Compact headers | Hook | Builder bytes | Quad bytes | Pending scratch bytes |
|
||||
| --- | --- | ---: | ---: | ---: |
|
||||
| Off | Off | 48 | 56 | 0 |
|
||||
| Off | On | 48 | 56 | 56 |
|
||||
| On | Off | 40 | 48 | 0 |
|
||||
| On | On | 48 | 48 | 48 |
|
||||
|
||||
Without compact headers, the extra reference fits the measured builder's existing
|
||||
alignment padding. With compact headers, the builder itself grows by eight bytes.
|
||||
In this workload both modes add 56 shallow bytes per builder including the pending
|
||||
scratch. This excludes existing pools, referenced lists and every other game
|
||||
object. JVM alignment and compressed-reference settings or other architectures
|
||||
can change layouts. It is not a deep heap, residency, RSS, unified RAM or Mac
|
||||
measurement, and does not demonstrate a net game memory benefit.
|
||||
|
||||
The reusable probe keeps both test binaries outside playable packs and records
|
||||
JVM runtime, alignment and compressed-reference settings. With Java 25 and the
|
||||
usual build prerequisites, reproduce it using:
|
||||
|
||||
```sh
|
||||
python3 tools/build_mod.py
|
||||
python3 tools/test_quad_sizes.py
|
||||
```
|
||||
|
||||
Linux uses Xvfb by default; `--native-display` uses an existing screen. The output
|
||||
is gitignored `dist/quad-size-integration.json`; game logs and the test agent/fixture
|
||||
remain in `.local/`. No account or world is needed for this demo-mode probe.
|
||||
|
||||
The [reusable local applied probe](../benchmarks/quad-reuse-2026-10-04/local-shallow-size-applied.json)
|
||||
reproduces the initial sizes and records eight-byte object alignment and compressed
|
||||
references. All four processes exit successfully. A separate Java source-launcher
|
||||
check verifies agent loading from a quoted path containing spaces.
|
||||
@@ -4,7 +4,7 @@ Horizon started as a decompilation and optimization lab. This page describes the
|
||||
|
||||
## Local game inspection
|
||||
|
||||
Game JARs, decompiled Java, libraries, inventories, worlds and logs live **inside this checkout** under gitignored **`.local/`**. No game code is in Git history or release downloads. Fresh clones rebuild the inspection workspace from your own copy of the game (see [Bring your own copy](../README.md#bring-your-own-copy)); nothing of the game is downloaded.
|
||||
Game JARs, decompiled Java, libraries, inventories, worlds and logs live **inside this checkout** under gitignored **`.local/`**. No game code is in Git history or release downloads. Fresh clones rebuild the inspection workspace from your own copy of the game (see [Build from source](../README.md#build-from-source)); nothing of the game is downloaded.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/ludovic111/horizon.git
|
||||
@@ -78,7 +78,7 @@ cargo test --workspace
|
||||
cargo run --release --bin voxel-bench -- 100 > .local/voxel-benchmark.csv
|
||||
```
|
||||
|
||||
The dependency-free occupancy experiment compares scalar and bitset exposed-face counting for synthetic 16³ sections. It has no real mesh, material/AO/light work, neighboring-section context, JNI bridge or game integration. Speedups are kernel-only, not Minecraft FPS. [Research plan](optimization-plan.md) describes profiling, improved Java baselines, native integration and behavior checks before expanding scope.
|
||||
The dependency-free occupancy experiment compares scalar and bitset exposed-face counting for synthetic 16³ sections. It has no real mesh, material/AO/light work, neighboring-section context, JNI bridge or game integration. Speedups are kernel-only, not Minecraft FPS.
|
||||
|
||||
Public branding and new mod downloads use **Horizon**. The existing Fabric mod
|
||||
ID and `dev.horizonlab` namespace remain stable for installed instances and
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
# Integrated-server graphics context
|
||||
|
||||
Client rendering competes with the integrated server for CPU time. Version 0.21
|
||||
copies GPU, backend and driver into the tick report when F8 or `/horizon bench`
|
||||
starts a single-player recording. The values come from the client/render thread
|
||||
and are copied into immutable metadata; server ticks never access GPU APIs.
|
||||
|
||||
Reports identify `server_runtime_kind` as integrated, dedicated or unknown.
|
||||
`client_graphics_capture_status` is `captured_at_recording_start` only when all
|
||||
three graphics fields are supplied for an integrated server. The server-only
|
||||
command does not inspect client graphics. Old callers retain their compatible
|
||||
four-argument recording entrypoint and report unknown runtime context.
|
||||
|
||||
The offline viewer and CLI flag differing runtime kinds, graphics backends and
|
||||
drivers. Legacy reports remain readable, with unknown-context warnings. A
|
||||
matched start snapshot does not establish unchanged graphics throughout the
|
||||
recording, equivalent client quality, world work or scheduling. Rendering changes
|
||||
still require paired frame reports and an explicitly controlled experiment.
|
||||
This metadata change makes no FPS, TPS or RAM improvement claim.
|
||||
|
||||
```sh
|
||||
python3 tools/build_mod.py
|
||||
python3 tools/test_server_graphics.py --native-display --backend opengl
|
||||
# Separate fresh private instance; Linux software renderer research only:
|
||||
python3 tools/test_server_graphics.py --native-display --backend vulkan
|
||||
```
|
||||
|
||||
The private fixture starts a normal 10-second frame/tick recording through the
|
||||
client recorder, checks both reports against the actual device, saves the demo
|
||||
world and exits. It does not change simulation rate or gameplay rules. Windows
|
||||
compiles the fixture; Linux and hosted macOS check the actual game-selected backend. An explicit
|
||||
`--backend` experiment still rejects fallback; the default metadata check does
|
||||
not require a particular renderer. Full logs,
|
||||
worlds and fixture JARs remain private and outside playable downloads.
|
||||
@@ -1,67 +0,0 @@
|
||||
# Optional shader world probe
|
||||
|
||||
The cinematic pack starts with shaders disabled. A world rendering successfully
|
||||
with that profile does not establish that its optional shader pack works.
|
||||
The separate manual **macOS shader research** workflow explicitly enables the
|
||||
pinned Complementary Reimagined pack in private cinematic instances and probes
|
||||
OpenGL and Vulkan independently.
|
||||
|
||||
The probe uses Iris's runtime API through the recorder's existing read-only
|
||||
inspection. Success requires available shader status, an active shader pack,
|
||||
the exact pinned pack identity, focused world gameplay without an overlay,
|
||||
nonuniform framebuffer readback, saved world data and a clean exit. A disabled,
|
||||
unavailable or different pack fails even if ordinary world pixels look valid.
|
||||
Arbitrary runtime pack names and paths are not exported.
|
||||
|
||||
```sh
|
||||
python3 tools/build_mod.py
|
||||
python3 tools/test_client_graphics.py --native-display --profile cinematic --backend opengl --world --shaders
|
||||
python3 tools/test_client_graphics.py --native-display --profile cinematic --backend vulkan --world --shaders
|
||||
```
|
||||
|
||||
Shader instances use separate runtime folders and a 6 GiB maximum heap. Other
|
||||
graphics probes keep their 3 GiB budget. The fixture reports the actual maximum
|
||||
heap and observed shader status. Playable packs and their shader defaults are
|
||||
unchanged. Full logs, PNGs, world files, assets and shader ZIPs stay private.
|
||||
|
||||
The research workflow runs both cases and retains selected failed outcomes.
|
||||
It fails if either case fails and remains separate from required OpenGL CI.
|
||||
This is a short initialization/readback/save check, not a shader FPS, physical
|
||||
M2 GPU, exhaustive visual quality or distant-terrain completion benchmark.
|
||||
|
||||
## Observed results
|
||||
|
||||
The [selected shader observations](../benchmarks/shader-worlds-2026-10-04/live-observations.json)
|
||||
retain successful and failed cases. On Linux llvmpipe, the OpenGL cinematic
|
||||
world probe passes with the pinned shader pack actually active, matching identity,
|
||||
nonuniform readback and clean save/exit. Its private image was visually inspected.
|
||||
This is a software-renderer startup result, not a shader FPS or physical Mac claim.
|
||||
|
||||
The Linux Vulkan cinematic case fails before readback, with a Distant Horizons
|
||||
lightmap handler in selected stack locations. A fresh private isolation instance
|
||||
with the DH JAR removed reaches ordinary Vulkan world readback but Iris reports
|
||||
shaders inactive. The strict activation assertion rejects it; ordinary world
|
||||
pixels alone would have produced a misleading shader success.
|
||||
|
||||
Hosted Mac run 37198566508 times out in both OpenGL and Vulkan cinematic cases,
|
||||
with no completed probe report. The previous timeout wrapper retained only
|
||||
`completed: false`; initialization/readback/waiting state is unknown. This does
|
||||
not establish shader support or incompatibility on physical Apple GPUs.
|
||||
|
||||
Later timeout diagnostics preserve selected initialization/readback stages,
|
||||
actual child exit status after bounded cleanup, and the last private waiting-state
|
||||
snapshot. Waiting state contains only six booleans and a tick count; arbitrary
|
||||
screen names, messages and paths are excluded. An unsuccessful research run
|
||||
remains unsuccessful. Playable shader/backend defaults remain unchanged.
|
||||
|
||||
Diagnostic repeat [37199837867](https://github.com/ludovic111/Horizon/actions/runs/37199837867)
|
||||
uses the richer diagnostics. Both cases again hit the 240-second timeout and
|
||||
require bounded termination. OpenGL initializes its device and loads a world
|
||||
with a player, no overlay, an active window and no pause; a screen remains
|
||||
present and the fixture never reaches readback readiness. Selected stack
|
||||
locations include Iris terrain rendering, but do not identify the screen or
|
||||
establish a root cause. Vulkan initializes its device and client entrypoint,
|
||||
but provides no waiting-state snapshot or readback request before timeout.
|
||||
Neither case yields an actual shader-activation assertion or saved/clean-exit
|
||||
success. The research workflow correctly fails; required non-shader OpenGL
|
||||
checks pass independently on Windows, Linux and macOS.
|
||||
Loaded 100 of 115 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user