• 欢迎来到Minecraft插件百科!
  • 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
  • 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289

防滥用过滤器日志

滥用过滤器导航主页 | 最近过滤器更改 | 检查过去的编辑 | 滥用日志
跳转至: 导航搜索

本日志列出了过滤器捕捉到的所有操作。

日志详情:246

2024年3月21日 (四) 20:45:Tumuidle讨论 | 贡献Paper/Paper 项目的搭建执行操作“edit”时触发了过滤器4。采取的行动:警告;过滤器描述:禁止段首空两格(检查

编辑中的更改

  
 
Paper 团队使用 [https://gradle.org/ Gradle] 作为 Paper 等项目的构建工具,其插件开发工具链使用 Gradle 对项目进行依赖管理。 在经过修改后,下文代码也将适用于其它构建工具,例如Maven。不过本文所提供的代码将只涉及Gradle。 阅读[https://docs.gradle.org/current/userguide/migrating_from_maven.html 此文档]学习如何从 Maven 迁移到Gradle。
 
Paper 团队使用 [https://gradle.org/ Gradle] 作为 Paper 等项目的构建工具,其插件开发工具链使用 Gradle 对项目进行依赖管理。 在经过修改后,下文代码也将适用于其它构建工具,例如Maven。不过本文所提供的代码将只涉及Gradle。 阅读[https://docs.gradle.org/current/userguide/migrating_from_maven.html 此文档]学习如何从 Maven 迁移到Gradle。
 +
 +
== 使用 Minecraft Development ==
 +
 +
=== 安装 Minecraft Development插件 ===
 +
 +
打开IntelliJ IDEA,在主界面中选中 Customize(自定义) -> All Settings (全部设置) -> Plugins (插件),在顶部选中Marketplace
 +
 +
搜索Minecraft Development,点击安装,完成后重启IntelliJ IDEA
 +
 +
=== 创建项目 ===
 +
 +
在创建项目对话框中选中 Minecraft,Platform Type(平台类型)为Plugin,Platform(平台)为Bukkit
 +
 +
Bukkit Platform按照情况选择,Spigot兼容大部分Bukkit服务端,Paper则在Spigot的基础上有新增API
 +
 +
Minecraft Version(Minecraft版本)视情况选择,Plugin Name(Plugin名称)为插件名称,主类可以直接使用自动生成的名称
 +
 +
Optional Settings中为可选项,按需填写
 +
 +
构建系统 Gradle/Maven
 +
 +
Paper Manifest -> Use paper-plugin.yml 此项启用后将作为Paper插件,不再支持Spigot和Bukkit服务端
 +
 +
构建系统与创建常规项目同理
 +
 +
JDK按照Minecraft版本选择,1.16以下使用JDK8+,1.17使用JDK16+,1.18开始使用JDK17+
 +
 +
== 手动创建 ==
  
 
=== 创建新项目 ===
 
=== 创建新项目 ===
 
编译成功后输出的 jar 文件应该存放在 <code>build/libs</code> 文件夹中。<br />
 
编译成功后输出的 jar 文件应该存放在 <code>build/libs</code> 文件夹中。<br />
 
</blockquote>
 
</blockquote>
 +
 +
== 使用Paperweight Userdev ==
 +
 +
[https://docs.papermc.io/paper/dev/userdev 官方文档]
 +
 +
paperweight是Paper的定制构建工具的名称。Gradle插件部分提供了在开发期间访问内部代码(也称为NMS)的功能。
 +
 +
通过API在下载页面上提供的Paper服务器jar是Paperclip jar。它们使用Spigot的映射,这些映射本质上是一些类型名称,但完全混淆了字段和方法。这使得它很难在开发环境中使用。这个插件允许您在开发期间使用完全去混淆的类型、名称和字段,然后重新映射您的插件,因此它仍然可以与混淆的服务器一起使用。
 +
 +
'''重新混淆不适用于反射。查看类似于 [https://github.com/jpenilla/reflection-remapper 这个库] 的东西,以便能够在反射中使用没有混淆的名称。'''
 +
 +
=== 添加 Paperweight Userdev 插件 ===
 +
 +
Paperweight仅支持Gradle,暂不支持Maven
 +
 +
具体的添加方法请见 [https://plugins.gradle.org/plugin/io.papermc.paperweight.userdev]
 +
 +
=== 添加开发包依赖 ===
 +
 +
如果你现在尝试加载Gradle项目,你会收到一个错误,说你必须声明一个开发包依赖。你可以通过在 build.gradle.kts / build.gradle 文件中添加依赖包来实现。
 +
 +
<syntaxhighlight lang="groovy">
 +
dependencies {
 +
    // 其他依赖
 +
    paperweight.paperDevBundle("1.20.4-R0.1-SNAPSHOT")
 +
}
 +
</syntaxhighlight>
 +
 +
开发包已含有paper-api,应当从依赖中移除此项
 +
 +
对于Paper 1.20.4,其中的版本为 1.20.4-R0.1-SNAPSHOT
 +
 +
=== Gradle任务 ===
 +
 +
reobfJar任务创建一个插件jar,它被重新混淆为Spigot的运行时映射。这意味着它可以在标准的Paper服务器上工作。(类似forgegradle reobfJar)
 +
 +
输出将在build/libs文件夹中。文件名包含-dev的jar是mojang映射的(没有重新混淆),在大多数服务器上都不能工作。
 +
 +
<blockquote>
 +
'''提示'''<br />
 +
如果你在构建脚本中应用了Gradle Shadow插件,paperweight-userdev将检测到这一点,并使用shadowJar作为reobfJar任务的输入。
 +
 +
build/lib中的-dev-all.jar文件是shadowJar的,但没有经过重新混淆处理的jar文件。
 +
</blockquote>
 +
 +
可使用此方法将reobfJar与默认build同时运行
 +
<syntaxhighlight lang="groovy">
 +
tasks.assemble {
 +
    dependsOn(reobfJar)
 +
}
 +
</syntaxhighlight>

操作参数

变量
编辑是否被标记为小编辑 (minor_edit)
用户账户名称 (user_name)
Tumuidle
用户所在群组(包括隐藏群组) (user_groups)
* user autoconfirmed
页面编号 (article_articleid)
7774
页面名字空间 (article_namespace)
0
页面标题(不含名字空间) (article_text)
Paper/Paper 项目的搭建
完整页面标题 (article_prefixedtext)
Paper/Paper 项目的搭建
最后十位对该页面贡献的用户 (article_recent_contributors)
Poikcue
操作 (action)
edit
编辑摘要/原因 (summary)
旧的内容模型 (old_content_model)
wikitext
新的内容模型 (new_content_model)
wikitext
编辑前的旧页面,wiki代码格式 (old_wikitext)
<blockquote>本文的图片都是由译者提供的。供新手开发者找到文章提到的选项。 </blockquote> 由于Paper团队主要使用 [https://www.jetbrains.com/idea/ IntelliJ IDEA] 进行开发,所以本指南将以该IDE作为重点。<br /> 不过,下文应当也适用于其它IDE,仅需针对性的作一些微小的修改即可。 Paper 团队使用 [https://gradle.org/ Gradle] 作为 Paper 等项目的构建工具,其插件开发工具链使用 Gradle 对项目进行依赖管理。 在经过修改后,下文代码也将适用于其它构建工具,例如Maven。不过本文所提供的代码将只涉及Gradle。 阅读[https://docs.gradle.org/current/userguide/migrating_from_maven.html 此文档]学习如何从 Maven 迁移到Gradle。 === 创建新项目 === 打开你的 IDE 然后点击创建新项目的按钮。<br /> 在 Intellij 中,你需要选择你想要创建的项目类型 —— 首先选中 <code>New Project</code>,然后选择 <code>Gradle - Kotlin DSL</code> 后单击 <code>Create</code>。 接着,IDE 将自动为你打开可用于管理项目依赖的 <code>build.gradle.kts</code> 文件。 <span id="将-paper-作为依赖项添加"></span> === 将 Paper 作为依赖项添加 === 要将 Paper 作为插件项目的一个依赖项,你需要将 Paper 仓库 ( <code>repository</code> ) 和 Paper 依赖 ( <code>dependency</code> ) 添加到你的 <code>build.gradle.kts</code> 文件中。 <syntaxhighlight lang="kotlin">repositories { mavenCentral() maven("https://repo.papermc.io/repository/maven-public/") } dependencies { compileOnly("io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT") } java { toolchain.languageVersion.set(JavaLanguageVersion.of(17)) } </syntaxhighlight> <span id="创建-src-目录"></span> === 创建 <code>src</code> 目录 === <blockquote>'''跳过'''<br /> 如果 IDE 已经为你的项目自动创建 <code>src</code> 目录,你就可以跳过这一步了。 </blockquote> 要创建 <code>src</code> 目录,你需要新建一个名为 <code>src</code> 的文件夹,然后在里面创建子目录,叫做 <code>main</code>。<br /> 接下来,在<code>main</code>之中创建两个文件夹,分别命名为 <code>java</code> 和 <code>resources</code>。 该文件夹的目录结构形如下: <pre>... example-plugin ├── build.gradle.kts ├── settings.gradle.kts └── src └── main ├── java └── resources ... </pre> <span id="创建-java-目录"></span> === 创建 <code>java</code> 目录 === Java 源代码存放在 <code>java</code> 目录中。你必须先创建一些包来管理你的 Java 代码。 拿下面这个结构举例,我们创建了一个三层的包并将其命名为 <code>io.papermc.testplugin</code>。而在包中有一个<code>ExamplePlugin</code> 类 ( <code>class</code> )。 <pre>... example-plugin ├── build.gradle.kts ├── settings.gradle.kts └── src └── main ├── java │ └── io │ └── papermc │ └── testplugin │ └── ExamplePlugin.java └── resources ... </pre> === 包 === 可以看到,<code>ExamplePlugin</code> 类在 <code>io.papermc.testplugin</code> 包中。<br /> 包用于管理代码。本质上,包就是个文件夹。在 Java 中,我们用包来管理一组相互间有一定关联的类。<br /> 如果你想要了解更多关于包的信息,你可以在 Oracle 的指南中[https://docs.oracle.com/javase/tutorial/java/package/packages.html 查看]。 要为你的包[https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html 命名],你需要将域名颠倒顺序排列。比如有一个叫做 <code>papermc.io</code>的域名,你的包就应该命名为 <code>io.papermc</code>。<br /> 如果你还没有一个域名,你可以将你的 GitHub 用户名作为包名(格式大概是:io.github.用户名)。<br /> 若你的名字叫做 Linus Torvalds,你的包应该是 <code>io.github.torvalds</code>。 跟随域名的应该是你的项目名。<br /> 比如,你有一个的工程叫做 <code>ExamplePlugin</code>,你的包应该是<code>io.github.torvalds.exampleplugin</code>。<br /> 你的每个插件都会有一个独一无二的包名。 === 主类 === 主类是你的插件中所有代码执行的起点,是唯一一个继承 <code>JavaPlugin</code> 的类。<br /> 下面是一个 <code>ExamplePlugin</code> 类的示例: <syntaxhighlight lang="java">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("Hello, " + event.getPlayer().getName() + "!")); } } </syntaxhighlight> <span id="创建-resources-目录"></span> === 创建 <code>resources</code> 目录 === <code>resources</code> 文件夹是在你的插件中存放 <code>plugin.yml</code> 的地方。在[https://mineplugin.org/Paper/Paper_Plugin_YML 这里]了解更多关于plugin.yml的信息。 === 最后 === 现在,你就有一个将 Paper 作为依赖的插件项目啦!<br /> 接下来,编译你的插件,然后在 Paper 服务器上运行插件,就大功告成了。 <div class="tip"> 如果你想要精简测试插件的流程,你可以使用 [https://github.com/jpenilla/run-paper Run-Paper] Gradle task。<br /> 它将帮你自动下载一个 Paper 服务端并运行,以便测试你的插件。 </div> <blockquote>'''提示'''<br /> 如果你正在使用 IntelliJ,你可以使用 Gradle 图形界面中的 <code>Build</code> 菜单来编译你的插件 - 它应该位于你的 IDE 的右上角。<br /> 编译成功后输出的 jar 文件应该存放在 <code>build/libs</code> 文件夹中。<br /> </blockquote>
编辑后的新页面,wiki代码格式 (new_wikitext)
<blockquote>本文的图片都是由译者提供的。供新手开发者找到文章提到的选项。 </blockquote> 由于Paper团队主要使用 [https://www.jetbrains.com/idea/ IntelliJ IDEA] 进行开发,所以本指南将以该IDE作为重点。<br /> 不过,下文应当也适用于其它IDE,仅需针对性的作一些微小的修改即可。 Paper 团队使用 [https://gradle.org/ Gradle] 作为 Paper 等项目的构建工具,其插件开发工具链使用 Gradle 对项目进行依赖管理。 在经过修改后,下文代码也将适用于其它构建工具,例如Maven。不过本文所提供的代码将只涉及Gradle。 阅读[https://docs.gradle.org/current/userguide/migrating_from_maven.html 此文档]学习如何从 Maven 迁移到Gradle。 == 使用 Minecraft Development == === 安装 Minecraft Development插件 === 打开IntelliJ IDEA,在主界面中选中 Customize(自定义) -> All Settings (全部设置) -> Plugins (插件),在顶部选中Marketplace 搜索Minecraft Development,点击安装,完成后重启IntelliJ IDEA === 创建项目 === 在创建项目对话框中选中 Minecraft,Platform Type(平台类型)为Plugin,Platform(平台)为Bukkit Bukkit Platform按照情况选择,Spigot兼容大部分Bukkit服务端,Paper则在Spigot的基础上有新增API Minecraft Version(Minecraft版本)视情况选择,Plugin Name(Plugin名称)为插件名称,主类可以直接使用自动生成的名称 Optional Settings中为可选项,按需填写 构建系统 Gradle/Maven Paper Manifest -> Use paper-plugin.yml 此项启用后将作为Paper插件,不再支持Spigot和Bukkit服务端 构建系统与创建常规项目同理 JDK按照Minecraft版本选择,1.16以下使用JDK8+,1.17使用JDK16+,1.18开始使用JDK17+ == 手动创建 == === 创建新项目 === 打开你的 IDE 然后点击创建新项目的按钮。<br /> 在 Intellij 中,你需要选择你想要创建的项目类型 —— 首先选中 <code>New Project</code>,然后选择 <code>Gradle - Kotlin DSL</code> 后单击 <code>Create</code>。 接着,IDE 将自动为你打开可用于管理项目依赖的 <code>build.gradle.kts</code> 文件。 <span id="将-paper-作为依赖项添加"></span> === 将 Paper 作为依赖项添加 === 要将 Paper 作为插件项目的一个依赖项,你需要将 Paper 仓库 ( <code>repository</code> ) 和 Paper 依赖 ( <code>dependency</code> ) 添加到你的 <code>build.gradle.kts</code> 文件中。 <syntaxhighlight lang="kotlin">repositories { mavenCentral() maven("https://repo.papermc.io/repository/maven-public/") } dependencies { compileOnly("io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT") } java { toolchain.languageVersion.set(JavaLanguageVersion.of(17)) } </syntaxhighlight> <span id="创建-src-目录"></span> === 创建 <code>src</code> 目录 === <blockquote>'''跳过'''<br /> 如果 IDE 已经为你的项目自动创建 <code>src</code> 目录,你就可以跳过这一步了。 </blockquote> 要创建 <code>src</code> 目录,你需要新建一个名为 <code>src</code> 的文件夹,然后在里面创建子目录,叫做 <code>main</code>。<br /> 接下来,在<code>main</code>之中创建两个文件夹,分别命名为 <code>java</code> 和 <code>resources</code>。 该文件夹的目录结构形如下: <pre>... example-plugin ├── build.gradle.kts ├── settings.gradle.kts └── src └── main ├── java └── resources ... </pre> <span id="创建-java-目录"></span> === 创建 <code>java</code> 目录 === Java 源代码存放在 <code>java</code> 目录中。你必须先创建一些包来管理你的 Java 代码。 拿下面这个结构举例,我们创建了一个三层的包并将其命名为 <code>io.papermc.testplugin</code>。而在包中有一个<code>ExamplePlugin</code> 类 ( <code>class</code> )。 <pre>... example-plugin ├── build.gradle.kts ├── settings.gradle.kts └── src └── main ├── java │ └── io │ └── papermc │ └── testplugin │ └── ExamplePlugin.java └── resources ... </pre> === 包 === 可以看到,<code>ExamplePlugin</code> 类在 <code>io.papermc.testplugin</code> 包中。<br /> 包用于管理代码。本质上,包就是个文件夹。在 Java 中,我们用包来管理一组相互间有一定关联的类。<br /> 如果你想要了解更多关于包的信息,你可以在 Oracle 的指南中[https://docs.oracle.com/javase/tutorial/java/package/packages.html 查看]。 要为你的包[https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html 命名],你需要将域名颠倒顺序排列。比如有一个叫做 <code>papermc.io</code>的域名,你的包就应该命名为 <code>io.papermc</code>。<br /> 如果你还没有一个域名,你可以将你的 GitHub 用户名作为包名(格式大概是:io.github.用户名)。<br /> 若你的名字叫做 Linus Torvalds,你的包应该是 <code>io.github.torvalds</code>。 跟随域名的应该是你的项目名。<br /> 比如,你有一个的工程叫做 <code>ExamplePlugin</code>,你的包应该是<code>io.github.torvalds.exampleplugin</code>。<br /> 你的每个插件都会有一个独一无二的包名。 === 主类 === 主类是你的插件中所有代码执行的起点,是唯一一个继承 <code>JavaPlugin</code> 的类。<br /> 下面是一个 <code>ExamplePlugin</code> 类的示例: <syntaxhighlight lang="java">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("Hello, " + event.getPlayer().getName() + "!")); } } </syntaxhighlight> <span id="创建-resources-目录"></span> === 创建 <code>resources</code> 目录 === <code>resources</code> 文件夹是在你的插件中存放 <code>plugin.yml</code> 的地方。在[https://mineplugin.org/Paper/Paper_Plugin_YML 这里]了解更多关于plugin.yml的信息。 === 最后 === 现在,你就有一个将 Paper 作为依赖的插件项目啦!<br /> 接下来,编译你的插件,然后在 Paper 服务器上运行插件,就大功告成了。 <div class="tip"> 如果你想要精简测试插件的流程,你可以使用 [https://github.com/jpenilla/run-paper Run-Paper] Gradle task。<br /> 它将帮你自动下载一个 Paper 服务端并运行,以便测试你的插件。 </div> <blockquote>'''提示'''<br /> 如果你正在使用 IntelliJ,你可以使用 Gradle 图形界面中的 <code>Build</code> 菜单来编译你的插件 - 它应该位于你的 IDE 的右上角。<br /> 编译成功后输出的 jar 文件应该存放在 <code>build/libs</code> 文件夹中。<br /> </blockquote> == 使用Paperweight Userdev == [https://docs.papermc.io/paper/dev/userdev 官方文档] paperweight是Paper的定制构建工具的名称。Gradle插件部分提供了在开发期间访问内部代码(也称为NMS)的功能。 通过API在下载页面上提供的Paper服务器jar是Paperclip jar。它们使用Spigot的映射,这些映射本质上是一些类型名称,但完全混淆了字段和方法。这使得它很难在开发环境中使用。这个插件允许您在开发期间使用完全去混淆的类型、名称和字段,然后重新映射您的插件,因此它仍然可以与混淆的服务器一起使用。 '''重新混淆不适用于反射。查看类似于 [https://github.com/jpenilla/reflection-remapper 这个库] 的东西,以便能够在反射中使用没有混淆的名称。''' === 添加 Paperweight Userdev 插件 === Paperweight仅支持Gradle,暂不支持Maven 具体的添加方法请见 [https://plugins.gradle.org/plugin/io.papermc.paperweight.userdev] === 添加开发包依赖 === 如果你现在尝试加载Gradle项目,你会收到一个错误,说你必须声明一个开发包依赖。你可以通过在 build.gradle.kts / build.gradle 文件中添加依赖包来实现。 <syntaxhighlight lang="groovy"> dependencies { // 其他依赖 paperweight.paperDevBundle("1.20.4-R0.1-SNAPSHOT") } </syntaxhighlight> 开发包已含有paper-api,应当从依赖中移除此项 对于Paper 1.20.4,其中的版本为 1.20.4-R0.1-SNAPSHOT === Gradle任务 === reobfJar任务创建一个插件jar,它被重新混淆为Spigot的运行时映射。这意味着它可以在标准的Paper服务器上工作。(类似forgegradle reobfJar) 输出将在build/libs文件夹中。文件名包含-dev的jar是mojang映射的(没有重新混淆),在大多数服务器上都不能工作。 <blockquote> '''提示'''<br /> 如果你在构建脚本中应用了Gradle Shadow插件,paperweight-userdev将检测到这一点,并使用shadowJar作为reobfJar任务的输入。 build/lib中的-dev-all.jar文件是shadowJar的,但没有经过重新混淆处理的jar文件。 </blockquote> 可使用此方法将reobfJar与默认build同时运行 <syntaxhighlight lang="groovy"> tasks.assemble { dependsOn(reobfJar) } </syntaxhighlight>
编辑产生的差异 (edit_diff)
@@ -5,4 +5,32 @@ Paper 团队使用 [https://gradle.org/ Gradle] 作为 Paper 等项目的构建工具,其插件开发工具链使用 Gradle 对项目进行依赖管理。 在经过修改后,下文代码也将适用于其它构建工具,例如Maven。不过本文所提供的代码将只涉及Gradle。 阅读[https://docs.gradle.org/current/userguide/migrating_from_maven.html 此文档]学习如何从 Maven 迁移到Gradle。 + +== 使用 Minecraft Development == + +=== 安装 Minecraft Development插件 === + +打开IntelliJ IDEA,在主界面中选中 Customize(自定义) -> All Settings (全部设置) -> Plugins (插件),在顶部选中Marketplace + +搜索Minecraft Development,点击安装,完成后重启IntelliJ IDEA + +=== 创建项目 === + +在创建项目对话框中选中 Minecraft,Platform Type(平台类型)为Plugin,Platform(平台)为Bukkit + +Bukkit Platform按照情况选择,Spigot兼容大部分Bukkit服务端,Paper则在Spigot的基础上有新增API + +Minecraft Version(Minecraft版本)视情况选择,Plugin Name(Plugin名称)为插件名称,主类可以直接使用自动生成的名称 + +Optional Settings中为可选项,按需填写 + +构建系统 Gradle/Maven + +Paper Manifest -> Use paper-plugin.yml 此项启用后将作为Paper插件,不再支持Spigot和Bukkit服务端 + +构建系统与创建常规项目同理 + +JDK按照Minecraft版本选择,1.16以下使用JDK8+,1.17使用JDK16+,1.18开始使用JDK17+ + +== 手动创建 == === 创建新项目 === @@ -134,2 +162,53 @@ 编译成功后输出的 jar 文件应该存放在 <code>build/libs</code> 文件夹中。<br /> </blockquote> + +== 使用Paperweight Userdev == + +[https://docs.papermc.io/paper/dev/userdev 官方文档] + +paperweight是Paper的定制构建工具的名称。Gradle插件部分提供了在开发期间访问内部代码(也称为NMS)的功能。 + +通过API在下载页面上提供的Paper服务器jar是Paperclip jar。它们使用Spigot的映射,这些映射本质上是一些类型名称,但完全混淆了字段和方法。这使得它很难在开发环境中使用。这个插件允许您在开发期间使用完全去混淆的类型、名称和字段,然后重新映射您的插件,因此它仍然可以与混淆的服务器一起使用。 + +'''重新混淆不适用于反射。查看类似于 [https://github.com/jpenilla/reflection-remapper 这个库] 的东西,以便能够在反射中使用没有混淆的名称。''' + +=== 添加 Paperweight Userdev 插件 === + +Paperweight仅支持Gradle,暂不支持Maven + +具体的添加方法请见 [https://plugins.gradle.org/plugin/io.papermc.paperweight.userdev] + +=== 添加开发包依赖 === + +如果你现在尝试加载Gradle项目,你会收到一个错误,说你必须声明一个开发包依赖。你可以通过在 build.gradle.kts / build.gradle 文件中添加依赖包来实现。 + +<syntaxhighlight lang="groovy"> +dependencies { + // 其他依赖 + paperweight.paperDevBundle("1.20.4-R0.1-SNAPSHOT") +} +</syntaxhighlight> + +开发包已含有paper-api,应当从依赖中移除此项 + +对于Paper 1.20.4,其中的版本为 1.20.4-R0.1-SNAPSHOT + +=== Gradle任务 === + +reobfJar任务创建一个插件jar,它被重新混淆为Spigot的运行时映射。这意味着它可以在标准的Paper服务器上工作。(类似forgegradle reobfJar) + +输出将在build/libs文件夹中。文件名包含-dev的jar是mojang映射的(没有重新混淆),在大多数服务器上都不能工作。 + +<blockquote> +'''提示'''<br /> +如果你在构建脚本中应用了Gradle Shadow插件,paperweight-userdev将检测到这一点,并使用shadowJar作为reobfJar任务的输入。 + +build/lib中的-dev-all.jar文件是shadowJar的,但没有经过重新混淆处理的jar文件。 +</blockquote> + +可使用此方法将reobfJar与默认build同时运行 +<syntaxhighlight lang="groovy"> +tasks.assemble { + dependsOn(reobfJar) +} +</syntaxhighlight>
编辑增加的行 (added_lines)
== 使用 Minecraft Development == === 安装 Minecraft Development插件 === 打开IntelliJ IDEA,在主界面中选中 Customize(自定义) -> All Settings (全部设置) -> Plugins (插件),在顶部选中Marketplace 搜索Minecraft Development,点击安装,完成后重启IntelliJ IDEA === 创建项目 === 在创建项目对话框中选中 Minecraft,Platform Type(平台类型)为Plugin,Platform(平台)为Bukkit Bukkit Platform按照情况选择,Spigot兼容大部分Bukkit服务端,Paper则在Spigot的基础上有新增API Minecraft Version(Minecraft版本)视情况选择,Plugin Name(Plugin名称)为插件名称,主类可以直接使用自动生成的名称 Optional Settings中为可选项,按需填写 构建系统 Gradle/Maven Paper Manifest -> Use paper-plugin.yml 此项启用后将作为Paper插件,不再支持Spigot和Bukkit服务端 构建系统与创建常规项目同理 JDK按照Minecraft版本选择,1.16以下使用JDK8+,1.17使用JDK16+,1.18开始使用JDK17+ == 手动创建 == == 使用Paperweight Userdev == [https://docs.papermc.io/paper/dev/userdev 官方文档] paperweight是Paper的定制构建工具的名称。Gradle插件部分提供了在开发期间访问内部代码(也称为NMS)的功能。 通过API在下载页面上提供的Paper服务器jar是Paperclip jar。它们使用Spigot的映射,这些映射本质上是一些类型名称,但完全混淆了字段和方法。这使得它很难在开发环境中使用。这个插件允许您在开发期间使用完全去混淆的类型、名称和字段,然后重新映射您的插件,因此它仍然可以与混淆的服务器一起使用。 '''重新混淆不适用于反射。查看类似于 [https://github.com/jpenilla/reflection-remapper 这个库] 的东西,以便能够在反射中使用没有混淆的名称。''' === 添加 Paperweight Userdev 插件 === Paperweight仅支持Gradle,暂不支持Maven 具体的添加方法请见 [https://plugins.gradle.org/plugin/io.papermc.paperweight.userdev] === 添加开发包依赖 === 如果你现在尝试加载Gradle项目,你会收到一个错误,说你必须声明一个开发包依赖。你可以通过在 build.gradle.kts / build.gradle 文件中添加依赖包来实现。 <syntaxhighlight lang="groovy"> dependencies { // 其他依赖 paperweight.paperDevBundle("1.20.4-R0.1-SNAPSHOT") } </syntaxhighlight> 开发包已含有paper-api,应当从依赖中移除此项 对于Paper 1.20.4,其中的版本为 1.20.4-R0.1-SNAPSHOT === Gradle任务 === reobfJar任务创建一个插件jar,它被重新混淆为Spigot的运行时映射。这意味着它可以在标准的Paper服务器上工作。(类似forgegradle reobfJar) 输出将在build/libs文件夹中。文件名包含-dev的jar是mojang映射的(没有重新混淆),在大多数服务器上都不能工作。 <blockquote> '''提示'''<br /> 如果你在构建脚本中应用了Gradle Shadow插件,paperweight-userdev将检测到这一点,并使用shadowJar作为reobfJar任务的输入。 build/lib中的-dev-all.jar文件是shadowJar的,但没有经过重新混淆处理的jar文件。 </blockquote> 可使用此方法将reobfJar与默认build同时运行 <syntaxhighlight lang="groovy"> tasks.assemble { dependsOn(reobfJar) } </syntaxhighlight>
编辑后的新页面,已解析为HTML源码 (new_html)
<div class="mw-parser-output"><blockquote><p>本文的图片都是由译者提供的。供新手开发者找到文章提到的选项。 </p></blockquote> <p>由于Paper团队主要使用 <a class="external text" href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a> 进行开发,所以本指南将以该IDE作为重点。<br /> 不过,下文应当也适用于其它IDE,仅需针对性的作一些微小的修改即可。 </p><p>Paper 团队使用 <a class="external text" href="https://gradle.org/">Gradle</a> 作为 Paper 等项目的构建工具,其插件开发工具链使用 Gradle 对项目进行依赖管理。 在经过修改后,下文代码也将适用于其它构建工具,例如Maven。不过本文所提供的代码将只涉及Gradle。 阅读<a class="external text" href="https://docs.gradle.org/current/userguide/migrating_from_maven.html">此文档</a>学习如何从 Maven 迁移到Gradle。 </p> <div id="toc" class="toc"><div class="toctitle" lang="zh-CN" dir="ltr"><h2>目录</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.E4.BD.BF.E7.94.A8_Minecraft_Development"><span class="tocnumber">1</span> <span class="toctext">使用 Minecraft Development</span></a> <ul> <li class="toclevel-2 tocsection-2"><a href="#.E5.AE.89.E8.A3.85_Minecraft_Development.E6.8F.92.E4.BB.B6"><span class="tocnumber">1.1</span> <span class="toctext">安装 Minecraft Development插件</span></a></li> <li class="toclevel-2 tocsection-3"><a href="#.E5.88.9B.E5.BB.BA.E9.A1.B9.E7.9B.AE"><span class="tocnumber">1.2</span> <span class="toctext">创建项目</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-4"><a href="#.E6.89.8B.E5.8A.A8.E5.88.9B.E5.BB.BA"><span class="tocnumber">2</span> <span class="toctext">手动创建</span></a> <ul> <li class="toclevel-2 tocsection-5"><a href="#.E5.88.9B.E5.BB.BA.E6.96.B0.E9.A1.B9.E7.9B.AE"><span class="tocnumber">2.1</span> <span class="toctext">创建新项目</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#.E5.B0.86_Paper_.E4.BD.9C.E4.B8.BA.E4.BE.9D.E8.B5.96.E9.A1.B9.E6.B7.BB.E5.8A.A0"><span class="tocnumber">2.2</span> <span class="toctext">将 Paper 作为依赖项添加</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#.E5.88.9B.E5.BB.BA_src_.E7.9B.AE.E5.BD.95"><span class="tocnumber">2.3</span> <span class="toctext">创建 src 目录</span></a></li> <li class="toclevel-2 tocsection-8"><a href="#.E5.88.9B.E5.BB.BA_java_.E7.9B.AE.E5.BD.95"><span class="tocnumber">2.4</span> <span class="toctext">创建 java 目录</span></a></li> <li class="toclevel-2 tocsection-9"><a href="#.E5.8C.85"><span class="tocnumber">2.5</span> <span class="toctext">包</span></a></li> <li class="toclevel-2 tocsection-10"><a href="#.E4.B8.BB.E7.B1.BB"><span class="tocnumber">2.6</span> <span class="toctext">主类</span></a></li> <li class="toclevel-2 tocsection-11"><a href="#.E5.88.9B.E5.BB.BA_resources_.E7.9B.AE.E5.BD.95"><span class="tocnumber">2.7</span> <span class="toctext">创建 resources 目录</span></a></li> <li class="toclevel-2 tocsection-12"><a href="#.E6.9C.80.E5.90.8E"><span class="tocnumber">2.8</span> <span class="toctext">最后</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-13"><a href="#.E4.BD.BF.E7.94.A8Paperweight_Userdev"><span class="tocnumber">3</span> <span class="toctext">使用Paperweight Userdev</span></a> <ul> <li class="toclevel-2 tocsection-14"><a href="#.E6.B7.BB.E5.8A.A0_Paperweight_Userdev_.E6.8F.92.E4.BB.B6"><span class="tocnumber">3.1</span> <span class="toctext">添加 Paperweight Userdev 插件</span></a></li> <li class="toclevel-2 tocsection-15"><a href="#.E6.B7.BB.E5.8A.A0.E5.BC.80.E5.8F.91.E5.8C.85.E4.BE.9D.E8.B5.96"><span class="tocnumber">3.2</span> <span class="toctext">添加开发包依赖</span></a></li> <li class="toclevel-2 tocsection-16"><a href="#Gradle.E4.BB.BB.E5.8A.A1"><span class="tocnumber">3.3</span> <span class="toctext">Gradle任务</span></a></li> </ul> </li> </ul> </div> <h2><span id="使用_Minecraft_Development"></span><span class="mw-headline" id=".E4.BD.BF.E7.94.A8_Minecraft_Development">使用 Minecraft Development</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=1" title="编辑小节:使用 Minecraft Development">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <h3><span id="安装_Minecraft_Development插件"></span><span class="mw-headline" id=".E5.AE.89.E8.A3.85_Minecraft_Development.E6.8F.92.E4.BB.B6">安装 Minecraft Development插件</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=2" title="编辑小节:安装 Minecraft Development插件">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>打开IntelliJ IDEA,在主界面中选中 Customize(自定义) -&gt; All Settings (全部设置) -&gt; Plugins (插件),在顶部选中Marketplace </p><p>搜索Minecraft Development,点击安装,完成后重启IntelliJ IDEA </p> <h3><span id="创建项目"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E9.A1.B9.E7.9B.AE">创建项目</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=3" title="编辑小节:创建项目">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>在创建项目对话框中选中 Minecraft,Platform Type(平台类型)为Plugin,Platform(平台)为Bukkit </p><p>Bukkit Platform按照情况选择,Spigot兼容大部分Bukkit服务端,Paper则在Spigot的基础上有新增API </p><p>Minecraft Version(Minecraft版本)视情况选择,Plugin Name(Plugin名称)为插件名称,主类可以直接使用自动生成的名称 </p><p>Optional Settings中为可选项,按需填写 </p><p>构建系统 Gradle/Maven </p><p>Paper Manifest -&gt; Use paper-plugin.yml 此项启用后将作为Paper插件,不再支持Spigot和Bukkit服务端 </p><p>构建系统与创建常规项目同理 </p><p>JDK按照Minecraft版本选择,1.16以下使用JDK8+,1.17使用JDK16+,1.18开始使用JDK17+ </p> <h2><span id="手动创建"></span><span class="mw-headline" id=".E6.89.8B.E5.8A.A8.E5.88.9B.E5.BB.BA">手动创建</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=4" title="编辑小节:手动创建">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <h3><span id="创建新项目"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E6.96.B0.E9.A1.B9.E7.9B.AE">创建新项目</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=5" title="编辑小节:创建新项目">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>打开你的 IDE 然后点击创建新项目的按钮。<br /> 在 Intellij 中,你需要选择你想要创建的项目类型 —— 首先选中 <code>New Project</code>,然后选择 <code>Gradle - Kotlin DSL</code> 后单击 <code>Create</code>。 </p><p>接着,IDE 将自动为你打开可用于管理项目依赖的 <code>build.gradle.kts</code> 文件。 </p><p><span id=".E5.B0.86-paper-.E4.BD.9C.E4.B8.BA.E4.BE.9D.E8.B5.96.E9.A1.B9.E6.B7.BB.E5.8A.A0"></span> </p> <h3><span id="将_Paper_作为依赖项添加"></span><span class="mw-headline" id=".E5.B0.86_Paper_.E4.BD.9C.E4.B8.BA.E4.BE.9D.E8.B5.96.E9.A1.B9.E6.B7.BB.E5.8A.A0">将 Paper 作为依赖项添加</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=6" title="编辑小节:将 Paper 作为依赖项添加">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>要将 Paper 作为插件项目的一个依赖项,你需要将 Paper 仓库 ( <code>repository</code> ) 和 Paper 依赖 ( <code>dependency</code> ) 添加到你的 <code>build.gradle.kts</code> 文件中。 </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="n">repositories</span> <span class="p">{</span> <span class="n">mavenCentral</span><span class="p">()</span> <span class="n">maven</span><span class="p">(</span><span class="s">&quot;https://repo.papermc.io/repository/maven-public/&quot;</span><span class="p">)</span> <span class="p">}</span> <span class="n">dependencies</span> <span class="p">{</span> <span class="n">compileOnly</span><span class="p">(</span><span class="s">&quot;io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT&quot;</span><span class="p">)</span> <span class="p">}</span> <span class="n">java</span> <span class="p">{</span> <span class="n">toolchain</span><span class="p">.</span><span class="n">languageVersion</span><span class="p">.</span><span class="k">set</span><span class="p">(</span><span class="n">JavaLanguageVersion</span><span class="p">.</span><span class="n">of</span><span class="p">(</span><span class="m">17</span><span class="p">))</span> <span class="p">}</span> </pre></div> <p><span id=".E5.88.9B.E5.BB.BA-src-.E7.9B.AE.E5.BD.95"></span> </p> <h3><span id="创建_src_目录"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA_src_.E7.9B.AE.E5.BD.95">创建 <code>src</code> 目录</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=7" title="编辑小节:创建 src 目录">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <blockquote><p><b>跳过</b><br /> </p><p>如果 IDE 已经为你的项目自动创建 <code>src</code> 目录,你就可以跳过这一步了。 </p> </blockquote> <p>要创建 <code>src</code> 目录,你需要新建一个名为 <code>src</code> 的文件夹,然后在里面创建子目录,叫做 <code>main</code>。<br /> 接下来,在<code>main</code>之中创建两个文件夹,分别命名为 <code>java</code> 和 <code>resources</code>。 </p><p>该文件夹的目录结构形如下: </p> <pre>... example-plugin ├── build.gradle.kts ├── settings.gradle.kts └── src └── main ├── java └── resources ... </pre> <p><span id=".E5.88.9B.E5.BB.BA-java-.E7.9B.AE.E5.BD.95"></span> </p> <h3><span id="创建_java_目录"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA_java_.E7.9B.AE.E5.BD.95">创建 <code>java</code> 目录</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=8" title="编辑小节:创建 java 目录">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>Java 源代码存放在 <code>java</code> 目录中。你必须先创建一些包来管理你的 Java 代码。 拿下面这个结构举例,我们创建了一个三层的包并将其命名为 <code>io.papermc.testplugin</code>。而在包中有一个<code>ExamplePlugin</code> 类 ( <code>class</code> )。 </p> <pre>... example-plugin ├── build.gradle.kts ├── settings.gradle.kts └── src └── main ├── java │ └── io │ └── papermc │ └── testplugin │ └── ExamplePlugin.java └── resources ... </pre> <h3><span id="包"></span><span class="mw-headline" id=".E5.8C.85">包</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=9" title="编辑小节:包">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>可以看到,<code>ExamplePlugin</code> 类在 <code>io.papermc.testplugin</code> 包中。<br /> 包用于管理代码。本质上,包就是个文件夹。在 Java 中,我们用包来管理一组相互间有一定关联的类。<br /> 如果你想要了解更多关于包的信息,你可以在 Oracle 的指南中<a class="external text" href="https://docs.oracle.com/javase/tutorial/java/package/packages.html">查看</a>。 </p><p>要为你的包<a class="external text" href="https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html">命名</a>,你需要将域名颠倒顺序排列。比如有一个叫做 <code>papermc.io</code>的域名,你的包就应该命名为 <code>io.papermc</code>。<br /> 如果你还没有一个域名,你可以将你的 GitHub 用户名作为包名(格式大概是:io.github.用户名)。<br /> 若你的名字叫做 Linus Torvalds,你的包应该是 <code>io.github.torvalds</code>。 </p><p>跟随域名的应该是你的项目名。<br /> 比如,你有一个的工程叫做 <code>ExamplePlugin</code>,你的包应该是<code>io.github.torvalds.exampleplugin</code>。<br /> 你的每个插件都会有一个独一无二的包名。 </p> <h3><span id="主类"></span><span class="mw-headline" id=".E4.B8.BB.E7.B1.BB">主类</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=10" title="编辑小节:主类">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>主类是你的插件中所有代码执行的起点,是唯一一个继承 <code>JavaPlugin</code> 的类。<br /> 下面是一个 <code>ExamplePlugin</code> 类的示例: </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">package</span> <span class="nn">io.papermc.testplugin</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">net.kyori.adventure.text.Component</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">org.bukkit.Bukkit</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">org.bukkit.event.EventHandler</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">org.bukkit.event.Listener</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">org.bukkit.event.player.PlayerJoinEvent</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">org.bukkit.plugin.java.JavaPlugin</span><span class="o">;</span> <span class="kd">public</span> <span class="kd">class</span> <span class="nc">ExamplePlugin</span> <span class="kd">extends</span> <span class="n">JavaPlugin</span> <span class="kd">implements</span> <span class="n">Listener</span> <span class="o">{</span> <span class="nd">@Override</span> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onEnable</span><span class="o">()</span> <span class="o">{</span> <span class="n">Bukkit</span><span class="o">.</span><span class="na">getPluginManager</span><span class="o">().</span><span class="na">registerEvents</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="k">this</span><span class="o">);</span> <span class="o">}</span> <span class="nd">@EventHandler</span> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onPlayerJoin</span><span class="o">(</span><span class="n">PlayerJoinEvent</span> <span class="n">event</span><span class="o">)</span> <span class="o">{</span> <span class="n">event</span><span class="o">.</span><span class="na">getPlayer</span><span class="o">().</span><span class="na">sendMessage</span><span class="o">(</span><span class="n">Component</span><span class="o">.</span><span class="na">text</span><span class="o">(</span><span class="s">&quot;Hello, &quot;</span> <span class="o">+</span> <span class="n">event</span><span class="o">.</span><span class="na">getPlayer</span><span class="o">().</span><span class="na">getName</span><span class="o">()</span> <span class="o">+</span> <span class="s">&quot;!&quot;</span><span class="o">));</span> <span class="o">}</span> <span class="o">}</span> </pre></div> <p><span id=".E5.88.9B.E5.BB.BA-resources-.E7.9B.AE.E5.BD.95"></span> </p> <h3><span id="创建_resources_目录"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA_resources_.E7.9B.AE.E5.BD.95">创建 <code>resources</code> 目录</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=11" title="编辑小节:创建 resources 目录">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p><code>resources</code> 文件夹是在你的插件中存放 <code>plugin.yml</code> 的地方。在<a class="external text" href="https://mineplugin.org/Paper/Paper_Plugin_YML">这里</a>了解更多关于plugin.yml的信息。 </p> <h3><span id="最后"></span><span class="mw-headline" id=".E6.9C.80.E5.90.8E">最后</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=12" title="编辑小节:最后">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>现在,你就有一个将 Paper 作为依赖的插件项目啦!<br /> 接下来,编译你的插件,然后在 Paper 服务器上运行插件,就大功告成了。 </p> <div class="tip"> <p>如果你想要精简测试插件的流程,你可以使用 <a class="external text" href="https://github.com/jpenilla/run-paper">Run-Paper</a> Gradle task。<br /> 它将帮你自动下载一个 Paper 服务端并运行,以便测试你的插件。 </p><p><br /> </p> </div> <blockquote><p><b>提示</b><br /> </p><p>如果你正在使用 IntelliJ,你可以使用 Gradle 图形界面中的 <code>Build</code> 菜单来编译你的插件 - 它应该位于你的 IDE 的右上角。<br /> 编译成功后输出的 jar 文件应该存放在 <code>build/libs</code> 文件夹中。<br /> </p> </blockquote> <h2><span id="使用Paperweight_Userdev"></span><span class="mw-headline" id=".E4.BD.BF.E7.94.A8Paperweight_Userdev">使用Paperweight Userdev</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=13" title="编辑小节:使用Paperweight Userdev">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <p><a class="external text" href="https://docs.papermc.io/paper/dev/userdev">官方文档</a> </p><p>paperweight是Paper的定制构建工具的名称。Gradle插件部分提供了在开发期间访问内部代码(也称为NMS)的功能。 </p><p>通过API在下载页面上提供的Paper服务器jar是Paperclip jar。它们使用Spigot的映射,这些映射本质上是一些类型名称,但完全混淆了字段和方法。这使得它很难在开发环境中使用。这个插件允许您在开发期间使用完全去混淆的类型、名称和字段,然后重新映射您的插件,因此它仍然可以与混淆的服务器一起使用。 </p><p><b>重新混淆不适用于反射。查看类似于 <a class="external text" href="https://github.com/jpenilla/reflection-remapper">这个库</a> 的东西,以便能够在反射中使用没有混淆的名称。</b> </p> <h3><span id="添加_Paperweight_Userdev_插件"></span><span class="mw-headline" id=".E6.B7.BB.E5.8A.A0_Paperweight_Userdev_.E6.8F.92.E4.BB.B6">添加 Paperweight Userdev 插件</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=14" title="编辑小节:添加 Paperweight Userdev 插件">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>Paperweight仅支持Gradle,暂不支持Maven </p><p>具体的添加方法请见 <a class="external autonumber" href="https://plugins.gradle.org/plugin/io.papermc.paperweight.userdev">[1]</a> </p> <h3><span id="添加开发包依赖"></span><span class="mw-headline" id=".E6.B7.BB.E5.8A.A0.E5.BC.80.E5.8F.91.E5.8C.85.E4.BE.9D.E8.B5.96">添加开发包依赖</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=15" title="编辑小节:添加开发包依赖">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>如果你现在尝试加载Gradle项目,你会收到一个错误,说你必须声明一个开发包依赖。你可以通过在 build.gradle.kts / build.gradle 文件中添加依赖包来实现。 </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="n">dependencies</span> <span class="o">{</span> <span class="c1">// 其他依赖</span> <span class="n">paperweight</span><span class="o">.</span><span class="na">paperDevBundle</span><span class="o">(</span><span class="s2">&quot;1.20.4-R0.1-SNAPSHOT&quot;</span><span class="o">)</span> <span class="o">}</span> </pre></div> <p>开发包已含有paper-api,应当从依赖中移除此项 </p><p>对于Paper 1.20.4,其中的版本为 1.20.4-R0.1-SNAPSHOT </p> <h3><span id="Gradle任务"></span><span class="mw-headline" id="Gradle.E4.BB.BB.E5.8A.A1">Gradle任务</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/Paper_%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%90%AD%E5%BB%BA&amp;action=edit&amp;section=16" title="编辑小节:Gradle任务">编辑</a><span class="mw-editsection-bracket">]</span></span></h3> <p>reobfJar任务创建一个插件jar,它被重新混淆为Spigot的运行时映射。这意味着它可以在标准的Paper服务器上工作。(类似forgegradle reobfJar) </p><p>输出将在build/libs文件夹中。文件名包含-dev的jar是mojang映射的(没有重新混淆),在大多数服务器上都不能工作。 </p> <blockquote> <p><b>提示</b><br /> 如果你在构建脚本中应用了Gradle Shadow插件,paperweight-userdev将检测到这一点,并使用shadowJar作为reobfJar任务的输入。 </p><p>build/lib中的-dev-all.jar文件是shadowJar的,但没有经过重新混淆处理的jar文件。 </p> </blockquote> <p>可使用此方法将reobfJar与默认build同时运行 </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="n">tasks</span><span class="o">.</span><span class="na">assemble</span> <span class="o">{</span> <span class="n">dependsOn</span><span class="o">(</span><span class="n">reobfJar</span><span class="o">)</span> <span class="o">}</span> </pre></div> <!-- NewPP limit report Cached time: 20240321124507 Cache expiry: 86400 Dynamic content: false CPU time usage: 0.032 seconds Real time usage: 0.671 seconds Preprocessor visited node count: 133/1000000 Preprocessor generated node count: 232/1000000 Post‐expand include size: 0/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 2/40 Expensive parser function count: 0/100 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 5077/5000000 bytes --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 0.000 1 -total --> </div>
更改的Unix时间戳 (timestamp)
1711025106