请选择 进入手机版 | 继续访问电脑版
切换风格
开启辅助访问      

Minecraft(我的世界)苦力怕中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

小喇叭+ 发布

wxxgz我去,俩月没进,已经多了五千人了,这也忒快了
07-10 23:19
Jouguzhilu明明我下载链接都关闭了,还有人拿迷你世界材质包搞事。
07-08 11:37
xiaobaobao我可是klpbbs第一个版主啊
07-04 21:30
xiaobaobao主世界不就比我们大了六岁吗???呜呜呜我也要当大区版主
07-04 21:29
心中一万只羊驼我想掐死自己,我做了什么事啊,我这运气都无法解释
07-04 18:50
主世界任何人都可以在任何版块创作/转载帖子,没有人有任何特权可言
07-04 12:24
小永高呐告诉你们,其实可以水水帖,或者得到苦力怕纸或主世界的认证,升级就快了
07-03 22:20
双鱼海参的航母升级也就花亿点时间
07-02 14:42
Eminem这升级速度还好 慢慢就升起来了
07-02 13:15
双鱼海参的航母这升级速度比b站还慢
07-02 08:14
小倪看起来很热闹
07-01 21:33
Minecraft杰布基岩版1.16.20.50都发布了,版主和管理员还不发
06-26 05:40
†大水怪†不买正版了 钱包没了(只要我删的够慢,你们就看不到我的flag)
06-20 20:13
爹地最近没人发小喇叭…
06-20 16:46
06-17 09:57
主世界在这里说下,论坛里所有版块(事务区除外)都没说“只有管理员/版主”才能发帖
06-16 12:30
Minecraft杰布新版本都发布了,版主还不发帖
06-16 11:50
心中一万只羊驼看来火到被攻击了,投放恶心广告之类的,这苦力怕论坛惹谁了
06-12 22:57
Eminem不去不去来我be材质
06-08 09:09
xiaobaobao我回来了!!
06-06 22:30
查看: 227|回复: 1

[开发教程] Bukkit插件开发教程 —— 第一节 搭建环境与创建项目

[复制链接]

142

主题

362

帖子

4745

积分

版主

7/4-7/21 均不在线,请找其他版主

Rank: 7Rank: 7Rank: 7

经验
4745 EP
铁粒
3063 粒
铁锭
7 块
贡献
3 点

铁镐搬运工钻石镐搬运工优秀创造者

发表于 2020-6-12 23:06:46 | 显示全部楼层 |阅读模式

登录后可下载附件

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

x
本帖最后由 主世界 于 2020-6-27 11:50 编辑

Bukkit 插件开发 入门教程
第一节 搭建环境与创建项目




开始前的准备
“Bukkit”目前就是“CraftBukkit”。
以下内容是作为一名开发者所必备的东西。

硬件准备
  • 一台运行内存大于等于2GB的电脑(32位和64位皆可)
  • 鼠标(或能用来操控电脑的工具)、键盘(或能用来打字的工具)
没有一台电脑是无法完成插件开发的。手机在这方面一点儿忙都帮不上。
目前最稳定的Java还是需要在电脑上运行。

人的准备
  • 学会Java
  • 一定的英语基础
  • 对Minecraft国际版有一定的认识
  • 知道什么是Bukkit,什么是Spigot
还没学Java?赶快点击下方链接,学会Java之后再来阅读本教程,不然永远也别想成功!
下面,我们开始Bukkit插件开发入门教程。
(在教程中,我会穿插一些Java基础内容的介绍)


搭建环境
Java Development Kit


首先,我们需要安装Java Development Kit(Java开发工具包),这样你才能运行Java程序。它是完全免费的。
Java Development Kit简称“JDK”。
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JDK和我们平时玩我的世界国际版所需的Java环境(JRE)有什么区别呢?区别就是,我们平时玩游戏用到的,只是个系统环境,相当于服务器插件中的前置插件,只有安装了它才能进行游玩。
而我们现在用到的“JDK”则是用于Java程序编译、运行和调试的一些工具,它不仅包含了JRE,还附带有其它有很大用处的功能。在这里我就不多说,毕竟咱们是做插件开发,而不是Java开发。

IntelliJ IDEA


我们刚刚安装好了Java环境,那么现在,你一定想问,我们是不是可以直接开始Bukkit插件的编写了呢?
然而并不是的。
如果你只是想用记事本(即txt文件)那样可读性不强又不能调试的工具来写Java程序的话,你可以跳过接下来“搭建环境”的教程。
每当我提到“插件编写”的时候,好多人都认为安装Eclipse并导入Bukkit环境是个很麻烦的事情。
但是,有了IntelliJ IDEA的帮助后,我们不仅不需要用到Eclipse,还不用手动导入Bukkit API了。(跳过这些复杂的步骤是不是很爽呢?)

