PlayerDoll is a plugin that allow players create Fake Players (Doll).
The Plugin is inspired from fake player in Carpet Mod.
Players can use this plugin to perform simple tasks that require players.
Please check details on Github Readme
Disclaimer
This plugin is highly dependent on NMS, slightly changes made by Mojang / Server Jar provider might cause this plugin no longer working.
Please Test the plugin under test environment before use.
Currently Supported Game Versions and Mods
- Spigot / Paper / Purpur / Folia
- 1.20.2 - 1.21
Examples of what can be done with this plugin:
- Keep chunks loading with random tick
- Grow crops
- AFK mob farms
- Attack mobs
- Interact with blocks
- Mine/Break/Place blocks
- And more...
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 |
- Rebuild the plugin
- Bump Version to 2.4
- Support 1.21.5 Spigot and Paper (experimental build)
#### Note:
- Folia 1.21.5 is not yet released
- Addons are available below this changelog, put them into
plugins/PlayerDoll/addon/ - Besides the Main Plugin jar, addon-Wrapper & addon-Doll (& Addon-Folia for Folia servers), are necessary for core functionalities
- If you are using 1.20.6+ Paper and its downstream, please download correct addons that indicates Mojang Mapping (
X-Mojang.jar) - If you are using Spigot, please download Spigot Mapping (
X-Spigot.jar)
#### Updated jar
- Main
- Addon-Wrapper-1215 (1.21.5)
- Addon-Doll-v1_21_R4-1215 (1.21.5)
- Fixed an issue that Doll cannot connect server while whitelist has enabled
#### Updated jar
- Main
- Fixed Doll connections problem for certain versions
- Fixed Doll cannot inherit permission from permission plugins
- Added empty string check for config key
doll-permission - Added config key
doll-metadatafor Doll for special usage
Note:
Main& AllAddon-Dollare updated- Config version is now 32
- Fixed version checking v2.1 ([shou692199](https://github.com/sjavi4/PlayerDoll/pull/104))
- Renamed Addon to enhance version readability ([shou692199](https://github.com/sjavi4/PlayerDoll/pull/103))
- Fixed some GUI pages did not display previous page by clicking outside (backpack, gset, set)
- Optimized & Advanced Exp command
- Moved Skin Permission before text
extern/local - Delayed Doll teleport when Spawn, avoid Doll not teleporting in certain condition
- Removed redundant OP permission while Doll spawn
- Fixed ConvertPlayer cannot inherit permission from permission plugin
- Delayed AsyncPlayerPreLoginEvent when Doll Login to avoid permission plugin Kick
- Fixed certain text not applying newline
## Exp command
Improved performance while calculating experience.
Added integer overflow check
New argument
asOrb for EXP command:- Experience will be given as experience Orb
- Useful for mending
Changed Click interaction for GUI EXP:
- Left click -> get Exp conventionally
- Right click -> get Exp as EXP Orb
- Shift click -> get All levels (within integer limit)
- Non-shift click -> get 1 level
Updated description for GUI Exp icon
## Addons
- Simplied Mapping string to
MojangorSpigot - Added trailing string for Minecraft version support<br>(i.e. 1210_1211 -> 1.21.0 to 1.21.1)
Note:
- Config Version is now 31
- Main & Addon-Doll has been updated
- Renamed Addon-Wrapper
- Disabled Dev message in startup
- Supported 1.21.4 Spigot
- Added LookAt action command
- Updated Create command arguments for skin fetching
- Added raw message for Version command
- Fixed Doll don't follow default prefix & suffix in perm.yml when Doll owner is not online (works even if perm.yml has disabled)
## Skin Fetching
new literal nodes are added to the Create command.
/doll create <name> [extern|local <skin>]extern: Fetch player skin online<br>
local: Fetch player skin from local server
- config version is now 30
- Addon-Folia has renamed (discarded version)
- Wrapper Addon for 1.21.2+ is still Addon-Wrapper-1212 (will be renamed if there is breaking change)
Addon updated:
- All Addon-Doll
- new Addon for 1.21.4 (Addon-Doll-v1_21_R3)
For Addon-Wrapper, please download from the previous version
- Fix Paper NoSuchMethodError getBukkitEntity() [(shou692199)](https://github.com/sjavi4/PlayerDoll/pull/100)
Addon updated:
- v1_20_R2
- v1_20_R3
- v1_20_R4
- v1_21_R1
- v1_21_R2
- Fixed a Crash NoSuchMethodError in Folia when Doll spawn.<br>Related addons (
Addon-Doll) are updated
- Reworked code base for API and Extension compability (Early Access)
- Support Game 1.21.2 1.21.3 (using Addon)
- Ported old Game version support to Addon
- Improved config loading
- Doll connection thread is now blocking while server shutdown again for safety
- Fixed right-clicking Doll Inventory GUI cannot set slot
- Fixed error in Drop command
- Rework custom GUI and Removed improper use of extending InventoryHolder
- Added perTick argument for action commands
- Added version subcommand for version checking
- Supported paging for Doll setting, pset and gset
- Lookat Action is temporarily unavailable in this version
- Stop supporting BungeeCord
- Adjusted some config keys
## API & Extension
To reduce the plugin file-size impact of NMS version and to adapt the new update cycle from Mojang.<br>
- Addon** is introduced for server owners to customize the addon installation in needs (mostly for NMS).
<details>
<summary>Usages</summary>
The API currently provides the followings by sub-plugin or addon.
- Create subcommands in /doll
- Custom implementation of Doll
- Create Buttons for setting / gset / pset
- Custom Game Version support
- Others
</details>
<details>
<summary>Note</summary>
The API is in initial stage and changes will be made to enhance accessibility for customization.
At now, the API is still not perfect, and not encouraged to use it as custom development.
</details>
<details>
<summary>Installization Guide</summary>
Versions<br><br>
1.20.2 -> v1_20_R2<br>
1.20.3 / 1.20.4 -> v1_20_R3<br>
1.20.5 / 1.20.6 -> v1_20_R4<br>
1.21 / 1.21.1 -> v1_21_R1<br>
1.21.2 / 1.21.3 -> v1_21_R2<br><br>
Required Addons:
1.
Doll-<Version>-<Mapping>.jar2.
Wrapper-<Version>-<Mapping>.jar- Spigot branch
Download
Doll and Wrapper (Spigot-Mapping) by version- PaperSeries & Folia branch
- Server in 1.20.2 - 1.20.4<br>
Doll and Wrapper (Spigot-Mapping) by version- Server in 1.20.5 or above<br>
Doll and Wrapper (Mojang-Mapping) by version- Folia branch
Download
Addon-Folia.jar additionally</details>
Note: Some Addons are crucial for this plugin in order to provide complete functionalities. The provided addons are default behavior as previuos versions.
All addons are stored in
plugins/PlayerDoll/addon/## perTick argument
A new argument is added for actions.
Doll / Converted players are able to perform action up to 40 times in each tick.
Example: /doll attack abc perTick 20
``
Doll "abc" will try to destroy(attack) blocks 20 times in 1 gametick
``Note: **_perTick may affect server performance if set too high_**. Please use it carefully.
## Others
- Config version is now 29
- Bugs or malfunctions might occur after reworking of code
- Doll connection thread is no longer blocking while server shutdown
- Fixed Doll cannot perform use command to interact to world
- Trying to fix teleport packet crash on Folia
- Fixed some exploits in remove command
- Fixed incorrect Doll fetching in spawn command
## Teleport Packet Crash
It is known that in Folia, some servers might facing random crash due to Doll's teleport packet handling.
If you share the same problem, please reply to [Github Discussion](https://github.com/sjavi4/PlayerDoll/discussions/96)
- Supported Non-player command input (some still require player)
- Fixed Doll cannot tick certain vehicles while mounting
- Fixed the argument
allin Exp command can only get 1 level - Fixed an issue that sometimes error was thrown during Use command
- Fixed sometimes Doll cannot be spawn due to the method from resource pack packet is located wrongly if resource pack is enabled
- Fixed spelling mistakes in resource pack class, causing Doll stuck in login process if the server has resource pack enabled
- Fixed plugin cannot recognize 1.21.1
- all patches in [v1.35](https://modrinth.com/plugin/playerdoll/version/1.35Dev)
- Fixed doll connection did not handle respawn correctly
- Changed Doll connection from Socket to Netty, become more performant
- Changed packet to NMS, should be more resilient to packet change
- Should fix some connection bugs
- Changed Tracer class (NMS to plugin API)
- Changed related logics in Actionpack class (tracer)
- Supported 1.21 Folia Dev
Known issues:
- Bottom parts of Doll real inv are shifted, causing interaction to Doll's armor and offhand slot (Bug from plugin API)
Note:
- This is a Dev version, please use it carefully.
- Please report any problems when you have any difficulties
- Setup Github [Wiki](https://github.com/sjavi4/PlayerDoll/wiki) for detailed information
- Improved Shift actions in Doll Inv GUI
- Fixed Doll Inv GUI causing item to disappear by certain interaction
- Added spam preventation for Doll Inv GUI (4ticks)
- Fixed Dropping Item through GUI in Folia server causes error
- Changed config key
proxy-auto-join-delaytoauto-join-delay - Prevent plugin disable while Doll auto-join
- Removed grouped permission in plugin.yml
- Added wildcards for permissions in plugin.yml
- Fixed Doll auto-join not applying Doll Identifier
- Fixed an issue that when player attempts to pset a newly set player, flag did not set
## Doll Inv GUI
In this version, shift actions in Inv do stack similar items together (not in old versions)
## auto-join-delay
Now it will also work on non-BungeeCord connections
## Wildcards for permissions
- playerdoll.command.* -> Wildcard for command
- playerdoll.globalflag.* -> Wildcard for global flag
- playerdoll.personalflag.* -> Wildcard for personal flag
## Others
- Config version is now 28
- Grouped permission is no longer be used, please re-configure those permissions if you are using it
- Fixed player cannot perform PlayerDoll commands outside chat
- A relatively complex update is released, not all functions are well tested.
### New Features
- Supported 1.20.2
- Added Config key
force-proxy-ip - Added Config key
doll-identifier
### Changes / Bug Fixes
- Improved packet processing
- Fixed Doll not dismount from Entity when Die / Disconnect
- Fixed Doll cannot Join server if server.properties has required resource pack set
- Fixed Doll
join-at-startnot working - Updated command system for configurable Doll identifier
- Updated Doll config system for configurable Doll identifier
- Added comments for serveral Config keys
- Adjusted Config key
server-max-dolltoserver-max-doll-spawn
### Known Issues
- Doll cannot update Boat while mounting
- Doll cannot be push by piston with Slime block correctly
- Doll causes Crash in Folia servers when Map is tracking Regions containing Doll (Temporary Solution below)
## Packet Processing
A new packet logic is used<br>
Basic operations are fine<br>
Please write issue if any problems found
## Force Proxy Ip
default: false<br>
A optional tweak should fix Doll not joining server while the default connection address is not working
## Doll Identifier
default: "-"<br>
The identifier that Doll spawns with<br>
Can be empty or 1 character<br>
Should avoid common character that is username available or being used by other plugins
- Note**: Some characters will cause confusion to Vanilla / Other Plugin Commands.
Set to '' for disabling identifier
## BungeeCord
Updated corrisponding logic to adapt configurable Doll identifier
## Notes
Doll config has updated, and the format has changed because of the configurable identifier.<br>
- Please let Doll owners to cleanup all Doll data before updating to this version**<br>
Suggested Upgrade Flow:
1. Cleanup Doll data
2. Remove all Doll configs in plugins/doll and in dat file world/playerdata
3. Update plugin
4. Create new Doll
Temporary Solution to fix Crash in Folia Servers:
Goto
paper-world-defaults.yml and change the value of item-frame-cursor-update-interval to 0- Fixed Doll disconnect when spawn due to consecutive teleport packet with same teleport id
- Fixed high CPU and Ram usage when
convert-playeris enabled - Decreased Doll teleport delay in Folia server
- Fixed teleport packet causing doll to disconnect when spawn
- Added
hiddenflag for gset and pset - Added config key
display-doll-when-ping - Added config key
op-can-see-hidden-doll - Added check for Error UUID when spawn
- Added support for flying
### Hidden flag
permission:
playerdoll.personalflag.hiddendefault:
disabledWith this flag enabled, all players (or specific player):
- cannot see or interact doll hitbox in the world
- not listed from tablist
- not listed from ping list
- Pset overrides Gset*
### Display Doll When Ping
default:
falseThis control the online count, max player count when player ping the server.
if disabled:
- all dolls will be filtered from online count
- original max player count will be shown (if
adjustable-max-playerenabled)
### Op Can See Hidden Doll
default:
trueDoes server operator bypass the
hidden flag### Flying
If caller is in Creative and the doll can fly, doll will remain flying when spawn
## Other
- Config version is now 26
- Updated default.yml
- Fixed Create command cannot bypass max-create limit using manage or in op
- Added Info command
- Removed gset/pset
infoflag - Added doll setting
hide_from_listflag - Adjusted pset config-saving check (if pset player has identical settings from gset, the setting will not be saved)
- Fixed an error that trying to use pset to set a specific flag on a player that was never presented on doll config
- Optimized command suggestions (Hover Texts)
- Adjusted Doll teleportation (using packet)
### Hide From List flag
permission:
playerdoll.globalflag.hide_from_listIf
hide_from_list flag enabled, Doll will be hidden from suggestion list when player is typing info command- This flag does not affect op or owner
- This flag does not block
infoquery made from other player
### Info command
permission:
playerdoll.command.infoA command for listing basic data of Doll
- Doll name
- Online status
- Owner
- Doll settings
- General settings
- Player settings
### Command Suggestion Hover Text
Added a related Hover Text display on
Doll target selection to the command.Can be seen by dragging the mouse cursor onto the
tab suggestion- spawn, give, remove -> owner name
- tp, despawn -> current coords
- look, turn -> current facing
- slot -> current handheld slot
- exp -> current level
- mount, dismount -> is riding
- sneak, unsneak -> is sneaking
- sprint, unsprint -> is sprinting
- set, gset -> enabled flags
- pset -> players being pset before
- actions -> items on both hands
## Others
- Config version is now 25
- Updated
default.ymlandzh.yml(available on Github) - Published the plugin in release channel (stable)
- Fixed
chat-when-join
- Fixed a Crash issue due to
RealPlayerTickActionin Folia - Fixed Doll becoming invulnerable after entering the
The Endexit portal in Folia
- Fixed Doll death from PlayerData Sync Plugin<br>Now Doll will attempt to respawn then disconnect the Server. To prevent Sync Plugin store Doll data at 0 Health.
- Changed disconnect method from server side to fake-client side
- Changed TP method from console command execution to API teleport
- Fixed perm.yml max-doll-create counts incorrectly
- Fixed Pset data is not loaded correctly when doll spawn
- Fixed Give command is not working (Now Give command require Doll to be offline, and the receiver to be online)
- Fixed an issue that when Doll was Removed by non-owner, the max-creation-counter is not update correctly
- End Dev test
Others:
- No update for BungeeCord plugin, download if needed. See [v1.29](https://modrinth.com/plugin/playerdoll/version/1.29Dev)
- Simply tested on the latest clean Velocity with forward setting "modern", PlayerDoll should work fine without implementing a dedicated Velocity plugin. (for Doll connection)<br><br>Also no need to change config settings
## New Features
- Added messages to Doll caller about spawn result
- Added Lang config keys
spawn-successandspawn-error
## Bug Fixes & Changes
- Fixed an issue that in some versions and branches that cannot perform command through Shortcuts or GUI buttons
- (BungeeCord) Fixed Doll will no longer be able to join the server if an connection error occurred before
- Simplify some logging messages
## Others
- Config version is now 24
- Dev test will end in this version if no specific problem was found
<b>BungeeCord Connection Support</b>
## New Features
- Support 1.21 Paper (experimental-build #9)
- Support 1.20.3 - 1.21 BungeeCord Connection
- Added config key
proxy-auto-join-delay, to delay (in seconds) each Doll when joining automatically - Added doll config key
last-join-serverfor server Name that will be used in auto join. (doll without no server name are not joining)
## Bug Fixes & Changes
- Fixed a crashing issue that server reload command interferes with doll brigadier command
- Changed config key
server-ipandserver-porttoproxy-ipandproxy-portrespectively for Proxy connection - Doll will connect to the local address automatically when BungeeCord mode is off.
- When BungeeCord mode is on, Doll auto join feature requires at least 1 player in server. When the first player joined, doll will start joining 1 by 1 after 5 seconds.
## Others
- BungeeCord-side plugin is available below (PlayerDoll-Bungee-1.28.jar)
- GUI command actions are not working in BungeeCord mode in some versions and server mods. Entering command in chat as an alternative
- Doll in BungeeCord mode might not joining the game rarely. Please try again (around 5%?)
- To trigger doll auto join after reload in Bungeecord mode, a player is required to join the server in order to start.
New Detailed Readme in [github](https://github.com/sjavi4/PlayerDoll/blob/main/README.md)
## New Features
- Support 1.20.3 - 1.20.6 spigot/paper/folia
- Support 1.21 spigot
- New Chinese translated yml (zh.yml) has been uploaded to [github](https://github.com/sjavi4/PlayerDoll/tree/main/customlanguages) (by anonymous author)
- Changed command system to vanilla brigadier for better experience (test)
- Added dollmanage command to execute command without most validation (default for OP)
- Changed Doll Connection from NMS connection to Socket connection (should be more flexible and faster)
- Convert-Player feature now support more actions, lookat drop, dropStack, swapHand
## Bug Fixes & Changes
- Rewrote the plugin
- Should be less spaghetti code
- Removed most of the side feature (not affect the major usage of plugin)
- Renamed and Combined some similar command (also permissions)
- Reduced NMS file size by reflection & abstraction & wrapper (Methods that not changing at all)
- Clean up unused config keys
- Changed default language config from
englishtodefault - Convert-player self indication is changed from
!to_ (underscore) - Fixed doll ticking action pack in abnormal speed
- Create command now uses
GameProfile<br><br>In online-mode, GameProfile will not exist if player is not in mojang database. GameProfile will not contain skin data unless the player has joined the server before.<br><br>In offline-mode, GameProfile will always exist, skin data is always empty.<br><br>Also removed fetching skin data online. - Now create command <skin> is determine by player permission "
playerdoll.argument.create.skin" - Removed support of Offline Doll for some command
- Fixed perm.yml cannot change doll prefix / suffix
- Default permission from perm is now default to all players (if enabled), no need to set manually
- Config provided port and ip for Doll to connect, default 127.0.0.1 and 25565. Change it if the server setting is different
## Other
This is a dev version, the major purpose of this version is for public test. Most of the feature has been tested and ensured to function properly, but there might still be problems that happen due to different environments.
Please report if any problem found
It is suggested to remove configs (except doll config) to generate a new config that comes with comments. Or you can nevigate the original config inside plugin Jar
- <b>BungeeCord connection is not implemented</b>
- Config version has changed to 23
- The removed features will be added back if needed or by request
- Some minor changes are not stated