首页 > 解决方案 > 使用 python 和 mcpi 的 Minecraft 自定义命令

问题描述

我刚开始使用mcpi,我想要自定义命令来捕获以/.

如何使用自定义命令来完成此操作?

标签: pythonminecraft

解决方案


据我所知,mcpi 不支持命令系统。但是,如果 mcpi 支持消息发送事件,那么编写自己的应该不会太困难,不确定它会在 API 中调用什么,但我猜它会是这样的。无论如何,我对如何实现它有一些想法,有些比其他更好。

1.检查“intercepted”或received消息是否有/前置,如果有,去掉前缀,用空格分割字符串。然而,这提供了一些值得注意的问题。一方面,代码会变得非常混乱,非常混乱,因为你必须自己处理每一个参数。其次,它消除了“转义”参数的可能性,您可以在其中说给出一个字符串参数,并用双引号括起来并且可以包含空格。这将无法工作,因为无论空格是否在引号内,它都会拆分,并且不承认它们。这些是这种相对基本的实现的局限性。因此,想法#2。

  1. 我将此实现用于我的参数解析器,用于 Golang Discord 机器人库的帮助程序库。jist 归结为再次检查前缀,将其删除。然后检查消息字符串的长度是否不为 0。如果为 0,则忽略该消息,否则执行以下操作: 有一个用于标识参数的正则表达式,无论是转义还是非转义。查找字符串中的所有匹配项,(忽略不匹配项,使额外的空白不是问题......是的!)。将所有匹配项存储在“Argument”对象中,该对象将具有一些帮助方法,用于将字符串解析为浮点数或整数。(更干净的代码!!)。最后,将所有参数放入一个数组或链表中,只要它们是有序的,然后从那里开始工作。如果您需要参考(它是用 Golang 编写的,但它https://github.com/32Bites/wetgear

抱歉,如果这很难阅读,请告诉我您是否需要任何帮助或任何事情,无论我祝您一切顺利。


推荐阅读