
UUID Impersonate
Allows you to impersonate another player at the UUID level which allows you to load in as though you are really that player (NBT and all).
- Загрузки
- 362
- Подписчики
- 2
- Обновлён
- 11 ноября 2025 г.
- Лицензия
- AGPL-3.0-only
Опубликован 2 ноября 2025 г.
The motivation behind this mod was to:
- Modify Player (NBT) Data of Inactive Players
- Dump Inventories (and Ender Chests)
- Interact with mods as though you are the player so you don't need to resort to NBT manipulation if the mod does not have admin functionality/management
The way the mod functions is by
- Letting the server check if the actual player joining (not the person they are impersonating) is allowed to join the server
- So the original player cannot use this to bypass bans or other things that would inhibit joining ordinarily
- It also has the helpful side effect of making it so (on a whitelisted server) you don't need to whitelist the player you are impersonating.
- Then after it verifies you can join, it checks if you are trying to impersonate someone (via the
/uuidimpersonate impersonate <player|uuid>command you used on the previous login)- The
/uuidimpersonate impersonate <player|uuid>command is guarded by both a not impersonated predicate and a has OP level 4 (owner) predicate. - The accompanying
/uuidimpersonate clearcommand is guarded by just an impersonated predicate (so no matter what permissions you have, you can stop the impersonation)- If for some reason the
/uuidimpersonate clearcommand is not working, the impersonation list is not persistent so you can also restart the server to clear ALL impersonations.
- If for some reason the
- The
- If you are then it swaps out the original GameProfile with the player you are trying to impersonate's (generated) GameProfile.
It is that simple, however, as there is a hardcoded 16 character limit for the GameProfile's name, I had to inject into various places like the ServerPlayerEntity#getPlayerListName (for tab list) and the PlayerEntity#getName (for chat messages and others) functions to get the name I wanted to display ("ImpersonatedName (Impersonated by OriginalName)") while impersonating which ensures transparency for other players.
This is still not perfect though, for instance, I observed that some mods (like Fabricord) check the GameProfile name directly (instead of PlayerEntity#getName) and thus it will only appear as though the (Impersonated) player joined the world without the descriptor of who is impersonating them (looks like a normal non-impersonated join)
Ченджлог
1.1.0Релиз1.21 · 11 ноября 2025 г.
Port to 1.21 with additional dependency of NoChatReports so we don't need to deal with bypassing Message Signatures (K.I.S.S)
1.1.0Релиз1.20.1 · 8 ноября 2025 г.
Added additional fields /uuidimpersonate impersonate subcommand
- New Syntax
/uuidimpersonate impersonate <gameProfile|uuid> [otherGameProfile] [modifyName]- Only console can change the
modifyNameoptional argument
- Only console can change the
- otherGameProfile is a required argument for console
1.0.0Релиз1.20.1 · 2 ноября 2025 г.
2 Commands to know
/uuidimpersonate impersonate <player|uuid>- Impersonates yourself as someone else- Must be OP Level 4
- Must not be currently impersonating somebody
/uuidimpersonate clear- Stop impersonating another player- Must be currently impersonating somebody
Комментарии
Загружаем…