Skip to content

定义命令

PySpigot允许你在脚本中定义、注册和注销命令。这些命令在游戏中的功能与任何插件定义的命令一样。

有关将命令管理器导入脚本的说明,请访问 通用信息 页面。

信息

这不是Bukkit命令的全面指南。有关命令的更完整指南,请参阅Spigot关于命令的教程 此处

使用命令管理器

命令管理器提供多个函数供您注册和注销命令,包括:

  • registerCommand(command_function, name): 注册命令的最基本方式。
  • registerCommand(command_function, tab_function, name)
  • registerCommand(command_function, name, permission)
  • registerCommand(command_function, tab_function, name, permission)
  • registerCommand(command_function, name, aliases, permission)
  • registerCommand(command_function, tab_function, name, aliases, permission)
  • registerCommand(command_function, name, description, usage)
  • registerCommand(command_function, tab_function, name, description, usage)
  • registerCommand(command_function, name, description, usage, aliases)
  • registerCommand(command_function, tab_function, name, description, usage, aliases)
  • registerCommand(command_function, tab_function, name, description, usage, aliases, permission): 注册命令的最全面方式。
  • unregisterCommand(name): 允许您使用命令名称从脚本中注销命令。
  • unregisterCommand(command): 允许您从脚本中注销命令。接受从任何registerCommand函数返回的ScriptCommand对象。

请查看下面的部分,了解关于registerCommand函数的参数描述。

所有上述的registerCommand函数都会返回一个ScriptCommand对象,如果需要的话,可以用它来取消注册该命令。

小贴士

当你的脚本停止或卸载时,你不需要取消注册你的命令。PySpigot会为你处理这些。

函数参数

上述函数的参数描述如下:

  • command_function:当命令在游戏中运行或在服务器控制台中运行时应调用的函数。命令函数应该始终返回TrueFalse。如果命令被正确使用,则返回True。如果没有,则返回False。此函数还应接受三个参数:
    • sender,代表执行命令的发送者(玩家或控制台),
    • label,代表键入的标签(命令名称或其别名之一),以及
    • args,传递给命令的参数列表。
    • 欲获取更多信息,请参阅Spigot关于命令的教程
  • tab_function:在键入命令时应调用以生成可自动补全的项目列表的函数。
  • name:要注册的命令的名称
  • description:命令的描述
  • usage:如果使用不正确,向执行命令的人打印的消息。这由从命令函数中返回TrueFalse来进行程序控制。
  • aliases:命令的别名列表。
  • permission:执行该命令所需的权限节点。

代码示例

让我们看下面的代码,定义并注册一个命令:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import pyspigot as ps # (1)!

def kick_command(sender, label, args): # (2)!
    # 在这里执行一些操作...
    return True # (3)!

def tab_kick_command(sender, alias, args): # (4)!
    # 在这里执行一些操作...
    return ['',] # (5)!

registered_command = ps.command.registerCommand(kick_command, tab_kick_command, 'kickplayer') # (6)!
  1. 在这里,我们使用registerCommand(command_function, tab_function, name)进行命令注册。我们还将registerCommand的返回值分配给registered_command。这是一个ScriptCommand对象,表示已注册的命令。这可以用于稍后取消注册命令。

所有命令必须通过 PySpigot 的命令管理器注册才能运行。命令可以通过多种方式注册。在上面的代码中,使用了registerCommand(function, name)函数,它接受两个参数:

  • 第一个参数接受在执行命令时应调用的函数。
  • 第二个参数是命令的名称,一个str

取消注册命令

继续上面的代码示例:

1
ps.command.unregisterCommand(registered_command) # (1)!
  1. 在这里,我们通过传递之前注册命令时分配的ScriptCommand对象来取消注册命令。如果不想存储ScriptCommand对象,也可以通过传递命令的名称来取消注册命令。
Tip

若要了解更多命令功能示例,请查看示例脚本

总结

  • 命令在脚本中定义为函数。命令函数必须接受三个参数:发送者、标签和参数(这些参数的名称可以随您喜欢)。在执行命令时调用该函数。
  • 使用制表函数返回在键入命令时可以进行制表完成的项目。
  • 所有命令必须使用command.registerCommand(function, name)注册到 PySpigot 的命令管理器中。