Verify all pinned survival families through feature predicates
This commit is contained in:
@@ -8,12 +8,12 @@
|
||||
"block_states": 35723,
|
||||
"blocks": 1286,
|
||||
"integer_properties": 146,
|
||||
"codec_inputs": 299507,
|
||||
"codec_inputs": 356935,
|
||||
"provider_types": 10,
|
||||
"named_providers": 22,
|
||||
"rule_predicate_types": 16,
|
||||
"survival_supported_blocks": 1138,
|
||||
"survival_supported_states": 31171,
|
||||
"survival_supported_blocks": 1286,
|
||||
"survival_supported_states": 35723,
|
||||
"support_cached_states": 35524,
|
||||
"support_dynamic_states": 199,
|
||||
"biomes": 67,
|
||||
@@ -21,23 +21,23 @@
|
||||
"fluid_tag_files": 11,
|
||||
"bundled_provider_definitions": 8,
|
||||
"block_tag_files": 302,
|
||||
"requested_samples": 39270062,
|
||||
"requested_samples": 79473574,
|
||||
"sources_sha256": {
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaStateProviderOracle.java": "33ca3001656490ad4eb66e1e61ded306de4e448210eb7aca6299a068780761a0",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaStateProviderOracle.java": "3dcf6c76e1a0d8f80946ef7773c52343e542977414fe269f46ebd7b77a3340c0",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBlockStateCodecOracle.java": "5c217a8cb72094020082bd4846ed675a6399b9fa371be95a221bd92d227b2e09",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaHeightmapOracle.java": "145c943637ed177cc4ef8a85f2484da8afd164868e84a8463882feec1653a860",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaMaterialConditionOracle.java": "04a87405fd2a1c79baf4eb3a8895aa66dc96b8f6baffb9b486ef207f8b91b5ee",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBiomeTemperatureOracle.java": "243bbc525c6aec24674e7f172c5fb4f7b50f9a679d8b9dfba40ea278219a2d28",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaAnchorOracle.java": "226628d98b89aadbdd374936575d033945e7064a900dbb050c662204dbc7e119",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBlockPropertiesOracle.java": "82e5cadbcdcba5b4577c56c5a033262b066ccc4cc4a14c7c48ce46c4c6247a03",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBlockPropertiesOracle.java": "99a396b9b983f6ca9149133251f3ece9aaf76d3d16dafa1f322378212a19490c",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBlockSupportOracle.java": "04350901a2d708fb8fa672de61d058f73f332d2e90df1b93a67781862f89c1ad",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBlockSurvivalOracle.java": "00010bad8feea549c4243787e0d594b467a3227236a38c2e528d4247c7ba1c70",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionOracle.java": "02acfbae94aee306c5a4e1db7c86c68f7d6156ddd3dd477dc9e9d06e5ca98118",
|
||||
"tools/test_block_survival_parity.py": "e2f661afbf67a8726c9423d610f8b05b9e348c8140c40efb3aafaca0291efe31",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaBlockSurvivalOracle.java": "4e7cc151617c1b02e872f9ca3e9fe4632379f225f4f07718ff6492df4ee551e7",
|
||||
"mods/horizon/src/test/java/dev/horizonlab/parity/VanillaCollisionOracle.java": "60ff9ef7c1d5e23c080f9aec95ab2e7d3b7c5b5bcd67b9efa9518776c400629a",
|
||||
"tools/test_block_survival_parity.py": "9e8dff3bd4b95dbfd29f8adc6a2f6d66abf19a6b1cd91423b794a345d4ec244a",
|
||||
"tools/test_biome_temperature_parity.py": "68f84d02e7802349e491b8cb66e18d9b08c9e72ab2306b663667259e852cc2b1",
|
||||
"tools/test_material_condition_parity.py": "01c82e1a768d9131f8f7e6d59d01ddb06272074469dbdcd8547f44f0a8fa152d",
|
||||
"tools/test_worldgen_parity.py": "b40972ab2ad222aa6d77537cc36b434a217baa1f1b56bbaad945d6e12fe776af",
|
||||
"tools/test_state_provider_parity.py": "f52ab05832e9e9acf8aae779c3e199a1cd836592f1a993837edb0757d87b0f55",
|
||||
"tools/test_state_provider_parity.py": "7e39c1497e9f535998a70bcfbe38852a791e65c9688ce6f92f25547a07d040f6",
|
||||
"tools/test_rust_parity.py": "7efa699a38c5820424f5fc8992ee601dbfe26d6482da9d2dab2c17c41fe8f12a",
|
||||
"tools/lab.py": "d00bf107fa01b6c579734a082c3ca4ade3018f0d6851d46844acf17574f66e64",
|
||||
"Cargo.toml": "dc370d5fdde37238c3e4820046f11c3201020406a4edfa1308257c13edbdcda4",
|
||||
@@ -101,17 +101,18 @@
|
||||
"crates/horizon-core/src/ticks/index.rs": "1f1a6a568c2a30eafecb020ca4d5f5fc414860de85b8b381fc419a2e3e65c24a",
|
||||
"crates/horizon-core/src/ticks/mod.rs": "84852599dde78687d782f115a5b4b3ef6856c1f9cc92917255167e89c72ab01e",
|
||||
"crates/horizon-world/src/bin/worldgen_parity.rs": "3143ceb9b56eecfd7667e5feb5f9f0cd13cfb8754b38d4ea338dbba97f2819da",
|
||||
"crates/horizon-world/src/block_properties.rs": "e74b368012d4d440dcdbd4d9bcaf80495220b90557f0e0c733b0aa21ad03c53c",
|
||||
"crates/horizon-world/src/block_collision.rs": "cec2af81d212d5eed7a2196e4cf0be2daf4cecf53248f78cc68f2190e4d83f9a",
|
||||
"crates/horizon-world/src/block_properties.rs": "b3caf26bd3afc9d10cdcca3f7e794c30abf5ba09afa1fe80ba8f44713acdb274",
|
||||
"crates/horizon-world/src/block_support.rs": "ade4fbd47284b450dabdd682dc86138b2ac05a0fd379525d7110648908245476",
|
||||
"crates/horizon-world/src/block_survival.rs": "d7e4ba3709fe1fe1b4998d067080bf48ebfc549cdfc883d8d648d13d6fdf4e3f",
|
||||
"crates/horizon-world/src/block_survival.rs": "2c882aeb095c27a8edfda1e934ac829102e4be136d53fd83110132150b7293b1",
|
||||
"crates/horizon-world/src/chunk.rs": "8843e6f48dbbc4245ce4e95564dfba3a4d7a051ba0b1577fb038c07adb0ff0f9",
|
||||
"crates/horizon-world/src/collision.rs": "05313e0c1f3089524fe029f9aac3e439cd47f1c9584c8c7e154c9adcfa88c335",
|
||||
"crates/horizon-world/src/compression.rs": "4db73e6ca9a0d552d415ce60e7e88b89c9cf2b7d060a669ff8328f518316e101",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "1bf4ad95fcdf7f2df4e33dde38e08959d9b76a6260838c13e97c2bb59e006294",
|
||||
"crates/horizon-world/src/dynamic_support.rs": "e799b31e5120cfdb04e0b342f2097d610ed98ef8c4be031620ee00368d82df59",
|
||||
"crates/horizon-world/src/entity_obstruction.rs": "a4b28a19bf83b23611c59d94535c488db37e4aee24b22c973c545910894a809f",
|
||||
"crates/horizon-world/src/fluid.rs": "8a2834a9347ee2c2db7cf1c86a064907ec06e9ac16ba9cc3936e315fc4ad49ca",
|
||||
"crates/horizon-world/src/heightmap.rs": "a5edef082b5af40d814421ea17e129b3b06d70abee6434ed263e4bba58571698",
|
||||
"crates/horizon-world/src/lib.rs": "69cdc611b7a7e20a7da705fcc25de6b97cdb64cf63f954be49d0a11f9a820465",
|
||||
"crates/horizon-world/src/lib.rs": "09f697d8d4e709acacc8e9f7c35c5fd307bab6ab0df4a1339fe760afc655cdab",
|
||||
"crates/horizon-world/src/main.rs": "fce57418b8c22a6a0a9044baa89ed3d9c243bc2e8413fea3ff0f32985daba021",
|
||||
"crates/horizon-world/src/nbt.rs": "60262c3de8c8f68bc2da0370ccb17393d32b85f5f5022c6358599a7d32119ea6",
|
||||
"crates/horizon-world/src/piston_shape.rs": "399c2337103b8e7e0eb5667227c5aa14f9549d6a467b7be7da3d0717f0263500",
|
||||
@@ -130,7 +131,7 @@
|
||||
"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/block_feature.rs": "6be7c0161cecf1362c196e91ecbeb166e16c8da3731d988ce8f2308f06209265",
|
||||
"crates/horizon-world/src/worldgen/block_feature.rs": "82a424d3b20837dc401005f5fe038616659eb17b5bbd78d0c8c29f8bdeb1104a",
|
||||
"crates/horizon-world/src/worldgen/block_predicate.rs": "074c692367e3f2191a1bb28d87b23402430a843c246bd30a4ea838ee3500280e",
|
||||
"crates/horizon-world/src/worldgen/bulk_section.rs": "eecf61532d7793f853884c5a18a7f436a59835c7b13d3ec9075804511553c9ba",
|
||||
"crates/horizon-world/src/worldgen/carver/canyon.rs": "509c4d5a9d689849e98e894ab14a9fbf82d10707d38e9cc688ded3c4778df3e2",
|
||||
@@ -169,21 +170,24 @@
|
||||
"crates/horizon-world/src/worldgen/state_provider/catalog.rs": "fa0616353f07460975ab323357ab280b7f35e7bfe2de6edc08d304316766ed26",
|
||||
"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": "89cb0410899608545aa1ba3b1b4c1babf533fb25efd341feab1c87661f44f7b9",
|
||||
"crates/horizon-world/src/worldgen/state_provider.rs": "9cc353d474184f4db880c4305137ec6e35a564a983f602c76af39349ecb58541",
|
||||
"crates/horizon-world/src/worldgen/tags.rs": "d35ded93fe6e95ea045cadcf4925e656dc34ef832b742179b9ad0cc49f902f31",
|
||||
"crates/horizon-world/src/worldgen/terrain.rs": "7fb7130111654563f7217f7b84563adde0b11c3ebd6a499a514dc98ebef7c733",
|
||||
"crates/horizon-world/src/worldgen/value_provider.rs": "3358b563db8cb0bc8a9cfbbe2b8b3e70941cd2d37a0b519fbb6545f8d0dcbb69",
|
||||
"crates/horizon-world/src/worldgen/weighted.rs": "839840aae25302933bbd97a81a2336330e2d03a0ad1684e1e16ac769ed408e6b",
|
||||
"crates/horizon-world/src/worldgen.rs": "821981c893fc84312351503f2be0c06c681d8bc768dade14576697cf047a9f8f",
|
||||
"crates/horizon-world/examples/state_provider_fixture.rs": "ec20f6ee5b3d1f2e69c4c5345fd31ef98ef660fc26b69ac0145e4d8473bca498"
|
||||
"crates/horizon-world/examples/state_provider_fixture.rs": "76c4648eb1b873b8e30c60da5350bb31794e5c539f8719ed914503538db0347b"
|
||||
},
|
||||
"fixtures_sha256": {
|
||||
".local/rust-state-provider-parity/inputs.txt": "8b4ebd390ba64d0c9af15df6355c1722dffb4485248deb784e141d447cec512d",
|
||||
".local/rust-state-provider-parity/inputs.txt": "536f1388bc26c0ceb87cb656934b3600e567ef594b15e818108c8a25a0d900fa",
|
||||
".local/rust-state-provider-parity/survival-extra-definitions.json": "170f2db5bc97a49fa25cc249540aa7f04beea455cdbaf43742ed9415f5090a02",
|
||||
".local/rust-state-provider-parity/survival-placement-classes.json": "7fdbf48ab18c87098bbe1b6176cb81f4842b6c5d9a4d6bbaf7037ff61cb1848c",
|
||||
".local/rust-state-provider-parity/survival-support-tags.json": "15d88d5bb5ad10d65124d5abb2cc055d251b06d129bca7be06f55b43dc13f6fd",
|
||||
".local/rust-state-provider-parity/survival-classes.json": "361832008eea0aa9151d367a125a19c6353d99a0b88b27dd0682f55b7954553e",
|
||||
".local/rust-state-provider-parity/survival-rules.json": "2d82abb640c1235179e195b0234b13f3b74af84741b1b739aa6cec648ab3b3d2",
|
||||
".local/rust-state-provider-parity/survival-rules.json": "8805c18b3195bb1eac1f1e5281333df56e2892505f64023e5403c58ce2ec4368",
|
||||
".local/rust-state-provider-parity/cached-support.nbt": "b6fdc9471b0b61e904206d3f099f4dc235aad6d723536c210be0cb7c3560d82c",
|
||||
".local/rust-state-provider-parity/support-cached-states.json": "353945a58fe69b352925473f1693f9b14a9ad19f13c15159c4184f2c29258622",
|
||||
".local/rust-state-provider-parity/block-properties.nbt": "699a994c5c0c9f7ee58e35b9c23c4503a5936efe84133643113232f825ae2216",
|
||||
".local/rust-state-provider-parity/block-properties.nbt": "1aba22092f70d16b8092014c058ddc210e4aaa77bac32f6ec62e4d0e91d92a99",
|
||||
".local/rust-state-provider-parity/cached-collision.nbt": "f3a5c6a5b2d51dad6c52e486e2b9989e79fd55db1a9bda6196db399550b04078",
|
||||
".local/rust-state-provider-parity/biomes.json": "9b26dc3b662627dc3bbbf8da209f287882ce79ff4daf8f454b994ddc7510df99",
|
||||
".local/rust-state-provider-parity/biome_tags.json": "2c0193d998b196c2b909e92f51e8158f5e8773f5387ade5a8b85a85f063ca560",
|
||||
@@ -194,20 +198,20 @@
|
||||
".local/rust-state-provider-parity/facts-client.json": "5e89a805514cabfe46e082d651db406b9479781e1d97b65faa2ab9f6f871309b",
|
||||
".local/rust-state-provider-parity/facts-server.json": "5e89a805514cabfe46e082d651db406b9479781e1d97b65faa2ab9f6f871309b"
|
||||
},
|
||||
"rust_output_sha256": "aa089984db4632a9b1e2d1c965fa0429f9d8b034e2ceb200bccbe2a4a5b545c8",
|
||||
"rust_output_sha256": "fd4afc0b54a8891aabf15f6b52fb47a50f73ebc4fa07200080a42741a905b594",
|
||||
"references": [
|
||||
{
|
||||
"side": "client",
|
||||
"jar_sha256": "4508d006323f24fa02876310c192d739af56516eb259000ac50f0909a68c9a2d",
|
||||
"output_sha256": "aa089984db4632a9b1e2d1c965fa0429f9d8b034e2ceb200bccbe2a4a5b545c8",
|
||||
"matched_output_lines": 105340143
|
||||
"output_sha256": "fd4afc0b54a8891aabf15f6b52fb47a50f73ebc4fa07200080a42741a905b594",
|
||||
"matched_output_lines": 257299719
|
||||
},
|
||||
{
|
||||
"side": "server",
|
||||
"jar_sha256": "a362163eec5d1612d520772bc16e5b39c09e3b234fdc045f56bf544284ee8ae6",
|
||||
"output_sha256": "aa089984db4632a9b1e2d1c965fa0429f9d8b034e2ceb200bccbe2a4a5b545c8",
|
||||
"matched_output_lines": 105340143
|
||||
"output_sha256": "fd4afc0b54a8891aabf15f6b52fb47a50f73ebc4fa07200080a42741a905b594",
|
||||
"matched_output_lines": 257299719
|
||||
}
|
||||
],
|
||||
"scope": "Actual BlockStateProvider DIRECT_CODEC/TYPED_CODEC and simple, weighted, random_block, rotated, copy_properties, randomized_int three noise-based providers and rule_based over the pinned state registry. All states and block defaults, full-state versus typed exclusive decoding, ordered holder sets/tags, duplicates, empty optional results versus world-state fallback, zero/overflow weights, query failures, every state across six fixed rotations, nested random rotations, property copying for every target state against representatives of every compatible property value, integer-property ranges/missing properties, composed transforms and subsequent random consumption. Native property equality families are checked for ambiguity; Rust validates Cartesian state tables and uses compact property strides. Both legacy/xoroshiro streams execute directly and through WorldgenRandom. Noise comparisons include every bundled provider definition, independent legacy seeding, float/double scaling, dual-noise variety selection, threshold draw order and coordinate/codec boundaries. Rule-based comparisons cover true/not/all_of/any_of/inside_world_bounds/height_range/volume_match/matching_block_tag/matching_blocks/matching_fluids/matching_biomes/unobstructed/solid/replaceable/has_sturdy_face/would_survive predicates, ordered optional results, fallbacks, nested rules and world-query failures. Every pinned block-state fluid identity, amount, falling/source flag and own-height bits are derived from descriptors and compared. Fluid-holder sets and all bundled fluid tags are tested against every state. Biome-holder membership and all bundled biome tags are compared across every pinned biome identity, including empty sets, missing names, ordered world queries and short-circuit composition. Unobstructed predicates compare null excluded entities, exact translated unit-shape bounds, ignored-but-validated offsets, true/false world results and failures. Named holder versus direct/typed decoding, nested named providers, missing names, inline ambiguity, ordered resource registration and all bundled named definitions are compared. Solidity and replacement predicates cover every block state, offset wrapping/validation, empty-child fallthrough, composed predicates and query failures using privately imported definition flags and Rust-calculated collision solidity. Has-sturdy-face predicates cover all 35,723 states through unified cached/dynamic support dispatch across six directions, native offset rules, failed state reads, block-entity query failures and ordered optional-child/boolean composition. Block entities are absent in this integration corpus; shulker animation-state shape selection is separately tested and active moving-piston entity collision generation remains pending. Would-survive decodes candidate states and bounded offsets, evaluates all supported candidate states and each rule against every neighbor state, and preserves world read/entity failures and short-circuit/optional-child behavior. Survival support is limited to the rule families explicitly recorded here; unsupported survival families, complete registry loading/reloading, full block placement behavior and full feature generation remain pending."
|
||||
"scope": "Actual BlockStateProvider DIRECT_CODEC/TYPED_CODEC and simple, weighted, random_block, rotated, copy_properties, randomized_int three noise-based providers and rule_based over the pinned state registry. All states and block defaults, full-state versus typed exclusive decoding, ordered holder sets/tags, duplicates, empty optional results versus world-state fallback, zero/overflow weights, query failures, every state across six fixed rotations, nested random rotations, property copying for every target state against representatives of every compatible property value, integer-property ranges/missing properties, composed transforms and subsequent random consumption. Native property equality families are checked for ambiguity; Rust validates Cartesian state tables and uses compact property strides. Both legacy/xoroshiro streams execute directly and through WorldgenRandom. Noise comparisons include every bundled provider definition, independent legacy seeding, float/double scaling, dual-noise variety selection, threshold draw order and coordinate/codec boundaries. Rule-based comparisons cover true/not/all_of/any_of/inside_world_bounds/height_range/volume_match/matching_block_tag/matching_blocks/matching_fluids/matching_biomes/unobstructed/solid/replaceable/has_sturdy_face/would_survive predicates, ordered optional results, fallbacks, nested rules and world-query failures. Every pinned block-state fluid identity, amount, falling/source flag and own-height bits are derived from descriptors and compared. Fluid-holder sets and all bundled fluid tags are tested against every state. Biome-holder membership and all bundled biome tags are compared across every pinned biome identity, including empty sets, missing names, ordered world queries and short-circuit composition. Unobstructed predicates compare null excluded entities, exact translated unit-shape bounds, ignored-but-validated offsets, true/false world results and failures. Named holder versus direct/typed decoding, nested named providers, missing names, inline ambiguity, ordered resource registration and all bundled named definitions are compared. Solidity and replacement predicates cover every block state, offset wrapping/validation, empty-child fallthrough, composed predicates and query failures using privately imported definition flags and Rust-calculated collision solidity. Has-sturdy-face predicates cover all 35,723 states through unified cached/dynamic support dispatch across six directions, native offset rules, failed state reads, block-entity query failures and ordered optional-child/boolean composition. Block entities are absent in this integration corpus; shulker animation-state shape selection is separately tested and active moving-piston shape generation is tested separately. Would-survive decodes candidate states and bounded offsets, evaluates all supported candidate states and each rule against every neighbor state, and preserves world read/entity failures and short-circuit/optional-child behavior. All pinned survival families are bound through the recorded definition inputs. Complete registry loading/reloading, full block placement behavior and full feature generation remain pending."
|
||||
}
|
||||
|
||||
+13
-10
@@ -458,8 +458,8 @@ a parity report is written only after both native comparisons pass.
|
||||
|
||||
Run `python3 tools/test_state_provider_parity.py`. The
|
||||
[provider report](../benchmarks/rust-state-provider-2026-10-06/scoped-parity.json)
|
||||
records **105,340,143 matching lines per JAR**, with 299,507 codec inputs
|
||||
and 39,270,062 requested samples across ten provider kinds. Every pinned state is decoded and tested
|
||||
records **257,299,719 matching lines per JAR**, with 356,935 codec inputs
|
||||
and 79,473,574 requested samples across ten provider kinds. Every pinned state is decoded and tested
|
||||
under all six fixed rotations; random/nested rotations, both sampling methods,
|
||||
empty tags, weighted boundaries, fallback query failures and four random-stream
|
||||
combinations are compared. Every target state is also tested against
|
||||
@@ -533,11 +533,14 @@ The `would_survive` predicate now decodes a candidate block state and bounded
|
||||
offset, then invokes survival at the translated position without placing it.
|
||||
Both provider and feature bindings use the shared block-state codec; placement
|
||||
chains forward the survival query. The refreshed provider report records
|
||||
**105,340,143 matching lines per JAR**, **299,507 inputs**, **39,270,062 requested
|
||||
samples** and **16 predicate kinds**. Its survival snapshot covers 15 rules,
|
||||
1,138 definitions and 31,171 candidate states, with each rule tested against the
|
||||
entire neighbor-state registry, malformed definitions, wrapped offsets,
|
||||
short-circuit conditions, optional-child fallthrough and query failures.
|
||||
Unsupported survival definitions remain errors. This report does not establish
|
||||
full block placement or every block's survival behavior. Workspace tests,
|
||||
warning-free Clippy and **143 Python tests** passed at this snapshot.
|
||||
**257,299,719 matching lines per JAR**, **356,935 inputs**, **79,473,574 requested
|
||||
samples** and **16 predicate kinds**. Its survival snapshot now covers all
|
||||
**51 pinned survival families, 1,286 definitions and 35,723 states**. Behavior
|
||||
representatives run against the entire neighbor-state registry, with malformed
|
||||
definitions, wrapped offsets, brightness thresholds, short-circuit conditions,
|
||||
optional-child fallthrough and query failures. Dynamic support and empty-context
|
||||
collision use absent block entities in this integration corpus; animated shulker
|
||||
and active-piston snapshots have separate geometry comparisons. This establishes
|
||||
the recorded provider/predicate integration, while full block placement, updates
|
||||
and gameplay remain pending. Workspace tests, warning-free Clippy and the
|
||||
**147-test Python suite** passed.
|
||||
|
||||
+9
-12
@@ -3,17 +3,14 @@
|
||||
The behavior target is the repository's pinned **Minecraft Java Edition 26.3**.
|
||||
One-to-one vanilla gameplay parity is the acceptance criterion. It has **not**
|
||||
been reached: Horizon's Rust code does not yet run a client, server, or simulation.
|
||||
It can read and export region files and access saved and resident block sections.
|
||||
Scheduled block/fluid queues can now collect and dispatch callbacks with
|
||||
vanilla-checked ordering; the actual block/fluid behavior is still absent.
|
||||
Double-precision geometry and voxel-grid queries are implemented, with a registry
|
||||
adapter for vanilla's no-context cached collision branch.
|
||||
Base noise samplers, octave stacks, normal-noise definitions and bulk density
|
||||
sampling are implemented. Compiled density samplers now evaluate constants, gradients,
|
||||
shifted noise, all eleven unary operators, rounding and selected arithmetic operations. An initial density graph compiler
|
||||
integrates range analysis, specialization, uniform-axis slicing, shared caches,
|
||||
nested splines and seeded noise;
|
||||
complete graph coverage, serialized graphs and generated terrain remain absent.
|
||||
The Rust workspace implements core arithmetic/random streams, world data and
|
||||
resident sections, scheduled tick ordering, geometry, contained fluid states,
|
||||
noise/density evaluation, biome and terrain generation kernels, material rules,
|
||||
and parts of feature placement and decoration. All pinned block-survival
|
||||
families now have native differential coverage. Full simulation callbacks,
|
||||
complete chunk generation, entity behavior, networking, rendering and playable
|
||||
integration remain unfinished. The linked subsystem documents and hashed reports
|
||||
record the exact tested scope and remaining gaps.
|
||||
The playable Java performance packs remain available during development.
|
||||
|
||||
## Completion criteria and playable builds
|
||||
@@ -389,7 +386,7 @@ graphs, block writes and live heightmaps. It compares complete final resident
|
||||
sections; structures, lighting and the full generation lifecycle remain pending.
|
||||
|
||||
The [block-state provider comparison](feature-placement.md#block-state-providers)
|
||||
adds **105,340,143 matching lines per JAR** for ten state-provider kinds, including
|
||||
adds **257,299,719 matching lines per JAR** for ten state-provider kinds, including
|
||||
all eight bundled provider definitions. It includes every state under six
|
||||
directions, property transforms, nested draw order and empty selections. Rule-based
|
||||
selection includes twelve predicate kinds, ordered conditions, empty results and
|
||||
|
||||
Reference in New Issue
Block a user