点击进入官网,下载“Community - For JVM and Android development”的那一项即可。推荐下载“.exe”结尾的文件,不容易出错。不要去下载Ultimate版本!它虽然是免费的,但不是用来编写Java程序的!Community版部分收费,但我们初级插件开发者所需的功能已经在该软件的免费部分中包含了,不需要去付费购买。
下载完成后,点击打开(这里我用.exe结尾的文件进行安装演示)。
  • 不断地点“Continue”和“Next”,选择好安装的位置。这个软件大约需要1GB的磁盘空间,可以不安装在系统盘中。
  • 在确认好安装位置后,会出现一个叫“Installation Options”的界面。虽然说一个都不勾选是没问题的,但我推荐选择以下选项:
  • “64-bit”和“32-bit”可任选,但32位的电脑只能使用32位的软件来运行。
安装完成后,打开软件。
首先,它会弹出一个初始化设置的界面。这些对我们Bukkit插件开发都没什么用处,直接点“Skip”即可。


接着IntelliJ会开始启动。第一次启动可能需要花费一段时间,请耐心等待。


加载完成后会显示欢迎界面,先别着急创建新项目,我们在开始开发插件之前,需要安装一个插件拓展。


点击“Configure”,再点击“Plugins”。


你将看到一个“Marketplace”的界面,这相当于IntelliJ内置的插件市场。


搜索“Minecraft Development”,并点击安装。


安装成功后,我还推荐安装一个插件拓展,可以将IntelliJ的英文界面变成中文。搜索“Chinese”,选择“Chinese (Simplified) Language Pack EAP”安装即可。


创建项目
点击“创建新项目”。


选择“Minecraft”,你将看到一些我们日常开服所用的核心名称。
勾选“Bukkit Plugin”,再点击下方的“下一步 (N)”。这样在创建好项目之后,IntelliJ会自动帮你导入Bukkit API,省去了一堆复杂的人工操作。这是使用IntelliJ IDEA的优点之一。


接下来,我们需要输入新项目的详细信息。


