Commit Graph

1620 Commits

Author SHA1 Message Date
Ludovic Marie 46c7daad92 Merge pull request #655 from ludovic111/fix/client-server-packets
Network client: apply block entity data, difficulty, spawn, chunk centre, tick rate and animations from the server
2026-10-17 10:30:53 +02:00
Ludovic Marie 5d027877ec Merge pull request #672 from Online5277/fix/audio-output-limiter
Avoid hard clipping when explosion sounds overlap
2026-10-17 09:32:44 +02:00
Ludovic Marie bc69b88c5d Merge pull request #587 from ludovic111/feat/server-online-mode
Dedicated server: online mode, and refused logins in the log
2026-10-17 09:14:16 +02:00
Ludovic Marie aea0dc4c93 Network client: keep #656's ChangeDifficulty handler
#656 handles ClientboundChangeDifficultyPacket and refreshes the World
Options screen too; this branch's own arm became unreachable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 08:58:03 +02:00
Cosmic b771c0b48e Limit overlapping audio without hard-clipping the mixed waveform 2026-10-17 02:51:56 -04:00
Ludovic Marie cc8249d2ce Merge remote-tracking branch 'origin/main' into fix/client-server-packets 2026-10-17 08:50:15 +02:00
Ludovic Marie 4410c3ba44 Merge pull request #656 from LookImEcho-Rick/codex/fix-multiplayer-world-options
Fix multiplayer pause menu and World Options permissions
2026-10-17 08:39:44 +02:00
Ludovic Marie d85a16daf8 Merge main into feat/server-online-mode
lan/conn.rs imports: keep this branch's AtomicU32 and main's Mutex/PoisonError.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 08:34:34 +02:00
Ludovic Marie 123987c459 Merge pull request #649 from ludovic111/perf/server-batched-sends
LAN hub: hand a tick's packets to each connection together
2026-10-17 08:24:51 +02:00
Ludovic Marie 4d4e5ebe75 Merge pull request #590 from ludovic111/feat/server-prepare-reports
horizon-prepare: keep the registry and command reports with the prepared files
2026-10-17 08:24:47 +02:00
Ludovic Marie 1e7517dc3d Merge pull request #667 from Online5277/fix/chest-breaking-effects
Draw breaking cracks on chest models
2026-10-17 08:23:51 +02:00
Ludovic Marie 48cee5f6d4 Merge pull request #665 from Online5277/fix/player-death-experience
Reset experience on respawn and drop capped XP on death
2026-10-17 08:23:47 +02:00
Ludovic Marie ef3cd64475 Merge pull request #607 from rdbtCVS/perf/shared-block-json-20261017
perf: reuse decoded gameplay and behaviour facts at startup
2026-10-17 08:16:01 +02:00
Ludovic Marie 23db75c429 Merge pull request #614 from LookImEcho-Rick/codex/fix-world-input-capture
Fix mouse capture after world loading
2026-10-17 08:01:18 +02:00
Ludovic Marie 9665a7c5b0 Merge pull request #609 from LookImEcho-Rick/fix/563-translucent-block-outline
fix(rendering): correct selection outline on translucent blocks
2026-10-17 08:01:13 +02:00
Cosmic 7ee9b0c81d Render chest breaking overlays on their animated models 2026-10-17 01:53:10 -04:00
Cosmic 67633fc789 Reset player experience on respawn and award capped death XP 2026-10-17 01:46:07 -04:00
LookImEcho-Rick aeaccb0413 Fix multiplayer pause menu and World Options permissions 2026-10-16 23:39:36 -05:00
Ludovic Marie cfcf69f0b9 Network client: apply the block entity data, difficulty, spawn, chunk centre, tick rate, animations and server data the server sends
With single player on its server thread, the window is the server's client
and dropped several packets the in-frame game never needed:

- ClientboundBlockEntityDataPacket and the block entities of chunk packets:
  the block entity of that type loads the tag (signs, spawners), as
  handleBlockEntityData and LevelChunk.replaceWithPacketData do.
- ClientboundChangeDifficultyPacket: the level data's difficulty and lock.
- ClientboundSetDefaultSpawnPositionPacket: the respawn data spawn
  compasses point at.
