Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
Carpet PRY Addition is a server-side Fabric extension for the fabric-carpet mod, developed for the Primaryuan Server. It adds 33 configurable Carpet rules and 9 new commands (plus /player extensions) covering bug fixes, fake player enhancements, player interaction, and survival gameplay expansion.
Fix
Xaero Minimap + LuckPerms Compatibility Fix (fixXaeroLib)
Resolves an issue where fake player (carpet bot) data is lost or inventory is forced empty when Xaero's Minimap / World Map and LuckPerms are used together on the server.
Related upstream issues:
- Xaero's World Map #1191 — When using with LuckPerms and carpet, carpet bot's player data initialize failed
- LuckPerms #4232 — When using with Xaero's Minimap and Xaero's World map, carpet bot's inventory empty
- fabric-carpet #2158 — Bot's inventory force empty with LuckPerms xaerolib (include in Xaero's Minimap and Xaero's Worldmap)
BlueMap Compatibility Fix (fixBlueMap)
Fixes an issue where fake players do not trigger Fabric API connection events, causing mods like BlueMap to fail tracking fake player join/leave correctly.
Related upstream issues:
- fabric-carpet #1962 — Compatibility issue with Bluemap
- BlueMap #598 — Unable to properly handle fake players who go offline
Fake Player Enhancements
Fake Player Skin (fakePlayerSkinMode / fakePlayerSkinSet)
Customize the appearance of carpet fake players by integrating with the optional skinrestorer mod. Install skinrestorer on the server to enable these features.

summonmode — the fake player uses the skin of the player who summoned it.same_skinmode — all fake players share a unified skin, specified byfakePlayerSkinSet(default:Brokeyuan).- Skins apply to the fake player's session only — nothing is persisted to skinrestorer's storage, so real players sharing the same name (same UUID on offline-mode servers) never get reskinned.
- Every fake player (including ones named after real players) wears its target skin from the first frame — the skin is injected before the spawn packet is sent, so observers never see a flash from the old skin to the new one. Real players themselves are never affected.
- With Carpet TIS Addition installed,
/player <name> rejoingets the same skin treatment — rejoin reuses Carpet's spawn logic, where the skin hook applies.
Fake Player Name Suggestions (fakePlayerNameSuggestions)

Customize the name suggestion list shown when using the /player command to spawn fake players. Define a comma-separated list of names for quick selection.
Fake Player Pearl Teleport System (fakePlayerTpp)
A fully custom teleport network powered by fake players and ender pearls. Admins set up stations at key locations, and players teleport between them by having a temporary fake player right-click a pearl at the destination.
Commands:
/tpp <station>— teleport to a station./tppset— manage stations, player aliases, and per-station pearl use counts. Data is persisted inconfig/carpet-pry-tpp.json.
/tpp requires Carpet TIS Addition — its /player rejoin respawns the station's fake player at its logged-off position and orientation. This is a soft dependency: without it, /tpp immediately reports the missing requirement, while /tppset and everything else work normally.
Fake Player Continuous Drop (fakePlayerDropAll)
Adds a /player <name> dropall sub-command that drops the fake player's whole inventory at a configurable pace: once, every tick, at fixed intervals, after a delay, N times per second, or at random intervals — with /player <name> dropall stop to cancel.
Fake Player Inventory Link (fakePlayerSendto)
Adds a /player <name> sendto <target> sub-command creating a one-way item flow between fake players: one stack is transferred per trigger, round-robin across multiple targets, and the source buffers items when a target is full. The same pace modifiers as dropall are supported; sendto stop removes all links. Links live in memory only and do not survive restarts.
Fake Player Brain (fakePlayerBrain)
Adds a /player <name> brain <mode> sub-command injecting vanilla-mob-style AI into fake players — 19 modes (zombie, babyzombie, skeleton, wither skeleton, pillager, vindicator, iron golem, spider, wolf, villager, enderman, drowned, fish, pig, piglin, piglin brute, slime, magma cube, zombie piglin). Pure server-side with zero extra entities: AI movement is translated into native player movement input, coordinates are never touched. Supports CJK fake player names, a keep suffix that re-attaches the brain after respawn, and a colored name suffix showing the active mode.
Gameplay Expansion
Player Hat (playerHat)

Wear any main-hand item on your head with the /hat command. When a Totem of Undying is placed in the helmet slot, taking fatal damage triggers a survival effect: Regeneration II + Absorption II + Fire Resistance I, giving you a second chance.
Riding Players (ridingPlayers)

Hold a Totem of Undying in your main hand and right-click another player's head to ride on top of them. Players can control whether others may ride them via /riding on|off. Up to ridingPlayersStackLimit (default 16) players can stack in one tower.
Additional related rules:
ridingPlayersAutoDismount— passengers dismount when a player's game mode changes.ridingPlayersClientInteract— a client-side rule (on by default) that allows interacting with blocks and entities even when carrying passengers. Requires the mod to be installed on the client.
Picking Up Players (pickupPlayers)

