Skip to content

项目快速入门指南

这里是一个非常简洁的指南,用于创建你的第一个 PySpigot 项目。

下载和加载 PySpigot

PySpigot 官方支持在 Spigot 和 Paper 上以及在 Minecraft 版本 1.16 及更高版本上运行。我无法保证 PySpigot 可以在这些条件之外正常工作,但某些用户报告在其他服务器软件和/或较旧的 MC 版本上取得成功。

截至版本 0.6.0,PySpigot 是基于 Java 17 构建的。这意味着从版本 0.6.0 开始,PySpigot 需要 Java 17 或更高版本。

GitHubSpigot 下载最新版本的 PySpigot。将下载的 Jar 文件放入插件文件夹,然后启动你的服务器。

创建你的第一个脚本

在这个简短的教程中,我们将创建一个非常简单的项目,注册一个事件监听器。

创建项目文件夹

所有项目应放置在 PySpigot 主插件文件夹中的 projects 文件夹中。该主 projects 文件夹内的每个文件夹都被视为一个独立项目。所有项目的名称必须在其他项目和单个文件脚本之间是唯一的(即,脚本和项目不能共享相同的名称)。

projects 文件夹中创建一个文件夹,并随意命名它。文件夹名称将作为该项目的名称,稍后将用于加载和卸载该项目。

提示

PySpigot 将尝试加载 projects 文件夹中的所有文件夹(作为单独的项目)。你可以通过在其 项目选项 中设置 enabled: false 来禁用一个项目。

创建 project.yml

虽然不是必需的,但强烈建议在项目的根文件夹中创建一个project.yml文件。这个文件作为项目的项目选项的源,在这里放置着项目特定的选项。PySpigot要求文件名必须是project.yml,并且位于项目的根目录中。

在你之前创建的文件夹中创建一个名为project.yml的文件。

使用你选择的文本编辑器打开刚创建的文件,并添加以下内容:

1
main: 'main.py' # (1)!
  1. 这个指令告诉PySpigot我们项目中哪个文件是“main”模块,这样它就知道在加载项目时执行哪个模块。

创建监听器模块

接下来,在项目的根文件夹中创建一个Python模块,命名为listener.py

使用你选择的文本编辑器打开listener.py模块,并添加一些代码:

1
2
3
4
5
6
7
8
import pyspigot as ps # (1)!
from org.bukkit.event.player import AsyncPlayerChatEvent # (2)!

def chat_event(event): # (3)!
    print(event.getMessage()) # (4)!

def register_events(): # (5)!
    ps.listener_manager().registerListener(chat_event, AsyncPlayerChatEvent) # (6)!
  1. 首先,我们导入pyspigot辅助模块
  2. 接下来,我们导入我们想要监听的事件,在这种情况下是AsyncPlayerChatEvent
  3. 然后,我们定义一个函数,作为事件的实际监听器。当事件被触发时,该函数将被调用。将会传递一个包含与事件相关数据的AsyncPlayerChatEvent对象。
  4. 在此处,我们打印发送的聊天消息到控制台。
  5. 在这里,我们创建一个可以从项目的主模块中调用的函数,用于注册事件监听器。
  6. 在这里,利用PySpigot的监听器管理器注册我们的事件,传递我们之前定义的函数以及要监听的事件。

保存文件并退出。

创建主模块

最后,在项目的根文件夹中创建另一个Python模块,并命名为main.py

使用您喜欢的文本编辑器打开main.py模块,并添加以下代码:

1
2
3
4
5
import listener # (1)!
from org.bukkit import Bukkit # (2)!

listener.register_events() # (3)!
Bukkit.broadcastMessage('Registered event listener!') # (4)!
  1. 首先,我们导入在前一步中创建的监听器模块。
  2. 接下来,我们导入Bukkit类以广播消息。
  3. 然后,我们调用监听器模块中的register_events函数来注册之前设置的监听器。
  4. 在此处,我们使用broadcastMessage函数向服务器广播一条消息,通知监听器已注册。

运行项目

如果一切操作正确,项目应在服务器启动时自动加载。这是预期行为;PySpigot 将在插件加载时自动加载和运行scriptsprojects文件夹中的所有脚本和项目。

或者,如果服务器已经在运行且 PySpigot 插件已加载并启用,您可以使用命令 /pyspigot load <projectname> 来加载和运行项目,传递根项目文件夹的名称作为projectname

使用命令 /pyspigot info <projectname> 验证项目已加载并运行,并且已为AsyncPlayerChatEvent注册了监听器。

下一步

查看文档的其余部分以获取更高级的脚本编写内容。

如果遇到困难需要帮助,如果还未加入 PySpigot 的 Discord 服务器