Files
horizon/tools/port_map/game2-023.tsv
T
rdbtCVSandClaude Opus 5.5 23f8bd4fed Remove the deprecated in-frame single-player path
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]>
2026-11-02 09:30:14 +00:00

21 KiB

1FlowingFluid.getFlowportcrates/horizon-world/src/fluid_flow.rs::flow_atneighbour currents and falling wall deflection
2FlowingFluid.affectsFlowportcrates/horizon-world/src/fluid_flow.rs::affects_flow-
3FlowingFluid.isSolidFaceportcrates/horizon-world/src/fluid_flow.rs::solid_face-
4FlowingFluid.getFlowingportcrates/horizon-world/src/fluid.rs::FluidState::newkind chosen by flowing_of (level/fluids.rs) at the call sites; this builds the state from amount and falling
5FlowingFluid.isSourceBlockOfThisTypeportcrates/horizon-world/src/level/fluids.rs::Sim::is_source_of-
6FlowingFluid.sourceNeighborCountportcrates/horizon-world/src/level/fluids.rs::Sim::source_neighbour_count-
7FlowingFluid.getLegacyLevelinlinecrates/horizon-world/src/fluid.rs::FluidBlockBindings::blockthe level number (0 for sources, else 8 minus amount plus 8 when falling) is computed inline when picking the liquid block
8FlowingFluid.getShapeportcrates/horizon-world/src/fluid_shape.rs::FluidShapeCache::shapegap: minor: no full-block branch for amount 9 with the same fluid above; the pinned registry has no amount-nine state
9FlowingFluid.BlockStatePairKey.equalsskip:java-cache key record equality
10FlowingFluid.BlockStatePairKey.hashCodeskip:java-cache key record hash
11FlowingFluid.SpreadContext.getBlockStateportcrates/horizon-world/src/level/fluids.rs::Sim::context_state-
12FlowingFluid.SpreadContext.isHoleportcrates/horizon-world/src/level/fluids.rs::Sim::context_is_hole-
13Fluid.getAABBinlinecrates/horizon-client/src/arrows.rs::Ticker::collided_with_fluidthe fluid box (block to block plus height) is built inside collided_with_fluid for the sweep test
14FluidState.isSourceOfTypeportcrates/horizon-world/src/level/fluids.rs::Sim::is_source_offamily comparison instead of owner identity; same result for source states
15LavaFluid.hasFlammableNeighboursinlinecrates/horizon-world/src/level/fluids.rs::Sim::lava_random_tickthe six-neighbour check is folded into the random tick; uses the plain IGNITED_BY_LAVA flag, no face argument
16LavaFluid.isFlammableportcrates/horizon-world/src/level/fluids.rs::Sim::lava_flammabledeprecated no-face overload; same build-height and chunk check and flag
17LavaFluid.canBeReplacedWithportcrates/horizon-world/src/level/fluids.rs::Sim::can_be_replaced_with-
18LavaFluid.getSpreadDelayportcrates/horizon-world/src/level/fluids.rs::Sim::spread_delay-
19LavaFluid.spreadToportcrates/horizon-world/src/level/fluids.rs::Sim::spread_toincludes the lava-into-water stone conversion and fizz event
20LavaFluid.Flowing.createFluidStateDefinitionskip:data-state property list, read from data tables
21WaterFluid.beforeDestroyingBlockportcrates/horizon-world/src/level/update.rs::Sim::drop_resourcescalled from spread_to for water only
22WaterFluid.canBeReplacedWithportcrates/horizon-world/src/level/fluids.rs::Sim::can_be_replaced_with-
23WaterFluid.Flowing.createFluidStateDefinitionskip:data-state property list, read from data tables
24MapColor.calculateARGBColorportcrates/horizon-client/src/game/maps.rs::packed_rgbapacked id with brightness in, ARGB out; id 0 is transparent as in vanilla NONE
25MapColor.getPackedIdinlinecrates/horizon-client/src/game/maps.rs::Game::render_biome_previewthe packed id (color << 2 | brightness) is built where map pixels are written (maps.rs:682 and in update_map)
26AmphibiousNodeEvaluator.doneskip:other-vanilla sets the mob malus for WATER, WALKABLE and WATER_BORDER in prepare and restores it here; Horizon never writes the mob malus, Finder::malus applies the amphibious values per search
27AmphibiousNodeEvaluator.isVerticalNeighborValidinlinecrates/horizon-client/src/mobs/path.rs::Finder::walk_neighborsthe amphibious up and down neighbours need a valid node that is WATER; folded into the amphibious branch
28BinaryHeap.removeskip:other-no vanilla caller: the search only uses insert, pop and changeCost, Horizon has heap_insert, heap_pop and change_cost
29FlyNodeEvaluator.getNeighborsportcrates/horizon-client/src/mobs/path.rs::Finder::fly_neighborsfly neighbours
30FlyNodeEvaluator.hasMalusinlinecrates/horizon-client/src/mobs/path.rs::Finder::fly_neighborsthe cost_malus >= 0 test is a closure inside fly_neighbors
31FlyNodeEvaluator.getCachedPathTypeportcrates/horizon-client/src/mobs/path.rs::Finder::fly_path_type-
32FlyNodeEvaluator.iteratePathfindingStartNodeCandidatePositionsinlinecrates/horizon-client/src/mobs/path.rs::Finder::startgap: minor: flying start candidates are the four corners only; the small-mob branch (ten random positions in the inflated box) is not ported
33pathfinder/Node.createDebugStreamCodecskip:debug-stream codec for the debug path overlay
34pathfinder/Node.cloneAndMovemissing-minor: only used by PathNavigation.trimPath to raise path nodes over cauldrons by one block; that trim is not ported, so mobs may bump on cauldron rims
35pathfinder/Node.createHashskip:java-Java map key; Horizon indexes nodes inside Finder
36pathfinder/Node.distanceToportcrates/horizon-client/src/mobs/path.rs::Node::distanceboth overloads: node to node and node to block position
37pathfinder/Node.distanceToXZmissing-minor: only the Warden path finder uses horizontal distance as its cost; Horizon costs use 3D distance everywhere (Finder::find)
38pathfinder/Node.distanceToSqrskip:other-no vanilla caller in pathfinding or navigation; Horizon has no squared node distance
39pathfinder/Node.distanceManhattanportcrates/horizon-client/src/mobs/path.rs::Node::manhattan-
40pathfinder/Node.asVec3skip:debug-only the pathfinding debug renderer calls it
41pathfinder/Node.equalsportcrates/horizon-client/src/mobs/path.rs::Path::same_ascompares the node lists; Horizon nodes are PathNode values that also compare kind, vanilla compares position only
42Path.getEndNodeportcrates/horizon-client/src/mobs/path.rs::Path::end-
43Path.truncateNodesportcrates/horizon-client/src/mobs/nav.rs::trim_pathGroundPathNavigation.trimPath with avoidSun: the path stops before the first node the sky sees
44Path.getPreviousNodeinlinecrates/horizon-client/src/mobs/villager_brain.rs::B::try_startpath.nodes[path.next - 1] is read directly for the door check (InteractWithDoor)
45Path.equalsskip:java-Java equals; Path derives PartialEq and navigation compares paths with same_as
46Path.copyskip:java-Path derives Clone
47PathFinder.reconstructPathinlinecrates/horizon-client/src/mobs/path.rs::Finder::findthe came_from walk is the build closure inside find
48Target.updateBestportcrates/horizon-client/src/mobs/path.rs::Finder::best_hkeeps the best heuristic per target
49WalkNodeEvaluator.doneinlinecrates/horizon-client/src/mobs/sniffer.rs::ai_stepgap: minor: the per-search caches need no clearing (Horizon caches live in one search); the Sniffer water malus is set from the wet state each tick, while vanilla also sets it to -1 right after each search in onPathfindingDone
50WalkNodeEvaluator.doesBlockHavePartialCollisionportcrates/horizon-client/src/mobs/path.rs::Finder::partial_collision-
51WalkNodeEvaluator.getCachedPathTypeportcrates/horizon-client/src/mobs/path.rs::Finder::path_type-
52WalkNodeEvaluator.getPathTypeWithinMobBBportcrates/horizon-client/src/mobs/path.rs::Finder::within_bb-
53MapItemSavedData.typeskip:data-saved-data type and codec; Horizon saves map files in save_maps
54MapItemSavedData.<init>portcrates/horizon-client/src/game/maps.rs::MapData::freshgap: minor: sets the grid cell, scale and dimension; locked and the tracking flags are set by the caller or the NBT load
55MapItemSavedData.createForClientportcrates/horizon-client/src/game/maps.rs::Game::remote_map_item_datathe client map is created from the packet (fresh map, locked flag from the packet)
56MapItemSavedData.mapMatcherinlinecrates/horizon-client/src/game/maps.rs::Game::tick_mapsthe carried maps are the map ids in the inventory and offhand, which is what the matcher finds
57MapItemSavedData.tickCarriedByportcrates/horizon-client/src/game/maps.rs::Game::tick_mapsgap: player: no framed-map marker when the map hangs in an item frame, and no removal of a player who wears map-invisibility gear
58MapItemSavedData.hasMapInvisibilityItemEquippedportcrates/horizon-client/src/game/maps.rs::Holder::newticked in #3517; `MapItemSavedData.hasMapInvisibilityItemEquipped` is cited at crates/horizon-client/src/game/maps.rs:161
59MapItemSavedData.removeDecorationinlinecrates/horizon-client/src/game/maps.rs::Game::tick_mapsdecorations are rebuilt each tick (holder markers kept, the rest replaced) instead of removed by key
60MapItemSavedData.addDecorationinlinecrates/horizon-client/src/game/maps.rs::Game::tick_mapsgap: player: only the item target decorations go through here; banner and frame markers never reach it
61MapItemSavedData.calculateDecorationLocationAndTypeinlinecrates/horizon-client/src/game/maps.rs::Game::tick_mapsplayer branch and item branch both done inline, with clamping
62MapItemSavedData.playerDecorationTypeAndRotationinlinecrates/horizon-client/src/game/maps.rs::Game::tick_mapsplayer marker sprite and rotation chosen inline (decoration_rotation for the rotation)
63MapItemSavedData.isInsideMapinlinecrates/horizon-client/src/game/maps.rs::Game::tick_mapsthe plus or minus 63 range test is inline
64MapItemSavedData.decorationTypeForPlayerOutsideMapinlinecrates/horizon-client/src/game/maps.rs::Game::tick_mapsoff-map and off-limits sprite choice inline
65MapItemSavedData.setColorsDirtyinlinecrates/horizon-client/src/game/maps.rs::MapData::update_colorthe holders dirty rectangle is updated in update_color
66MapItemSavedData.getHoldingPlayerportcrates/horizon-client/src/game/maps.rs::MapData::holder-
67MapItemSavedData.toggleBannerportcrates/horizon-client/src/game/maps.rs::MapData::toggle_bannerticked in #3517; `MapItemSavedData.toggleBanner` is cited at crates/horizon-client/src/game/maps.rs:403
68MapItemSavedData.checkBannersportcrates/horizon-client/src/game/maps.rs::MapData::check_bannersticked in #3517; `MapItemSavedData.checkBanners` is cited at crates/horizon-client/src/game/maps.rs:443
69MapItemSavedData.removedFromFrameportcrates/horizon-client/src/game/maps.rs::MapData::removed_from_frameticked in #3517; `MapItemSavedData.removedFromFrame` is cited at crates/horizon-client/src/game/maps.rs:387
70MapItemSavedData.setColorportcrates/horizon-client/src/game/maps.rs::MapData::update_color-
71MapItemSavedData.addClientSideDecorationsportcrates/horizon-client/src/game/maps.rs::Game::remote_map_item_datadecorations are replaced from the packet list
72MapItemSavedData.HoldingPlayer.createPatchportcrates/horizon-client/src/game/maps.rs::MapData::update_packetthe dirty rectangle is copied into the patch
73MapItemSavedData.HoldingPlayer.markColorsDirtyinlinecrates/horizon-client/src/game/maps.rs::MapData::update_colorthe holder dirty rectangle is widened in update_color
74MapItemSavedData.MapPatch.applyToMapportcrates/horizon-client/src/game/maps.rs::Game::remote_map_item_datathe patch loop writes each colour through update_color
75LootContext.createVisitedEntryinlinecrates/horizon-world/src/loot.rs::Context::table_rawgap: minor: only the loot-table cycle guard (visited list); predicates and modifiers are not tracked
76LootContext.EntityTarget.getByNameportcrates/horizon-world/src/loot.rs::Context::target-
77LootPool.addRandomItemsinlinecrates/horizon-world/src/loot.rs::Context::table_rawpool condition, bonus rolls, the rolls loop and the pool modifier are in table_raw
78LootPool.validateskip:data-validation of references in datagen tables
79LootPool.Builder.addAllskip:java-builder
80LootPool.Builder.buildskip:java-builder
81LootTable.validateskip:data-validation of references in datagen tables
82LootTable.getAvailableSlotsinlinecrates/horizon-world/src/loot.rs::LootData::fill_withgap: minor: every slot index is shuffled, not only the empty ones; the callers fill empty containers
83LootTable.Builder.buildskip:java-builder
84LootItem.lootTableItemskip:java-builder factory for a loot entry
85LootPoolEntryContainer.commonFieldsskip:java-codec field group
86LootPoolEntryContainer.validateskip:data-validation of references in datagen tables
87LootPoolEntryContainer.adjustOutputinlinecrates/horizon-world/src/loot.rs::Context::createthe entry modifier is applied to each created stack
88LootPoolEntryContainer.canRuninlinecrates/horizon-world/src/loot.rs::Context::expandthe entry condition check is the first step of expand
89LootPoolEntryContainer.Builder.otherwiseskip:java-builder
90LootPoolEntryContainer.Builder.appendskip:java-builder, no vanilla caller
91LootPoolEntryContainer.Builder.thenskip:java-builder, no vanilla caller
92entries/TagEntry.addExpandedEntriesportcrates/horizon-world/src/loot.rs::Context::expandone choice per tag member when expand is set
93entries/TagEntry.tagContentsskip:java-builder
94entries/TagEntry.expandTagskip:java-builder
95EnchantRandomlyFunction.runinlinecrates/horizon-items/src/items.rs::LootContext::modifiersgap: minor: no ADDITIONAL_TRADE_COST component when includeAdditionalCostComponent is set
96EnchantRandomlyFunction.enchantIteminlinecrates/horizon-items/src/items.rs::LootContext::modifiersgap: minor: book conversion, level roll and enchant are inline; no ADDITIONAL_TRADE_COST component
97EnchantRandomlyFunction.Builder.withEnchantmentskip:java-builder
98EnchantRandomlyFunction.Builder.buildskip:java-builder
99EnchantWithLevelsFunction.runinlinecrates/horizon-items/src/items.rs::LootContext::modifiersgap: minor: no ADDITIONAL_TRADE_COST component when the parameter is present
100EnchantWithLevelsFunction.Builder.withOptionsskip:java-builder
101EnchantWithLevelsFunction.Builder.buildskip:java-builder
102ExplorationMapFunction.claimStructureAtmissing-minor: no structure reference is added for the explored structure when the map is filled; Horizon keeps chunk references only (vanillagen.rs)
103ExplorationMapFunction.Builder.buildskip:java-builder
104ListOperation.codecskip:data-codec
105ListOperation.Append.applyinlinecrates/horizon-client/src/game/commands/items.rs::list_operationgap: minor: an append over 256 entries is truncated to 256, vanilla logs an error and keeps the original list
106CommandStorage.getportcrates/horizon-client/src/command_storage.rs::CommandStorage::get-
107CommandStorage.getContainerinlinecrates/horizon-client/src/command_storage.rs::CommandStorage::getnamespace lookup; Horizon keeps every namespace in one map, so no container load
108CommandStorage.getOrCreateContainerinlinecrates/horizon-client/src/command_storage.rs::CommandStorage::setthe namespace entry is created on write
109CommandStorage.Container.getportcrates/horizon-client/src/command_storage.rs::CommandStorage::get-
110CommandStorage.Container.putportcrates/horizon-client/src/command_storage.rs::CommandStorage::setempty contents remove the entry
111CommandStorage.Container.getKeysportcrates/horizon-client/src/command_storage.rs::CommandStorage::keys-
112LevelStorageSource.LevelStorageAccess.releaseTemporarilyAndRunskip:other-used only by the external datafixer tool (FileFixerUpper); Horizon does not run it
113LevelStorageSource.LevelStorageAccess.safeCloseskip:other-closes the session lock and logs a failure; Horizon releases its lock when the session drops
114LevelStorageSource.LevelStorageAccess.getLevelPathskip:other-path helper for level resources; Horizon builds these paths where they are used (save.rs::saved_data_path)
115LevelStorageSource.LevelStorageAccess.collectIssuesportcrates/horizon-client/src/save.rs::level_dat_issuethe issue line of each file on RecoverWorldDataScreen (title.rs)
116LevelStorageSource.LevelStorageAccess.fixAndGetSummaryFromTagportcrates/horizon-client/src/title.rs::list_worldsgap: minor: the world list reads name and last played directly, without a data fix first
117LevelStorageSource.LevelStorageAccess.getUnfixedDataTagWithFallbackportcrates/horizon-client/src/save.rs::fall_back_to_level_dat_oldthe dedicated server (Main) takes level.dat_old and restores it; the client asks on RecoverWorldDataScreen instead (WorldOpenFlows)
118LevelStorageSource.LevelStorageAccess.getUnfixedDataTaginlinecrates/horizon-client/src/save.rs::Level::readthe Data compound of level.dat is read inside Level::read
119LevelStorageSource.LevelStorageAccess.saveDataTaginlinecrates/horizon-client/src/save.rs::Level::writelevel.dat is written inside Level::write
120LevelStorageSource.LevelStorageAccess.saveLevelDataportcrates/horizon-client/src/save.rs::write_datthe temp file, the level.dat_old swap and the write are in write_dat
121LevelStorageSource.LevelStorageAccess.getIconFileportcrates/horizon-client/src/title.rs::Title::icongap: minor: no session-lock check; Horizon reads icon.png whenever it is there
122LevelStorageSource.LevelStorageAccess.renameLevelportcrates/horizon-client/src/title/world_management.rs::rename-
123LevelStorageSource.LevelStorageAccess.renameAndDropPlayerskip:other-no caller in the decompiled sources
124LevelStorageSource.LevelStorageAccess.modifyLevelDataWithoutDatafixinlinecrates/horizon-client/src/title/world_management.rs::renameread, change the Data compound and write back; rename is the only edit Horizon makes
125LevelStorageSource.LevelStorageAccess.makeWorldBackupportcrates/horizon-client/src/title/world_management.rs::backup-
126LevelStorageSource.LevelStorageAccess.hasWorldDatainlinecrates/horizon-client/src/title.rs::list_worldsgap: minor: a folder counts as a world only when its level.dat reads; level.dat_old is not checked
127LevelStorageSource.LevelStorageAccess.restoreLevelDataFromOldportcrates/horizon-client/src/save.rs::restore_level_data_from_oldkeeps the broken file as level.dat_corrupted_<time>; gap: minor: a failed move puts level.dat back and reports the failure (vanilla reports success with noRollback)
128PlayerDataStorage.backupmissing-minor: a player file that fails to load is not copied to a _corrupted_ backup first; Horizon leaves it in place
129SavedDataStorage.getDataFileportcrates/horizon-client/src/save.rs::saved_data_pathgap: minor: no check that the path stays inside the data folder; the names come from fixed callers
130SavedDataStorage.computeIfAbsentinlinecrates/horizon-client/src/save.rs::compound_or_emptythe default is an empty compound when the file is absent
131SavedDataStorage.getportcrates/horizon-client/src/save.rs::read_saved_datagap: minor: reads the file on each call; vanilla caches the read per type
132SavedDataStorage.isGzipinlinecrates/horizon-world/src/datafix/files.rs::read_saved_datthe gzip magic test is inline
133SavedDataStorage.collectDirtyTagsToSaveskip:other-Horizon writes each saved-data file when its owner saves; there is no dirty set
134SavedDataStorage.encodeUncheckedinlinecrates/horizon-client/src/save.rs::write_saved_dataDataVersion is added in write_saved_data; callers encode the data
135SavedDataStorage.tryWriteportcrates/horizon-client/src/save.rs::write_saved_data-
136SavedDataStorage.closeinlinecrates/horizon-client/src/save.rs::Level::writethe final save of the saved data happens in Level::write
137TagValueInput.DecodeFromListFailedProblem.descriptionskip:debug-error text for logs only
138TagValueInput.UnexpectedListElementTypeProblem.descriptionskip:debug-error text for logs only
139PortalShape.findPortalShapeportcrates/horizon-world/src/level/portal.rs::Sim::find_empty_portal_shapepreferred axis first, then the other; here the predicate is an empty frame with no portal block
140PortalShape.calculateBottomLeftinlinecrates/horizon-world/src/level/portal.rs::Sim::find_portal_shapethe fall to the bottom row and the left edge search are inline
141PortalShape.calculateWidthinlinecrates/horizon-world/src/level/portal.rs::Sim::find_portal_shapewidth check between 2 and 21 is inline
142PortalShape.getDistanceUntilEdgeAboveFrameportcrates/horizon-world/src/level/portal.rs::Sim::portal_distance_until_edge_above_frame-
143PortalShape.calculateHeightinlinecrates/horizon-world/src/level/portal.rs::Sim::find_portal_shapeheight rows loop and the 3 to 21 check are inline
144PortalShape.hasTopFrameinlinecrates/horizon-world/src/level/portal.rs::Sim::find_portal_shapethe top frame row check is inline
145PortalShape.getDistanceUntilTopinlinecrates/horizon-world/src/level/portal.rs::Sim::find_portal_shaperows loop counts portal blocks as it goes, inline
146TeleportTransition.playPortalSoundinlinecrates/horizon-client/src/lan/hub.rs::Hub::landlevel event 1032 is sent on arrival
147TeleportTransition.withRotationinlinecrates/horizon-client/src/lan/hub.rs::Hub::change_levelthe turned yaw is applied with the level change
148TeleportTransition.withPositioninlinecrates/horizon-client/src/lan/hub.rs::Hub::landthe exit position is applied on arrival
149TeleportTransition.transitionAsPassengerportcrates/horizon-client/src/game/server_travel.rs::Game::carry_riders_through_portalsriders travel with the vehicle and ride it again on arrival
150DefaultRedstoneWireEvaluator.calculateTargetStrengthinlinecrates/horizon-world/src/level/redstone.rs::Sim::wire_update_powerthe 15 shortcut and the max with the incoming signal are inline