port map: the loot rows that no vanilla data reaches name the dispatch

Each of these classes is a condition, modifier or number provider the loot
run in `crates/horizon-world/src/loot.rs` does not have an arm for. The notes
used to say only that no vanilla data uses the type; they now name the
dispatch and, for the number providers, the kinds `level_value`, `int` and
`float` do handle, so the next reader knows the shape a datapack would need.
This commit is contained in:
MSedgeMC committed 2026-11-02 14:21:57 +00:00
1 parent 6b200c9dd7
commit 2dabb5f1f7
1 file changed
+15 -15
+15 -15
View File
@@ -1,6 +1,6 @@
SetStewEffectFunction.Builder skip:java builder for the stew effect list; Horizon keeps the effects in loot.rs Context::run (set_stew_effect)
SetWritableBookPagesFunction missing minor: no vanilla loot table uses set_writable_book_pages; Horizon's loot run has no arm for it
SetWrittenBookPagesFunction missing minor: no vanilla loot table uses set_written_book_pages; Horizon's loot run has no arm for it
SetWritableBookPagesFunction missing `horizon-world/src/loot.rs::modify` has no `set_writable_book_pages` arm, and no vanilla loot table asks for one
SetWrittenBookPagesFunction missing no `set_written_book_pages` arm in `loot.rs::modify` (the arms run from `sequence` and `set_count` through `set_potion` to `set_stew_effect`); no vanilla loot table asks for one
SmeltItemFunction.run port crates/horizon-world/src/loot.rs::Context::run furnace_smelt arm: smelting recipe, use_input_count and stack cap
SmeltItemFunction.smelted skip:java static builder factory
ToggleTooltips home crates/horizon-client/src/game/commands/items.rs the `/item modify` arm toggle_tooltips writes the tooltip_display component's hide_tooltip and hidden_components as run does; the loot run has no arm, and no vanilla loot table uses it
@@ -16,11 +16,11 @@ CompositeLootItemCondition.Builder skip:java builder (addTerm)
ConditionUserBuilder skip:java builder interface for loot conditions
DamageSourceCondition.test port crates/horizon-world/src/loot.rs::Context::condition damage_source_properties arm (mob death loot)
EnchantmentActiveCheck.test inline crates/horizon-client/src/game/enchant_effects.rs::Game::tick_soul_speed the soul speed modifiers switch on and off here; the ENCHANTMENT_ACTIVE flag itself is not read as a condition
EntityHasScoreCondition.hasScore missing minor: no vanilla loot table uses entity_scores
EntityHasScoreCondition.test missing minor: no vanilla loot table uses entity_scores
EntityHasScoreCondition.hasScore missing `loot.rs::condition` has no `entity_scores` arm, and no vanilla loot table asks for one
EntityHasScoreCondition.test missing same as `hasScore`: the condition dispatch (`inverted`, `all_of`, `any_of`, `entity_properties`, `killed_by_player`, the chance and location checks) has no scoreboard arm
EntityHasScoreCondition.validate skip:data datapack validation
EnvironmentAttributeCheck.createCodec skip:java codec
EnvironmentAttributeCheck.test missing minor: no vanilla data uses environment_attribute_check
EnvironmentAttributeCheck.test missing no `environment_attribute_check` arm in `loot.rs::condition`; no vanilla data uses it
ExplosionCondition.test port crates/horizon-items/src/items.rs::LootContext::condition survives_explosion arm: 1 / radius under an explosion (block loot; only block tables use it)
FloatValueCheck.validate skip:data datapack validation
IntValueCheck.validate skip:data datapack validation
@@ -39,7 +39,7 @@ MatchBlock.blockMatches skip:java static builder
MatchBlock.getReferencedContextParams skip:data validation metadata for context params
MatchBlock.test port crates/horizon-items/src/items.rs::LootContext::condition match_block arm: block id, state and property ranges; gap: minor: the block-entity part of the predicate is not read
MatchTool.test port crates/horizon-items/src/items.rs::LootContext::condition match_tool arm; gap: minor: item ids, tags and enchantment levels only, other ItemPredicate parts are not read
TimeCheck missing minor: time_check is used by no vanilla data file (datapacks only)
TimeCheck missing no `time_check` arm in `loot.rs::condition`; no vanilla data file uses it, so only a datapack reaches it
WeatherCheck.test port crates/horizon-client/src/game/trident.rs::Game::channel_lightning channeling's thunder check (thundering only); gap: minor: raining is not read, channeling only uses thundering
NbtProviders skip:data registry bootstrap
AggregateProvider skip:java codec only
@@ -58,13 +58,13 @@ PowerProvider.mapCodec skip:java codec
PowerProvider.validate skip:data datapack validation
RangeProvider.mapCodec skip:java codec
RangeProvider.validate skip:data datapack validation
StoredNumberAccess missing minor: storage-backed numbers; no vanilla data uses storage providers
StoredNumberAccess missing no storage-backed number provider: `loot.rs::level_value` and the int and float readers know constant, uniform, binomial, linear, clamped, fraction, levels_squared and lookup only
UnaryProvider skip:java codec only
floats/Average.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float avg arm
floats/ContextFloatProviders skip:data registry bootstrap
floats/Difference.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float sub arm
floats/EnchantmentLevelProvider.getFloatUnsafe port crates/horizon-items/src/enchant.rs::Enchantments::condition random_chance arm: chance at the enchantment level; gap: minor: only the random_chance use is read
floats/EnvironmentAttributeValue missing minor: no vanilla data uses environment_attribute providers
floats/EnvironmentAttributeValue missing no `environment_attribute` provider in `loot.rs::level_value`
floats/Length.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float length arm
floats/Maximum.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float max arm
floats/Minimum.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float min arm
@@ -73,7 +73,7 @@ floats/Product.getFloatUnsafe port crates/horizon-client/src/game/commands/compu
floats/Quotient.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float div arm
ResolvableFloat.getFromItem port crates/horizon-client-render/src/providers.rs::Providers::speed furnace fuel speed multiplier (COOKING_FUEL); gap: minor: only the furnace fuel component is read
ResolvableFloat.wrap skip:java codec helper
floats/StorageValue missing minor: no vanilla data uses storage providers
floats/StorageValue missing no `storage` provider in `loot.rs::level_value`
floats/Sum.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float add arm
floats/Truncate.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float truncate arm
floats/UniformGenerator.getFloatUnsafe port crates/horizon-world/src/loot.rs::Context::float uniform arm: min + random * (max - min)
@@ -85,7 +85,7 @@ ints/ContextIntProviders.bootstrap skip:data registry bootstrap
ints/ContextIntProviders.compostable port crates/horizon-client/src/game/composter.rs::Game::compostable the item's compostable layer provider; evaluated when the composter takes it (Game::composter_add)
ints/ContextIntProviders.cooking port crates/horizon-client-render/src/providers.rs::Providers::burn_time fuel burn times (the cooking/time_* providers)
ints/Difference.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int sub arm
ints/EnvironmentAttributeValue missing minor: no vanilla data uses environment_attribute providers
ints/EnvironmentAttributeValue missing no `environment_attribute` provider in the int reader (`loot.rs::int`)
ints/FloorModulus.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int floor_mod arm
ints/FloorQuotient.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int floor_div arm
ints/Maximum.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int max arm
@@ -95,10 +95,10 @@ ints/Product.getIntUnsafe port crates/horizon-client/src/game/commands/compute.r
ints/Quotient.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int div arm
ResolvableInt.getFromItem port crates/horizon-client-render/src/providers.rs::Providers::burn_time furnace fuel burn time (COOKING_FUEL); gap: minor: only the furnace fuel component is read
ResolvableInt.wrap skip:java codec helper
ints/ScoreboardValue.getIntUnsafe missing minor: no vanilla data uses score providers
ints/ScoreboardValue.getScoreInfo missing minor: no vanilla data uses score providers
ints/ScoreboardValue.getIntUnsafe missing no `score` provider in `loot.rs::int`
ints/ScoreboardValue.getScoreInfo missing no `score` provider in `loot.rs::int`
ints/ScoreboardValue.validate skip:data datapack validation
ints/StorageValue missing minor: no vanilla data uses storage providers
ints/StorageValue missing no `storage` provider in `loot.rs::int`
ints/Sum.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int add arm
ints/UniformGenerator.getIntUnsafe port crates/horizon-world/src/loot.rs::Context::int uniform arm: inclusive random int between min and max
ints/WeightedListValue.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_select weighted list pick (the default branch)
@@ -118,7 +118,7 @@ DirectoryValidator.validateSymlink skip:server server check of symlinks in worl
PathAllowList.getForFileSystem skip:server server file allow-list
PathAllowList.readPlain skip:server server file allow-list
PathAllowList.ConfigEntry.parse skip:server server file allow-list
BlockHitResult.hitBorder missing minor: BlockHit has no world-border flag; vanilla projectiles check it on a border hit
BlockHitResult.hitBorder missing `BlockHit` (`horizon-core/src/geometry/mod.rs`) carries the location, the direction, the block and `inside`, no world-border flag, so a projectile's border hit is not told apart from any other
BlockHitResult.withDirection skip:java copy helper (Rust struct update)
BlockHitResult.withPosition skip:java copy helper (Rust struct update)
HitResult.distanceTo port crates/horizon-client/src/game/fishing.rs::rebound the bobber's block-hit bounce: the squared distance to the hook scales the normalised velocity (`FishingHook.onHitBlock`)
@@ -149,7 +149,7 @@ IdenticalMerger.forMergedIndexes port crates/horizon-core/src/geometry/shape/joi
IndirectMerger.<init> skip:java list wrapper constructor
IndirectMerger.forMergedIndexes port crates/horizon-core/src/geometry/shape/join.rs::merge
IndirectMerger.getList skip:java list accessor
MinecartCollisionContext missing player: vanilla lets a rail cart pass through the block under its rail and the slope block of an ascending rail (MinecartCollisionContext); minecarts.rs move_cart has no such exclusion, so carts may bump on those blocks (read from code, not checked in game)
MinecartCollisionContext missing `game/minecarts.rs::move_cart` has no exclusion for the block a rail rests on or the slope block of an ascending rail, so a cart's move collides with them as with any other block
NonOverlappingMerger.forMergedIndexes port crates/horizon-core/src/geometry/shape/join.rs::disjoint
NonOverlappingMerger.forNonSwappedIndexes port crates/horizon-core/src/geometry/shape/join.rs::disjoint
NonOverlappingMerger.getDouble skip:java list accessor
1 SetStewEffectFunction.Builder skip:java builder for the stew effect list; Horizon keeps the effects in loot.rs Context::run (set_stew_effect)
2 SetWritableBookPagesFunction missing minor: no vanilla loot table uses set_writable_book_pages; Horizon's loot run has no arm for it `horizon-world/src/loot.rs::modify` has no `set_writable_book_pages` arm, and no vanilla loot table asks for one
3 SetWrittenBookPagesFunction missing minor: no vanilla loot table uses set_written_book_pages; Horizon's loot run has no arm for it no `set_written_book_pages` arm in `loot.rs::modify` (the arms run from `sequence` and `set_count` through `set_potion` to `set_stew_effect`); no vanilla loot table asks for one
4 SmeltItemFunction.run port crates/horizon-world/src/loot.rs::Context::run furnace_smelt arm: smelting recipe, use_input_count and stack cap
5 SmeltItemFunction.smelted skip:java static builder factory
6 ToggleTooltips home crates/horizon-client/src/game/commands/items.rs the `/item modify` arm toggle_tooltips writes the tooltip_display component's hide_tooltip and hidden_components as run does; the loot run has no arm, and no vanilla loot table uses it
16 ConditionUserBuilder skip:java builder interface for loot conditions
17 DamageSourceCondition.test port crates/horizon-world/src/loot.rs::Context::condition damage_source_properties arm (mob death loot)
18 EnchantmentActiveCheck.test inline crates/horizon-client/src/game/enchant_effects.rs::Game::tick_soul_speed the soul speed modifiers switch on and off here; the ENCHANTMENT_ACTIVE flag itself is not read as a condition
19 EntityHasScoreCondition.hasScore missing minor: no vanilla loot table uses entity_scores `loot.rs::condition` has no `entity_scores` arm, and no vanilla loot table asks for one
20 EntityHasScoreCondition.test missing minor: no vanilla loot table uses entity_scores same as `hasScore`: the condition dispatch (`inverted`, `all_of`, `any_of`, `entity_properties`, `killed_by_player`, the chance and location checks) has no scoreboard arm
21 EntityHasScoreCondition.validate skip:data datapack validation
22 EnvironmentAttributeCheck.createCodec skip:java codec
23 EnvironmentAttributeCheck.test missing minor: no vanilla data uses environment_attribute_check no `environment_attribute_check` arm in `loot.rs::condition`; no vanilla data uses it
24 ExplosionCondition.test port crates/horizon-items/src/items.rs::LootContext::condition survives_explosion arm: 1 / radius under an explosion (block loot; only block tables use it)
25 FloatValueCheck.validate skip:data datapack validation
26 IntValueCheck.validate skip:data datapack validation
39 MatchBlock.getReferencedContextParams skip:data validation metadata for context params
40 MatchBlock.test port crates/horizon-items/src/items.rs::LootContext::condition match_block arm: block id, state and property ranges; gap: minor: the block-entity part of the predicate is not read
41 MatchTool.test port crates/horizon-items/src/items.rs::LootContext::condition match_tool arm; gap: minor: item ids, tags and enchantment levels only, other ItemPredicate parts are not read
42 TimeCheck missing minor: time_check is used by no vanilla data file (datapacks only) no `time_check` arm in `loot.rs::condition`; no vanilla data file uses it, so only a datapack reaches it
43 WeatherCheck.test port crates/horizon-client/src/game/trident.rs::Game::channel_lightning channeling's thunder check (thundering only); gap: minor: raining is not read, channeling only uses thundering
44 NbtProviders skip:data registry bootstrap
45 AggregateProvider skip:java codec only
58 PowerProvider.validate skip:data datapack validation
59 RangeProvider.mapCodec skip:java codec
60 RangeProvider.validate skip:data datapack validation
61 StoredNumberAccess missing minor: storage-backed numbers; no vanilla data uses storage providers no storage-backed number provider: `loot.rs::level_value` and the int and float readers know constant, uniform, binomial, linear, clamped, fraction, levels_squared and lookup only
62 UnaryProvider skip:java codec only
63 floats/Average.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float avg arm
64 floats/ContextFloatProviders skip:data registry bootstrap
65 floats/Difference.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float sub arm
66 floats/EnchantmentLevelProvider.getFloatUnsafe port crates/horizon-items/src/enchant.rs::Enchantments::condition random_chance arm: chance at the enchantment level; gap: minor: only the random_chance use is read
67 floats/EnvironmentAttributeValue missing minor: no vanilla data uses environment_attribute providers no `environment_attribute` provider in `loot.rs::level_value`
68 floats/Length.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float length arm
69 floats/Maximum.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float max arm
70 floats/Minimum.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float min arm
73 floats/Quotient.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float div arm
74 ResolvableFloat.getFromItem port crates/horizon-client-render/src/providers.rs::Providers::speed furnace fuel speed multiplier (COOKING_FUEL); gap: minor: only the furnace fuel component is read
75 ResolvableFloat.wrap skip:java codec helper
76 floats/StorageValue missing minor: no vanilla data uses storage providers no `storage` provider in `loot.rs::level_value`
77 floats/Sum.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float add arm
78 floats/Truncate.getFloatUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_float truncate arm
79 floats/UniformGenerator.getFloatUnsafe port crates/horizon-world/src/loot.rs::Context::float uniform arm: min + random * (max - min)
85 ints/ContextIntProviders.compostable port crates/horizon-client/src/game/composter.rs::Game::compostable the item's compostable layer provider; evaluated when the composter takes it (Game::composter_add)
86 ints/ContextIntProviders.cooking port crates/horizon-client-render/src/providers.rs::Providers::burn_time fuel burn times (the cooking/time_* providers)
87 ints/Difference.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int sub arm
88 ints/EnvironmentAttributeValue missing minor: no vanilla data uses environment_attribute providers no `environment_attribute` provider in the int reader (`loot.rs::int`)
89 ints/FloorModulus.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int floor_mod arm
90 ints/FloorQuotient.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int floor_div arm
91 ints/Maximum.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int max arm
95 ints/Quotient.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int div arm
96 ResolvableInt.getFromItem port crates/horizon-client-render/src/providers.rs::Providers::burn_time furnace fuel burn time (COOKING_FUEL); gap: minor: only the furnace fuel component is read
97 ResolvableInt.wrap skip:java codec helper
98 ints/ScoreboardValue.getIntUnsafe missing minor: no vanilla data uses score providers no `score` provider in `loot.rs::int`
99 ints/ScoreboardValue.getScoreInfo missing minor: no vanilla data uses score providers no `score` provider in `loot.rs::int`
100 ints/ScoreboardValue.validate skip:data datapack validation
101 ints/StorageValue missing minor: no vanilla data uses storage providers no `storage` provider in `loot.rs::int`
102 ints/Sum.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_int add arm
103 ints/UniformGenerator.getIntUnsafe port crates/horizon-world/src/loot.rs::Context::int uniform arm: inclusive random int between min and max
104 ints/WeightedListValue.getIntUnsafe port crates/horizon-client/src/game/commands/compute.rs::Game::provider_select weighted list pick (the default branch)
118 PathAllowList.getForFileSystem skip:server server file allow-list
119 PathAllowList.readPlain skip:server server file allow-list
120 PathAllowList.ConfigEntry.parse skip:server server file allow-list
121 BlockHitResult.hitBorder missing minor: BlockHit has no world-border flag; vanilla projectiles check it on a border hit `BlockHit` (`horizon-core/src/geometry/mod.rs`) carries the location, the direction, the block and `inside`, no world-border flag, so a projectile's border hit is not told apart from any other
122 BlockHitResult.withDirection skip:java copy helper (Rust struct update)
123 BlockHitResult.withPosition skip:java copy helper (Rust struct update)
124 HitResult.distanceTo port crates/horizon-client/src/game/fishing.rs::rebound the bobber's block-hit bounce: the squared distance to the hook scales the normalised velocity (`FishingHook.onHitBlock`)
149 IndirectMerger.<init> skip:java list wrapper constructor
150 IndirectMerger.forMergedIndexes port crates/horizon-core/src/geometry/shape/join.rs::merge
151 IndirectMerger.getList skip:java list accessor
152 MinecartCollisionContext missing player: vanilla lets a rail cart pass through the block under its rail and the slope block of an ascending rail (MinecartCollisionContext); minecarts.rs move_cart has no such exclusion, so carts may bump on those blocks (read from code, not checked in game) `game/minecarts.rs::move_cart` has no exclusion for the block a rail rests on or the slope block of an ascending rail, so a cart's move collides with them as with any other block
153 NonOverlappingMerger.forMergedIndexes port crates/horizon-core/src/geometry/shape/join.rs::disjoint
154 NonOverlappingMerger.forNonSwappedIndexes port crates/horizon-core/src/geometry/shape/join.rs::disjoint
155 NonOverlappingMerger.getDouble skip:java list accessor