mirror of
https://github.com/horizon-rust/horizon.git
synced 2026-11-07 02:56:17 -10:00
Single player only runs on its server thread now. --in-frame and --no-server-thread print a notice, and HORIZON_SERVER_THREAD is ignored. This deletes the code that only the in-frame path reached: the window's world loader and local player tick, its portal travel, the loading screen and ring-by-ring streaming, and the in-frame LAN host (the host player in the hub, its models of the guests, the reserved uuid). The world-upgrade progress screen with its Cancel button moves to the server-thread start. Tools, the harnesses and the docs no longer use the in-frame path. Closes #6473 Co-Authored-By: Claude Opus 5.5 <[email protected]>
23 KiB
23 KiB
| 1 | ClientPacketListener.<init> | port | crates/horizon-client/src/game/remote.rs::Game::join_server | gap: minor: clears the chat on join; vanilla restores chat state kept across a reconfiguration |
|---|---|---|---|---|
| 2 | ClientPacketListener.clearCacheSlots | skip:java | weak-reference cache slots; Horizon has no such cache | |
| 3 | ClientPacketListener.handleAddEntity | inline | crates/horizon-client/src/game/remote.rs::Game::handle_packet | AddEntity arm: spawn_entity, then object or projectile spawn, then motion |
| 4 | ClientPacketListener.createEntityFromPacket | inline | crates/horizon-client/src/game/remote.rs::Game::handle_packet | gap: minor: the player spawns without checking that its profile is known |
| 5 | ClientPacketListener.handleSetEntityData | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | gap: minor: only the data indexes Horizon reads are applied (flags, names, sleep, crouch, mob fields) |
| 6 | ClientPacketListener.handleEntityPositionSync | port | crates/horizon-client/src/game/remote.rs::Game::move_entity | absolute move with the packet rotation and on-ground flag |
| 7 | ClientPacketListener.handleTeleportEntity | inline | crates/horizon-client/src/game/remote.rs::Game::handle_packet | TeleportEntity arm works out the relative position, then move_entity; gap: minor: a teleport of the player's former vehicle is not applied to the player |
| 8 | ClientPacketListener.handleTickingState | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | TickingState arm: clock rate and frozen flag |
| 9 | ClientPacketListener.handleTickingStep | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | TickingStep arm: frozen ticks to run |
| 10 | ClientPacketListener.handleMoveEntity | port | crates/horizon-client/src/game/remote.rs::Game::move_entity | relative move and rotation from the Pos, PosRot and Rot packets |
| 11 | ClientPacketListener.handleMinecartAlongTrack | missing | player: the server's rail steps for a minecart are dropped, so a cart on a dedicated server follows the client's own rail physics and can drift from where the server has it | |
| 12 | ClientPacketListener.handleRemoveEntities | port | crates/horizon-client/src/game/remote.rs::Game::remove_entity | gap: minor: a removed vehicle carrying the player is not remembered for a later teleport |
| 13 | ClientPacketListener.setValuesFromPositionPacket | port | crates/horizon-client/src/game/remote.rs::Game::remote_teleport | gap: minor: the entity case (TeleportEntity) is in the handle_packet arm, not here |
| 14 | ClientPacketListener.handleRotatePlayer | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | PlayerRotation arm; gap: minor: no ServerboundMovePlayerPacket.Rot reply is sent |
| 15 | ClientPacketListener.handleChunkBlocksUpdate | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SectionBlocksUpdate arm: each change through the block update |
| 16 | ClientPacketListener.handleChunksBiomes | missing | player: biome updates for loaded chunks are dropped, so grass, leaves and water keep the old biome colour | |
| 17 | ClientPacketListener.enableChunkLight | inline | crates/horizon-client-render/src/streaming.rs::Streaming::insert_remote | gap: minor: the air-only section status is not set; every section of the 3x3 columns is marked dirty |
| 18 | ClientPacketListener.handleForgetLevelChunk | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ForgetLevelChunk arm: Streaming::forget, block entities and renderer columns dropped |
| 19 | ClientPacketListener.queueLightRemoval | inline | crates/horizon-client-render/src/streaming.rs::Streaming::forget | gap: minor: the column's light state is dropped with the column; no per-section light clearing |
| 20 | ClientPacketListener.handleBlockUpdate | port | crates/horizon-client/src/game/remote.rs::Game::server_block | |
| 21 | ClientPacketListener.handleConfigurationStart | port | crates/horizon-client/src/net.rs::receive_play | gap: player: no reconfiguring screen is shown and the chat state is not stored |
| 22 | ClientPacketListener.handleSystemChat | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SystemChat arm: overlay to the action bar, otherwise the chat |
| 23 | ClientPacketListener.handlePlayerChat | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | PlayerChat arm: the global index (a mismatch disconnects), an unknown sender and the sender's validator; gap: minor: markMessageAsProcessed (no last-seen tracker is kept) |
| 24 | ClientPacketListener.handleDisguisedChat | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | DisguisedChat arm |
| 25 | ClientPacketListener.handleDeleteChat | port | crates/horizon-client/src/game/remote.rs::Game::handle_delete_chat | |
| 26 | ClientPacketListener.handleAnimate | port | crates/horizon-client/src/game/remote.rs::Game::remote_animate | action 0 stops sleeping, 1 and 2 emit crit and enchanted hit particles |
| 27 | ClientPacketListener.handleHurtAnimation | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | HurtAnimation arm: own player's hurt tilt, or a mob's hurt time |
| 28 | ClientPacketListener.handleSetSpawn | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetDefaultSpawnPosition arm; gap: minor: only an overworld spawn is kept, other dimensions are dropped |
| 29 | ClientPacketListener.handleAddTransientBlockPacket | missing | minor: the transient block shown while a falling block lands is not drawn; the block update still arrives | |
| 30 | ClientPacketListener.findTotem | missing | player: the totem of undying pop-up over the screen is not shown when death protection triggers; Horizon has no item activation | |
| 31 | ClientPacketListener.handleSetExperience | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetExperience arm |
| 32 | ClientPacketListener.determineLevelLoadingReason | port | crates/horizon-client-render/src/level_loading.rs::reason_for_respawn | the reason of a Respawn packet: death, a Nether or an End crossing |
| 33 | ClientPacketListener.handleOpenScreen | port | crates/horizon-client/src/game/remote.rs::Game::remote_open_screen | |
| 34 | ClientPacketListener.handleSetCursorItem | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetCursorItem arm; gap: minor: sets the carried stack even while the creative screen is open |
| 35 | ClientPacketListener.handleSetPlayerInventory | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetPlayerInventory arm: slots 0-35, armour 36-39, off hand 40 |
| 36 | ClientPacketListener.handleContainerContent | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ContainerSetContent arm: each slot, then the carried stack |
| 37 | ClientPacketListener.handleBlockEntityData | port | crates/horizon-client/src/game/remote.rs::Game::remote_block_entity_data | |
| 38 | ClientPacketListener.handleContainerSetData | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ContainerSetData arms (lectern, furnace, crafter, brewing); station containers go to remote_stations.rs::Game::remote_station_data |
| 39 | ClientPacketListener.handleContainerClose | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ContainerClose arm: closes the inventory screen; gap: minor: a server close while the creative screen is open is ignored |
| 40 | ClientPacketListener.handleBlockEvent | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | BlockEvent arm: client block event, then the block entity event |
| 41 | ClientPacketListener.handleGameEvent | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | GameEvent arm (weather, mode, credits, respawn, arrow hit, sting, limited crafting, chunks load start); gap: minor: demo mode (5) is not shown |
| 42 | ClientPacketListener.openDemoIntroScreen | skip:other | demo mode only (GameEvent 5); Horizon has no demo mode | |
| 43 | ClientPacketListener.startWaitingForNewLevel | missing | player: no level loading screen after a dimension change or respawn on a dedicated server; a join shows only the 'Loading terrain' status text | |
| 44 | ClientPacketListener.handleMapItemData | port | crates/horizon-client/src/game/maps.rs::Game::remote_map_item_data | |
| 45 | ClientPacketListener.handleUpdateAdvancementsPacket | port | crates/horizon-client/src/game/advancements.rs::Game::remote_advancements | UpdateAdvancements arm passes the added icons |
| 46 | ClientPacketListener.handleSelectAdvancementsTab | missing | minor: the server's advancement tab choice is ignored | |
| 47 | ClientPacketListener.handleCommands | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | Commands arm: command tree from the packet, merged with Horizon's own |
| 48 | ClientPacketListener.handleStopSoundEvent | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | StopSound arm: audio stop_sounds |
| 49 | ClientPacketListener.handleUpdateRecipes | skip:data | Horizon reads recipes from its own tables; the server's list is not read | |
| 50 | ClientPacketListener.handleLookAt | missing | player: a server command that turns the camera (/faceplayer, /tp with facing) does not turn this player's view | |
| 51 | ClientPacketListener.handleTagQueryPacket | port | crates/horizon-client/src/game/debug_keys.rs::Game::answer_tag_query | reached from the TagQuery arm of remote.rs handle_packet |
| 52 | ClientPacketListener.handleAwardStats | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | AwardStats arm: known stat keys into the stats values |
| 53 | ClientPacketListener.handleRecipeBookAdd | port | crates/horizon-client/src/game/recipe_book.rs::Game::remote_recipe_book_add | |
| 54 | ClientPacketListener.handleRecipeBookRemove | port | crates/horizon-client/src/game/recipe_book.rs::Game::remote_recipe_book_remove | |
| 55 | ClientPacketListener.handleRecipeBookSettings | port | crates/horizon-client/src/game/recipe_book.rs::Game::remote_recipe_book_settings | |
| 56 | ClientPacketListener.refreshRecipeBook | inline | crates/horizon-client/src/game/recipe_book.rs::Game::remote_recipe_book_add | the collections rebuild lazily through the client version bump |
| 57 | ClientPacketListener.updateTags | skip:data | the server's tag payload is not read; tags come from Horizon's own data (net.rs configure ignores UpdateTags) | |
| 58 | ClientPacketListener.handleUpdateTags | skip:data | the server's tag payload is not read; tags come from Horizon's own data (net.rs configure ignores UpdateTags) | |
| 59 | ClientPacketListener.handleChangeDifficulty | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ChangeDifficulty arm |
| 60 | ClientPacketListener.handleSetCamera | missing | player: a spectator's view does not attach to the entity it spectates (for example /spectate) | |
| 61 | ClientPacketListener.handleInitializeBorder | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | InitializeBorder arm: centre, size or lerp, absolute max, warnings |
| 62 | ClientPacketListener.handleSetBorderCenter | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetBorderCenter arm |
| 63 | ClientPacketListener.handleSetBorderLerpSize | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetBorderLerpSize arm |
| 64 | ClientPacketListener.handleSetBorderSize | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetBorderSize arm |
| 65 | ClientPacketListener.handleSetBorderWarningDistance | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetBorderWarningDistance arm |
| 66 | ClientPacketListener.handleSetBorderWarningDelay | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetBorderWarningDelay arm |
| 67 | ClientPacketListener.handleTitlesClear | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ClearTitles arm: clear, optionally reset the times |
| 68 | ClientPacketListener.handleCustomChatCompletions | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | CustomChatCompletions arm: modify_custom_completions on the connection's set |
| 69 | ClientPacketListener.setTitleText | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetTitleText arm |
| 70 | ClientPacketListener.setSubtitleText | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetSubtitleText arm |
| 71 | ClientPacketListener.setTitlesAnimation | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetTitlesAnimation arm |
| 72 | ClientPacketListener.handleTabListCustomisation | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | TabList arm: empty text clears the header or footer |
| 73 | ClientPacketListener.handleRemoveMobEffect | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | RemoveMobEffect arm; gap: minor: only the player's own effects are removed |
| 74 | ClientPacketListener.handlePlayerInfoRemove | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | PlayerInfoRemove arm |
| 75 | ClientPacketListener.handlePlayerInfoUpdate | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | PlayerInfoUpdate arm: new entries, then listing, latency, name, hat, list order and game mode for tab players |
| 76 | ClientPacketListener.applyPlayerInfoUpdate | inline | crates/horizon-client/src/game/remote.rs::Game::handle_packet | gap: minor: the own player's game-mode update does not change the local mode; INITIALIZE_CHAT is ignored |
| 77 | ClientPacketListener.initializeChatSession | port | crates/horizon-client/src/game/remote.rs::Remote::new_chat_validator | the session each INITIALIZE_CHAT entry carries is kept and checked against the services' profile-key keys when the player's chat is first read |
| 78 | ClientPacketListener.enforcesSecureChat | missing | minor: the Login flag enforces_secure_chat is not read | |
| 79 | ClientPacketListener.handleGameRuleValues | port | crates/horizon-client/src/game/lan_screen.rs::Game::remote_world_options_rules | |
| 80 | ClientPacketListener.handleSoundEntityEvent | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SoundEntity arm: the sound plays where the tracked entity is |
| 81 | ClientPacketListener.handleAddObjective | port | crates/horizon-client/src/game/remote.rs::Game::remote_objective | add, remove and update of an objective |
| 82 | ClientPacketListener.handleSetScore | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetScore arm |
| 83 | ClientPacketListener.handleResetScore | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ResetScore arm |
| 84 | ClientPacketListener.handleSetDisplayObjective | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetDisplayObjective arm: display slot names |
| 85 | ClientPacketListener.handleSetPlayerTeamPacket | port | crates/horizon-client/src/game/remote.rs::Game::remote_team | |
| 86 | ClientPacketListener.tryAddParticle | skip:other | the try/catch that drops one particle that fails to add; Horizon's particle ids are typed, so nothing is caught | |
| 87 | ClientPacketListener.handlePlaceRecipe | port | crates/horizon-client/src/game/recipe_book.rs::Game::remote_ghost_recipe | |
| 88 | ClientPacketListener.handleLightUpdatePacket | port | crates/horizon-client/src/game/remote_chunks.rs::Game::remote_light_update | |
| 89 | ClientPacketListener.handleMerchantOffers | port | crates/horizon-client/src/game/remote.rs::Game::remote_merchant_offers | |
| 90 | ClientPacketListener.handleSetChunkCacheRadius | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetChunkCacheRadius arm: streaming radius, columns out of range dropped |
| 91 | ClientPacketListener.handleSetSimulationDistance | missing | minor: the server's simulation distance is not read | |
| 92 | ClientPacketListener.handleSetChunkCacheCenter | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | SetChunkCacheCenter arm |
| 93 | ClientPacketListener.handleBlockChangedAck | port | crates/horizon-client/src/game/remote.rs::Game::end_predictions | |
| 94 | ClientPacketListener.handleBundlePacket | inline | crates/horizon-client/src/net.rs::receive_play | bundle delimiters are dropped; the packets inside arrive as a stream and are handled one by one, in order |
| 95 | ClientPacketListener.handleProjectilePowerPacket | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ProjectilePower arm: a hurting projectile's acceleration power, by id |
| 96 | ClientPacketListener.handleChunkBatchFinished | port | crates/horizon-client/src/game/remote.rs::Game::handle_packet | ChunkBatchFinished arm; gap: minor: answers with a fixed 64 chunks per tick, not a measured rate |
| 97 | ClientPacketListener.handleTestInstanceBlockStatus | skip:debug | status for the test instance block editor (developer blocks); Horizon has no editor | |
| 98 | ClientPacketListener.handleDebugChunkValue | skip:debug | debug overlay values from the server | |
| 99 | ClientPacketListener.handleDebugBlockValue | skip:debug | debug overlay values from the server | |
| 100 | ClientPacketListener.handleDebugEntityValue | skip:debug | debug overlay values from the server | |
| 101 | ClientPacketListener.handleDebugEvent | skip:debug | debug overlay events from the server | |
| 102 | ClientPacketListener.handleGameTestHighlightPos | skip:debug | game test block highlight (developer tool) | |
| 103 | ClientPacketListener.isAcceptingMessages | inline | crates/horizon-client/src/game/remote.rs::Game::send_chat | gap: minor: only the chat abilities are checked; no connection-open check |
| 104 | ClientPacketListener.getPlayerInfo | skip:java | a map lookup by UUID; Horizon keeps the player list in remote.tab_players and remote.players | |
| 105 | ClientPacketListener.getPlayerInfoIgnoreCase | missing | unsure: a case-insensitive name lookup for profiles (LocalPlayerResolver); Horizon has none | |
| 106 | ClientPacketListener.markMessageAsProcessed | port | crates/horizon-client/src/game/remote_chat.rs::Game::mark_message_processed | when the chat takes the message, past any Chat Delay |
| 107 | ClientPacketListener.sendChatAcknowledgement | port | crates/horizon-client/src/game/remote_chat.rs::Game::mark_message_processed | a ChatAck once more than 64 wait |
| 108 | ClientPacketListener.sendCommand | port | crates/horizon-client/src/game/remote_chat.rs::Game::send_command | message arguments signed with a chat session; the unsigned packet otherwise |
| 109 | ClientPacketListener.verifyCommand | port | crates/horizon-client/src/game/remote_chat.rs::verify_command | over the tree the server sent |
| 110 | ClientPacketListener.isValidCommand | port | crates/horizon-command/src/lib.rs::ParseResults::is_valid | |
| 111 | ClientPacketListener.openSendConfirmationWindow | port | crates/horizon-client/src/game/remote_chat.rs::Game::send_unattended_command | a clicked book or dialog is already closed: no answer returns to it |
| 112 | ClientPacketListener.openCommandSendConfirmationWindow | port | crates/horizon-client/src/game/remote_chat.rs::Game::answer_command_prompt | Run Command sends it |
| 113 | ClientPacketListener.openSignedCommandSendConfirmationWindow | port | crates/horizon-client/src/game/remote_chat.rs::Game::answer_command_prompt | into the chat box, or the clipboard over a screen; a kept chat draft is not put before it |
| 114 | ClientPacketListener.broadcastClientInformation | port | crates/horizon-client/src/game/remote.rs::Game::tick_remote_level | gap: minor: only view distance and chat visibility are sent, and only when they change |
| 115 | ClientPacketListener.notifyPlayerLoaded | port | crates/horizon-client/src/game/remote.rs::Game::tick_remote_level | gap: minor: gated on the player's column being lit, not on its sections being compiled |
| 116 | ClientPacketListener.setKeyPair | port | crates/horizon-client/src/game/remote_chat.rs::Game::update_chat_session | only for the account's own profile id; a new session when the pair changes |
| 117 | ClientRegistryLayer.createRegistryAccess | skip:data | registry layers come from Horizon's own tables | |
| 118 | ClientSuggestionProvider.getOnlinePlayerNames | port | crates/horizon-client/src/game/remote.rs::Game::remote_online_names | sorted names of the server's player list |
| 119 | ClientSuggestionProvider.getCustomTabSuggestions | port | crates/horizon-client-core/src/registries.rs::Registries::custom_tab_suggestions | the player names and the server's custom completions, each once |
| 120 | ClientSuggestionProvider.getSelectedEntities | missing | minor: no suggestion for the entity under the crosshair | |
| 121 | ClientSuggestionProvider.suggestRegistryElements | port | crates/horizon-command/src/args.rs::suggest_resources | registry ids come from Horizon's registry tables |
| 122 | ClientSuggestionProvider.getRelevantCoordinates | port | crates/horizon-command/src/args.rs::suggest_coordinates | the block under the crosshair for block positions |
| 123 | ClientSuggestionProvider.getAbsoluteCoordinates | port | crates/horizon-command/src/args.rs::suggest_coordinates | gap: minor: the exact hit point is not offered; Vec3 arguments only get ~ |
| 124 | ClientSuggestionProvider.modifyCustomCompletions | port | crates/horizon-client-core/src/registries.rs::modify_custom_completions | ADD, REMOVE or SET on the set the connection keeps |
| 125 | KnownPacksManager.trySelectingPacks | skip:data | Horizon answers SelectKnownPacks with no packs, so the server sends full registries (net.rs configure) | |
| 126 | LegacyServerPinger.channelActive | skip:other | legacy pre-1.7 server-list ping, not used by this client | |
| 127 | LegacyServerPinger.channelRead0 | skip:other | legacy pre-1.7 server-list ping, not used by this client | |
| 128 | LevelLoadTracker.startClientLoad | inline | crates/horizon-client/src/game/remote.rs::Game::tick_remote_level | gap: player: no loading screen state; the wait is only for the player's column to be lit |
| 129 | LevelLoadTracker.isLevelReady | inline | crates/horizon-client/src/game/remote.rs::Game::tick_remote_level | gap: minor: readiness is the player's column being lit; vanilla's close delay is not kept |
| 130 | LevelLoadTracker.getPlayerCompiledSectionCallback | inline | crates/horizon-client/src/game/remote.rs::Game::tick_remote_level | gap: minor: the gate is the column being lit, not the section being compiled |
| 131 | LevelLoadTracker.WaitingForPlayerChunk.isReady | inline | crates/horizon-client/src/game/remote.rs::Game::tick_remote_level | gap: minor: no timeout and no spectator or dead exemption |
| 132 | LevelLoadTracker.WaitingForServer.loadingPacketsReceived | missing | minor: the server's level-chunks-start event (GameEvent 13) is ignored | |
| 133 | MultiPlayerGameMode.startPrediction | port | crates/horizon-client/src/game/remote.rs::Game::next_sequence | gap: minor: only the sequence number; each caller builds and sends its own packet |
| 134 | MultiPlayerGameMode.ensureHasSentCarriedItem | inline | crates/horizon-client/src/game/remote.rs::Game::remote_send_state | the SetCarriedItem check, made on every send |
| 135 | MultiPlayerGameMode.performUseItemOn | port | crates/horizon-client/src/game/remote.rs::Game::remote_use_block | gap: minor: no world-border check, and UseItemOn always sends world_border false |
| 136 | MultiPlayerGameMode.createPlayer | port | crates/horizon-client/src/game/remote.rs::Game::remote_teleport | gap: minor: the player is created on the first position packet, not at login |
| 137 | MultiPlayerGameMode.handleCreativeModeItemAdd | inline | crates/horizon-client/src/game/remote.rs::Game::remote_send_state | gap: minor: the creative inventory is sent as a per-tick diff, with no feature-flag check |
| 138 | MultiPlayerGameMode.handleCreativeModeItemDrop | port | crates/horizon-client/src/game/remote.rs::Game::remote_creative_drop | gap: minor: no check that another container screen is open |
| 139 | MultiPlayerGameMode.getDestroyStage | port | crates/horizon-client/src/first_person.rs::Destroying::stage | |
| 140 | RegistryDataCollector.appendContents | skip:data | registry data for the configuration handshake; Horizon reads its own tables | |
| 141 | RegistryDataCollector.appendTags | skip:data | registry tags for the configuration handshake; Horizon reads its own tables | |
| 142 | RegistryDataCollector.loadNewElementsAndTags | skip:data | registry loading for the configuration handshake; Horizon reads its own tables | |
| 143 | RegistryDataCollector.addCrashDetails | skip:debug | crash report details | |
| 144 | RegistryDataCollector.loadOnlyTags | skip:data | registry tags for the configuration handshake; Horizon reads its own tables | |
| 145 | RegistryDataCollector.updateComponents | skip:data | data component registry; Horizon reads its own tables | |
| 146 | RegistryDataCollector.collectGameRegistries | skip:data | registry collection for the configuration handshake; Horizon reads its own tables | |
| 147 | RegistryDataCollector.ContentsCollector.append | skip:data | registry contents collector; Horizon reads its own tables |