Tell command sender if the name specified was online and dead

This commit is contained in:
tanyaofei 2024-08-11 20:05:43 +08:00
parent 5772560bd5
commit b9cf70ba1b
5 changed files with 44 additions and 28 deletions

View File

@ -143,8 +143,19 @@ public class NameManager {
throw new IllegalCustomNameException(translatable("fakeplayer.spawn.error.name.invalid", RED));
}
{
var player = Bukkit.getPlayerExact(name);
if (player != null) {
if (player.isDead()) {
throw new IllegalCustomNameException(translatable("fakeplayer.spawn.error.name.online-dead", text(name, GOLD), text("/fp respawn", DARK_GREEN)).color(RED));
} else {
throw new IllegalCustomNameException(translatable("fakeplayer.spawn.error.name.online", text(name, GOLD)).color(RED));
}
}
}
if (Bukkit.getPlayerExact(name) != null) {
throw new IllegalCustomNameException(translatable("fakeplayer.spawn.error.name.online", RED));
}
var player = Bukkit.getOfflinePlayer(name);

View File

@ -52,6 +52,7 @@ fakeplayer.command.look.description=Look
fakeplayer.command.look.down.description=Look down
fakeplayer.command.look.east.description=Look east
fakeplayer.command.look.entity.description=Look at nearest entity
fakeplayer.command.look.me.description=Look at you
fakeplayer.command.look.north.description=Look north
fakeplayer.command.look.south.description=Look south
fakeplayer.command.look.up.description=Look up
@ -63,6 +64,7 @@ fakeplayer.command.move.forward.description=Move forward
fakeplayer.command.move.left.description=Move left
fakeplayer.command.move.right.description=Move right
fakeplayer.command.reload-translation.description=Reload translation file
fakeplayer.command.reload.config-file-not-found=Config file {0} is not found, you should rename {1} to {0} as config file, NEVER MODIFY {1} !
fakeplayer.command.reload.description=Reload config file
fakeplayer.command.respawn.description=Respawn a dead fake player
fakeplayer.command.ride.anything.description=Ride any nearby entity
@ -94,6 +96,9 @@ fakeplayer.command.spawn.error.teleport-failed=Failed to teleport {0} to you, ca
fakeplayer.command.spawn.error.unknown=An error occurred while spawning a fake player
fakeplayer.command.spawn.success.with-lifespan=Spawned a fake player {0} at {1} he will be removed at {2}
fakeplayer.command.spawn.success.without-lifespan=Spawned a fake player {0} at {1}
fakeplayer.command.sprint.description=Sprinting
fakeplayer.command.sprint.success.disabled={0} is not sprinting anymore
fakeplayer.command.sprint.success.enabled={0} is sprinting
fakeplayer.command.status.description=Show status of fake player
fakeplayer.command.status.exp=- Experience: Level {0}, {1} experience points in total
fakeplayer.command.status.exp.withdraw=[<--Withdraw]
@ -127,20 +132,16 @@ fakeplayer.direction.north=north
fakeplayer.direction.south=south
fakeplayer.direction.up=up
fakeplayer.direction.west=west
fakeplayer.listener.login.deny-used-uuid=Your UUID was used by fake player, disallow to login
fakeplayer.listener.death.notify=Fake player {0} is dead, you could use {1} to respawn him
fakeplayer.listener.login.deny-used-uuid=Your UUID was used by fake player, disallow to login
fakeplayer.manager.inventory.title=Inventory of {0}
fakeplayer.manager.remove-all-on-low-tps=[Low tps, all fake players have been removed]
fakeplayer.spawn.error.name.online=This name already existed
fakeplayer.spawn.error.name.invalid=Invalid name
fakeplayer.spawn.error.name.online=Name {0} is online
fakeplayer.spawn.error.name.online-dead=Name {0} is online and dead, run {1} to respawn him if he is a fake player
fakeplayer.spawn.error.name.start-with-illegal-character=Name can not start with {0}
fakeplayer.spawn.error.name.too-long=Requires a name has less than {0} characters
fakeplayer.spawn.error.name.too-short=Requires a name has more than {0} characters
fakeplayer.spawn.error.name.used=Name {0} was used by a real player({1})
fakeplayer.command.reload.config-file-not-found=Config file {0} is not found, you should rename {1} to {0} as config file, NEVER MODIFY {1} !
fakeplayer.command.look.me.description=Look at you
fakeplayer.command.sprint.success.enabled={0} is sprinting
fakeplayer.command.sprint.success.disabled={0} is not sprinting anymore
fakeplayer.command.sprint.description=Sprinting