GroupId
GroupId即插件的包名。你还记得服务端插件报错时后台显示的“at.java.org....”吗?包名跟这些差不多。例如:org.bukkit.event.block。
包的下面还包括了。比如说,一个包是com.baidu.plugins,那么“.plugins”就是“com.baidu”包下的一个类。类里面还可以包含类。(“类”是什么?
包名其实可以乱填,例如填写不存在的url:“asjdjasjj.sdajsjj”,但可读性不强。建议将自己的域名倒过来写成为包名,若没有域名,可以用me.你的名字填写,也可以反写电子地址。无论怎么写,只要自己能看得懂,并且最大限度地避免与其它已有插件的包名冲突即可。
为什么包名会冲突?因为当多个插件在同一个服务端中运行时,服务端会把它们放在一起运行。这个时候如果有任何两个插件的包名一模一样,就会发生冲突,导致报错并且无法使用。
在填写GroupId时,你需要注意以下几点:
  • 只能填英文字母
  • 全部字母小写
  • 将网址反写
  • 需要有较强的可读性
此处,你无需为当前的项目创建一个包。你只需要将域名反写即可。在下一步,IntelliJ会自动在你这一步填写的GroupId后面加上“.artifactid.ArtifactId”的。

ArtifactId
填完了包名之后,你会看到下一行有个叫“ArtifactId”的东西要你填写。
ArtifactId即插件的名称。插件的名称可以随便填写,但不能有空格和特殊字符。
同样地,ArtifactId要尽量与其它现有插件的ArtifactId不一样,否则在运行时同样会报错。
有些插件的名称和ArtifactId大不一样,所以在使用时需要时刻注意控制台发出的信息。
在填写ArtifactId时,你需要注意以下几点:
  • 只能填英文字母
  • 可大写、可小写
  • 不能有空格和特殊字符
  • 大小写敏感
  • 需要尽量避免与其它插件的ArtifactId冲突

Version
这个不用解释吧?不就是你插件的版本号嘛!
  • “SNAPSHOT”是“快照”的意思。
  • 在填写后请尽量不要在项目内对版本号进行修改,因为plugin.yml(这个玩意儿下一节会讲)不会自动同步版本号;版本号不一致会导致错误。

Maven,Gradle
Maven和Gradle都是一个类似仓库的玩意儿。有了其中的一个,大部分的基础API就不用你一个个地去安装了,省去了很多不必要的麻烦。你可以在它们之间,不过我推荐使用Maven。由于本人对此方面了解不够透彻,这里引用别人的文章来介绍Maven和Gradle两者的区别:
Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。
整个过程可以分成以下几个步骤:

  • 编译源代码
  • 运行单元测试和集成测试
  • 执行静态代码分析、生成分析报告
  • 创建发布版本
  • 部署到目标环境
  • 部署传递过程
  • 执行冒烟测试和自动功能测试
  • 如果你手工去执行每一个步骤无疑效率比较低而且容易出错,有了自动化构建你只需要自定义你的构建逻辑,剩下的事情交给工具去完成。

虽然两者都是项目工具,但是maven现在已经是行业标准,Gradle是后起之秀,很多人对他的了解都是从android studio中得到的,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数。

Gradle最大的优点有两点。其一是简洁,基于Groovy的紧凑脚本实在让人爱不释手,在表述意图方面也没有什么不清晰的地方。其二是灵活,各种在Maven中难以下手的事情,在Gradle就是小菜一碟,比如修改现有的构建生命周期,几行配置就完成了,同样的事情,在Maven中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。


填写完毕后,点击“下一步 (N)”。
在下一步中,我们能看到更多的选项需要填写。


Required Settings
此设置中所有内容必填。一般IntelliJ会帮你填好,可根据个人喜好更改。
Plugin Name:即上一步中填写的ArtifactId,插件名。
Main Class Name:即插件主类的包名。“Class”在这里的含义就是“类”。一个插件的源码可以包含多个类,但必须要有个主类进行支撑。插件的核心便是主类,作用跟开服时的服务端核心是一样的。在所有类中,主类会优先运行,而其它子类都是并列运行的。在这里,你可以看到,IntelliJ自动在上一步中填写的GroupId后面加上了你的插件名(全小写).插件名。
版本:即开发的插件所对应的Minecraft版本,你希望将插件用在哪个Minecraft版本就选择哪个版本。一般来说,(Java版)1.7及以下的插件可互相兼容;1.8-1.12的插件可互相兼容;1.13+的插件可互相兼容。我看了下IntelliJ给出的下拉菜单,里面最低只能选择Minecraft Java 1.12版。

Optional Settings
顾名思义,“可选的设置”。非必填,一般用于展现插件基本信息。
Description:插件介绍,随便填写,但不使用英文容易出错,可以打空格。
Authors:插件作者,随便填写,但不使用英文容易出错,可以使用下划线。多个作者中间用英文逗号“,”隔开。
Website:这个更是随便填了,一般只能填英文、“.”和“-”,其它字符不建议使用。
Log Prefix:插件在控制台中显示信息的前缀,例如“[MyPlugin]”。后面有个“Load at”的下拉菜单,一个是“Post World”,一个是“Startup”,这个就根据个人喜好选择喽,不过后者可能会加重服务端开启时的负担。
Load Before:这里填其它插件的ArtifactId,就是你想要你的插件在哪些插件加载完成前就加载?一般不用填写,除非会与其它插件在功能上冲突。
Depend:即你插件的前置,若没有这个前置插件,你的插件将不会被加载,无论你实际用没用到那个前置。这里填前置插件的ArtifactId。
Soft Depend:这个跟“Depend”大体上是一样的,但唯一区别就是这是“可选前置”,即没有该前置插件你的插件也能正常加载。

在下一步中,你将看到项目路径以及其它信息:


其中,最上方的“项目名称”可以根据自己的喜好用英文填写(相当于保存在本地的文件夹和文件名,若使用特殊字符请避免Windows不识别的问题),其它内容不用管。
点击“完成 (F)”,你的插件就创建好了!


本节练习
课后任务
1.用IntelliJ IDEA Community创建你的第一个插件项目。
3.温习Java

课后自测
1.JDK的全称是(    )
A. Java Development Knowledge
B. Java Developing Kit
C. Java Development Kit
2.表示插件包名的是(    )
A. ArtifactId
B. GroupId
C. PackageId
3.在“com.nukkitx.cc.plugins.plugin.Bukkit”中,表示类名的是(    )
A. cc
B. plugins
C. plugin
D. Bukkit

课后自测答案
游客,如果您要查看本帖隐藏内容请回复


最后,有什么不懂的可以直接在下方评论区回复,我会一一解答哦~
第一次写插件开发类的教程,若有错误欢迎批评指正!
本帖未经作者允许严禁转载!



作者:主世界.png

评分

参与人数 1贡献 +2 收起 理由
苦力怕纸 + 2 很给力!

查看全部评分

帖子地址: 

来自群组: Tea Pixel Group
有事请私聊或@,部分帖子已不接收回复通知
如果你的帖子被我移到回收区说明不符合规定 修改后私聊我可移回
若对本人的处理有任何异议请私聊或者到反馈版发帖

【分享】分享一些论坛发帖模板
回复

使用道具 举报

44

主题

275

帖子

5840

积分

版主

Rank: 7Rank: 7Rank: 7

经验
5840 EP
铁粒
3978 粒
铁锭
15 块
贡献
2 点

铁镐搬运工优秀创造者钻石镐搬运工

发表于 2020-6-12 23:12:47 来自手机 | 显示全部楼层
老哥牛批
来自群组: Tea Pixel Group
侵权联系我,我会在24小时内删除
邮箱:
1639876401@qq.com
2196429468@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|网站地图|klpbbs.com |网站地图

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

最后一次刷新时间 GMT+8, 2020-7-11 05:15 , 加载本页用了 0.085042 秒 .

声明:本站与Mojang以及微软公司没有从属关系

苦力怕论坛来到地球已经

© 2018-2020 苦力怕论坛

快速回复 返回顶部 返回列表