100 Commits
Author SHA1 Message Date
arismoko 14e5230c9e Wrap relative teleport angle deltas before resolving them 2026-11-03 16:43:32 +00:00
arismoko de02700c81 Initialize command registries and permissions in the pitch fixture 2026-11-03 16:16:07 +00:00
arismoko 5d17cd57d3 Keep command angle wrapping out of the shared teleport writer 2026-11-03 16:12:02 +00:00
arismoko 387d2d5855 Test non-finite teleport rotations 2026-11-03 10:57:15 +00:00
arismoko 233e61d62f Guard non-finite teleport rotations 2026-11-03 10:38:20 +00:00
arismoko 00681eb16b Merge maintainer upstream refresh without rewriting history 2026-11-03 05:01:18 +00:00
arismoko 868bc02e8e Merge remote-tracking branch 'upstream/main' into v2/ses_01M6FN1T2FS6T4M8P7GFXJ6WTR-tp-pitch-clamp 2026-11-03 04:51:06 +00:00
arismoko d3aae59b1f Merge upstream main after its verification fixes 2026-11-03 04:50:51 +00:00
arismoko fec9e03f33 Merge remote-tracking branch 'upstream/main' into v2/ses_01M6FN1T2FS6T4M8P7GFXJ6WTR-launcher-allocator 2026-11-03 04:50:05 +00:00
arismoko 5e6d499849 Merge upstream main into build-time native API generation 2026-11-03 04:48:17 +00:00
arismoko 18ae21bcca Wrap teleport rotations like vanilla 2026-11-03 04:19:06 +00:00
arismoko 0ade9ae0e9 Respect catalog targets when generating Host helpers
Resolve the callee named by the catalog rather than deriving it from the public helper name. Keep native-method and module validation, and cover a helper that shares a hook name but targets its distinct ref method.
2026-11-03 04:05:03 +00:00
arismoko 4ac46cd511 Wrap teleport pitch before clamping 2026-11-03 04:02:19 +00:00
arismoko 246f2a22e5 Fix native game allocator initialization 2026-11-03 03:36:34 +00:00
arismoko 72396f7ecb Merge upstream main into build-time native API generation 2026-11-03 03:29:20 +00:00
arismoko 616e855940 Share mod-owned generation and move dispatch tests to its crate
Delegate launcher trait, event and helper generation to horizon-mod-api-gen. Keep the old-source compatibility path, move dispatch fixtures out of xtask into an unpublished workspace member, and select launcher checks when shared generator code changes.
2026-11-03 02:31:27 +00:00
arismoko 8f6fe50c47 Derive mod API receivers from public Ref structs
Drop the shared HANDLES registration list. Reuse the source export walk, infer snake_case receiver keys, and keep unknown-receiver errors and duplicate-key diagnostics.
2026-11-03 02:19:34 +00:00
arismoko 9116ac3911 Generate the native mod API into Cargo OUT_DIR
Build every profile from the catalog, fragments and handwritten signatures. Keep xtask for filling handwritten placeholders, and stamping for catalog data. Stage launcher-owned declarations as build input, retaining shared injection validation for older source trees with committed generated traits.
2026-11-03 02:14:54 +00:00
arismoko 275fffcb37 Native mods: test that saved entities of every kind load their attachments back onto themselves 2026-11-03 00:55:19 +00:00
arismoko 5494d7fc5e Merge upstream main into w3-explosion
# Conflicts:
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 19:34:50 +00:00
arismoko d9b0388195 Merge upstream main into w1-bow
# Conflicts:
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 19:34:33 +00:00
arismoko 26db6dcaf9 Merge upstream main into w3-explosion
# Conflicts:
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 18:44:59 +00:00
arismoko 8c579c0ef1 Merge upstream main into w1-bow
# Conflicts:
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 18:44:42 +00:00
arismoko d4ff1afd96 Merge remote-tracking branch 'upstream/main' into v2/ses_01M6EA9PQK4BXKXA1BE1D8FR68-w3-block-drops-note 2026-11-02 17:40:33 +00:00
arismoko 0a5b17f53b Merge remote-tracking branch 'upstream/main' into v2/ses_01M6EA9PJ1AQ4Q6N2S9TNXP8B7-w3-level-misc
# Conflicts:
#	crates/horizon-client/src/mod_api.rs
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 17:40:17 +00:00
arismoko d0f4655dc6 Merge remote-tracking branch 'upstream/main' into entity-holders
# Conflicts:
#	crates/horizon-client/src/game/persist.rs
2026-11-02 16:51:49 +00:00
arismoko ef3d35dd97 Retry siege setup after a canceled attempt 2026-11-02 16:16:37 +00:00
arismoko b7b0de9866 Merge remote-tracking branch 'upstream/main' into entity-holders 2026-11-02 15:05:17 +00:00
arismoko 0e6e918a75 Merge remote-tracking branch 'upstream/main' into native-template 2026-11-02 15:05:13 +00:00
arismoko f495aeba1b Merge upstream main into w1-bow 2026-11-02 15:04:21 +00:00
arismoko 2f1b035fce Merge upstream main into w3-explosion
# Conflicts:
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 15:03:41 +00:00
arismoko 063b262b0c Merge upstream main into w3-level-misc
# Conflicts:
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 15:03:33 +00:00
arismoko 608b08c2c0 Merge remote-tracking branch 'upstream/main' into v2/ses_01M6EA9PQK4BXKXA1BE1D8FR68-w3-block-drops-note 2026-11-02 15:03:30 +00:00
arismoko a09da57204 Merge upstream main into w1-bow
# Conflicts:
#	crates/horizon-client/src/mod_api/generated.rs
2026-11-02 15:01:27 +00:00
arismoko 96e0000c86 Remove Java identity wording from spawn hook 2026-11-02 14:51:17 +00:00
arismoko 656929153f Merge remote-tracking branch 'upstream/main' into entity-holders 2026-11-02 14:47:38 +00:00
arismoko 5833c990f8 Merge remote-tracking branch 'upstream/main' into v2/ses_01M6EA9PQK4BXKXA1BE1D8FR68-w3-block-drops-note 2026-11-02 14:44:08 +00:00
arismoko b75b4d06a1 Document explosion player context 2026-11-02 14:44:04 +00:00
arismoko a61ff00f34 Document note tuning hook contract 2026-11-02 14:43:49 +00:00
arismoko 42de84a1d7 Expose note block tuning hook 2026-11-02 14:34:20 +00:00
arismoko 9de3e585b0 Dispatch explosion knockback to native mods 2026-11-02 14:31:02 +00:00
arismoko acb777465d Merge upstream main into w1-bow 2026-11-02 14:30:46 +00:00
arismoko d4bb9a2598 Regenerate level hooks and fix catalog tests 2026-11-02 14:28:59 +00:00
arismoko 9e2dab8547 Merge upstream main into w3-explosion 2026-11-02 14:26:58 +00:00
arismoko 010db43f76 Merge remote-tracking branch 'upstream/main' into native-template 2026-11-02 14:26:56 +00:00
arismoko b9004603f8 Merge remote-tracking branch 'upstream/main' into entity-holders 2026-11-02 14:26:56 +00:00
arismoko 35c5475d14 Merge upstream main into w1-bow 2026-11-02 14:24:43 +00:00
arismoko 0f2a76003e Merge upstream main into w3-level-misc
# Conflicts:
#	crates/horizon-client/src/game/native_hooks.rs
2026-11-02 14:24:41 +00:00
arismoko 9d24a0ea53 Merge upstream main into w3-explosion 2026-11-02 14:24:10 +00:00
arismoko e88344fcef Regenerate the mod API 2026-11-02 14:21:51 +00:00
arismoko a848ae0be2 cargo horizon-mod new: a native trait mod template
`--template native [--horizon <commit>]` writes a trait mod's bundle: its
horizon-mixin.toml, pinned to that Horizon commit or left unpinned, and an
[api] crate whose hooks() greets each player who joins. The files are
what docs/api/mod-files.md lets a bundle carry, so the launcher builds the
folder as it is and packs it into an .hnmod; a test packs it that way and
runs the registry's check on it.
2026-11-02 14:13:03 +00:00
arismoko 97e4713f37 Bow: no projectile lookup work without native mods 2026-11-02 14:11:04 +00:00
arismoko 5a1491137e Merge upstream main into w1-bow 2026-11-02 14:11:04 +00:00
arismoko 84e2ee50ca Potential spawns hook: borrow the list and keep the fast path without mods
Fix the local player's UUID, merge the SpawnEntry import, and move the
hook docs into the fragments' summaries.
2026-11-02 14:10:38 +00:00
arismoko e3fa03a0e0 Native mods: every entity holds attachments
Holder::Entity refused experience orbs, projectiles, tridents, falling
blocks, fireworks, primed TNT, End crystals, the dragon and ominous item
spawners: they were saved through the memory found again by type and
position, with a new UUID once they moved, so attachments could not be
found under it. Every entity now keeps the UUID it was loaded with (or
was given) by entity id, reads its attachments back on load, and the
holder check walks entity_lists!, so a new kind holds attachments too.
The entity memory's pruning walks the same lists: it no longer drops the
UUIDs of rockets, falling blocks and tridents at each autosave.
2026-11-02 14:08:27 +00:00
arismoko d926c8e3f3 Apply explosion knockback to flying players and dragons 2026-11-02 13:54:09 +00:00
arismoko 4f3b375d25 Apply explosion knockback hook after entity damage 2026-11-02 13:44:46 +00:00
arismoko b74cd0c600 Fix explosion knockback hook contract, dragon and creative flyers
Use the collect contract so mods see and change the calculated velocity
(replace generated code that did not compile), fire it for the ender
dragon and for creative players flying, and restore the lost comments.
2026-11-02 13:41:54 +00:00
arismoko 9245872736 Merge upstream main into the bow hooks
release_bow asks getProjectile before ArrowLooseEvent, as BowItem.releaseUsing
does, and the hook markers name their fragments.
2026-11-02 13:39:12 +00:00
arismoko 2f470c7a82 Add village siege native hook 2026-11-02 13:35:33 +00:00
arismoko 355becd82d Wire explosion knockback for other entities and wind 2026-11-02 13:33:21 +00:00
arismoko fd75a600c5 Apply potential spawn hook to validation lookup 2026-11-02 13:33:17 +00:00
arismoko 92ecb918ed Add potential natural spawns hook 2026-11-02 13:31:58 +00:00
arismoko e1084abe75 Add explosion knockback hook for players 2026-11-02 13:31:44 +00:00
arismoko e21b51bf94 Merge remote-tracking branch 'upstream/main' into panic-mods
# Conflicts:
#	crates/horizon-client/src/mod_api.rs
2026-11-02 13:04:56 +00:00
arismoko 5e7f5eb03c Target drowning hook in its compiled crate 2026-11-02 13:03:23 +00:00
arismoko c1649ac88e Merge remote-tracking branch 'upstream/main' into mixin-docs
# Conflicts:
#	docs/native-mods.md
2026-11-02 13:02:49 +00:00
arismoko a24453a6fe Merge upstream main into living hooks 2026-11-02 12:56:23 +00:00
arismoko 704f504b5a Limit far chunk snapshot promotion to Horizon clients 2026-11-02 12:51:05 +00:00
arismoko 78da6fd259 Merge remote-tracking branch 'upstream/main' into v2/ses_01M6E1Z4GQ0S5X4JCHHMZRPF31-attachment-sync
# Conflicts:
#	crates/horizon-client/src/lan/hub.rs
#	crates/horizon-client/src/mod_api/generated_host.rs
2026-11-02 12:48:22 +00:00
arismoko bcc3d47b55 Merge upstream main into item expiry hooks 2026-11-02 12:44:04 +00:00
arismoko 32b4236c75 docs: where a mixin module lives, and why the [api] crate keeps its own attachment 2026-11-02 12:38:10 +00:00
arismoko 6fc2bd3256 A panic in a native mod's hook names the mod and the hook
The generated dispatch loops over mod_api::entered, which marks the thread as
inside each mod's hook while it runs; the crash handler adds "in native mod
<id>, hook <hook>" to the panic's message, and the panic goes on unwinding as
before. The launcher's generated executable passes the bundles' ids to
mod_api::name_mods when the revision has it. Dispatch still takes
&[Box<dyn Hooks>].
2026-11-02 12:37:42 +00:00
arismoko 364297a363 Merge remote-tracking branch 'upstream/main' into mixin-docs
# Conflicts:
#	docs/native-mods.md
2026-11-02 12:36:42 +00:00
arismoko c029313d6c Crash reports list the build's native mods
A game the launcher built with native mods reads their ids and versions from
the native-mods.json beside it and adds them to the crash report's details as
Native Mods. The line stays out of crash telemetry, which keeps only its listed
details.
2026-11-02 12:32:16 +00:00
arismoko 4d97da3bca Merge remote-tracking branch 'upstream/main' into v2/ses_01M6E1Z4GQ0S5X4JCHHMZRPF31-attachment-sync 2026-11-02 12:17:49 +00:00
arismoko 4717146e92 Merge upstream main into living hooks 2026-11-02 12:06:42 +00:00
arismoko 3794f5e635 Merge upstream main into item expiry hooks 2026-11-02 12:06:25 +00:00
arismoko 05ac3060c0 Fix attachment sync lifecycle and far chunk snapshots 2026-11-02 12:04:49 +00:00
arismoko b68e32f307 Merge remote-tracking branch 'upstream/main' into v2/ses_01M6E1Z4GQ0S5X4JCHHMZRPF31-attachment-sync
# Conflicts:
#	crates/horizon-client/src/game/remote.rs
#	crates/horizon-client/src/lan/hub.rs
#	crates/horizon-world/src/attachments.rs
#	docs/native-mods.md
2026-11-02 11:59:57 +00:00
arismoko 2970a73d5c Suppress living callbacks during movement prediction 2026-11-02 11:48:46 +00:00
arismoko 16c57b72c5 Cover living free functions in hook catalog test 2026-11-02 11:35:13 +00:00
arismoko d9fd6ae395 Fix attachment sync review findings 2026-11-02 11:30:10 +00:00
arismoko 0c9e0a3563 Merge branch 'main' of https://github.com/horizon-rust/horizon into v2/ses_01M6DYMGWF02H5RBZ0RFVQ78M9-test-host
# Conflicts:
#	crates/horizon-client/src/mod_api/generated_host.rs
2026-11-02 11:21:49 +00:00
arismoko 0fc26de99b Keep vanilla drowning event shape 2026-11-02 11:19:24 +00:00
arismoko 479a03daef Fix attachment sync review findings 2026-11-02 11:18:18 +00:00
arismoko 1ed50d2e5b Set tick phase explicitly in resting item test 2026-11-02 11:16:50 +00:00
arismoko 7c7f781095 Fix test guidance sentence 2026-11-02 11:15:05 +00:00
arismoko bd7e5670fe Keep drowning bubble count informational 2026-11-02 11:11:19 +00:00
arismoko 5b433baaf9 Restore generator and normalize living hook entity IDs 2026-11-02 11:05:20 +00:00
arismoko 30078d515b Fix attachment sync review findings 2026-11-02 11:04:34 +00:00
arismoko 3dd5956f10 Fix signed age in item merge test fixture 2026-11-02 11:04:16 +00:00
arismoko 08a0f3e3b1 Clarify testing unconstructible mod API values 2026-11-02 11:00:22 +00:00
arismoko 6be9ab6017 Use a listen contract for item expiry extensions 2026-11-02 11:00:22 +00:00
arismoko 45ffb1d479 Regenerate the mod API 2026-11-02 10:51:01 +00:00
arismoko 6a3160acb1 Regenerate the mod API 2026-11-02 10:49:42 +00:00
arismoko 1ec8980e6a Document testing a trait mod through dispatch functions 2026-11-02 10:41:17 +00:00
arismoko 9d7ea67f81 Mod API: a mod can implement the key hook
mod_api re-exported winit::event::KeyEvent, which shadowed the generated
KeyEvent<'_> that Hooks::key takes, so a mod crate could not name key's event.
mod_api now re-exports winit itself, as it does serde_json, and a test builds a
mod-side Hooks with key and input_key.
2026-11-02 10:38:08 +00:00
arismoko e0835ea689 Fix drowning particle delivery and remove unused heal hook 2026-11-02 10:26:00 +00:00
arismoko cee65d7ce2 Native hook stamping keeps the generated mod API current
The catalog takes a batch's new hooks and helpers in file name order, the order
xtask mod-api reads pending fragments in; API numbers still follow merge order.
Stamping used to append them in merge order, which reordered generated.rs.
2026-11-02 10:19:23 +00:00