PlayerDoll

PlayerDoll

Mod and plugin

A light-weight FakePlayer plugin for Plugin servers

CursedMagicUtility

2,678 downloads
21 followers
Created8 months ago
Updated15 days ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.
Filter loader...
Filter versions...
Filter channels...

Patch note:

  • Support Paper 1.20.5
  • Minor Tweaks
  • Fixed Doll not disconnect immediately

Paper 1.20.5

Plugin tested under Experimental build #6, no error was found

Changed some logic for getting server version as Paper (also downstreams) NMS not including CraftBukkit version anymore

Patch note:

  • Support 1.20.5

Connection process has changed in 1.20.5, potiential problem might occur.

During basic test on Spigot, no severe problem found yet.

Patch note:

  • Added Basic config key convert-player (Test)
  • Minor tweaks
  • some code transition

Convert Player

A setting to convert player entity into modified player entity, to support some doll commands (actions)

Default: false (not to convert)

When Player is connecting to the server, if the setting is true, A modified Player Entity will be created instead of original one. The modified player has a feature of automation action added.

  • Added new command target ! for self indication
    (i.e. [/doll attack ! interval 10], player-self attack in interval of 10 ticks)

Example

Use Example

Notes

When setting is true, Server Reload command is not recommanded.

Converted players will be kicked from the server. (Once reloaded, the plugin has no access to player entity anymore, because of different class loader)

Others

  • Config version is now 22

Known Issues

  • Self selecting (!) in doll commands not showing suggestions

Patch note:

  • Changed Doll BungeeCord connection method (Test)
  • Removed proxy-ip proxy-port keys from BasicConfig
  • Added doll-multi-instance key to prevent dolls with same UUID joining multiple BungeeCord servers
  • Added messaging between Plugin and BungeeCord for searching duplicate Doll

BungeeCord Connection Method

Last version, doll joins wrongly in random.
To fix this, A new Stable Connection Method is implemented for Testing.

  • Doll will connect to game Directly instead of BungeeCord
  • Doll will no longer be listed from BungeeCord commands
  • Doll will not be kicked when BungeeCord Restarts

Note: There might be plugins that block BungeeCord-bypassing connection, this connection method might be affected. Please Report on Github if this happened.

Doll-Multi-Instance

If there are dolls with duplicate UUID in multiple servers, this option prevents plugins that sync player data across server producing dupe by making doll with same UUID can only spawn once.
This option will enable only BungeeCord mode is true.
Default: false (disallow multiple instance)

Patch note:

  • Added BungeeCord support (Test)
  • Added proxy-ip and proxy-port on BasicConfig for Doll connection when BungeeCord in used
  • Changed whitelist logic
  • New BungeeCord plugin is implemented.
  • Config version changed to 19
  • Added perm.yml
  • Fixed lang.yml is not updating
  • Fixed Join message setting not work
  • Adjusted Give command to require target to be online

BungeeCord (Test)

For Servers running on bungeecord mode, proxy-ip and proxy-port are provided on Basic Config.
All doll will connect to the target address instead of the server itself.

Please report any problem on Github.

Note:

  1. When using BungeeCord mode, sometimes Doll will join as single character name, which represents this connection is failed to manipulate, spawn again could solve.
    This might different from environments.
  2. Doll with same name among servers are not allowed to spawn at the same time.
  3. On BungeeCord, doll will connected as single character name temporarily. This does not affect /find or /glist command as doll will convert to their real name after joining the server successfully

perm.yml

A new mini permission setting config is added. It allows server owner to set detailed settings for dolls.
Like prefix, suffix, max-spawn, max-create. (restrict skin is not implemented)

These permission node are suggested to add under groups for convenience.

Example:
playerdoll.perm.max-doll-spawn.default is bind to default permission group.
When player with default permission group enter /doll spawn command, the plugin will check to see if the player contains permission of playerdoll.perm.max-doll-spawn.default, then fetch the corresponding value from perm.yml and do the check.

Description and Example are on perm.yml

Patch note:

  • Enhance Doll spawning Stability
  • Adjusted fake connection process to reduce spawn failure

Patch note:

  • Added whitelist-bypass when Doll Join
    (Enabled only when server is using whitelist)
  • Added Basic Config Keys chat-when-join & chat-when-join-interval for Doll to execute something when they join
  • Fixed Config version not updating automatically
  • Fixed Flag config not saving new keys
  • Fixed Folia server real_player_tick_action causing Doll to disconnect.

New Basic Config Keys

