diff --git a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameManager.java b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameManager.java index 5de61cd..17cab44 100644 --- a/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameManager.java +++ b/fakeplayer-core/src/main/java/io/github/hello09x/fakeplayer/core/manager/naming/NameManager.java @@ -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); diff --git a/fakeplayer-core/src/main/resources/message/message.properties b/fakeplayer-core/src/main/resources/message/message.properties index 2166d4e..6823d0b 100644 --- a/fakeplayer-core/src/main/resources/message/message.properties +++ b/fakeplayer-core/src/main/resources/message/message.properties @@ -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 diff --git a/fakeplayer-core/src/main/resources/message/message_zh.properties b/fakeplayer-core/src/main/resources/message/message_zh.properties index ede8654..3be59ad 100644 --- a/fakeplayer-core/src/main/resources/message/message_zh.properties +++ b/fakeplayer-core/src/main/resources/message/message_zh.properties @@ -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 + diff --git a/fakeplayer-core/src/main/resources/message/message_zh_HK.properties b/fakeplayer-core/src/main/resources/message/message_zh_HK.properties index 1ed3d7c..07660c4 100644 --- a/fakeplayer-core/src/main/resources/message/message_zh_HK.properties +++ b/fakeplayer-core/src/main/resources/message/message_zh_HK.properties @@ -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 \ No newline at end of file +fakeplayer.spawn.error.name.used=\u540D\u7A31 {0} \u88AB\u771F\u5BE6\u73A9\u5BB6({1})\u4F7F\u7528\u904E\u4E86 \ No newline at end of file diff --git a/fakeplayer-core/src/main/resources/message/message_zh_TW.properties b/fakeplayer-core/src/main/resources/message/message_zh_TW.properties index ed508fb..e4aed7e 100644 --- a/fakeplayer-core/src/main/resources/message/message_zh_TW.properties +++ b/fakeplayer-core/src/main/resources/message/message_zh_TW.properties @@ -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 \ No newline at end of file +fakeplayer.spawn.error.name.used=\u540D\u7A31 {0} \u88AB\u771F\u5BE6\u73A9\u5BB6({1})\u4F7F\u7528\u904E\u4E86 \ No newline at end of file