[2023.4.25]使用 IDEA 创建一个 Paper Spigot Plugin 项目并优雅地运行 - 联机教程 - Minecraft(我的世界)中文论坛 -.html

[2023.4.25]使用 IDEA 创建一个 Paper Spigot Plugin 项目并优雅地运行 - 联机教程 - Minecraft(我的世界)中文论坛 -

Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 100|回复: 6
打印 上一主题 下一主题

[服务器应用] [2023.4.25]使用 IDEA 创建一个 Paper Spigot Plugin 项目并优雅地运行

[复制链接]
GapCold 当前离线
积分
4088
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-4-2
查看详细资料

来自:广东

跳转到指定楼层
楼主
发表于 3 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 GapCold 于 2023-4-25 21:02 编辑

由于 MCBBS 对 Markdown 支持较差,本帖直接上传 PDF 文件供各位下载也可以前往我的博客在线查看: Paper MC:使用 IDEA 创建一个 Paper Plugin 项目并流式运行 | microven's blog


[2023.4.25]使用 IDEA 创建一个 Paper Spigot Plugin 项目并优雅地运行.zip (306.51 KB, 下载次数: 3)
(因为不支持上传 pdf 所以只能压缩了)

帖子概览:
  • 创建项目
  • 配置依赖
  • 创建包和主类
  • 添加 plugin.yml
  • 编译为 jar 文件
  • 流式运行
  • 参考资料




创建项目

本文撰写时使用的 IDEA 版本为  2022.3.3(Ultimate Edition),如果你的界面和文中图片不一致,请检查你的 IDEA 版本

打开 IDEA,新建一个项目(File -> New Project),在下图所示的界面中创建一个项目:

  • Name:输入项目的名字,建议使用插件名;
  • Language:选择 Java
  • Build system:Paper 的开发团队使用的依赖管理器是 Gradle,故其文档给出的方法也是使用 Gradle。本文在此选择 Gradle;
  • JDK:Minecraft 1.18 及以上需要使用 JDK17;
  • Gradle DSL:跟从 Paper 文档选择 Kotlin;

设置完成后,点击 Create 按钮创建一个新的项目。



配置依赖

打开 build.gradle.kts 文件,这个文件是 Gradle 的配置文件,你可以在这里配置项目中需要使用的依赖、编译选项等等。

由于我们是 Paper 的插件项目,我们需要使用到 Paper 的 API,所以我们要引入 Paper 依赖,修改后的 build.gradle.kts 文件如下:

  1. plugins {
  2.     id("java")
  3. }

  4. group = "org.example"
  5. version = "1.0-SNAPSHOT"

  6. repositories {
  7.     mavenCentral()
  8.     // 添加 Paper MC 仓库
  9.     maven("https://repo.papermc.io/repository/maven-public/")
  10. }

  11. dependencies {
  12.     testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
  13.     testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
  14.     // 添加 paper-api 依赖,此处使用的 API 版本是 1.19.3-R0.1-SNAPSHOT
  15.     compileOnly("io.papermc.paper:paper-api:1.19.3-R0.1-SNAPSHOT")
  16. }

  17. java {
  18.     // 设置使用的 Java 语言版本为 17
  19.     toolchain.languageVersion.set(JavaLanguageVersion.of(17))
  20. }

  21. tasks.getByName<Test>("test") {
  22.     useJUnitPlatform()
  23. }
复制代码

修改后,点击下图的红框中的按钮 Load Gradle Change,也可以使用快捷键 ctrl+shift+O,顾名思义,这一步是应用我们修改的配置项,Gradle 将根据配置文件的内容为我们下载 paper-api。等待其配置完成,即可完成依赖配置步骤。



创建包和主类

官方建议的文件夹结构为:

  1. ExamplePlugin
  2. ├── build.gradle.kts
  3. ├── settings.gradle.kts
  4. └── src
  5.     └── main
  6.         ├── java
  7.         │   └── io
  8.         │       └── example
  9.         │           └── exampleplugin
  10.         │               └── ExamplePlugin.java
  11.         └── resources
复制代码

根据官方推荐的文件夹结构,首先,我们需要创建源代码的第一个包,请按以下步骤之一来做,以此保证你的包名不与其它步骤重复:

  • 如果你有一个域名 abc.io,那你应该创建 io.abc
  • 如果你没有域名,你可以使用你的 github 账户,例如你的 github 账户名为 abc,你应该将 io.example 包修改为 io.github.abc
  • 你也可以用你的邮箱,如果你的邮箱是 abc@gmail.com,你应该创建 com.gmail.abc

在创建好上面的包后,需要在其中再创建一个以你的插件名命名的包,注意包名应该为纯小写。

创建好包后,我们在最内层的包内创建一个主类


注意

如果你在创建类时 IDEA 没有给你任何帮助,例如没有为你自动生成包名,请设置 java 文件夹为你的代码根目录文件夹,具体步骤为右键 java 文件夹 -> Mark Directory as -> Sources Root,设置成功后文件夹颜色变为蓝色。


我们创建的类内容如下:

  1. package org.example.exampleplugin;

  2. import org.bukkit.plugin.java.JavaPlugin;

  3. public class ExamplePlugin extends JavaPlugin{
  4.     @Override
  5.     public void onEnable() {
  6.         logger.info("Enabled Successfully");
  7.     }
  8. }
复制代码

添加 plugin.yml

