port map: the block entity gaps say where the tree stops

Fourteen rows lose their "unsure" and name the code that decides the gap
instead: the chunk fix-up absent from `decode_block_entity`, the copper
golems' opener recheck standing in for a chest's, the shulker lid tick
counting neighbour updates both tick paths drop, and the sign text kept as
literal strings so nothing resolves a selector.
This commit is contained in:
MSedgeMC committed 2026-11-02 14:15:32 +00:00
1 parent 207e153292
commit f0bdb96bb1
1 file changed
+14 -14
+14 -14
View File
@@ -3,7 +3,7 @@ BellBlockEntity.makeRaidersGlow port crates/horizon-client/src/game/block_entity
BellBlockEntity.showBellParticles port crates/horizon-client-render/src/block_entity_anim.rs::Bell::tick particle positions and colours computed here; emitted in tick_block_entity_anims
BellBlockEntity.isRaiderWithinRange inline crates/horizon-client-render/src/block_entity_anim.rs::Bell::tick raider_in closure (48 blocks)
BlockEntity.validateBlockState skip:other guard that throws on a wrong block state; no player behaviour
BlockEntity.getPosFromTag missing minor: a block entity saved in the wrong chunk keeps its saved x/z; no chunk fix-up in decode_block_entity
BlockEntity.getPosFromTag missing `save::decode_block_entity` keeps the saved x/y/z and `game.rs:1762` inserts the block entity at that key; a block entity saved in the wrong chunk keeps its saved x/z
BlockEntity.saveCustomOnly port crates/horizon-client/src/block_entity_item.rs::custom_only saved NBT without id, position and components
BlockEntity.loadStatic port crates/horizon-client/src/save.rs::decode_block_entity creates the block entity from its saved tag
BlockEntity.fillCrashReportCategory skip:debug crash report detail
@@ -26,8 +26,8 @@ CampfireBlockEntity.collectImplicitComponents port crates/horizon-client/src/blo
ChestBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity Items (or loot table, via the chunk)
ChestBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity Items
ChestBlockEntity.stopOpen port crates/horizon-client/src/game/block_entity_anims.rs::Game::container_opener_event opener count down (close side), spectators excluded
ChestBlockEntity.swapContents missing minor: unsure: double-chest halves are not swapped during an old-world upgrade; no such step found in save.rs
ChestBlockEntity.recheckOpen missing minor: unsure: player openers are not recounted when the block next to a chest changes; only golem openers are rechecked (recheck_golem_openers)
ChestBlockEntity.swapContents missing only `UpgradeData.BlockFixers` (the old-world upgrade of a double chest) asks for it, and the chunk upgrade does not swap chest halves
ChestBlockEntity.recheckOpen missing only the copper golems' openers are rechecked, every five ticks (`recheck_golem_openers`); a player's openers are counted at open and close (`container_openers_changed`) and never when the block beside the chest changes
ChestLidController.tickLid port crates/horizon-client-render/src/block_entity_anim.rs::ChestLid::tick lid openness step of 0.1 per tick
ChiseledBookShelfBlockEntity.removeItem port crates/horizon-client/src/game/machines.rs::Game::take_one removes one item from the slot
ChiseledBookShelfBlockEntity.setItem port crates/horizon-client/src/game/chiseled_bookshelf.rs::Game::use_chiseled_bookshelf player insert path; slot update via chiseled_bookshelf_update_state
@@ -47,7 +47,7 @@ CrafterBlockEntity.canPlaceItem port crates/horizon-client/src/game/machines.rs:
CrafterBlockEntity.smallerStackExist port crates/horizon-client-render/src/containers.rs::Crafter::can_place the smaller-stack check later in the slots
CrafterBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity crafter arm: items, disabled slots, triggered, ticks
CrafterBlockEntity.isEmpty port crates/horizon-client/src/game/machines.rs::Containers::is_empty
CrafterBlockEntity.fillStackedContents missing minor: unsure: recipe-book fill of a crafter is not handled; recipe_book.rs has no crafter case
CrafterBlockEntity.fillStackedContents missing no crafter case in the recipe book: `recipe_book` and `crafting` fill a crafting grid, never a crafter's slots
CrafterBlockEntity.addDisabledSlots port crates/horizon-client/src/save.rs::encode_block_entity disabled_slots in the crafter arm
CrafterBlockEntity.slotCanBeDisabled port crates/horizon-client-render/src/containers.rs::Crafter::slot_can_be_disabled
CreakingHeartBlockEntity.updateCreakingState inline crates/horizon-client/src/mobs/creaking_heart.rs::server_tick creaking_heart_state set in server_tick
@@ -59,14 +59,14 @@ DecoratedPotBlockEntity.saveAdditional skip:other no own code: the raw saved ta
DecoratedPotBlockEntity.loadAdditional skip:other no own code: the raw saved tag keeps sherds and item
DecoratedPotBlockEntity.collectImplicitComponents port crates/horizon-client/src/block_entity_item.rs::collect sherds and item as components
DecoratedPotBlockEntity.applyImplicitComponents port crates/horizon-client/src/block_entity_item.rs::place sherds and item as components
DecoratedPotBlockEntity.splitTheItem missing minor: unsure: no split-count step for the pot's item found in decorated_pot.rs
DecoratedPotBlockEntity.splitTheItem missing `decorated_pot.rs` has no split-count step for the pot's item
DecoratedPotBlockEntity.wobble port crates/horizon-client/src/game/decorated_pot.rs::Game::use_decorated_pot wobble event sent on a hit
DispenserBlockEntity.insertItem port crates/horizon-client/src/game/machines.rs::Game::add_item slot-by-slot insert, as hoppers use it
DispenserBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity Items (9 slots)
DispenserBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity Items (9 slots)
EnderChestBlockEntity.startOpen port crates/horizon-client/src/game/block_entity_anims.rs::Game::container_opener_event opener count up (open side)
EnderChestBlockEntity.stopOpen port crates/horizon-client/src/game/block_entity_anims.rs::Game::container_opener_event opener count down (close side)
EnderChestBlockEntity.recheckOpen missing minor: unsure: player openers are not recounted when the block next to an ender chest changes
EnderChestBlockEntity.recheckOpen missing no player opener recount when the block beside an ender chest changes: the openers are counted at open and close only (`container_openers_changed`)
HopperBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity gap: minor: TransferCooldown is not saved (transient state in machines.rs)
HopperBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity gap: minor: TransferCooldown is not saved (transient state in machines.rs)
HopperBlockEntity.setItem port crates/horizon-client/src/game/machines.rs::Game::try_move_in_item gap: minor: unpackLootTable(null) on set is not done here
@@ -89,8 +89,8 @@ JukeboxBlockEntity.setSongItemWithoutPlaying skip:other @VisibleForTesting sett
JukeboxBlockEntity.tryForcePlaySong skip:other @VisibleForTesting hook; no player behaviour
LecternBlockEntity.hasBook inline crates/horizon-client/src/game/books.rs::Game::use_lectern book-present check before a book is placed
LecternBlockEntity.onBookItemRemove port crates/horizon-client/src/game/books.rs::Game::lectern_menu_done book gone: has_book off, container changed
LecternBlockEntity.resolveBook missing minor: unsure: written-book components (selectors, scores) are not resolved when a book goes on a lectern; books.rs has no resolve step
LecternBlockEntity.createCommandSourceStack missing minor: unsure: only used by resolveBook (see there)
LecternBlockEntity.resolveBook missing `books.rs::view_pages` reads a written book's pages for the lectern's screen as they are: no selector, score or translatable resolution
LecternBlockEntity.createCommandSourceStack missing only `resolveBook` builds it; a page's RunCommand goes through `click_command`, which has no lectern source, so a relative coordinate resolves at the player
LecternBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity Book and Page
LecternBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity Book and Page
SculkCatalystBlockEntity.CatalystListener.tryAwardItSpreadsAdvancement port crates/horizon-client/src/game/creatures.rs::Game::mob_died kill_mob_near_sculk_catalyst fires when the catalyst takes a mob's experience
@@ -111,16 +111,16 @@ ShelfBlockEntity.applyImplicitComponents port crates/horizon-client/src/block_en
ShelfBlockEntity.collectImplicitComponents port crates/horizon-client/src/block_entity_item.rs::collect Items as container component
ShulkerBoxBlockEntity.updateAnimation port crates/horizon-client-render/src/block_entity_anim.rs::Shulker::tick lid progress
ShulkerBoxBlockEntity.moveCollidedEntities inline crates/horizon-client/src/game/piston_push.rs::Game::push_shulker_entities the sweeping lid box moves every body it meets out along the facing by the box's size plus 0.01 (`Entity.move(MoverType.SHULKER_BOX, …)`), through the piston push machinery
ShulkerBoxBlockEntity.doNeighborUpdates missing minor: unsure: neighbour updates on lid open and close are left to the level; no code found
ShulkerBoxBlockEntity.doNeighborUpdates missing the lid tick counts the calls (`ShulkerTick::neighbor_updates`) and both tick paths (`tick_shulkers`, the client's `Ticker::Shulker`) drop them: no `open` block state and no neighbour or shape update around the box
ShulkerBoxBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity shulker box uses the chest arm (27 slots)
ShulkerBoxBlockEntity.loadFromTag port crates/horizon-client/src/block_entity_item.rs::place contents from the item's data
SignBlockEntity.getText skip:other accessor; SignData keeps front and back sides as fields
SignBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity sign arm: sign.encode()
SignBlockEntity.loadAdditional port crates/horizon-client-render/src/signs.rs::SignData::decode
SignBlockEntity.resolveLines missing minor: unsure: sign text selectors are not resolved; SignText keeps plain strings (component_text)
SignBlockEntity.resolveLine missing minor: unsure: sign text selectors are not resolved; SignText keeps plain strings (component_text)
SignBlockEntity.resolveLines missing a sign's text is kept as literal strings (`block_entity_item.rs` `sign_text_front`/`sign_text_back`), so a selector or a score on a sign shows raw
SignBlockEntity.resolveLine missing same as SignBlockEntity.resolveLines: no per-line resolution, sign lines are literal
SignBlockEntity.updateText port crates/horizon-client/src/game/sign_edit.rs::Game::lan_sign_update guest's sign write
SignBlockEntity.updateMessages missing minor: unsure: sign text selectors are not resolved; SignText keeps plain strings (component_text)
SignBlockEntity.updateMessages missing a sign write goes straight to the block entity's lines (`sign_edit.rs::lan_sign_update`, `close_sign_editor`); nothing resolves them first
SignBlockEntity.setText port crates/horizon-client/src/game/sign_edit.rs::Game::sign_write
SignBlockEntity.canExecuteClickCommands port crates/horizon-client/src/game/sign_edit.rs::Game::sign_can_execute_click_commands ticked in #3516; `SignBlockEntity.canExecuteClickCommands` is cited at crates/horizon-client/src/game/sign_edit.rs:97
SignBlockEntity.executeClickCommandsIfPresent port crates/horizon-client/src/game/sign_edit.rs::Game::execute_sign_click_commands ticked in #3516; `SignBlockEntity.executeClickCommandsIfPresent` is cited at crates/horizon-client/src/game/sign_edit.rs:139
@@ -143,5 +143,5 @@ SignText.equals skip:java value equality
SignText.hashCode skip:java value hashing
SignText.Mutable.asImmutable skip:java copy into the immutable record
SignText.Mutable.setLine port crates/horizon-client/src/game/sign_edit.rs::Game::sign_write writes the edited lines to the side
SignText.Mutable.modifyLine missing minor: unsure: component resolution helper; see SignBlockEntity.resolveLines
SignText.Mutable.modifyLines missing minor: unsure: component resolution helper; see SignBlockEntity.resolveLines
SignText.Mutable.modifyLine missing the component resolution of one line; see SignBlockEntity.resolveLines
SignText.Mutable.modifyLines missing the component resolution of every line; see SignBlockEntity.resolveLines
1 BellBlockEntity.areRaidersNearby inline crates/horizon-client-render/src/block_entity_anim.rs::Bell::tick resonation start check (raider within 32 blocks) folded into Bell::tick
3 BellBlockEntity.showBellParticles port crates/horizon-client-render/src/block_entity_anim.rs::Bell::tick particle positions and colours computed here; emitted in tick_block_entity_anims
4 BellBlockEntity.isRaiderWithinRange inline crates/horizon-client-render/src/block_entity_anim.rs::Bell::tick raider_in closure (48 blocks)
5 BlockEntity.validateBlockState skip:other guard that throws on a wrong block state; no player behaviour
6 BlockEntity.getPosFromTag missing minor: a block entity saved in the wrong chunk keeps its saved x/z; no chunk fix-up in decode_block_entity `save::decode_block_entity` keeps the saved x/y/z and `game.rs:1762` inserts the block entity at that key; a block entity saved in the wrong chunk keeps its saved x/z
7 BlockEntity.saveCustomOnly port crates/horizon-client/src/block_entity_item.rs::custom_only saved NBT without id, position and components
8 BlockEntity.loadStatic port crates/horizon-client/src/save.rs::decode_block_entity creates the block entity from its saved tag
9 BlockEntity.fillCrashReportCategory skip:debug crash report detail
26 ChestBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity Items (or loot table, via the chunk)
27 ChestBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity Items
28 ChestBlockEntity.stopOpen port crates/horizon-client/src/game/block_entity_anims.rs::Game::container_opener_event opener count down (close side), spectators excluded
29 ChestBlockEntity.swapContents missing minor: unsure: double-chest halves are not swapped during an old-world upgrade; no such step found in save.rs only `UpgradeData.BlockFixers` (the old-world upgrade of a double chest) asks for it, and the chunk upgrade does not swap chest halves
30 ChestBlockEntity.recheckOpen missing minor: unsure: player openers are not recounted when the block next to a chest changes; only golem openers are rechecked (recheck_golem_openers) only the copper golems' openers are rechecked, every five ticks (`recheck_golem_openers`); a player's openers are counted at open and close (`container_openers_changed`) and never when the block beside the chest changes
31 ChestLidController.tickLid port crates/horizon-client-render/src/block_entity_anim.rs::ChestLid::tick lid openness step of 0.1 per tick
32 ChiseledBookShelfBlockEntity.removeItem port crates/horizon-client/src/game/machines.rs::Game::take_one removes one item from the slot
33 ChiseledBookShelfBlockEntity.setItem port crates/horizon-client/src/game/chiseled_bookshelf.rs::Game::use_chiseled_bookshelf player insert path; slot update via chiseled_bookshelf_update_state
47 CrafterBlockEntity.smallerStackExist port crates/horizon-client-render/src/containers.rs::Crafter::can_place the smaller-stack check later in the slots
48 CrafterBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity crafter arm: items, disabled slots, triggered, ticks
49 CrafterBlockEntity.isEmpty port crates/horizon-client/src/game/machines.rs::Containers::is_empty
50 CrafterBlockEntity.fillStackedContents missing minor: unsure: recipe-book fill of a crafter is not handled; recipe_book.rs has no crafter case no crafter case in the recipe book: `recipe_book` and `crafting` fill a crafting grid, never a crafter's slots
51 CrafterBlockEntity.addDisabledSlots port crates/horizon-client/src/save.rs::encode_block_entity disabled_slots in the crafter arm
52 CrafterBlockEntity.slotCanBeDisabled port crates/horizon-client-render/src/containers.rs::Crafter::slot_can_be_disabled
53 CreakingHeartBlockEntity.updateCreakingState inline crates/horizon-client/src/mobs/creaking_heart.rs::server_tick creaking_heart_state set in server_tick
59 DecoratedPotBlockEntity.loadAdditional skip:other no own code: the raw saved tag keeps sherds and item
60 DecoratedPotBlockEntity.collectImplicitComponents port crates/horizon-client/src/block_entity_item.rs::collect sherds and item as components
61 DecoratedPotBlockEntity.applyImplicitComponents port crates/horizon-client/src/block_entity_item.rs::place sherds and item as components
62 DecoratedPotBlockEntity.splitTheItem missing minor: unsure: no split-count step for the pot's item found in decorated_pot.rs `decorated_pot.rs` has no split-count step for the pot's item
63 DecoratedPotBlockEntity.wobble port crates/horizon-client/src/game/decorated_pot.rs::Game::use_decorated_pot wobble event sent on a hit
64 DispenserBlockEntity.insertItem port crates/horizon-client/src/game/machines.rs::Game::add_item slot-by-slot insert, as hoppers use it
65 DispenserBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity Items (9 slots)
66 DispenserBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity Items (9 slots)
67 EnderChestBlockEntity.startOpen port crates/horizon-client/src/game/block_entity_anims.rs::Game::container_opener_event opener count up (open side)
68 EnderChestBlockEntity.stopOpen port crates/horizon-client/src/game/block_entity_anims.rs::Game::container_opener_event opener count down (close side)
69 EnderChestBlockEntity.recheckOpen missing minor: unsure: player openers are not recounted when the block next to an ender chest changes no player opener recount when the block beside an ender chest changes: the openers are counted at open and close only (`container_openers_changed`)
70 HopperBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity gap: minor: TransferCooldown is not saved (transient state in machines.rs)
71 HopperBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity gap: minor: TransferCooldown is not saved (transient state in machines.rs)
72 HopperBlockEntity.setItem port crates/horizon-client/src/game/machines.rs::Game::try_move_in_item gap: minor: unpackLootTable(null) on set is not done here
89 JukeboxBlockEntity.tryForcePlaySong skip:other @VisibleForTesting hook; no player behaviour
90 LecternBlockEntity.hasBook inline crates/horizon-client/src/game/books.rs::Game::use_lectern book-present check before a book is placed
91 LecternBlockEntity.onBookItemRemove port crates/horizon-client/src/game/books.rs::Game::lectern_menu_done book gone: has_book off, container changed
92 LecternBlockEntity.resolveBook missing minor: unsure: written-book components (selectors, scores) are not resolved when a book goes on a lectern; books.rs has no resolve step `books.rs::view_pages` reads a written book's pages for the lectern's screen as they are: no selector, score or translatable resolution
93 LecternBlockEntity.createCommandSourceStack missing minor: unsure: only used by resolveBook (see there) only `resolveBook` builds it; a page's RunCommand goes through `click_command`, which has no lectern source, so a relative coordinate resolves at the player
94 LecternBlockEntity.loadAdditional port crates/horizon-client/src/save.rs::decode_block_entity Book and Page
95 LecternBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity Book and Page
96 SculkCatalystBlockEntity.CatalystListener.tryAwardItSpreadsAdvancement port crates/horizon-client/src/game/creatures.rs::Game::mob_died kill_mob_near_sculk_catalyst fires when the catalyst takes a mob's experience
111 ShelfBlockEntity.collectImplicitComponents port crates/horizon-client/src/block_entity_item.rs::collect Items as container component
112 ShulkerBoxBlockEntity.updateAnimation port crates/horizon-client-render/src/block_entity_anim.rs::Shulker::tick lid progress
113 ShulkerBoxBlockEntity.moveCollidedEntities inline crates/horizon-client/src/game/piston_push.rs::Game::push_shulker_entities the sweeping lid box moves every body it meets out along the facing by the box's size plus 0.01 (`Entity.move(MoverType.SHULKER_BOX, …)`), through the piston push machinery
114 ShulkerBoxBlockEntity.doNeighborUpdates missing minor: unsure: neighbour updates on lid open and close are left to the level; no code found the lid tick counts the calls (`ShulkerTick::neighbor_updates`) and both tick paths (`tick_shulkers`, the client's `Ticker::Shulker`) drop them: no `open` block state and no neighbour or shape update around the box
115 ShulkerBoxBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity shulker box uses the chest arm (27 slots)
116 ShulkerBoxBlockEntity.loadFromTag port crates/horizon-client/src/block_entity_item.rs::place contents from the item's data
117 SignBlockEntity.getText skip:other accessor; SignData keeps front and back sides as fields
118 SignBlockEntity.saveAdditional port crates/horizon-client/src/save.rs::encode_block_entity sign arm: sign.encode()
119 SignBlockEntity.loadAdditional port crates/horizon-client-render/src/signs.rs::SignData::decode
120 SignBlockEntity.resolveLines missing minor: unsure: sign text selectors are not resolved; SignText keeps plain strings (component_text) a sign's text is kept as literal strings (`block_entity_item.rs` `sign_text_front`/`sign_text_back`), so a selector or a score on a sign shows raw
121 SignBlockEntity.resolveLine missing minor: unsure: sign text selectors are not resolved; SignText keeps plain strings (component_text) same as SignBlockEntity.resolveLines: no per-line resolution, sign lines are literal
122 SignBlockEntity.updateText port crates/horizon-client/src/game/sign_edit.rs::Game::lan_sign_update guest's sign write
123 SignBlockEntity.updateMessages missing minor: unsure: sign text selectors are not resolved; SignText keeps plain strings (component_text) a sign write goes straight to the block entity's lines (`sign_edit.rs::lan_sign_update`, `close_sign_editor`); nothing resolves them first
124 SignBlockEntity.setText port crates/horizon-client/src/game/sign_edit.rs::Game::sign_write
125 SignBlockEntity.canExecuteClickCommands port crates/horizon-client/src/game/sign_edit.rs::Game::sign_can_execute_click_commands ticked in #3516; `SignBlockEntity.canExecuteClickCommands` is cited at crates/horizon-client/src/game/sign_edit.rs:97
126 SignBlockEntity.executeClickCommandsIfPresent port crates/horizon-client/src/game/sign_edit.rs::Game::execute_sign_click_commands ticked in #3516; `SignBlockEntity.executeClickCommandsIfPresent` is cited at crates/horizon-client/src/game/sign_edit.rs:139
143 SignText.hashCode skip:java value hashing
144 SignText.Mutable.asImmutable skip:java copy into the immutable record
145 SignText.Mutable.setLine port crates/horizon-client/src/game/sign_edit.rs::Game::sign_write writes the edited lines to the side
146 SignText.Mutable.modifyLine missing minor: unsure: component resolution helper; see SignBlockEntity.resolveLines the component resolution of one line; see SignBlockEntity.resolveLines
147 SignText.Mutable.modifyLines missing minor: unsure: component resolution helper; see SignBlockEntity.resolveLines the component resolution of every line; see SignBlockEntity.resolveLines