chat-when-join-interval

  • This Controls the delay between each message (in tick)

chat-when-join

  • This List controls what message will be send to the server by the Doll
  • Can be commands or regular messages
  • Input variables %name% and %uuid% to represents Doll's name and uuid respectively
  • This should be useful for Logging in on offline server

Patch Note

  • Added Async PlayerPreLoginEvent while Doll Joining
  • Added Packet Filter to reduce packets sent from Server to Fake Client
  • Fixed Doll Exceeding Packet Rate Limit by packet filter
  • Implemented Doll Setting [Real Player Tick (Action)]

Patch Note:

  • Updated documentation on Github
  • Removed support for 1.20-1.20.2
  • Removed redundant side functions
  • Removed built-in permission
  • Remade Config for better management (Not Complete)
  • Remade Doll Joining Logic to provide real-player alike process (Maybe the best way to eliminate interferes with plugins)
  • Used Logger to replace System.out
  • Internal changes
  • Clean-up codes

Permissions

  • Now only OP is able to call actions, unless a permission managment plugin is installed
  • Details on Github

Configs

  • Now config has reworked, there should be some problems while handling config file update.
  • Detailed implementation at future version.
  • Renamed many keys

Affected Configs
[Doll config/Basic config/Flag config/Language config]

  • *Please re-generate a new one to avoid errors

Dolls

  • Now dolls will Emulate a client to deal with [no connection error] from server side plugin handling.
  • Using a internal fake client may produce unforeseen problems. Test from Author, it should be fine on some basic usages.
  • Using a client can extend controls of Doll in the future, like scripting or other interactions.
  • For Doll being kicked by Exceeding Packet Rate Limit when Join, temporary solution

Others

  • Some settings will temporarily hardcoded or cancelled, like Doll prefix/suffix, spawn limits.

Patch note:

  1. Changed Some Doll Spawning algorithm to enhance compability
  2. Enabled vanilla kick command to doll on Folia
  3. minor fix

Patch note:

  1. Fixed some command selection not displaying
  2. Fixed error while handling PlayerJoinEvent with other plugins
  3. Adjusted timing of Doll joining when server start
  4. Fixed Doll GUI poping up error alert
  5. Fixed Doll auto-joining spawned at weird position

Notice

  • If you are using plugin version above [v1.20],
    please download this version [v1.24] as soon as possible.
    In order to fix the problem that some plugin's PlayerJoinEvent has no effect on regular Players.

Patch note:

  1. Fixed Doll spawn Error on Folia (1.20.2-1.20.4)
  2. Code clean up
  3. Apply v1.22 [Aplha test] contents (welcome to report issues)
  4. Increased Doll teleport delay on Folia to avoid Doll entity hitbox unsync when Spawn (5tick -> 10tick)

Others

  • Doll setting "hide from list" is not implemented
  • Doll command "info" is not implemented

Notes

  • Beta release will end after few versions if the plugin becomes stable (after May)
  • Pre & Post MC 1.20 will slowly support after beta release
  • Plugin will be less frequently updated until May for longer observation

Patch note: [Alpha release]

  1. Implemented Auto-update Config
  2. Implemented Config modification detector
  3. Remade Permission related system (Test)
  4. Added playerImmune on permission.yml
  5. Changed Doll UUID from Name to Random generation
  6. Made support to server using LuckPerms (Test)
  7. Code clean up

Configs

Auto-Update

  • Apply to config, lang, flag, perm
  • Added key ReplaceConfig on config.yml for config update behavior
    (true : replace the whole config by new version
    [lost all settings]
    false : add missing keys to config
    [no longer maintain format, comments are missing])
  • If you want to check the original newer version config, open Plugin.jar as ZIP and then open the config file

Modification Detector

  • Apply to config, lang, flag, perm
  • Added key AutoReload on config.yml for detecting changes.
  • Automatically update when changes detected in Real Time
  • Without typing reload commands AutoReload

Permission (Test)

  • Remade permission.yml
  • catagroized configurations
  • added playerImmune key (Make Doll no longer damagable by Player)
  • If no LuckPerms in use, extra storage playerPerm.yml will appear (Record of player UUID - permission group)
  • Abandoned old player/uuids.yml
  • now all players are having default group by default, players will not be saved when they are under default group

Added attachkey (String list) for LuckPerms permission groups (Primary Group Name)

in Test function

If you are using LuckPerms and having own permission groups
you can assign those groups into `attach` key
player belongs to that permission group will automatically apply to PlayerDoll permission group in Runtime.
(Both groups are not interfering with each other)