Hold a Totem of Undying in your main hand and right-click another player's legs to pick them up (they ride on your head). Torso clicks do nothing, and fake players don't participate. Players control whether others may pick them up via /picking on|off. Shares the same stack limit as riding (ridingPlayersStackLimit).
Pat Players (patPatPlayers)
Pat other real players on the head, cat-petting style: each right-click is a stroking pulse — the target bobs down and up with the rhythm with hearts above their head, while the patted player gets a heart in front of their eyes, a soft directional sound and a per-player opt-out (/patnod, persisted in config/carpet-pry-patnod.json). Fake players are excluded; works with any item in hand and never consumes the interaction.
Peaceful Players (peacefulPlayers)
Enables the /pvp command: each player can turn their own PVP on or off. Players with PVP off cannot attack players and take no damage from players (self-inflicted damage unaffected); blocked attacks play a cue sound so the "poke" signal is preserved. Admins can toggle PVP for anyone or server-wide with /pvp on|off @a, and /pvp list shows everyone who currently has PVP off. States persist across restarts in config/carpet-pry-pvp.json.
Who Called Me (whoCalledMe)
When a chat message contains another player's name, the mentioned player gets three notification dings (sound selectable via whoCalledMeSound: ding/levelup/bell/pling/hit, or false for none) and a title showing the message text — oversized titles are truncated by display width, keeping the name visible; names appearing in chat are highlighted for everyone via the vanilla chat decorator (default aqua, all 16 colors + a rainbow gradient + false to keep colors untouched). Name matching is case-insensitive substring with longest-name-wins; mentioning yourself and fake players (as receivers) is ignored. Purely server-side — works on vanilla clients.
MiSide Subtitles (textAnimation)
The /text command plays dialogue text in front of online players (fake players excluded; @a broadcasts to everyone, a player name directs at one — a target is required) with the text display effect from the game MiSide (the more trailing exclamation marks, the bigger the whole sentence): characters pop in one by one (random tilt, scale settling, click sounds), hold, then the whole sentence drops with server-side gravity/bounce physics while fading out. Long texts are split into groups at punctuation and played sequentially. One vanilla text_display entity per character, removed after play; default MiSide yellow with legacy color code support; pure server-side — works on vanilla clients.
Click Through (clickThrough)
Right-clicking a wall sign, wall hanging sign, wall banner, item frame or painting opens the container mounted directly behind it — chests, barrels, shulker boxes, hoppers, dispensers and anything else the vanilla right-click could open. Sneaking keeps the vanilla interaction (sign editing/dyeing, frame rotation), and so does having no container behind; vanilla "container can't open" checks (cat on top, blocked above) apply naturally. Pure server-side event implementation with zero mixins — works on vanilla clients, and yields automatically when the standalone ClickThrough Server mod is installed.
Player Scaling
Player Scale (playerScale + playerScaleMin / playerScaleMax)
Registers the vanilla minecraft:scale attribute for players and enables the /scale set|reset|info command: players adjust their own size, and admins (or everyone, depending on the mode) can adjust others. Values only need to be greater than 0, bounded by playerScaleMin (default 0.1) and playerScaleMax (default 1.5). Includes automatic FOV compensation on clients with the mod installed.
Realistic Player Scale (playerScalePhysics)
Optional physics linkage in three modes (gentle √scale curve, gentle + small-size floors, or strictly proportional): movement speed, jump height, step height, interaction range, fall safety and gravity all scale with size. Transient modifiers only — nothing is written to the save.
Player Scale Linked Entities (playerScaleLinkedEntities)
Living entities spawned directly by a player using an item (armor stands, spawn-egg mobs, built golems, ...) inherit the player's size snapshot at spawn time.
Other Features
- Daydreaming (
sleepingDuringTheDay) — sleep in a bed during daytime to skip forward to night (inspired by PCA). - Better Snowball (
betterSnowball) — snowballs deal knockback and damage to players ("stones hidden in snow"). - Invisibility Grass (
invisibleInTallGrass) — standing with your head inside tall grass grants automatic invisibility. - Unicode Command Arguments (
unicodeArgumentsSupport) — allows non-ASCII characters (Chinese, Japanese, Korean, etc.) in command arguments, enabling fake players with CJK names (ported from YACA).
Why Download
- All features are toggleable — every mechanic is a Carpet rule. Everything is off by default except
ridingPlayersClientInteract(a client-side quality-of-life rule that is on by default). - Wide version coverage — supports Minecraft 1.21 through the latest snapshots (26.3), with 11 versions actively maintained.
- Server-side only — players do not need to install the mod on their clients (except for the FOV compensation of the player scaling feature and the optional
ridingPlayersClientInteractclient rule). - Lightweight and focused — built on the Carpet framework, integrates naturally with existing Carpet setups.
Before You Download
- Required dependencies: fabric-carpet and Fabric API must be installed on the server.
- Fabric Loader >= 0.16.0 is required.
- Optional: skinrestorer is needed for the fake player skin features (
fakePlayerSkinMode/fakePlayerSkinSet). - This is a server-side mod. Place it in the server's
modsfolder. Client installation is only needed for the player-scaling FOV compensation and theridingPlayersClientInteractrule. - All rules are off by default (except
ridingPlayersClientInteract) — use/carpetor the Carpet configuration files to enable the ones you want. - Source code: GitHub
- Documentation: Wiki | GitHub README
Credits
- BlueMap fix — referenced from fabric-carpet PR #2142
- XaeroLib fix — thanks to Wzp-2008 for the patch in LuckPerms #4232
- Fake Player Name Suggestions — referenced from Ivan-Carpet-Addition
- Daydreaming — referenced from plusls-carpet-addition (PCA)
- Unicode arguments — ported from YetAnotherCarpetAddition (YACA)
- Thanks to Liuyue_awa and Carpet-Igny-Addition
- Built on fabric-carpet


