├── ver.txt ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── README.md └── customlanguages ├── chs.yml └── cht.yml /ver.txt: -------------------------------------------------------------------------------- 1 | 2.4 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | - Minecraft Version 14 | - Plugin Version 15 | - Server Jar name and version 16 | - Proxy name in use 17 | - Server Log 18 | 19 | **To Reproduce** 20 | Steps to reproduce the behavior: 21 | 1. Go to '...' 22 | 2. Click on '....' 23 | 3. Scroll down to '....' 24 | 4. See error 25 | 26 | **Expected behavior** 27 | A clear and concise description of what you expected to happen. 28 | 29 | **Server Setting** 30 | State if you changed some uncommon settings 31 | i.e. Whitelist, Online-mode, specific server-mod settings 32 | 33 | **Setting of Doll** 34 | Doll's current setting. From config or GUI. This might be helpful when clarifing the problem 35 | i.e. Hostility = true / Gravity: false 36 | 37 | **Screenshots or Videos** 38 | If applicable, add screenshots or videos to help explain your problem. 39 | 40 | **Related Setup (If your problem is related to 3rd parties)** 41 | - Resource Packs 42 | - Server Properties 43 | - Others 44 | 45 | **Context in code (If applicable)** 46 | 47 | **Additional context** 48 | Add any other context about the problem here. 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PlayerDoll 2 | Simple Standalone Fake Player Plugin for Spigot, Paper, Folia 1.20.2+ [Java 17+] 3 | 4 | [Modrinth](https://modrinth.com/plugin/playerdoll) 5 | 6 | Release avaliable on Modrinth. 7 | 8 | 9 | 10 | Detailed Usage has been migrated to [Wiki](https://github.com/sjavi4/PlayerDoll/wiki) 11 | 12 | ## Disclaimer 13 | 14 | This plugin is highly dependent on NMS, slightly changes made by Mojang / Server Jar provider might cause this plugin no longer working.
15 | Please use it with caution
16 | 17 | 18 | Features provided by this plugin are not GUARANTEE to be fully working, it is not encouraged to treat this plugin as a pay feature to other players. 19 | 20 | 21 | ## How to use 22 | 23 | ### Upgrade from old version (v1.28 above) 24 | 1. Backup and delete the old configs, (except doll configs). 25 | * Then start up server to regenerate new configs (with comments and usages) 26 | 2. Copy settings from old config to the new one, and set for new config keys according their usage 27 | 28 | ### In game (v1.28 above) 29 | 1. player without permission will not display the corrisponding command (or arguments) 30 | * `doll` or `playerdoll:doll` are the main commands 31 | * `dollmanage` or `playerdoll:dollmanage` are the same from above, but they bypass some optional checking. OP is reqiured by default 32 | * To create doll, enter `/doll create [skin]` and wait for server to setup the config. 33 | * After creating doll, enter `/doll spawn ` to let the doll connect to the server. 34 | 2. Most of the Doll data modification are require Doll to be online. 35 | * Except `Remove` 36 | * `/doll set` command is Doll specific settings (Doll behavior) 37 | * `/doll gset` command is settings for all players (command permission) 38 | * `/doll pset` command is settings for specific players (Override Gset if set) 39 | -------------------------------------------------------------------------------- /customlanguages/chs.yml: -------------------------------------------------------------------------------- 1 | # Translated by Anonymous author 2 | 3 | # Auto Updates if version is not equal to plugin hardcoded value 4 | version: 25 5 | 6 | ### 7 | # &0 black 8 | # &1 dark_blue 9 | # &2 dark_green 10 | # &3 dark_aqua 11 | # &4 dark_red 12 | # &5 dark_purple 13 | # &6 gold 14 | # &7 gray 15 | # &8 dark_gray 16 | # &9 blue 17 | # &a green 18 | # &b aqua 19 | # &c red 20 | # &d light_purple 21 | # &e yellow 22 | # &f white 23 | # 24 | # &k obfuscated 25 | # &l bold 26 | # &m strikethrough 27 | # &n underline 28 | # &o italic 29 | # &r reset 30 | # 31 | # $n new line (For overlay Text display & Lang file only) 32 | ### 33 | 34 | MessagePrefix: '&e[&6PlayerDoll&e]&r' 35 | #Commands 36 | 37 | # All strings under Message group will display Plugin prefix when send message 38 | Message: 39 | # Commands execution message 40 | no-permission: '&c没有[%a%]权限为[%b%]使用命令' 41 | require-player: '&c只有玩家才能使用这个命令' 42 | no-target: '&c找不到目标' 43 | multi-select: '&c此命令不接受@参数' 44 | not-owner: '&c不是主人' 45 | # Create cmd 46 | long-name: '&c假人的名字不能超过15字符' 47 | regex-fail: '&c假人名称必须符合[A-Z][a-z][0-9][_]' 48 | preserved-name: '&c这是保留名称,请使用其它名称' 49 | dupe-name: '&c重复的假人名称' 50 | max-create: '&c已达到创建上限' 51 | success-create: '&a成功创建假人' 52 | # Give cmd 53 | player-offline: '&c这个玩家已离线' 54 | self-give: '&c无法给予自己' 55 | doll-give: '&c无法给予假人' 56 | cannot-create: '&c这个玩家没有权限创建假人' 57 | # Pset cmd 58 | doll-pset: '&c不能为假人设置玩家权限' 59 | # Spawn cmd 60 | in-world: '&c假人已生成' 61 | max-capacity: '&c服务器假人名额已满' 62 | null-uuid: '&c假人UUID异常,请联系管理员' 63 | spawn-error: '&c假人%a%生成失败,请稍后再试。' 64 | spawn-success: '&a假人成功生成' 65 | # Jump cmd 66 | self-jump: '&c真人玩家不支持跳跃行为' 67 | # Lookat cmd 68 | empty-lookat: '&c找不到准星目标' 69 | # Doll Join Event 70 | owner-offline: '&c主任离线中,使用预设的前缀和后缀' 71 | # Disconnect Event 72 | doll-disconnect: '&9假人%a%已离线' 73 | 74 | control-button: 75 | back: '&f返回' 76 | hint: '&2左键启用$n&c右键停用' 77 | prev: '&f上一页' 78 | curr: '&f当前' 79 | next: '&f下一页' 80 | 81 | inv-name: 82 | backpack: "&l&e%a%的背包" 83 | data: "&l&e%a%的资料" 84 | gset: "&l&e%a%的全局设置" 85 | pset: "&l&e%a%的%b%设置" 86 | info: '&l&e%a%' 87 | set: "&l&e%a%的设置" 88 | 89 | info: 90 | set: '&9设置' 91 | gset: '&9全体设置' 92 | data: '&9数据' 93 | offline: '&c下线' 94 | remove: '&c删除' 95 | remove-hint: '这个假人的所有数据$n(经验值、物品栏、末影箱)将会消失' 96 | 97 | uuid: '&eUUID:%a%' 98 | owner: '&5主人:%a% (%b%)' 99 | hp: '&4HP:%a%/%b%' 100 | hunger: '&2饱食度:%a%/%b%' 101 | gamemode: '&7游戏模式:%a%' 102 | 103 | 104 | set-menu: 105 | echest: 106 | name: '末影箱' 107 | desc: '&f开放末影箱给所有玩家' 108 | invulnerable: 109 | name: '无敌' 110 | desc: "&f使假人无视伤害和投掷物,同时不会吸引仇恨" 111 | hostility: 112 | name: '敌对性' 113 | desc: "&f假人是否会被怪物当成目标" 114 | pushable: 115 | name: '推动' 116 | desc: "&f假人是否会被碰撞箱推动" 117 | gravity: 118 | name: '重力' 119 | desc: "&f使假人从空中坠落" 120 | glow: 121 | name: '高亮' 122 | desc: "&f应用发光效果" 123 | large_step_size: 124 | name: '步幅增加' 125 | desc: "&f使假人可跳过1/0.6格高的放开" 126 | phantom: 127 | name: '幻翼生成' 128 | desc: '&f假人是否会生成幻翼' 129 | join_at_start: 130 | name: '自动加入' 131 | desc: '&f使假人在服务器启动时自动加入世界' 132 | hide_from_list: 133 | name: '列表隐藏' 134 | desc: '&f使假人不显示于info命令的Tab补全列表' 135 | pickable: 136 | name: '拾取' 137 | desc: '&f假人是否能够拾取物品' 138 | real_player_tick_update: 139 | name: '真人Tick (实体更新)' 140 | desc: '&f使假人于网络阶段/实体阶段Tick' 141 | real_player_tick_action: 142 | name: '真人Tick (动作更新)' 143 | desc: '&f使假人于封包阶段/实体更新Tick' 144 | admin: 145 | name: '管理' 146 | desc: '&f开放此GUI的所有权限' 147 | inv: 148 | name: '背包' 149 | desc: '&f开放假人的背包权限' 150 | attack: 151 | name: '攻击' 152 | desc: "&f开放假人的攻击权限" 153 | use: 154 | name: '交互' 155 | desc: "&f开放假人的交互权限" 156 | mount: 157 | name: '骑乘' 158 | desc: "&f开放假人的骑乘权限" 159 | dismount: 160 | name: '下马' 161 | desc: "&f开放假人的下马权限" 162 | copy: 163 | name: '复制' 164 | desc: "&f设置假人的复制权限" 165 | despawn: 166 | name: '下線' 167 | desc: "&f开放假人的下線权限" 168 | drop: 169 | name: '丢弃物品' 170 | desc: "&f开放假人的丢弃物品权限" 171 | exp: 172 | name: '经验获取' 173 | desc: "&f开放假人的经验获取权限" 174 | gset: 175 | name: '全局设置' 176 | desc: "&f开放假人的全局设置权限" 177 | jump: 178 | name: '跳跃' 179 | desc: "&f开放假人的跳跃权限" 180 | look: 181 | name: '视角设置' 182 | desc: "&f开放假人的视角设置权限" 183 | lookat: 184 | name: '注视' 185 | desc: "&f开放假人的注视权限" 186 | menu: 187 | name: '资料页' 188 | desc: "&f开放假人的资料页权限" 189 | move: 190 | name: '移动' 191 | desc: "&f开放假人的移动权限" 192 | pset: 193 | name: '个别设置' 194 | desc: "&f开放假人的个别设置权限" 195 | set: 196 | name: '设置' 197 | desc: "&f开放假人的设置权限" 198 | slot: 199 | name: '快捷栏' 200 | desc: "&f开放假人的快捷栏权限" 201 | sneak: 202 | name: '蹲下' 203 | desc: "&f开放假人的蹲下权限" 204 | spawn: 205 | name: '生成' 206 | desc: "&f开放假人的生成权限" 207 | sprint: 208 | name: '奔跑' 209 | desc: "&f开放假人的奔跑权限" 210 | stop: 211 | name: '停止' 212 | desc: "&f开放假人的停止权限" 213 | strafe: 214 | name: 'Strafe' 215 | desc: "&fSet strafe command" 216 | swap: 217 | name: '換手' 218 | desc: "&f开放假人的換手权限" 219 | tp: 220 | name: '傳送' 221 | desc: "&f开放假人的傳送权限" 222 | turn: 223 | name: 'z转身' 224 | desc: "&f开放假人的轉身权限" 225 | unsneak: 226 | name: '解除蹲下' 227 | desc: "&f开放假人的解除蹲下权限" 228 | unsprint: 229 | name: '解除奔跑' 230 | desc: "&f开放假人的解除奔跑权限" 231 | # Not a command 232 | hidden: 233 | name: 隐藏 234 | desc: '&f设置玩家是否能看到假人' 235 | 236 | inv-menu: 237 | inv: '&7背包' 238 | real-inv: '&7实际背包' 239 | echest: '&d末影箱' 240 | level: '&e经验' 241 | 242 | level-display: '&e等级:%a%' 243 | level-get: "&a点击以获得1等级的经验值" 244 | 245 | info-cmd: 246 | name: '假人: ' 247 | uuid: 'UUID: ' 248 | status-online: 在线 249 | status-offline: 离线 250 | owner: '主人: ' 251 | doll-setting: '[假人设置]' 252 | g-setting: '[全局设置]' 253 | 254 | 255 | cmd-hover: 256 | action-main: '主手物品: %a%' 257 | action-off: '副手物品: %a%' 258 | despawn: '位置: [%a% %b% %c%]' 259 | dismount: '正在骑乘: %a%' 260 | exp: '等级: %a%' 261 | give: '主人: %a%' 262 | gset: '启用:' 263 | look: '朝向: %a%' 264 | mount: '正在骑乘: %a%' 265 | pset: '已设置:' 266 | remove: '主人: %a%' 267 | set: '启用:' 268 | slot: '当前快捷栏: %a%' 269 | sneak: '蹲下: %a%' 270 | spawn: '主人: %a%' 271 | sprint: '奔跑: %a%' 272 | tp: '位置: [%a% %b% %c%]' 273 | turn: '朝向: %a%' 274 | -------------------------------------------------------------------------------- /customlanguages/cht.yml: -------------------------------------------------------------------------------- 1 | # Translated by Anonymous author 2 | 3 | # Auto Updates if version is not equal to plugin hardcoded value 4 | version: 25 5 | 6 | ### 7 | # &0 black 8 | # &1 dark_blue 9 | # &2 dark_green 10 | # &3 dark_aqua 11 | # &4 dark_red 12 | # &5 dark_purple 13 | # &6 gold 14 | # &7 gray 15 | # &8 dark_gray 16 | # &9 blue 17 | # &a green 18 | # &b aqua 19 | # &c red 20 | # &d light_purple 21 | # &e yellow 22 | # &f white 23 | # 24 | # &k obfuscated 25 | # &l bold 26 | # &m strikethrough 27 | # &n underline 28 | # &o italic 29 | # &r reset 30 | # 31 | # $n new line (For overlay Text display & Lang file only) 32 | ### 33 | 34 | MessagePrefix: '&e[&6PlayerDoll&e]&r' 35 | #Commands 36 | 37 | # All strings under Message group will display Plugin prefix when send message 38 | Message: 39 | # Commands execution message 40 | no-permission: '&c你沒有[%a%]權限為[%b%]使用指令' 41 | require-player: '&c必須由玩家發送此指令' 42 | no-target: '&c找不到目標' 43 | multi-select: '&c此指令不接受@用法' 44 | not-owner: '&c不是持有人' 45 | # Create cmd 46 | long-name: '&c假人名稱不能超過15字符' 47 | regex-fail: '&c假人名稱必須使用[A-Z][a-z][0-9][_]' 48 | preserved-name: '&c此為保留名稱,請使用其他名稱' 49 | dupe-name: '&c重複的假人名稱' 50 | max-create: '&c已達到創建上限' 51 | success-create: '&a成功創建假人' 52 | # Give cmd 53 | player-offline: '&c該玩家已離線' 54 | self-give: '&c無法給予自己' 55 | doll-give: '&c無法給予假人' 56 | cannot-create: '&c該玩家沒有權限創建假人' 57 | # Pset cmd 58 | doll-pset: '&c不能為假人設定玩家權限' 59 | # Spawn cmd 60 | in-world: '&c假人已生成' 61 | max-capacity: '&c伺服器假人名額已滿' 62 | null-uuid: '&c假人UUID異常, 請聯絡管理員' 63 | spawn-error: '&c假人%a%生成失敗, 請稍後再試' 64 | spawn-success: '&a假人成功生成' 65 | # Jump cmd 66 | self-jump: '&c真人玩家不支援跳躍行為' 67 | # Lookat cmd 68 | empty-lookat: '&c找不到準星目標' 69 | # Doll Join Event 70 | owner-offline: '&c持有人離線中,使用預設前綴及後綴' 71 | # Disconnect Event 72 | doll-disconnect: '&9假人%a%已離線' 73 | 74 | # Version Query 75 | ver-query: '&7目前插件運作的版本是%a%' 76 | # Reloaded plugin 77 | reloaded: '&e重載完成' 78 | 79 | control-button: 80 | back: '&f返回' 81 | hint: '&2左鍵啟用$n&c右鍵停用' 82 | prev: '&f上一頁' 83 | curr: '&f當前:%a%/%b%' 84 | next: '&f下一頁' 85 | 86 | inv-name: 87 | backpack: "&l&e%a%的背包" 88 | data: "&l&e%a%的資料" 89 | gset: "&l&e%a%的全體設定" 90 | pset: "&l&e%a%的%b%設定" 91 | info: '&l&e%a%' 92 | set: "&l&e%a%的設定" 93 | 94 | info: 95 | set: '&9設定' 96 | gset: '&9全體設定' 97 | data: '&9資料' 98 | offline: '&c下線' 99 | remove: '&c刪除' 100 | remove-hint: '此假人的所有資料$n(經驗值、背包、終界箱)將會消失' 101 | 102 | uuid: '&eUUID:%a%' 103 | owner: '&5持有人:%a% (%b%)' 104 | hp: '&4HP:%a%/%b%' 105 | hunger: '&2飽食度:%a%/%b%' 106 | gamemode: '&7遊戲模式:%a%' 107 | 108 | 109 | set-menu: 110 | echest: 111 | name: '終界箱' 112 | desc: '&f開放終界箱予所有玩家' 113 | invulnerable: 114 | name: '無敵' 115 | desc: "&f使假人無視傷害及投射物,及無法仇恨$n在較高版本中的創造模式玩家仍可造成傷害" 116 | hostility: 117 | name: '敵對性' 118 | desc: "&f假人會否被怪物當作目標" 119 | pushable: 120 | name: '推動' 121 | desc: "&f假人會否被碰撞箱推動" 122 | gravity: 123 | name: '重力' 124 | desc: "&f使假人從空中墜落" 125 | glow: 126 | name: '高亮' 127 | desc: "&f應用發光效果" 128 | large_step_size: 129 | name: '步輻增加' 130 | desc: "&f使假人可越過1/0.6格高的方塊" 131 | phantom: 132 | name: '夜魅生成' 133 | desc: '&f假人會否生成夜魅' 134 | join_at_start: 135 | name: '自動加入' 136 | desc: '&f使假人在伺服器開啟時自動進入世界' 137 | hide_from_list: 138 | name: '列表隱藏' 139 | desc: '&f使假人不顯示於info指令的Tab補全列表' 140 | pickable: 141 | name: '拾取' 142 | desc: '&f使假人可否從世界獲得物品' 143 | real_player_tick_update: 144 | name: '真人Tick (實體更新)' 145 | desc: '&f使假人於網絡階段/實體階段Tick' 146 | real_player_tick_action: 147 | name: '真人Tick (動作更新)' 148 | desc: '&f使假人於封包階段/實體階段Tick' 149 | admin: 150 | name: '管理' 151 | desc: '&f開放此GUI的所有權限' 152 | inv: 153 | name: '背包' 154 | desc: '&f開放假人的背包權限' 155 | attack: 156 | name: '攻擊' 157 | desc: "&f開放假人的攻擊權限" 158 | use: 159 | name: '交互' 160 | desc: "&f開放假人的交互權限" 161 | mount: 162 | name: '騎乘' 163 | desc: "&f開放假人的騎乘權限" 164 | dismount: 165 | name: '下車' 166 | desc: "&f開放假人的下車權限" 167 | copy: 168 | name: 'Copy' 169 | desc: "&fSet Copy command" 170 | despawn: 171 | name: '下線' 172 | desc: "&f開放假人的下線權限" 173 | drop: 174 | name: '丟棄物品' 175 | desc: "&f開放假人的丟棄物品權限" 176 | exp: 177 | name: '經驗獲取' 178 | desc: "&f開放假人的經驗獲取權限" 179 | gset: 180 | name: '全體設定' 181 | desc: "&f開放假人的全體設定權限" 182 | jump: 183 | name: '跳躍' 184 | desc: "&f開放假人的跳躍權限" 185 | look: 186 | name: '視角設定' 187 | desc: "&f開放假人的視角設定權限" 188 | lookat: 189 | name: '注視' 190 | desc: "&f開放假人的注視權限" 191 | menu: 192 | name: '資訊頁' 193 | desc: "&f開放假人的資訊頁權限" 194 | move: 195 | name: '移動' 196 | desc: "&f開放假人的移動權限" 197 | pset: 198 | name: '個別設定' 199 | desc: "&f開放假人的個別設定權限" 200 | set: 201 | name: '設定' 202 | desc: "&f開放假人的設定權限" 203 | slot: 204 | name: '快捷欄' 205 | desc: "&f開放假人的快捷欄權限" 206 | sneak: 207 | name: '蹲下' 208 | desc: "&f開放假人的蹲下權限" 209 | spawn: 210 | name: '生成' 211 | desc: "&f開放假人的生成權限" 212 | sprint: 213 | name: '奔跑' 214 | desc: "&f開放假人的奔跑權限" 215 | stop: 216 | name: '停止' 217 | desc: "&f開放假人的停止權限" 218 | strafe: 219 | name: 'Strafe' 220 | desc: "&fSet strafe command" 221 | swap: 222 | name: '換手' 223 | desc: "&f開放假人的換手權限" 224 | tp: 225 | name: '傳送' 226 | desc: "&f開放假人的傳送權限" 227 | turn: 228 | name: '轉身' 229 | desc: "&f開放假人的轉身權限" 230 | unsneak: 231 | name: '解除蹲下' 232 | desc: "&f開放假人的解除蹲下權限" 233 | unsprint: 234 | name: '解除奔跑' 235 | desc: "&f開放假人的解除奔跑權限" 236 | # Not a command 237 | hidden: 238 | name: 湮滅 239 | desc: '&f設定玩家可否洞察假人' 240 | 241 | inv-menu: 242 | inv: '&7背包' 243 | real-inv: '&7實際背包' 244 | echest: '&d終界箱' 245 | level: '&e經驗' 246 | 247 | level-display: '&e等級:%a%' 248 | level-get: "&a按此以獲得1等級的經驗值" 249 | 250 | info-cmd: 251 | name: '假人: ' 252 | uuid: 'UUID: ' 253 | status-online: 在線 254 | status-offline: 離線 255 | owner: '持有人: ' 256 | doll-setting: '[假人設定]' 257 | g-setting: '[全體設定]' 258 | 259 | 260 | cmd-hover: 261 | action-main: '主手物品: %a%' 262 | action-off: '副手物品: %a%' 263 | despawn: '位置: [%a% %b% %c%]' 264 | dismount: '正在騎乘: %a%' 265 | exp: '等級: %a%' 266 | give: '持有人: %a%' 267 | gset: '啟用:' 268 | look: '朝向: %a%' 269 | mount: '正在騎乘: %a%' 270 | pset: '已設定:' 271 | remove: '持有人: %a%' 272 | set: '啟用:' 273 | slot: '當前快捷欄: %a%' 274 | sneak: '蹲下: %a%' 275 | spawn: '持有人: %a%' 276 | sprint: '奔跑: %a%' 277 | tp: '位置: [%a% %b% %c%]' 278 | turn: '朝向: %a%' 279 | --------------------------------------------------------------------------------