From 3d15cfd11a46000cda8a9592840cd28cf7d9496d Mon Sep 17 00:00:00 2001 From: Felitendo Date: Tue, 15 Sep 2026 13:56:25 +0200 Subject: [PATCH] feat: show every player's skin on offline servers --- ...ery-player-s-skin-on-offline-servers.patch | 2580 +++++++++++++++++ 1 file changed, 2580 insertions(+) create mode 100644 patches/0011-Show-every-player-s-skin-on-offline-servers.patch diff --git a/patches/0011-Show-every-player-s-skin-on-offline-servers.patch b/patches/0011-Show-every-player-s-skin-on-offline-servers.patch new file mode 100644 index 0000000..9cf2502 --- /dev/null +++ b/patches/0011-Show-every-player-s-skin-on-offline-servers.patch @@ -0,0 +1,2580 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Modrinth Enhanced +Date: Tue, 15 Sep 2026 09:05:42 +0200 +Subject: [PATCH] Show every player's skin on offline servers + +An offline-mode server sends profiles without textures, and the client +asks nobody else, so everyone there is Steve. The Theseus agent now wraps +authlib's texture lookups and, for a player the server sent nothing +usable for, looks the skin up by name: first in a folder of skins put +there by hand, then Ely.by, then Mojang, with capes from OptiFine. A +profile that already carries textures is left alone, so an online-mode +server's signed skins are never second-guessed. Answers are cached, also +across runs, and the game is never kept waiting on the network for long. + +The folder is `player_skins` in the launcher directory: `.png` per +player, `-slim.png` for slim arms, with `capes/` and `elytras/` +inside. Settings > Features has the switch, on by default, and a button +that opens the folder. The switch is a feature flag, so it needs no +migration and does not sync to Modrinth. + +The agent code comes from Noctrinth (https://github.com/Everelsu/Noctrinth). +--- + .../ui/settings/display/FeaturesSettings.vue | 69 ++ + .../src/composables/use-app-settings.ts | 1 + + apps/app-frontend/src/helpers/utils.js | 4 + + apps/app/build.rs | 1 + + apps/app/src/api/utils.rs | 14 + + .../modrinth/theseus/agent/TheseusAgent.java | 12 + + .../modrinth/theseus/agent/skins/Http.java | 148 ++++ + .../theseus/agent/skins/LocalSource.java | 97 +++ + .../theseus/agent/skins/LocalTextures.java | 99 +++ + .../theseus/agent/skins/MojangSource.java | 148 ++++ + .../agent/skins/OptiFineCapeSource.java | 143 ++++ + .../theseus/agent/skins/SkinHooks.java | 459 ++++++++++++ + .../theseus/agent/skins/SkinSource.java | 706 ++++++++++++++++++ + .../theseus/agent/skins/SkinSystemSource.java | 27 + + .../SessionServiceTransformer.java | 258 +++++++ + packages/app-lib/src/launcher/args.rs | 35 +- + packages/app-lib/src/launcher/mod.rs | 23 + + packages/app-lib/src/state/dirs.rs | 9 + + packages/app-lib/src/state/settings.rs | 1 + + 19 files changed, 2253 insertions(+), 1 deletion(-) + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/Http.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/LocalSource.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/LocalTextures.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/MojangSource.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/OptiFineCapeSource.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/SkinHooks.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/SkinSource.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/skins/SkinSystemSource.java + create mode 100644 packages/app-lib/java/src/main/java/com/modrinth/theseus/agent/transformers/SessionServiceTransformer.java + +diff --git a/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue b/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue +index ae88550..9a9e8ef 100644 +--- a/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue ++++ b/apps/app-frontend/src/components/ui/settings/display/FeaturesSettings.vue +@@ -1,5 +1,7 @@ +