UUID

  • Doll Name used to be the UUID of Doll, it caused some annoying problems when using Rename
  • New Doll will use a randomly generated UUID
  • It should be no impact for old and new version of Doll

Others

  • now config version has changed to "17"
  • Please backup the config before starting up the server
  • Please Re-generate Permission.yml
  • Please report any problem you encountered
  • Doll setting "hide from list" is not implemented
  • Doll command "info" is not implemented
  • This release is not fully tested, please report if any problems found

Patch note:

  1. Optimized Events handling when Doll spawn (Prevent plugins from getting error while handling Dolls)
  2. Fixed error when Create doll with invalid Player Name (Profile not exist for MCJE)
  3. Implemented Permission Group upgrade function (Test)
  4. Disabled most command execution from console

Skin

  • Default Mojang skins will be used when invalid skin has been used (Specified a invalid name, or creator has no Profile data)

Event Handling

  • Prevented other Plugins from handling Doll spawn
  • Enhanced stability
  • Tried to re-wrote to eliminate potential errors

Permission Group Upgrade

  • command : /dollUpgrade [confirm] (confirm to ignore tip message and upgrade)
  • Only usable when Vault exist
  • Under Test

Others

  • now config version has changed to "16"
  • Please backup the config before starting up the server
  • Please report any problem you encountered
  • Doll setting "hide from list" is not implemented
  • Doll command "info" is not implemented

Patch note:

  1. Reverted FakeChannel.class handling due to imperfection
  2. Added new method to Prevent other Plugins from executing PlayerJoinEvent when Doll join (For Test)

  1. The new method should completely preventing other plugins from executing PlayerJoinEvent to produce error
  2. This should execute only when Doll Spawn
  3. Please write an issue if this method is causing any error (behave wrongly) or incompatibilities

Note: This method rely on Event priority & Plugin Load Order, which if there is plugin that load prior than this Plugin and with the same priority (Lowest) may produce some problem (listen and make changes to PlayerJoinEvent). [Edited 17-Jan]

Patch Note:

  1. Added FakeChannel.class that warped EmbeddedChannel.class for compatibility (Handle Fake Player by Other Plugin)

Patch note:

  • Fixed non-OP cannot get Dolls from certain suggestion type

Patch note:

  1. Remade GUI system to support offline set/gset/gset
  2. Fixed GUI page swap resetting cursor position
  3. Fixed GUI button bypass command permission
  4. Fixed doll inventory navigation desync
  5. Fixed OP bypass doll online check
  6. Fixed Remove not dropping loots
  7. Fixed command check ignored Admin flag
  8. Fixed Menu shortcut bypass permission
  9. Implemented tab suggestion filter appropriate suggestions
  10. Modified some config keys
  11. Player can now set / gset / pset without doll online (Test)
  12. Added several suggestion types
  13. Changed some command suggestion for better indication

GUI system

  • Re-implemented for better fulfill the needs
  • Should come with better performance and less resource usage
  • The system is in test, please report any problems
  • Removed back button in Set page
  • Removed ender chest exit function

Others

  • now config version has changed to "15"
  • old version.txt on Github no longer update
  • Please Re-create the Dolls to avoid error
  • Please backup the config before starting up the server
  • Please report any problem you encountered
  • Doll setting "hide from list" is not implemented
  • Doll command "info" is not implemented
  • Permission group upgrading is not implemented

Patch note:

  • Compiled in Java 17 to ensure compatibility
  • Added softdepend in plugin.yml for Vault

Starting from 1.19.1, plugin will compile in Java 17. (currently 19) If you are using Java 17, please check v1.19.1 (9-Jan)

Patch note:

  • Added Backup function on Config for Doll configs
  • Added Remove function on Config for Inactive player
  • Added Command Alerts
  • Removed redundant canGiveDoll canRenameDoll permission settings
  • Added costPerDoll costForUpgrade in permission
  • Supported Vault for Test (command Create)
  • Modified & Fixed minor problem in language config
  • Added LastSpawn field in per Doll config

Others

  • now config version has changed to "14"
  • Doll config might not function, please re-create the dolls
  • Please backup the config before starting up the server
  • Please report any problem you encountered
  • Doll setting "hide from list" is not implemented
  • Doll command "info" is not implemented
  • Permission group upgrading is not implemented
  • Tab suggestions will not filter appropriate targets

External resources



Project members

johsar

Owner


Technical information

License
MIT
Project ID