Fixes#24 by making the December client mod read the MelonLoader UserData directory directly when available and by accepting config keys case-insensitively.
- Added MaxCapacity property to RoomEntity and updated related controllers to utilize it.
- Modified RoomsController to set MaxPlayers based on room's MaxCapacity.
- Introduced QuestTeamSize class to dynamically adjust quest party sizes beyond the default limit.
- Updated DevMenu to include options for debugging and managing room settings.
- Created UI elements for adjusting MaxCapacity in the admin interface.
- Added configuration file for DevMenu with default settings.
Add POST players/{id}/username + a Username field in the player detail's
Profile tab. Changes only the unique @handle (not the display name) and
rejects a collision outright rather than auto-suffixing, so the admin
gets the exact handle they typed. Same 2-24 char letters/digits/_/-
rule as the account API; logged to the audit trail as old -> new.
The cheat/boot diagnostics were written against the older build's names
and never bound on 2020.12.18, so the OnUpdate retry loop re-logged
[patch-miss] every ~5s for the full 60s window and never completed.
- repoint the cheat hooks at CheatManager.On{Time,ObscuredType,Height,
AdvancedMovement}CheatDetected (the four that exist here), verified in
CheatManager.txt
- drop the nonexistent DeveloperFlag/StreamingAsset cheat hooks and the
BootSequence.RegisterError hook (no such method on this build) plus its
now-dead BootSequenceRegisterError_Prefix helper
Diagnostics now all resolve on the first pass, so the retry loop ends
and the [patch-miss] spam stops.
MelonLoader (DorkNet.ClientMod) is the sole client patcher now, so drop
the BepInEx plugin and its BepInEx-only installer:
- delete the DorkNet.ClientPatch project + tools/install-plugin.ps1
- drop the project from DorkNet.sln
- README / architecture / deploy docs: present DorkNet.ClientMod
(install-melon.ps1) as the patcher instead of the BepInEx plugin
- fix install-melon.ps1 fallback hint that pointed at the deleted
install-plugin.ps1
- tidy stray 'BepInEx port' comments in Mod.cs / PhotonCustomAuthController
Legacy-cleanup paths that REMOVE an old BepInEx install (install-legacy-client.ps1,
the old_plugin_paths entry in build-patcher-zip.ps1) are kept intentionally.
Three carry-overs from the march branch (commits 80cc4ce, cd9d105) and
the launcher-side Vite build fix, all applicable to december without
modification:
1. Vite admin-ui + site configs switch from `base: '/'` to `base: './'`.
Built index.html now emits `<script src="./assets/...">` instead of
`/assets/...`, so the Easy Launcher's single-origin path-prefix mode
(`https://<apex>/__dn/admin/`) resolves assets under the prefix
instead of skipping it and 404'ing on the wrong server host.
2. Mod.ResolveType promoted from private to internal so PhotonPatches'
and SavePatches' local FindGameType helpers can delegate to the
broader assembly-scan fallback (was misssing IL2CPP-mangled type
names like the literal "PhotonNetwork"). Both helpers collapse to
one-line `=> Mod.ResolveType(name);`.
3. Parked AuthValuesInjector_Prefix into
DorkNet.ClientMod/attic/AuthValuesInjector.cs.attic. In december
this method was defined but **never wired to a harmony hook** in
OnLateInitializeMelon, so it was effectively dead code. Removed
the method + GetCurrentLockToken helper + Cfg.InjectAuthValues
field + LoadConfig reader + log mention. The .cs.attic suffix
keeps the SDK's auto-globber from compiling the parked file.
Restore notes inside the attic file describe how to re-enable —
for december the suggested hook is a postfix on
PUNNetworkManager.EMGGKBALALH (mutate the AuthValues there)
instead of march's NetworkingPeer.CallAuthenticate which never
fires in IL2CPP.
Mirrors march-2020-03-10 bc8bcd9. Stripping SteamStub DRM with
Steamless is necessary but not sufficient — Rec Room's
Plugins/steam_api64.dll still talks to Steam at runtime and
bails when Steam isn't loaded. Bundles Goldberg Steam Emulator
(~11 MB) into the patcher zip, plus a 7-byte steam_appid.txt
pointing at Steam app 471710 (Rec Room). New steam_stub block
in manifest.json tells the launcher where to install them.
The mod resolves every game-side type at runtime via
AccessTools.TypeByName, so the IL2CPP interop assemblies
(Assembly-CSharp, Photon3Unity3D, UnityEngine.*) in the csproj were
dead references. Dropped them entirely — only MelonLoader's own
DLLs are actually needed at compile time.
tools/build-patcher-zip.ps1 now downloads MelonLoader BEFORE the
dotnet build and points MelonLoaderDir at the extracted contents,
so a fresh contributor checkout builds the patcher zip cold with
no Rec Room install required.
Mirrors the march-2020-03-10 1f407ef change.
Targets Rec Room 2020.12.18 client.
Re-import after adding:
- DorkNet.ClientMod/dorknet-clientmod.json.template — config schema
the launcher's manifest-driven patcher renders into UserData/.
- tools/build-patcher-zip.ps1 — produces the dorknet-clientpatch-{key}.zip
Release asset the launcher fetches.
- .github/workflows/release.yml — auto-publishes both Release assets
on v1-december-* tag push.
Scrubbed via maintainer-side scrub-for-public.ps1: same drop rules as
the prior import, plus build-patcher-zip.ps1 added to the tools/
allow-list so it survives the scrub.