插件开发的一些提示¶
下面的提示对我们很有帮助
帮助消息¶
使用 server.register_help_message()
来为你的插件添加一些必要的提示,这样玩家就可以使用 !!help
命令来了解如何使用你的插件。
当然,如果你的插件只能被有足够权限的玩家使用,请在注册时指定 permission 参数。
事件监听¶
如果你不关心非用户的信息源,与其监听 标准信息事件,不如监听 用户信息事件。这可以在服务端刷屏非用户信息时(如使用 Litematica mod 粘贴蓝图)提升 MCDR 的性能表现。
如果你只关心用户输入的指令,与其监听 用户信息事件,你还可以 注册一棵指令树。这比手动在 用户信息事件 高效不少。
MCDR 终止事件 能给你充足的时间来进行保存数据等操作。不过要小心,不要死循环了,MCDR 在等着你运算完成。
多线程¶
如果你想要在你的插件中执行需要一些时间才能完成的任务,如网络操作或者文件操作,建议将你的代码放到一个独立的线程里执行,而不是直接在你注册的事件监听器函数中执行。否则 MCDR 余下任务的执行可能会被阻塞。
为了更易于使用,你可以使用一个名为 new_thread 的函数装饰器来使你的函数异步地执行。
用户配置、数据及日志文件¶
如果你需要储存一些用户配置或数据文件,推荐将它们储存到 config
文件夹中而不是储存到插件文件夹中。
其中的原因是,用户可能会把他们的插件放置在另外非默认的文件夹中,甚至可能会让多个 MCDR 实例共享使用一个相同的插件文件夹。这是可以通过修改配置文件选项 plugin_directories 来实现的。
如果你将你的配置数据文件储存在了插件文件夹中,那你就无法区分出该配置文件是属于哪一个 MCDR 实例了。因此,你可以将这些文件直接储存至 config
文件夹,或者 config
中的一个子文件夹如 config/my_plugin/
中,这样每个加载你的插件的 MCDR 实例即可拥有独享的用户配置数据。
对于日志文件,把它们储存至 logs/
文件夹中是一个不错的选择。
额外的 Python 包¶
有时候你的插件需要一些额外的资源文件,或者需要一些其他的 .py
代码文件作为运行库。对于这些文件,你可以将它们放置在位于插件文件夹中的一个自定义包中。
举个例子,如果插件文件夹是 plugins/
,其中的文件结构可以如下所示:
plugins/
├─ my_plugin/
│ ├─ __init__.py
│ ├─ a_useful_library.py
│ ├─ my_resources.dat
│ └─ ...
├─ MyPlugin.py
└─ ...
然后你的插件 MyPlugin.py
就可以直接使用 from my_plugin import a_useful_library
导入你的库或资源文件。
不用担心,MCDR 会自动地 将所有插件文件夹添加至 sys.path
中,因此你可以直接 import 位于插件文件夹中的包。