- 欢迎来到Minecraft插件百科!
- 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
- 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289
BungeeCord开发教程:修订间差异
无编辑摘要 标签:段首空两格 |
|||
第20行: | 第20行: | ||
==创建你的第一个BungeeCord插件 (代理)== | ==创建你的第一个BungeeCord插件 (代理)== | ||
恭喜你决定创建自己第一个BungeeCord插件啦! 这个教程会使你打好基础.<br> | 恭喜你决定创建自己第一个BungeeCord插件啦! 这个教程会使你打好基础.<br> | ||
这需要一定有关Java 编程的知识.([[Bukkit/插件开发教程#学习Java|我没有Java基础]]) | |||
===设置你的项目=== | ===设置你的项目=== |
2022年6月16日 (四) 08:23的版本
介绍
BungeeCord是一个转发服务端. 你也可以把它理解为代理服务端. 鉴于国内似乎没有BungeeCord插件, 我觉得写一篇教程会好些.
利用工具
官方提供了一个极其好用的工具网页. 它可以让你方便地生成一个新的, 配置好的BungeeCord插件项目.
该页面的地址 [1]
只要简单地输入Plugin name, Plugin package, Plugin author, Plugin version
他就会自动为你生成一个项目, 和一些基础的代码.
如果你是新手, 你大可以勾选Include a listener for me, please.. 这样他会为你生成一个玩家连接的监听器.
创建你的第一个BungeeCord插件 (代理)
恭喜你决定创建自己第一个BungeeCord插件啦! 这个教程会使你打好基础.
这需要一定有关Java 编程的知识.(我没有Java基础)
设置你的项目
这个教程只包括IntelliJ IDEA(一款IDE),其他IDE的操作相似.
在原文处附有Eclipse的操作
首先打开你的IDE,创建一个新的项目,在弹出的选项卡中选择Maven.(图片暂时传不上去,或原文)
点击Next,里面会有一下几类文本框:
- Name - 对应的是你的项目的名称
- Directory - 项目文件保存的路径
- GroupId - 输入你的包名
- AntifactId - 输入你插件的名称
现在,只修改Name.然后点击Finish按钮,你的IDE会跳转,并展示pom.xml文件.
我们要在</project>前添加一些内容.
<repositories> <repository> <id>bungeecord-repo</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>net.md-5</groupId> <artifactId>bungeecord-api</artifactId> <version>1.16-R0.5-SNAPSHOT</version> <type>jar</type> <scope>provided</scope> </dependency> <dependency> <groupId>net.md-5</groupId> <artifactId>bungeecord-api</artifactId> <version>1.16-R0.5-SNAPSHOT</version> <type>javadoc</type> <scope>provided</scope> </dependency> </dependencies>
这会在你的项目里添加BungeeCord的依赖.如果你使用IDEA,它会问你是否从pom.xml文件导入,选择导入.如果它询问正在更改的语言级别,允许它重新加载项目.
创建主类
现在展开TestPlugin,src,main,应该看起看来是这样的(:(脑补一下):
右键java,然后创建一个新包,命名为me.username.testplugin.接下来右键新建的包,创建一个新类,命名为TestPlugin.IDE会为你打开文件,如果它没有打开,那么你自己打开(。﹏。)
现在,我们可以创建基本的插件.这一章节仅仅聚焦于制作一个仅在启动时显示一条信息的插件.别的章节你可以使自己的插件拥有更多功能.
在TestPlugin之后在{之前加入extends Plugin
代码:
package me.username.testplugin;
import net.md_5.bungee.api.plugin.Plugin;
public class TestPlugin extends Plugin {
@Override
public void onEnable() {
// 你不应该显示启动信息
// bungeeCord已经帮你做了
getLogger().info("Yay! It loads!");
}
}
要让它被载入
现在我们可以创建plugin.yml文件,以便让BungeeCord识别出这是一个插件,然后告诉它怎样去载入它.右键resources,新建文件plugin.yml.在这个文件中,添加如下内容:
name: TestPlugin
main: me.username.testplugin.TestPlugin
version: 1.0
#author可加可不加
author: username
如果plugin.yml已经被Bukkit载入,你也可以新建bungee.yml.
编译
恭喜,我们马上就要完成了
现在应该编译了.在右侧展开Maven项目窗口(如果你没有看见它,点击视图View再点击工具按钮Tool Buttons),展开你的项目,展开Lifecycle,双击clean,再双击包package.Maven会编译你的项目.现在打开你的项目路径,再target中寻找你的插件.安装并打开BungeeCord端.如果有一行日志像这样:
[INFO] Enabled plugin TestPlugin version 1.0 by username
那么你成功了!!!!!
重编译插件,就在按着步骤来一遍
对开发者的话
如果你是一名Bukkit插件开发者,并且对任何内容都非常熟悉,因为BungeeCord API深受Bukkit API的启发。许多概念(eventhandler和scheduler)保持相同,一些类和方法名称是相同的。
事件处理API教程
BungeeCord有一个丰富的事件API,它的行为类似于Bukkit的系统,但有些不同。本章描述如何创建监听器(Listener)和创建自己的事件.
创建你的监听器
要想利用BungeeCord中的事件,在你的项目中创建一个新类.文件名任意,但出于本教程的目的,我们打算叫它
Events.java
一旦你创建了你想要用作监听器的新类,你就必须在BungeeCord中实现监听器接口.你可以让你的类声明看起来像:
public class Events implements Listener
一旦你在你的类中实现了Listener,你就可以监听任何BungeeCord事件并对其做出反应.(查看所有的事件)
举个简单的例子,我们将使用BungeeCord中的PostLoginEvent.让我们添加第一个监听器:
public class Events implements Listener { @EventHandler public void onPostLogin(PostLoginEvent event) { } }
每当玩家(ProxiedPlayer)成功通过身份验证并准备连接到服务器时会调用PostLoginEvent.通过我们的监听器,我们可以向所有其他玩家发送这样的消息,表示他们已经加入了BungeeCord 客户端网:
public class Events implements Listener { @EventHandler public void onPostLogin(PostLoginEvent event){ for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { player.sendMessage(new TextComponent(event.getPlayer().getName() + " has joined the" + "network.")); } } }
完成Events类之后,必须在主类中注册监听器.像这样:
public class Main extends Plugin { @Override public void onEnable() { getProxy().getPluginManager().registerListener(this, new Events()); } }
确保你使用的是事件列表中的事件,这样你就可以在你的插件中适当地与事件进行交互。