View File

@ -52,6 +52,7 @@ fakeplayer.command.look.description=\u8BA9\u5047\u4EBA\u770B\u5411\u6307\u5B9A\u
fakeplayer.command.look.down.description=\u5411\u4E0B\u770B
fakeplayer.command.look.east.description=\u5411\u4E1C\u770B
fakeplayer.command.look.entity.description=\u770B\u5411\u9644\u8FD1\u5B9E\u4F53
fakeplayer.command.look.me.description=\u770B\u5411\u4F60
fakeplayer.command.look.north.description=\u5411\u5317\u770B
fakeplayer.command.look.south.description=\u5411\u5357\u770B
fakeplayer.command.look.up.description=\u5411\u4E0A\u770B
@ -63,6 +64,7 @@ fakeplayer.command.move.forward.description=\u5411\u524D\u79FB\u52A8
fakeplayer.command.move.left.description=\u5411\u5DE6\u79FB\u52A8
fakeplayer.command.move.right.description=\u5411\u53F3\u79FB\u52A8
fakeplayer.command.reload-translation.description=\u91CD\u65B0\u52A0\u8F7D\u8BED\u8A00\u6587\u4EF6
fakeplayer.command.reload.config-file-not-found=\u914D\u7F6E\u6587\u4EF6 {0} \u4E0D\u5B58\u5728, \u4F60\u5E94\u8BE5\u5C06 {1} \u91CD\u547D\u540D\u4E3A {0} \u4F5C\u4E3A\u914D\u7F6E\u6587\u4EF6, \u6C38\u8FDC\u4E0D\u8981\u76F4\u63A5\u4FEE\u6539 {1} !
fakeplayer.command.reload.description=\u91CD\u65B0\u52A0\u8F7D\u914D\u7F6E\u6587\u4EF6
fakeplayer.command.respawn.description=\u590D\u6D3B\u5047\u4EBA
fakeplayer.command.ride.anything.description=\u9A91\u9644\u8FD1\u7684\u5B9E\u4F53
@ -94,6 +96,9 @@ fakeplayer.command.spawn.error.teleport-failed={0} \u4F20\u9001\u5230\u4F60\u8EA
fakeplayer.command.spawn.error.unknown=\u53EC\u5524\u5047\u4EBA\u65F6\u53D1\u751F\u5F02\u5E38
fakeplayer.command.spawn.success.with-lifespan=\u521B\u5EFA\u4E86\u5047\u4EBA {0}, \u4F4D\u4E8E {1}, \u5B58\u6D3B\u81F3 {2}
fakeplayer.command.spawn.success.without-lifespan=\u521B\u5EFA\u4E86\u5047\u4EBA {0}, \u4F4D\u4E8E {1}
fakeplayer.command.sprint.description=\u75BE\u8DD1
fakeplayer.command.sprint.success.disabled={0} \u4E0D\u518D\u75BE\u8DD1
fakeplayer.command.sprint.success.enabled={0} \u6B63\u5728\u75BE\u8DD1
fakeplayer.command.status.description=\u67E5\u770B\u5047\u4EBA\u72B6\u6001
fakeplayer.command.status.exp=- \u7ECF\u9A8C\u503C: {0} \u7EA7, \u5171 {1} \u70B9\u7ECF\u9A8C\u503C
fakeplayer.command.status.exp.withdraw=[<--\u62FF\u6765\u5427\u4F60]
@ -131,15 +136,12 @@ fakeplayer.listener.death.notify=\u5047\u4EBA {0} \u6B7B\u4EA1, \u53EF\u4EE5\u4F
fakeplayer.listener.login.deny-used-uuid=\u4F60\u7684 UUID \u88AB\u4F7F\u7528\u8FC7, \u4E0D\u80FD\u767B\u5F55\u670D\u52A1\u5668
fakeplayer.manager.inventory.title={0} \u7684\u7269\u54C1\u680F
fakeplayer.manager.remove-all-on-low-tps=[\u670D\u52A1\u5668\u8FC7\u4E8E\u5361\u987F, \u5DF2\u79FB\u9664\u6240\u6709\u5047\u4EBA]
fakeplayer.spawn.error.name.online=\u540D\u79F0\u5DF2\u88AB\u4F7F\u7528
fakeplayer.spawn.error.name.invalid=\u540D\u79F0\u4E0D\u7B26\u5408\u683C\u5F0F\u8981\u6C42
fakeplayer.spawn.error.name.online=\u540D\u79F0 {0} \u6B63\u5728\u6E38\u620F\u4E2D
fakeplayer.spawn.error.name.online-dead=\u540D\u79F0 {0} \u6B63\u5728\u6E38\u620F\u4E2D\u5E76\u4E14\u5DF2\u7ECF\u6B7B\u4EA1, \u5982\u679C\u4ED6\u662F\u4E00\u540D\u5047\u4EBA\u4F60\u9700\u8981\u6267\u884C {1} \u6765\u590D\u6D3B\u4ED6
fakeplayer.spawn.error.name.start-with-illegal-character=\u81EA\u5B9A\u4E49\u540D\u79F0\u4E0D\u80FD\u4EE5 {0} \u5F00\u5934
fakeplayer.spawn.error.name.too-long=\u540D\u79F0\u6700\u591A {0} \u4E2A\u5B57\u7B26
fakeplayer.spawn.error.name.too-short=\u540D\u79F0\u6700\u5C11 {0} \u4E2A\u5B57\u7B26
fakeplayer.spawn.error.name.used=\u540D\u79F0 {0} \u88AB\u771F\u5B9E\u73A9\u5BB6({1})\u4F7F\u7528\u8FC7\u4E86
fakeplayer.command.reload.config-file-not-found=\u914D\u7F6E\u6587\u4EF6 {0} \u4E0D\u5B58\u5728, \u4F60\u5E94\u8BE5\u5C06 {1} \u91CD\u547D\u540D\u4E3A {0} \u4F5C\u4E3A\u914D\u7F6E\u6587\u4EF6, \u6C38\u8FDC\u4E0D\u8981\u76F4\u63A5\u4FEE\u6539 {1} !
fakeplayer.command.look.me.description=\u770B\u5411\u4F60
fakeplayer.command.sprint.success.enabled={0} \u6B63\u5728\u75BE\u8DD1
fakeplayer.command.sprint.success.disabled={0} \u4E0D\u518D\u75BE\u8DD1
fakeplayer.command.sprint.description=\u75BE\u8DD1

