Commit Graph

92 Commits

Author SHA1 Message Date
Ludovic Marie cac89a9995 Creative inventory: every tab and the search as vanilla builds them; scrollbar drag
The creative-tabs.json export failed to build the functional blocks tab (no
data-pack registries: banner patterns), and its fallback read decompiled
sources from a path that no longer exists, so the tab was empty and anvils,
crafting and smithing tables were missing from the tabs and the search. The
search also matched only an approximate display name.

VanillaCreativeTabsExporter now builds every tab with vanilla's own
CreativeModeTabs.tryRebuildTabContents over the vanilla data pack's
registries and writes creative-inventory.json: stacks with components, and
the search tab's creative tooltip lines and tags. The client searches them
as SessionSearchTrees does (FullTextSearchTree, IdSearchTree after '#').
Changing tab empties the search box, as in selectTab.

The scrollbar only jumped to the pressed point; holding it now scrolls as
the mouse moves, anywhere, until release (mouseClicked/mouseDragged), and
the wheel and the scroller follow ItemPickerMenu.

tools/test_creative_parity.py compares every tab and 6,793 searches with
the vanilla client's own search trees. horizon-ctl `type` also fills the
creative search box.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:24:55 +02:00
Ludovic Marie 7d4304a840 Merge branch 'parity/leftovers' into parity-base 2026-10-13 07:07:54 +02:00
Ludovic Marie b0e5fe5591 docs: pack screen session count 2026-10-13 06:28:59 +02:00
Ludovic Marie 8a13322143 README: the resource pack screen and the chat input match vanilla
Assets and Menus score 1; Java parity is 93%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 06:28:53 +02:00
Ludovic Marie e70c9fdd69 Document the recipe book search, ghost recipe and hotbar harnesses; more old options.txt bodies
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 06:22:53 +02:00
Ludovic Marie 5e48972bff README and docs: the recipe book's drawing, the loom's banner preview and End gateway beams match vanilla
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:26:40 +02:00
Ludovic Marie 6fab5eb279 Merge branch 'main' into parity-base
# Conflicts:
#	README.md
#	crates/horizon-client/src/game.rs
2026-10-12 19:02:09 +02:00
Ludovic Marie 14bff2518f Merge branch 'parity/raids' into parity-base
# Conflicts:
#	README.md
#	docs/rust-parity.md
2026-10-12 17:50:53 +02:00
Ludovic Marie c195cd3239 Merge branch 'parity/tablist-border' into parity-base
# Conflicts:
#	README.md
#	crates/horizon-client/src/lib.rs
#	docs/rust-parity.md
2026-10-12 17:50:31 +02:00
Ludovic Marie 69b191b1f4 Merge branch 'parity/loom-crafter' into parity-base
# Conflicts:
#	README.md
#	crates/horizon-client/src/game/dispense_fixture.rs
#	docs/rust-parity.md
#	mods/horizon/src/test/java/dev/horizonlab/parity/VanillaDispenserOracle.java
2026-10-12 17:48:44 +02:00
Ludovic Marie b6fa612bee Merge branches 'parity/tooling', 'parity/score-subtitles' and 'parity/block-followups' into parity-base 2026-10-12 17:47:58 +02:00
Ludovic Marie e5dc127ab2 Document scoreboards, teams and subtitles and their harnesses
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:39:55 +02:00
Ludovic Marie 05228e0fe2 Document the loom, crafter and recipe book harnesses
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:39:45 +02:00
Ludovic Marie 8f80f8decf Document block entity removal, immediate drops and copper golems
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:33:49 +02:00
Ludovic Marie 515d15d36f Merge the integration branch into parity/tablist-border
Keep the integration branch's StringSplitter port and HUD overlays: the tab
list now emits hud_layout::GuiDraw calls and wraps with its split_lines, and
the vignette's border warning comes from WorldBorder::warning_strength
through hud_overlays::border_warning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:25:13 +02:00
Ludovic Marie 70992eb815 Document the patrol and raid harness and its scope
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:43:32 +02:00
Ludovic Marie 95c7e7ad2a Document the player list and world border parity harnesses
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:08:40 +02:00
Ludovic Marie 83bcfb15af Docs: professional README and no personal details
Restructure the README around what Horizon is, its status, how to build it
from your own copy of the game, and its parity table. The Java performance
pack material and the research lab notes move to docs/java-packs.md and
docs/research-lab.md. The target platform is stated generically instead of
naming a machine, the stale list of missing mobs is dropped in favour of the
audited table, and the legal notice follows Mojang's usage wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 02:14:10 +02:00
Ludovic Marie be1352b4dc Target ludodesktop only and drop the M2 Mac from scope
The Rust rewrite now targets one Linux machine (Ubuntu 26.04, i7-13700KF,
RTX 4080, GNOME on Wayland). macOS and Windows are out of scope; the Java
packs, including the Mac starter, remain available but are no longer developed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 11:18:30 +02:00
Ludovic Marie 08b8e71838 Drop Windows from scope and add a native client packager
Horizon now targets Linux and macOS only: remove the Windows CI runners and
wgpu's DX12 backend, and update the scope docs. The Ubuntu RTX 4080 desktop
becomes the first physical Linux target. tools/package_native_client.py bundles
a release build with its prepared resources and a launcher for playing on
another machine of the same platform.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 10:48:58 +02:00
Ludovic Marie a13799e042 Add title screen with world selection and creation
The game opens on a vanilla-style title screen (logo, Singleplayer,
Quit) over the spinning title panorama. Select World lists saves by
last play with game mode; Create New World takes a name, a seed
(numbers or text hashed like vanilla) and the game mode, and finds a
free folder name. Save and Quit returns to the title. README and the
parity status now describe the playable Rust game.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-08 01:44:42 +02:00
Ludovic Marie 59676c6e84 Connect native-validated player motion to fixed-rate walking controls 2026-10-07 15:45:47 +02:00
Ludovic Marie c109f91cc5 Connect resident client chunks to native-validated world collisions 2026-10-07 14:42:44 +02:00
Ludovic Marie f249a55f35 Synchronize registered effect particles, invisibility and glowing state 2026-10-07 14:19:54 +02:00
Ludovic Marie 4a2fcedbd3 Bind registered attribute refresh to native entity update consequences 2026-10-07 13:51:15 +02:00
Ludovic Marie 794b447b0c Bind live registered attributes to health and hunger calculations 2026-10-07 13:27:16 +02:00
Ludovic Marie 2339ed4ccb Verify live registered attributes against both vanilla JARs 2026-10-07 13:22:28 +02:00
Ludovic Marie b70806176e Preserve attribute query fallback, caches and captured base reset targets 2026-10-07 12:53:20 +02:00
Ludovic Marie 55846d2fc0 Bind entity effect notifications to concrete attribute maps and queues 2026-10-07 12:38:24 +02:00
Ludovic Marie 76b3bdc237 Bind effect modifiers to lazy attribute instances and native dirty queues 2026-10-07 12:23:28 +02:00
Ludovic Marie 6a33b0c148 Match effect attribute templates and permanent modifier callback ordering 2026-10-07 12:07:19 +02:00
Ludovic Marie 11dda868af Validate live object-map entries and callback traversal against vanilla 2026-10-07 11:52:45 +02:00
Ludovic Marie 636f1648f0 Bind attribute refresh to health limits and waypoint update ordering 2026-10-07 11:39:35 +02:00
Ludovic Marie a772a69498 Match effect eligibility and attribute/passenger notification ordering 2026-10-07 11:31:39 +02:00
Ludovic Marie f9d8277b73 Preserve fastutil attribute-set storage and live iterator behavior 2026-10-07 11:19:02 +02:00
Ludovic Marie 05cdc7573a Integrate entity effect ticking, expiration and client particles 2026-10-07 11:09:59 +02:00
Ludovic Marie 32c53db88a Bind consumable effects to shared entity status storage 2026-10-07 11:01:50 +02:00
Ludovic Marie 09f4c72dcb Match active status effect storage and lifecycle notifications 2026-10-07 10:56:23 +02:00
Ludovic Marie aad69bc4f3 Match status effect countdown, hidden restoration and client blending 2026-10-07 10:32:07 +02:00
Ludovic Marie 85923d20af Compose consumable start and completion with food and particle behavior 2026-10-07 09:58:37 +02:00
Ludovic Marie 0c85e0f5c2 Compose item completion with validated remainders and cooldowns 2026-10-07 09:25:56 +02:00
Ludovic Marie c45d0c7965 Match item-use start equipment synchronization and flag ordering 2026-10-07 06:42:53 +02:00
Ludovic Marie 9d65e24286 Compose server-player hurt gates with live health and hunger storage 2026-10-07 05:36:49 +02:00
Ludovic Marie a6966ab450 Mesh resident block models with native culling and UV-aware merging 2026-10-06 22:30:16 +02:00
Ludovic Marie f5ba959cdc Match native neighboring block-face visibility and suppression 2026-10-06 22:10:44 +02:00
Ludovic Marie 1a88d6c300 Render registry-bound variants and multipart block models 2026-10-06 21:59:03 +02:00
Ludovic Marie 90a76bc0aa Match vanilla blockstate transforms and UV-locked baking 2026-10-06 21:49:27 +02:00
Ludovic Marie f286aa24e1 Match weighted model choice and multipart random consumption 2026-10-06 21:31:55 +02:00
Ludovic Marie 1d0b537a0a Bind vanilla blockstate selectors and multipart model parts 2026-10-06 21:26:47 +02:00
Ludovic Marie 54a2b552ee Decode vanilla blockstate variants and multipart conditions 2026-10-06 21:16:15 +02:00