Luigi's Mansion 3 NEX server on the NextendoNetwork core
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kazuals 5e90f572f9 Fix the friends screen: tell friends when a player's state changes
Rooms opened "for friends only" never showed up on the friends screen.
The encoding was not the problem — a whole step was missing.

A capture of Nintendo's own server gives the chain, and it holds 7 out
of 7 times in the capture:

  1. a player publishes its state   0x79 method 13   (EMPTY response)
  2. the server tells its friends    notification type 128000,
                                     source = the publisher's PID
  3. the friend asks for details     0x79 method 15 on that PID
  4. the server replays the state    flags + room + nickname

Step 2 did not exist here. That step is what makes the rest work: the
client has no other source for its friends' PIDs, it learns them from
the "source" field of that notification. Without it the client never
calls method 15 at all, so the screen stays empty even when a friend
really has a room open.

The server now remembers what each player publishes and replays it
verbatim, instead of making up state flags and deriving the room from
its own matchmaking. Methods 13 and 14 follow the capture too: 13
answers empty, 14 returns the friends' records.

Worth noting for anyone chasing the same bug: MatchmakeExtension method
13 (types 101-104) has nothing to do with this menu. Nintendo answers
zero entries there, exactly like we did — it is a dead end.

Tests run against the captured bytes, both directions. Nicknames and
account ids in the fixtures were replaced with neutral values of the
same length so no third-party personal data is published; the layout,
state flags and room ids are untouched.
2026-08-12 19:19:15 +02:00
.gitignore luigis-mansion-3: NEX game server (source only) 2026-08-11 17:43:47 +01:00
dashboard.go Harden LM3 server for production (auth + DoS) 2026-08-11 19:30:06 +02:00
example.env Harden LM3 server for production (auth + DoS) 2026-08-11 19:30:06 +02:00
friends.go Fix the friends screen: tell friends when a player's state changes 2026-08-12 19:19:15 +02:00
friendstate.go Fix the friends screen: tell friends when a player's state changes 2026-08-12 19:19:15 +02:00
friendstate_test.go Fix the friends screen: tell friends when a player's state changes 2026-08-12 19:19:15 +02:00
gates.go Cap and negative-cache NSA account lookups; require nextendo-nex v0.1.4 2026-08-11 20:33:05 +02:00
go.mod Fix the friends screen: tell friends when a player's state changes 2026-08-12 19:19:15 +02:00
go.sum Fix the friends screen: tell friends when a player's state changes 2026-08-12 19:19:15 +02:00
LICENSE.md Initial luigis-mansion-3 repo (scaffold; NEX server to follow via PR) 2026-08-11 14:03:23 +02:00
main.go Fix the friends screen: tell friends when a player's state changes 2026-08-12 19:19:15 +02:00
README.md Harden LM3 server for production (auth + DoS) 2026-08-11 19:30:06 +02:00

luigis-mansion-3

NEX game server for Luigi's Mansion 3, built on the NextendoNetwork nextendo-nex core. Source only — no binaries, no certs. Not affiliated with Nintendo.

Build

Clone this repo and nextendo-nex side by side (the go.mod replace directive points at ../nextendo-nex), then:

go build ./...

See example.env for configuration.

Credits

Luigi's Mansion 3 server implementation by @LITTLECHOPT8.

Hardened for production by the NextendoNetwork maintainers: signed-token identity gate (anti-impersonation), leaked-token denylist, fail-closed internal endpoints, and bounded NAT/presence state.