View File

@ -52,6 +52,7 @@ fakeplayer.command.look.description=\u4EE4\u5047\u4EBA\u7747\u5411\u6307\u5B9A\u
fakeplayer.command.look.down.description=\u5411\u4E0B\u7747
fakeplayer.command.look.east.description=\u5411\u6771\u7747
fakeplayer.command.look.entity.description=\u7747\u5411\u9644\u8FD1\u5BE6\u9AD4
fakeplayer.command.look.me.description=\u7747\u5411\u4F60
fakeplayer.command.look.north.description=\u5411\u5317\u7747
fakeplayer.command.look.south.description=\u5411\u5357\u7747
fakeplayer.command.look.up.description=\u5411\u4E0A\u7747
@ -63,6 +64,7 @@ fakeplayer.command.move.forward.description=\u5411\u524D\u79FB\u52D5
fakeplayer.command.move.left.description=\u5411\u5DE6\u79FB\u52D5
fakeplayer.command.move.right.description=\u5411\u53F3\u79FB\u52D5
fakeplayer.command.reload-translation.description=\u91CD\u65B0\u52A0\u8F09\u8A9E\u8A00\u6587\u4EF6
fakeplayer.command.reload.config-file-not-found=\u914D\u7F6E\u6587\u4EF6 {0} \u4E0D\u5B58\u5728, \u4F60\u61C9\u8A72\u5C07 {1} \u6539\u540D\u70BA {0} \u4F5C\u70BA\u914D\u7F6E\u6587\u4EF6, \u6C38\u9060\u4E0D\u8981\u76F4\u63A5\u4FEE\u6539 {1} !
fakeplayer.command.reload.description=\u91CD\u65B0\u52A0\u8F09\u914D\u7F6E\u6587\u4EF6
fakeplayer.command.respawn.description=\u590D\u6D3B\u5047\u4EBA
fakeplayer.command.ride.anything.description=\u9A0E\u9644\u8FD1\u5605\u5BE6\u9AD4
@ -94,6 +96,9 @@ fakeplayer.command.spawn.error.teleport-failed={0} \u50B3\u9001\u5230\u4F60\u8EA
fakeplayer.command.spawn.error.unknown=\u53EC\u559A\u5047\u4EBA\u6642\u767C\u751F\u7570\u5E38
fakeplayer.command.spawn.success.with-lifespan=\u5275\u5EFA\u4E86\u5047\u4EBA {0}, \u4F4D\u65BC {1}, \u5B58\u6D3B\u81F3 {2}
fakeplayer.command.spawn.success.without-lifespan=\u5275\u5EFA\u4E86\u5047\u4EBA {0}, \u4F4D\u65BC {1}
fakeplayer.command.sprint.description=\u8DD1\u6B65
fakeplayer.command.sprint.success.disabled={0} \u4E0D\u518D\u8DD1\u6B65
fakeplayer.command.sprint.success.enabled={0} \u6B63\u5728\u8DD1\u6B65
fakeplayer.command.status.description=\u67E5\u770B\u5047\u4EBA\u72C0\u614B
fakeplayer.command.status.exp=- \u7D93\u9A57: {0} \u7D1A, \u5171 {1} \u9EDE\u7D93\u9A57\u503C
fakeplayer.command.status.exp.withdraw=[<--\u651E\u569F\u5566\u4F60]
@ -131,14 +136,10 @@ fakeplayer.listener.death.notify=\u5047\u4EBA {0} \u6B7B\u4EA1, \u53EF\u4EE5\u4F
fakeplayer.listener.login.deny-used-uuid=\u4F60\u5605 UUID \u88AB\u4F7F\u7528\u904E, \u5514\u53EF\u4EE5\u767B\u9304\u4F3A\u670D\u5668
fakeplayer.manager.inventory.title={0} \u7684\u7269\u54C1\u6B04
fakeplayer.manager.remove-all-on-low-tps=[\u7531\u4E8E\u4F3A\u670D\u5668 lag \u6A5F, \u5DF2\u79FB\u9664\u6240\u6709\u5047\u4EBA]
fakeplayer.spawn.error.name.online=\u540D\u7A31\u5DF2\u88AB\u4F7F\u7528
fakeplayer.spawn.error.name.invalid=\u540D\u7A31\u5514\u7B26\u5408\u683C\u5F0F\u8981\u6C42
fakeplayer.spawn.error.name.online=\u540D\u7A31 {0} \u6B63\u5728\u6E38\u620F\u4E2D
fakeplayer.spawn.error.name.online-dead=\u540D\u7A31 {0} \u6B63\u5728\u904A\u6232\u4E2D\u4E26\u4E14\u5DF2\u7D93\u6B7B\u4EA1, \u5982\u679C\u4F62\u55BA\u4E00\u540D\u5047\u4EBA\u4F60\u61C9\u8A72\u57F7\u884C {1} \u4F86\u5FA9\u6D3B\u4ED6
fakeplayer.spawn.error.name.start-with-illegal-character=\u81EA\u5B9A\u7FA9\u540D\u7A31\u5514\u53EF\u4EE5\u4EE5 {0} \u958B\u982D
fakeplayer.spawn.error.name.too-long=\u540D\u7A31\u81F3\u591A {0} \u500B\u5B57
fakeplayer.spawn.error.name.too-short=\u540D\u7A31\u81F3\u5C11 {0} \u500B\u5B57
fakeplayer.spawn.error.name.used=\u540D\u7A31 {0} \u88AB\u771F\u5BE6\u73A9\u5BB6({1})\u4F7F\u7528\u904E\u4E86
fakeplayer.command.reload.config-file-not-found=\u914D\u7F6E\u6587\u4EF6 {0} \u4E0D\u5B58\u5728, \u4F60\u61C9\u8A72\u5C07 {1} \u6539\u540D\u70BA {0} \u4F5C\u70BA\u914D\u7F6E\u6587\u4EF6, \u6C38\u9060\u4E0D\u8981\u76F4\u63A5\u4FEE\u6539 {1} !
fakeplayer.command.look.me.description=\u7747\u5411\u4F60
fakeplayer.command.sprint.success.enabled={0} \u6B63\u5728\u8DD1\u6B65
fakeplayer.command.sprint.success.disabled={0} \u4E0D\u518D\u8DD1\u6B65
fakeplayer.command.sprint.description=\u8DD1\u6B65
fakeplayer.spawn.error.name.used=\u540D\u7A31 {0} \u88AB\u771F\u5BE6\u73A9\u5BB6({1})\u4F7F\u7528\u904E\u4E86

