AnzhiZhang/MCDReforgedPlugins

[Gamemode]: 如何解决玩家名称前缀问题

Closed this issue · 1 comments

发现过程

不久前,我对我的服务器引进了称号系统(用原版的Team实现,格式是 [称号]名称 ),在加上前缀后,我发现Gamemode就不好使了。输入!!spec没反应,啥事没有
后来我了解到这似乎是因为MCDR只会接收玩家“显示的名称”,于是我翻看MCDR帮助文档中服务端处理器部分并成功把其中展示的处理器示例实装到服务器上,但后面还是出了问题,就来这发issue了

问题

实装处理器后的服务端能够接到并处理带有前缀玩家发送的!!MCDR命令、其他插件的命令,但Gamemode插件失效了,实装处理器后使用!!spec时会提示已切换至旁观模式,但就是无法成功切换,仍然停留在生存
搭载服务端的系统:Centos 7.3
Python 3.9.5
Java:
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment 21.3 (build 16.0.1+9)
OpenJDK 64-Bit Server VM 21.3 (build 16.0.1+9, mixed mode, sharing)
游戏版本1.17
加载的所有插件:

[MCDR] [10:49:07] [TaskExecutor/INFO]: 26x 已加载插件
[MCDR] [10:49:07] [TaskExecutor/INFO]: - beep (beep@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - BiliWiki (biliwiki@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - calculator (calculator@0.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - ConfigAPI (config_api@0.0.3)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - CoolQAPI (cool_q_api@0.2.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - daycount (daycount@0.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Daytime (daytime@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Gamemode (gamemode@0.0.1)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Here (here@1.0.1)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - JsonDataAPI (json_data_api@0.0.1)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Markit (markit@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Task (mcd_task@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - MCDReforged (mcdreforged@1.5.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Minecraft Data API (minecraft_data_api@1.3.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - OnlinePlayerAPI (online_player_api@0.0.1)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - pget_pure (pget_pure@0.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - QQChat (qq_chat@0.0.3)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Quick Backup Multi (quick_backup_multi@1.1.3)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - seed (seed@0.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Start Stop Helper (start_stop_helper@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - stext (stext@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - test (test@0.0.0)  <-这个是我自己写的TPA插件
[MCDR] [10:49:07] [TaskExecutor/INFO]: - Timed QBM (timed_quick_backup_multi@1.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: - tpa (tpa@0.0.0)
[MCDR] [10:49:07] [TaskExecutor/INFO]: 0x 已禁用插件
[MCDR] [10:49:07] [TaskExecutor/INFO]: 0x 未加载插件

游戏内信息:
B %(N9_6_GMEG7E7 J @B49
控制台报错:

[Server] [10:39:29] [Server thread/INFO]: <[赞助者]boring_314> !!spec
[Server] [10:39:29] [Server thread/INFO]: [赞助者]boring_314 has the following entity data: "minecraft:overworld"
[MCDR] [10:39:34] [Gamemode switch mode/WARNING]: [Minecraft Data API] Query for player boring_314 at path  Dimension timeout
Exception in thread Gamemode switch mode:
Traceback (most recent call last):
  File "/usr/local/python3/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/usr/local/python3/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/root/MCDReforged/plugins/Gamemode.py", line 67, in change_mode
    sur_to_spec(server, player)
  File "/root/MCDReforged/plugins/Gamemode.py", line 155, in sur_to_spec
    dim = DIMENSIONS[api.get_player_info(player, 'Dimension')]
KeyError: None

这是为什么,我该如何解决这个问题?

[MCDR] [10:39:34] [Gamemode switch mode/WARNING]: [Minecraft Data API] Query for player boring_314 at path  Dimension timeout

请勿发送无关issue