在和 java 文件夹同级的 resources 文件夹中新建一个 plugin.yml 文件,输入以下内容:

  1. name: ExamplePlugin
  2. version: 1.0.0
  3. main: org.example.exampleplugin.ExamplePlugin
  4. description: A Plugin
  5. author: MicrovenCN
  6. api-version: 1.19
复制代码

编译为 jar 文件

至此,我们已经可以编译我们的插件了,在 IDEA 的右上角新建一个运行配置文件(Current File -> Edit Configurations...



在弹出的对话框中点击 + -> Gradle



在右侧的 Run 一栏中输入 jar,代表我们要编译一个 jar 文件,填写完后点击 OK



退出来后,我们可以看到原先 Current File 的位置已经多了我们刚刚配置好的选项,点击小三角按钮运行即可。执行完成后,控制台的输出如下所示,我们的 jar 文件位于 build/libs 文件夹中。

  1. 14:35:34: Executing 'jar'...

  2. > Task :compileJava
  3. > Task :processResources
  4. > Task :classes
  5. > Task :jar

  6. BUILD SUCCESSFUL in 2s
  7. 3 actionable tasks: 3 executed
  8. 14:35:37: Execution finished 'jar'.
复制代码

找不到编译时的控制台?

点击 IDEA 底部的 Build 按钮即可


流式运行

每次都复制 jar 文件到服务端中,再重启服务端,这未免也过于麻烦了,还好我们可以利用 Gradle 的 Task 帮我们一次性搞定。

  • 添加 Plugin 和 Task

    打开 build.gradle.kts 文件,在其中添加一个新的插件 id("xyz.jpenilla.run-paper") version "2.1.0"

    1. plugins {
    2.     id("java")
    3.     id("xyz.jpenilla.run-paper") version "2.1.0"
    4. }
    复制代码

    再在文件底部添加一个新的 task,在输入以下代码后 IDEA 会报错,不必理会,我们再次 Load Gradle Change(忘记了?看下前面是怎么做的。)

    1. tasks {
    2.     runServer {
    3.         minecraftVersion("1.19.3")
    4.     }
    5. }
    复制代码

  • 添加 Run/Debug Configuration

    跟我们需要编译 jar 文件时一样,只不过这次我们在 Run 一栏中填的是 runServer,配置完成后点击运行。run-paper 将自动在 run 文件夹下搭建一个 Paper Spigot 服务端。
  • 同意 Eula 协议

    首次启动后,控制台将提示如下:

    1. You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
    复制代码

    此时我们需要打开 run/eula.txt,将其中的 eula=false 修改为 eula=true。修改后在此启动 runServer
  • 开始使用

    此后,每当我们需要测试插件,只需要执行 runServer 即可,你也可以在 run 文件夹中对你的服务端进行配置。

    1. [14:45:00 INFO]: [ExamplePlugin] Enabling ExamplePlugin v1.0.0
    2. [14:45:00 INFO]: [ExamplePlugin] Enabled Successfully
    复制代码

    可以看到我们的插件已经成功启动了。

参考资料

Paper Project Setup | PaperMC Documentation

GitHub - jpenilla/run-task: Gradle plugins adding tasks to run Minecraft server and proxy software

评分

参与人数 1人气 +2收起 理由
⠀蛋⠀+ 2Ssssssssssssssssssss

查看全部评分

帖子永久链接: 

Minecraft中文论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖若有内容转载自其它媒体,不代表本站赞同其观点和对其真实性负责
6、若本帖涉及任何版权问题,请立即告知本站,本站将及时予以删除并致以最深的歉意
7、Minecraft(我的世界)中文论坛管理员和版主有权不事先通知发贴者而删除本文

我是染氢呀 当前离线
积分
657
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2021-1-8
查看详细资料

来自:浙江

受到警告 沙发
发表于 3 天前 | 只看该作者
1111111111111111111111111
回复

使用道具 举报

582821086@qq.co 当前离线
积分
289
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-10-26
查看详细资料
头像被屏蔽

来自:广东

板凳
发表于 3 天前 | 只看该作者
老铁可以啊,自己买的腾讯云嘛?话说有没有Java版本的,插件大多数都是Java版本的吧
回复

使用道具 举报

582821086@qq.co 当前离线
积分
289
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-10-26
查看详细资料
头像被屏蔽

来自:广东

地板
发表于 3 天前 | 只看该作者
如果你可以吧Paper的API全部撸下来更好了
回复

使用道具 举报

582821086@qq.co 当前离线
积分
289
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-10-26
查看详细资料
头像被屏蔽

来自:广东

受到警告 5#
发表于 3 天前 | 只看该作者
要不我写一篇Java的吧
回复

使用道具 举报

Wudji 当前离线
积分
20389
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-3-30
查看详细资料

来自:天津

6#
发表于 3 天前 | 只看该作者
https://mm2bc.ustc-zzzz.net/

转换的效果还是不错滴

评分

参与人数 1人气 +2收起 理由
GapCold+ 2有空就试试

查看全部评分

回复

使用道具 举报

郑炜孙 当前离线
积分
1882
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2015-3-4
查看详细资料

来自:浙江

7#
发表于 3 天前 | 只看该作者
本帖最后由 郑炜孙 于 2023-4-25 20:36 编辑

正在taboolib的苦海中挣扎
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2023-4-28 09:44 , Processed in 0.042993 second(s), Total 23, Slave 22 queries, Release: Build.2023.03.15 0137, Gzip On, Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2022 我的世界中文论坛 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载