View File

@ -52,6 +52,7 @@ fakeplayer.command.look.description=\u8B93\u5047\u4EBA\u770B\u5411\u6307\u5B9A\u
fakeplayer.command.look.down.description=\u5411\u4E0B\u770B
fakeplayer.command.look.east.description=\u5411\u6771\u770B
fakeplayer.command.look.entity.description=\u770B\u5411\u9644\u8FD1\u5BE6\u9AD4
fakeplayer.command.look.me.description=\u770B\u5411\u4F60
fakeplayer.command.look.north.description=\u5411\u5317\u770B
fakeplayer.command.look.south.description=\u5411\u5357\u770B
fakeplayer.command.look.up.description=\u5411\u4E0A\u770B
@ -63,6 +64,7 @@ fakeplayer.command.move.forward.description=\u5411\u524D\u79FB\u52D5
fakeplayer.command.move.left.description=\u5411\u5DE6\u79FB\u52D5
fakeplayer.command.move.right.description=\u5411\u53F3\u79FB\u52D5
fakeplayer.command.reload-translation.description=\u91CD\u65B0\u52A0\u8F09\u8A9E\u8A00\u6587\u4EF6
fakeplayer.command.reload.config-file-not-found=\u914D\u7F6E\u6587\u4EF6 {0} \u4E0D\u5B58\u5728, \u4F60\u61C9\u8A72\u5C07 {1} \u91CD\u547D\u540D\u70BA {0} \u4F5C\u70BA\u914D\u7F6E\u6587\u4EF6, \u6C38\u9060\u4E0D\u8981\u76F4\u63A5\u4FEE\u6539 {1} !
fakeplayer.command.reload.description=\u91CD\u65B0\u52A0\u8F09\u914D\u7F6E\u6587\u4EF6
fakeplayer.command.respawn.description=\u5FA9\u6D3B\u5047\u4EBA
fakeplayer.command.ride.anything.description=\u9A0E\u9644\u8FD1\u7684\u5BE6\u9AD4
@ -94,6 +96,9 @@ fakeplayer.command.spawn.error.teleport-failed={0} \u50B3\u9001\u5230\u4F60\u8EA
fakeplayer.command.spawn.error.unknown=\u53EC\u559A\u5047\u4EBA\u6642\u767C\u751F\u7570\u5E38
fakeplayer.command.spawn.success.with-lifespan=\u5275\u5EFA\u4E86\u5047\u4EBA {0}, \u4F4D\u65BC {1}, \u5B58\u6D3B\u81F3 {2}
fakeplayer.command.spawn.success.without-lifespan=\u5275\u5EFA\u4E86\u5047\u4EBA {0}, \u4F4D\u65BC {1}
fakeplayer.command.sprint.description=\u8DD1\u6B65
fakeplayer.command.sprint.success.disabled={0} \u4E0D\u518D\u8DD1\u6B65
fakeplayer.command.sprint.success.enabled={0} \u6B63\u5728\u8DD1\u6B65
fakeplayer.command.status.description=\u67E5\u770B\u5047\u4EBA\u72C0\u614B
fakeplayer.command.status.exp=- \u7D93\u9A57\u503C: {0} \u7D1A, \u5171 {1} \u9EDE\u7D93\u9A57\u503C
fakeplayer.command.status.exp.withdraw=[<--\u62FF\u4F86\u5427\u4F60]
@ -131,14 +136,10 @@ fakeplayer.listener.death.notify=\u5047\u4EBA {0} \u6B7B\u4EA1, \u53EF\u4EE5\u4F
fakeplayer.listener.login.deny-used-uuid=\u4F60\u7684 UUID \u88AB\u4F7F\u7528\u904E, \u4E0D\u80FD\u767B\u9304\u4F3A\u670D\u5668
fakeplayer.manager.inventory.title={0} \u7684\u7269\u54C1\u6B04
fakeplayer.manager.remove-all-on-low-tps=[\u4F3A\u670D\u5668\u904E\u65BC\u5361\u9813, \u5DF2\u79FB\u9664\u6240\u6709\u5047\u4EBA]
fakeplayer.spawn.error.name.online=\u540D\u7A31\u5DF2\u88AB\u4F7F\u7528
fakeplayer.spawn.error.name.invalid=\u540D\u7A31\u4E0D\u7B26\u5408\u683C\u5F0F\u8981\u6C42
fakeplayer.spawn.error.name.online=\u540D\u7A31 {0} \u5DF2\u5728\u904A\u6232\u4E2D
fakeplayer.spawn.error.name.online-dead=\u540D\u7A31 {0} \u6B63\u5728\u904A\u6232\u4E2D\u4E26\u4E14\u5DF2\u7D93\u6B7B\u4EA1, \u5982\u679C\u4ED6\u662F\u4E00\u540D\u5047\u4EBA\u4F60\u9700\u8981\u57F7\u884C {1} \u4F86\u5FA9\u6D3B\u4ED6
fakeplayer.spawn.error.name.start-with-illegal-character=\u81EA\u5B9A\u7FA9\u540D\u7A31\u4E0D\u80FD\u4EE5 {0} \u958B\u982D
fakeplayer.spawn.error.name.too-long=\u540D\u7A31\u6700\u591A {0} \u500B\u5B57\u7B26
fakeplayer.spawn.error.name.too-short=\u540D\u7A31\u6700\u5C11 {0} \u500B\u5B57\u7B26
fakeplayer.spawn.error.name.used=\u540D\u7A31 {0} \u88AB\u771F\u5BE6\u73A9\u5BB6({1})\u4F7F\u7528\u904E\u4E86
fakeplayer.command.reload.config-file-not-found=\u914D\u7F6E\u6587\u4EF6 {0} \u4E0D\u5B58\u5728, \u4F60\u61C9\u8A72\u5C07 {1} \u91CD\u547D\u540D\u70BA {0} \u4F5C\u70BA\u914D\u7F6E\u6587\u4EF6, \u6C38\u9060\u4E0D\u8981\u76F4\u63A5\u4FEE\u6539 {1} !
fakeplayer.command.look.me.description=\u770B\u5411\u4F60
fakeplayer.command.sprint.success.enabled={0} \u6B63\u5728\u8DD1\u6B65
fakeplayer.command.sprint.success.disabled={0} \u4E0D\u518D\u8DD1\u6B65
fakeplayer.command.sprint.description=\u8DD1\u6B65
fakeplayer.spawn.error.name.used=\u540D\u7A31 {0} \u88AB\u771F\u5BE6\u73A9\u5BB6({1})\u4F7F\u7528\u904E\u4E86