- ClientboundSetChunkCacheCenterPacket: ClientChunkCache's view centre;
  columns outside the storage (the server's radius + 3) are ignored or
  dropped, as ClientChunkCache.Storage does.
- ClientboundAnimatePacket: wake up, and the critical and magic critical
  hit emitters.
- ClientboundTickingStatePacket / ClientboundTickingStepPacket (new in the
  protocol crate): the level's TickRateManager. A frozen level holds its
  time and non-player entities, and the server's rate only ever slows the
  client timer down (Minecraft.getTickTargetMillis).
- ClientboundServerDataPacket: the server list entry keeps a valid icon
  (ServerList.saveSingleServer); single player has no entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 06:37:36 +02:00
Ludovic Marie 99d5ebea1a Merge pull request #626 from ludovic111/fix/server-block-break
Keep server blocks in sync with what guests dig
2026-10-17 06:11:12 +02:00
Ludovic Marie b9c6f318ac Merge pull request #644 from ludovic111/fix/furnace-on-server
Open furnaces, blast furnaces and smokers on a server
2026-10-17 06:10:51 +02:00
Ludovic Marie 6a19e40092 Merge pull request #519 from Online5277/fix/equipment-attribute-tooltips
Show equipment attributes in inventory and Creative tooltips
2026-10-17 06:05:13 +02:00
Ludovic Marie b4481e9aad Merge pull request #627 from ludovic111/fix/offhand-on-server
Swap and sync the off hand on a server
2026-10-17 06:04:38 +02:00
Ludovic Marie 16721b0ab5 Merge pull request #651 from Online5277/fix/horizon-pause-hud
Hide survival bars consistently behind the Horizon pause menu
2026-10-17 06:04:16 +02:00
Ludovic Marie 543d04ba44 Merge pull request #650 from Online5277/fix/language-search-hint
Keep the language search hint clear of the caret
2026-10-17 06:04:12 +02:00
Ludovic Marie 2aba405281 Merge pull request #646 from Online5277/fix/resource-pack-reload-errors
Fix resource pack reload failures and broken Horizon menus
2026-10-17 06:04:07 +02:00
Ludovic Marie 51703fdf3b Merge remote-tracking branch 'pr/626' into HEAD
# Conflicts:
#	crates/horizon-client/src/lan/guest.rs
2026-10-17 05:42:28 +02:00
Ludovic Marie 1a68d8ddf0 Merge main into fix/furnace-on-server
lan_actions.rs: clear the old body's potions (main), then respawn with
the tick context (this branch). hub.rs: keep main's effect and chunk
tracking reset before this branch's vanilla respawn sequence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 05:35:16 +02:00
Ludovic Marie 591e6f9161 Merge main into fix/equipment-attribute-tooltips
Picks up #572, the fix for main's broken build that this branch's last
main merge caught.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 05:30:34 +02:00
Cosmic 36ea3a4140 Hide the gameplay HUD consistently behind Horizon pause menus 2026-10-16 23:21:07 -04:00
Cosmic 8f4eda4d12 Hide the language search hint while the field has focus 2026-10-16 23:19:47 -04:00
Ludovic Marie bf851bfea1 Merge pull request #648 from ludovic111/feat/modpack-bench
Content mods: refuse more block states than chunks hold; the pack against NeoForge, measured
2026-10-17 05:01:42 +02:00
Ludovic Marie ead46669a5 Merge pull request #641 from Online5277/fix/container-mouse-hotkeys
Honor mouse-bound hotbar swaps in inventories
2026-10-17 04:58:55 +02:00
Ludovic Marie 455967bd47 Merge pull request #647 from ludovic111/feat/sprite-arrays
Block textures: share identical sprites, and draw past 2048 layers
2026-10-17 04:58:13 +02:00
Ludovic Marie 1e514f8539 Merge pull request #633 from ludovic111/feat/port-pack-report
horizon-port-pack report: coverage per mod, and ATM10 measured
2026-10-17 04:58:09 +02:00
Ludovic Marie b0e31eb14f Merge pull request #632 from ludovic111/feat/neoforge-oracle-harness
Per-mod parity harness against a dev-only NeoForge oracle
2026-10-17 04:58:05 +02:00
Ludovic Marie 303c8d4452 Merge pull request #631 from ludovic111/feat/port-pack-oracle-carry
horizon-port-pack carry: templates and numbers from the NeoForge oracle, 1.21.1 loot upgraded
2026-10-17 04:58:00 +02:00
Ludovic Marie 03ca95e8af Merge pull request #630 from ludovic111/feat/mod-content-real-mods
Content mods: load real carried-over mods (large tables, convention tags, mod recipes)
2026-10-17 04:57:55 +02:00
Cosmic 1e597f356e Merge main and preserve resource reload and Mods screen tests 2026-10-16 22:56:10 -04:00
Ludovic Marie 2822d4e1b7 Content mods: refuse more block states than chunks hold; the pack against NeoForge, measured
Loading the eight carried-over mods in the game (not only the probe) showed
two limits real packs reach. Block textures past 2048 layers are another PR;
this one handles block states and measures a pack.

- Chunk sections store a block state in 16 bits. Vanilla 26.3 has 35,723
  states; Macaw's four mods add 36,154, the eight 41,389. Past 65,536 ids
  wrapped onto other blocks (a trapdoor became a hanging sign).
  mod_content::build now refuses a set of mods past MAX_STATES and names the
  states per mod; the game then starts without content mods, as for any
  refused content.
- tools/mod_port_harness.py probes each mod on its own against vanilla, as a
  player adding it would load it.
- tools/perf_bench.py --game neoforge: Minecraft 1.21.1 on NeoForge 21.1.259
  with --mod-jars and --deps, driven by a dev-only NeoForge port of the bench
  mod (mods/horizon/src/neoforge-bench); --port-work loads a work folder's
  carried-over mods into Horizon. tools/neoforge_oracle.py installs the
  client once under .local/neoforge-oracle (the installer, then the vanilla
  libraries it inherits, sha1-checked) and builds the driver. A NeoForge
  start that crashes before the driver loads (FML reading fml.toml while
  creating it) is retried once.

Measured (docs/modpacks.md): six ported mods in Horizon against the same
mods on NeoForge, Mac mini M4 Pro, 2 games per row on a loaded machine. The
world is ready 3.1x sooner at 8 and 16 chunks, the flights run 1.7x and
3.6x the frames, and Horizon's RSS is not lower (+1.1 GB with the mods).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:55:20 +02:00
Ludovic Marie 103d44f72f Merge main into fix/container-mouse-hotkeys
game.rs: keep this branch's container hotbar-mouse check, then #637's
mouse-bound sort key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:50:43 +02:00
Ludovic Marie 5118d824a6 LAN hub: hand a tick's packets to each connection together
Every packet sent to a guest woke its writer thread, and at 25 walking bots
those wake-ups (mpsc notify, semaphore_signal) were about a quarter of the
server thread's tick. While tick_lan runs, packets for each guest are held
and handed over in one Out::Packets at the end; a send outside a tick, or a
disconnect, first hands over what is held, so the bytes and their order are
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:47:35 +02:00
Ludovic Marie 928f31e428 Merge main into fix/classic-extras
options_ui.rs: #585 put Mods... in the telemetry slot; keep it and put
Horizon Extras... in the credits slot as this branch intended.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:47:11 +02:00
Cosmic 7575719d11 Reuse the GPU device and presentation mode across pack reloads 2026-10-16 22:46:47 -04:00
Ludovic Marie 6c5b04694e Merge pull request #642 from Online5277/fix/redstone-ore-attack
Light both redstone ore variants when mining starts
2026-10-17 04:42:19 +02:00
Ludovic Marie 65e5640350 Merge pull request #640 from Online5277/feat/fullbright-extra
Add an off-by-default Fullbright toggle in Extras
2026-10-17 04:42:15 +02:00
Ludovic Marie b0a82da895 Merge pull request #638 from Online5277/fix/inventory-preview-layout
Correct inventory player scale, labels and equipment overlap
2026-10-17 04:42:11 +02:00
Ludovic Marie f3dd2c27e5 Merge pull request #637 from Online5277/fix/extras-mouse-bindings
Support mouse buttons for Extras sorting and zoom
2026-10-17 04:42:07 +02:00
Ludovic Marie 6eba3f034e Merge pull request #585 from Online5277/fix/classic-mod-management
Add mod management to Classic Options
2026-10-17 04:42:03 +02:00
Cosmic e0d6e56281 Release Wayland surface before replacing the pack renderer 2026-10-16 22:41:33 -04:00