Paper项目设置
由于Paper团队主要使用IntelliJ IDEA,本指南将重点介绍该IDE。 但是,以下步骤也适用于其他IDE,只需做一些小的改动。
Paper团队使用Gradle作为其构建系统,其工具都是为Gradle实现的。 下面的大部分代码可以修改为适用于其他构建系统(如Maven),但本指南仅涵盖Gradle。
在这里了解如何从Maven迁移到Gradle。
创建新项目
打开你的IDE并选择创建新项目的选项。
在IntelliJ中,你将可以选择要创建的项目类型 - 选择New Project。
选择Gradle - Kotlin DSL并点击Create。
你将进入build.gradle.kts文件,在这里你可以添加你的依赖。
添加Paper作为依赖
要添加Paper作为依赖,你需要将Paper仓库添加到你的build.gradle.kts或pom.xml文件中,以及依赖本身。
- Gradle Kotlin DSL
- Gradle Groovy DSL
- Maven POM
设置src目录
如果你的IDE自动创建了src目录,你可以跳过这一步。
要设置src目录,你需要创建一个名为src的新目录,然后在其中创建一个名为main的新目录。
在main内,创建两个名为java和resources的新目录。
它应该看起来像这样:
...
example-plugin
├── build.gradle.kts
├── settings.gradle.kts
└── src
└── main
├── java
└── resources
...
设置java目录
你将在java目录中放置你的Java源文件。你首先需要创建一些包来组织你的代码。
对于这个例子,我们将创建三个名为io.papermc.testplugin的包,然后在其中创建一个名为ExamplePlugin的类。
...
example-plugin
├── build.gradle.kts
├── settings.gradle.kts
└── src
└── main
├── java
│ └── io
│ └── papermc
│ └── testplugin
│ └── ExamplePlugin.java
└── resources
...
包
你可以看到这里ExamplePlugin类位于io.papermc.testplugin包中。
包是一种组织代码的方式 - 本质上,它是一个文件夹。Java包用于对相关类进行分组。
如果你想了解更多,Oracle有一个关于包的指南。
在命名包时,你应该使用反向顺序的域名。例如,如果你的域名是papermc.io,
你的包名应该是io.papermc。如果你没有域名,你可以使用类似你的GitHub用户名的东西。
如果你是Linus Torvalds,你的包将是io.github.torvalds。
然后是你的项目名称。
例如,如果你的项目叫做ExamplePlugin,你的包将是io.github.torvalds.exampleplugin。
这允许每个插件都有一个唯一的包名。
_main_类
主类是你的插件的入口点,并且将是你的插件中唯一继承
JavaPlugin的类。
这是你的ExamplePlugin类可能的样子:
package io.papermc.testplugin;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class ExamplePlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
event.getPlayer().sendMessage(Component.text("你好, " + event.getPlayer().getName() + "!"));
}
}
设置resources
resources目录是你放置插件的plugin.yml文件的地方。有关更多信息,请参见Plugin YML页面。
使用Minecraft Development IntelliJ插件
或者,你可以使用Minecraft Development IntelliJ插件 来创建新项目。
本教程仅适用于IntelliJ IDEA。如果你使用其他IDE,请按照上述手动项目设置指南进行操作。
安装Minecraft Development插件
首先你需要安装Minecraft Development插件。
你可以通过转到File > Settings > Plugins并在Marketplace部分搜索Minecraft Development来完成此操作。

安装插件后,你需要重启IntelliJ。
要重启,你可以点击安装插件后出现的Restart IDE按钮。

创建新项目
安装插件后,你可以通过转到File > New > Project...并从选项列表中选择Minecraft来创建新项目。

你将被要求提供一些关于你的项目的信息。
| 字段 | 说明 |
|---|---|
| Name | 你的项目名称。 |
| Location | 你的项目位置。这是项目文件将存储的位置。 |
| Platform Type | 你正在开发的平台类型。这应该是Plugin。 |
| Platform | 你正在开发的平台。这应该是Paper。 |
| Minecraft Version | 你正在开发的Minecraft版本。 |
| Plugin Name | 你的插件名称。 |
| Main Class | 你的插件的主类。这应该是继承JavaPlugin的类。 |
| Optional Settings | 在这里你可以定义作者、网站、描述等内容。这些是可选的,插件工作不需要它们。 |
| Build System | 你想使用的构建系统。Paper推荐使用Gradle,但如果你喜欢也可以使用Maven。 |
| Paper Manifest | 是否要使用新的Paper插件。目前不推荐这样做,因为它仍在开发中。 |
| Group ID | 你的项目的组ID。这用于Maven和Gradle。这通常是你的域名的反向。如果你不知道应该在这里放什么,你可以使用类似io.github.<yourname>的东西,或者如果你没有GitHub,你可以使用me.<yourname>。 |
| Artifact ID | 你的项目的工件ID。这用于Maven和Gradle。这通常是你的项目名称。这通常与Name字段相同。 |
| Version | 你的项目的版本。这用于Maven和Gradle。这通常是1.0-SNAPSHOT,现在并不重要。 |
| JDK | 你想使用的JDK。这可以是Java 21及以上的任何版本。 |
现在你可以点击Create按钮,IntelliJ将为你创建项目。
如果一切顺利,你应该看到类似这样的内容:

插件重映射
从1.20.5开始,Paper使用Mojang映射的运行时而不是将服务器重新混淆为Spigot映射。 如果你使用Spigot/Bukkit插件,你的插件将被假定为Spigot映射。 这意味着服务器在首次加载时必须反混淆并重新映射插件JAR。
paperweight-userdev已经自动设置了这个属性。有关更多信息,请参见userdev文档。
Mojang映射
要告诉服务器你的插件是Mojang映射的,你需要将以下代码添加到你的构建脚本中:
如果你使用Paper插件,不需要这一步,因为插件将被假定为Mojang映射。
- Gradle Kotlin DSL
- Maven POM
tasks.jar {
manifest {
attributes["paperweight-mappings-namespace"] = "mojang"
}
}
// 如果你配置了shadowJar
tasks.shadowJar {
manifest {
attributes["paperweight-mappings-namespace"] = "mojang"
}
}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<archive>
<manifestEntries>
<paperweight-mappings-namespace>mojang</paperweight-mappings-namespace>
</manifestEntries>
</archive>
</configuration>
</plugin>
Spigot映射
如果你明确想告诉服务器你的插件是Spigot映射的,你需要将以下代码添加到你的构建脚本中:
- Gradle Kotlin DSL
- Maven POM
tasks.jar {
manifest {
attributes["paperweight-mappings-namespace"] = "spigot"
}
}
// 如果你配置了shadowJar
tasks.shadowJar {
manifest {
attributes["paperweight-mappings-namespace"] = "spigot"
}
}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<archive>
<manifestEntries>
<paperweight-mappings-namespace>spigot</paperweight-mappings-namespace>
</manifestEntries>
</archive>
</configuration>
</plugin>
结论
现在你应该已经设置好了一个带有Paper依赖的项目。 你剩下要做的就是编译你的插件并在Paper服务器上运行它。
如果你想简化测试插件的过程,你可以使用Run-Task Gradle插件。 它将自动下载Paper服务器并为你运行它。
如果你使用IntelliJ,你可以使用在IDE右上角找到的Gradle GUI Build菜单来编译你的插件。
你的插件的输出JAR将在build/libs目录中。