页面名字空间 (article_namespace) | 0 |
页面标题(不含名字空间) (article_text) | BungeeCord开发教程 |
完整页面标题 (article_prefixedtext) | BungeeCord开发教程 |
最后十位对该页面贡献的用户 (article_recent_contributors) | Mofec x
Mcdarc
|
旧的内容模型 (old_content_model) | wikitext |
新的内容模型 (new_content_model) | wikitext |
编辑前的旧页面,wiki代码格式 (old_wikitext) | {{待完善}}
{{待更新|url=https://www.spigotmc.org/wiki/bungeecord-plugin-development/}}
== 介绍 ==
BungeeCord是一个转发服务端. 你也可以把它理解为代理服务端. 鉴于国内似乎没有BungeeCord插件, 我觉得写一篇教程会好些.
== 利用工具 ==
官方提供了一个极其好用的工具网页. 它可以让你方便地生成一个新的, 配置好的'''BungeeCord'''插件项目.
该页面的地址 [http://utilities.shall.fail/bungeecord/pluginhelper/]
只要简单地输入''Plugin name'', ''Plugin package'', ''Plugin author'', ''Plugin version''
他就会自动为你生成一个项目, 和一些基础的代码.
如果你是新手, 你大可以勾选''Include a listener for me, please.''. 这样他会为你生成一个玩家连接的监听器.
==创建你的第一个BungeeCord插件 (代理)==
恭喜你决定创建自己第一个BungeeCord插件啦! 这个教程会使你打好基础.<br>
Java 编程的知识是需要的.([[Bukkit/插件开发教程#学习Java|我没有Java基础]])
===设置你的项目===
这个教程只包括IntelliJ IDEA(一款IDE),其他IDE的操作相似.
在[https://www.spigotmc.org/wiki/create-your-first-bungeecord-plugin-proxy-spigotmc 原文]处附有Eclipse的操作<br>
首先打开你的IDE,创建一个新的项目,在弹出的选项卡中选择Maven.(图片暂时传不上去,或[https://www.spigotmc.org/wiki/create-your-first-bungeecord-plugin-proxy-spigotmc 原文])<br>
点击Next,里面会有一下几类文本框:
*Name - 对应的是你的项目的名称
*Directory - 项目文件保存的路径
*GroupId - 输入你的包名
*AntifactId - 输入你插件的名称
现在,只修改Name.然后点击Finish按钮,你的IDE会跳转,并展示pom.xml文件.<br>
我们要在'''</project>前'''添加一些内容.<br>
<pre><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></pre>
这会在你的项目里添加BungeeCord的依赖.如果你使用IDEA,它会问你是否从pom.xml文件导入,选择导入.如果它询问正在更改的语言级别,允许它重新加载项目.
===创建主类===
现在展开TestPlugin,src,main,应该看起看来是这样的(:(脑补一下):<br>
右键java,然后创建一个新包,命名为me.username.testplugin.接下来右键新建的包,创建一个新类,命名为TestPlugin.IDE会为你打开文件,如果它没有打开,那么你自己打开(。﹏。)<br>
现在,我们可以创建基本的插件.这一章节仅仅聚焦于制作一个仅在启动时显示一条信息的插件.别的章节你可以使自己的插件拥有更多功能.
在TestPlugin'''之后'''在'''{'''之前加入'''extends Plugin'''<br>
代码:<source lang="java">
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!");
}
}
</source>
===要让它被载入===
现在我们可以创建plugin.yml文件,以便让BungeeCord识别出这是一个插件,然后告诉它怎样去载入它.右键resources,新建文件plugin.yml.在这个文件中,添加如下内容:<br>
<source lang="xml">
name: TestPlugin
main: me.username.testplugin.TestPlugin
version: 1.0
#author可加可不加
author: username
</source>
如果plugin.yml已经被Bukkit载入,你也可以新建bungee.yml.
===编译===
'''恭喜,我们马上就要完成了'''
<br>现在应该编译了.在右侧展开Maven项目窗口(如果你没有看见它,点击视图View再点击工具按钮Tool Buttons),展开你的项目,展开Lifecycle,双击clean,再双击包package.Maven会编译你的项目.现在打开你的项目路径,再target中寻找你的插件.安装并打开BungeeCord端.如果有一行日志像这样:<br>
<br><big>
[INFO] Enabled plugin TestPlugin version 1.0 by username
</big><br><br>
'''那么你成功了!!!!!'''<br>
重编译插件,就在按着步骤来一遍
===对开发者的话===
如果你是一名Bukkit插件开发者,并且对任何内容都非常熟悉,因为BungeeCord API深受Bukkit API的启发。许多概念(eventhandler和scheduler)保持相同,一些类和方法名称是相同的。
==事件处理API教程==
==常有的误区==
==创建基础的命令功能 (代理)==
==Bukkit 和 BungeeCord 插件消息通道==
==聊天组件 API==
==在服务器之间传送玩家 (代理)==
==使用BungeeCord配置文件系统==
==通过BungeeCord创建计分板==
==创建一个Bungee的插件 (不需要Maven)== |
编辑后的新页面,wiki代码格式 (new_wikitext) | {{待完善}}
{{待更新|url=https://www.spigotmc.org/wiki/bungeecord-plugin-development/}}
== 介绍 ==
BungeeCord是一个转发服务端. 你也可以把它理解为代理服务端. 鉴于国内似乎没有BungeeCord插件, 我觉得写一篇教程会好些.
== 利用工具 ==
官方提供了一个极其好用的工具网页. 它可以让你方便地生成一个新的, 配置好的'''BungeeCord'''插件项目.
该页面的地址 [http://utilities.shall.fail/bungeecord/pluginhelper/]
只要简单地输入''Plugin name'', ''Plugin package'', ''Plugin author'', ''Plugin version''
他就会自动为你生成一个项目, 和一些基础的代码.
如果你是新手, 你大可以勾选''Include a listener for me, please.''. 这样他会为你生成一个玩家连接的监听器.
==创建你的第一个BungeeCord插件 (代理)==
恭喜你决定创建自己第一个BungeeCord插件啦! 这个教程会使你打好基础.<br>
Java 编程的知识是需要的.([[Bukkit/插件开发教程#学习Java|我没有Java基础]])
===设置你的项目===
这个教程只包括IntelliJ IDEA(一款IDE),其他IDE的操作相似.
在[https://www.spigotmc.org/wiki/create-your-first-bungeecord-plugin-proxy-spigotmc 原文]处附有Eclipse的操作<br>
首先打开你的IDE,创建一个新的项目,在弹出的选项卡中选择Maven.(图片暂时传不上去,或[https://www.spigotmc.org/wiki/create-your-first-bungeecord-plugin-proxy-spigotmc 原文])<br>
点击Next,里面会有一下几类文本框:
*Name - 对应的是你的项目的名称
*Directory - 项目文件保存的路径
*GroupId - 输入你的包名
*AntifactId - 输入你插件的名称
现在,只修改Name.然后点击Finish按钮,你的IDE会跳转,并展示pom.xml文件.<br>
我们要在'''</project>前'''添加一些内容.<br>
<pre><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></pre>
这会在你的项目里添加BungeeCord的依赖.如果你使用IDEA,它会问你是否从pom.xml文件导入,选择导入.如果它询问正在更改的语言级别,允许它重新加载项目.
===创建主类===
现在展开TestPlugin,src,main,应该看起看来是这样的(:(脑补一下):<br>
右键java,然后创建一个新包,命名为me.username.testplugin.接下来右键新建的包,创建一个新类,命名为TestPlugin.IDE会为你打开文件,如果它没有打开,那么你自己打开(。﹏。)<br>
现在,我们可以创建基本的插件.这一章节仅仅聚焦于制作一个仅在启动时显示一条信息的插件.别的章节你可以使自己的插件拥有更多功能.
在TestPlugin'''之后'''在'''{'''之前加入'''extends Plugin'''<br>
代码:<source lang="java">
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!");
}
}
</source>
===要让它被载入===
现在我们可以创建plugin.yml文件,以便让BungeeCord识别出这是一个插件,然后告诉它怎样去载入它.右键resources,新建文件plugin.yml.在这个文件中,添加如下内容:<br>
<source lang="xml">
name: TestPlugin
main: me.username.testplugin.TestPlugin
version: 1.0
#author可加可不加
author: username
</source>
如果plugin.yml已经被Bukkit载入,你也可以新建bungee.yml.
===编译===
'''恭喜,我们马上就要完成了'''
<br>现在应该编译了.在右侧展开Maven项目窗口(如果你没有看见它,点击视图View再点击工具按钮Tool Buttons),展开你的项目,展开Lifecycle,双击clean,再双击包package.Maven会编译你的项目.现在打开你的项目路径,再target中寻找你的插件.安装并打开BungeeCord端.如果有一行日志像这样:<br>
<br><big>
[INFO] Enabled plugin TestPlugin version 1.0 by username
</big><br><br>
'''那么你成功了!!!!!'''<br>
重编译插件,就在按着步骤来一遍
===对开发者的话===
如果你是一名Bukkit插件开发者,并且对任何内容都非常熟悉,因为BungeeCord API深受Bukkit API的启发。许多概念(eventhandler和scheduler)保持相同,一些类和方法名称是相同的。
==事件处理API教程==
BungeeCord有一个丰富的事件API,它的行为类似于Bukkit的系统,但有些不同。本章描述如何创建监听器(Listener)和创建自己的事件.
===创建你的监听器===
要想利用BungeeCord中的事件,在你的项目中创建一个新类.文件名任意,但出于本教程的目的,我们打算叫它
<br><big>Events.java</big><br>
一旦你创建了你想要用作监听器的新类,你就必须在BungeeCord中实现监听器接口.你可以让你的类声明看起来像:<br>
<pre> public class Events implements Listener </pre><br>
一旦你在你的类中实现了Listener,你就可以监听任何BungeeCord事件并对其做出反应.(查看所有的事件)
<br>举个简单的例子,我们将使用BungeeCord中的PostLoginEvent.让我们添加第一个监听器:
<br><source lang="java">
public class Events implements Listener {
@EventHandler
public void onPostLogin(PostLoginEvent event) {
}
}
</source><br>
每当玩家(ProxiedPlayer)成功通过身份验证并准备连接到服务器时会调用PostLoginEvent.通过我们的监听器,我们可以向所有其他玩家发送这样的消息,表示他们已经加入了BungeeCord 客户端网:
<br><source lang="java">
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."));
}
}
}
</source><br>
完成Events类之后,必须在主类中注册监听器.像这样:
<br><source lang="java">
public class Main extends Plugin {
@Override
public void onEnable() {
getProxy().getPluginManager().registerListener(this, new Events());
}
}
</source><br>
确保你使用的是事件列表中的事件,这样你就可以在你的插件中适当地与事件进行交互。
===创建你自己的事件===
==常有的误区==
==创建基础的命令功能 (代理)==
==Bukkit 和 BungeeCord 插件消息通道==
==聊天组件 API==
==在服务器之间传送玩家 (代理)==
==使用BungeeCord配置文件系统==
==通过BungeeCord创建计分板==
==创建一个Bungee的插件 (不需要Maven)== |
编辑后的新页面,已解析为HTML源码 (new_html) | <div class="mw-parser-output"><div class="infoBox" style="width:80%;border-left: 10px solid green;"><div class="infoBoxContent">
<div class="infoBoxIcon" style=""><img alt="Icon-info.png" src="/images/thumb/5/57/Icon-info.png/50px-Icon-info.png" width="50" height="50" srcset="/images/thumb/5/57/Icon-info.png/75px-Icon-info.png 1.5x, /images/thumb/5/57/Icon-info.png/100px-Icon-info.png 2x" /></div><div class="infoBoxText" style="color: green;"><b>本条目已有一定量的内容,但仍需完善</b>
<p>欢迎参与<a class="external text" href="https://mineplugin.org/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit">本条目的完善工作</a>。
</p><p>你可以从以下几个方面入手
</p>
<ul><li>参阅<a href="/Studio:%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%89%8B%E5%86%8C" class="mw-redirect" title="Studio:格式化手册">格式化手册</a>,并对该页面进行相应格式排版工作;</li>
<li>日常检查是否内容有更新版本并更新该页面;</li>
<li>修复该页面中已出现/潜在的问题</li></ul>
</div>
</div></div>
<div class="infoBox" style="width:80%;border-left: 10px solid yellow;"><div class="infoBoxContent">
<div class="infoBoxTitle" style="">本条目对应原文已经或正在更新。</div><div class="infoBoxIcon" style=""><img alt="Icon-info.png" src="/images/thumb/5/57/Icon-info.png/50px-Icon-info.png" width="50" height="50" srcset="/images/thumb/5/57/Icon-info.png/75px-Icon-info.png 1.5x, /images/thumb/5/57/Icon-info.png/100px-Icon-info.png 2x" /></div><div class="infoBoxText" style="">近期请前往<a class="external text" href="https://www.spigotmc.org/wiki/bungeecord-plugin-development/">这里</a>关注,查看新的版本并更新至本条目。</div>
</div></div>
<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.BB.8B.E7.BB.8D"><span class="tocnumber">1</span> <span class="toctext">介绍</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#.E5.88.A9.E7.94.A8.E5.B7.A5.E5.85.B7"><span class="tocnumber">2</span> <span class="toctext">利用工具</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#.E5.88.9B.E5.BB.BA.E4.BD.A0.E7.9A.84.E7.AC.AC.E4.B8.80.E4.B8.AABungeeCord.E6.8F.92.E4.BB.B6_.28.E4.BB.A3.E7.90.86.29"><span class="tocnumber">3</span> <span class="toctext">创建你的第一个BungeeCord插件 (代理)</span></a>
<ul>
<li class="toclevel-2 tocsection-4"><a href="#.E8.AE.BE.E7.BD.AE.E4.BD.A0.E7.9A.84.E9.A1.B9.E7.9B.AE"><span class="tocnumber">3.1</span> <span class="toctext">设置你的项目</span></a></li>
<li class="toclevel-2 tocsection-5"><a href="#.E5.88.9B.E5.BB.BA.E4.B8.BB.E7.B1.BB"><span class="tocnumber">3.2</span> <span class="toctext">创建主类</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#.E8.A6.81.E8.AE.A9.E5.AE.83.E8.A2.AB.E8.BD.BD.E5.85.A5"><span class="tocnumber">3.3</span> <span class="toctext">要让它被载入</span></a></li>
<li class="toclevel-2 tocsection-7"><a href="#.E7.BC.96.E8.AF.91"><span class="tocnumber">3.4</span> <span class="toctext">编译</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#.E5.AF.B9.E5.BC.80.E5.8F.91.E8.80.85.E7.9A.84.E8.AF.9D"><span class="tocnumber">3.5</span> <span class="toctext">对开发者的话</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-9"><a href="#.E4.BA.8B.E4.BB.B6.E5.A4.84.E7.90.86API.E6.95.99.E7.A8.8B"><span class="tocnumber">4</span> <span class="toctext">事件处理API教程</span></a>
<ul>
<li class="toclevel-2 tocsection-10"><a href="#.E5.88.9B.E5.BB.BA.E4.BD.A0.E7.9A.84.E7.9B.91.E5.90.AC.E5.99.A8"><span class="tocnumber">4.1</span> <span class="toctext">创建你的监听器</span></a></li>
<li class="toclevel-2 tocsection-11"><a href="#.E5.88.9B.E5.BB.BA.E4.BD.A0.E8.87.AA.E5.B7.B1.E7.9A.84.E4.BA.8B.E4.BB.B6"><span class="tocnumber">4.2</span> <span class="toctext">创建你自己的事件</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-12"><a href="#.E5.B8.B8.E6.9C.89.E7.9A.84.E8.AF.AF.E5.8C.BA"><span class="tocnumber">5</span> <span class="toctext">常有的误区</span></a></li>
<li class="toclevel-1 tocsection-13"><a href="#.E5.88.9B.E5.BB.BA.E5.9F.BA.E7.A1.80.E7.9A.84.E5.91.BD.E4.BB.A4.E5.8A.9F.E8.83.BD_.28.E4.BB.A3.E7.90.86.29"><span class="tocnumber">6</span> <span class="toctext">创建基础的命令功能 (代理)</span></a></li>
<li class="toclevel-1 tocsection-14"><a href="#Bukkit_.E5.92.8C_BungeeCord_.E6.8F.92.E4.BB.B6.E6.B6.88.E6.81.AF.E9.80.9A.E9.81.93"><span class="tocnumber">7</span> <span class="toctext">Bukkit 和 BungeeCord 插件消息通道</span></a></li>
<li class="toclevel-1 tocsection-15"><a href="#.E8.81.8A.E5.A4.A9.E7.BB.84.E4.BB.B6_API"><span class="tocnumber">8</span> <span class="toctext">聊天组件 API</span></a></li>
<li class="toclevel-1 tocsection-16"><a href="#.E5.9C.A8.E6.9C.8D.E5.8A.A1.E5.99.A8.E4.B9.8B.E9.97.B4.E4.BC.A0.E9.80.81.E7.8E.A9.E5.AE.B6_.28.E4.BB.A3.E7.90.86.29"><span class="tocnumber">9</span> <span class="toctext">在服务器之间传送玩家 (代理)</span></a></li>
<li class="toclevel-1 tocsection-17"><a href="#.E4.BD.BF.E7.94.A8BungeeCord.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6.E7.B3.BB.E7.BB.9F"><span class="tocnumber">10</span> <span class="toctext">使用BungeeCord配置文件系统</span></a></li>
<li class="toclevel-1 tocsection-18"><a href="#.E9.80.9A.E8.BF.87BungeeCord.E5.88.9B.E5.BB.BA.E8.AE.A1.E5.88.86.E6.9D.BF"><span class="tocnumber">11</span> <span class="toctext">通过BungeeCord创建计分板</span></a></li>
<li class="toclevel-1 tocsection-19"><a href="#.E5.88.9B.E5.BB.BA.E4.B8.80.E4.B8.AABungee.E7.9A.84.E6.8F.92.E4.BB.B6_.28.E4.B8.8D.E9.9C.80.E8.A6.81Maven.29"><span class="tocnumber">12</span> <span class="toctext">创建一个Bungee的插件 (不需要Maven)</span></a></li>
</ul>
</div>
<h2><span id="介绍"></span><span class="mw-headline" id=".E4.BB.8B.E7.BB.8D">介绍</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=1" title="编辑小节:介绍">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>BungeeCord是一个转发服务端. 你也可以把它理解为代理服务端. 鉴于国内似乎没有BungeeCord插件, 我觉得写一篇教程会好些.
</p>
<h2><span id="利用工具"></span><span class="mw-headline" id=".E5.88.A9.E7.94.A8.E5.B7.A5.E5.85.B7">利用工具</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=2" title="编辑小节:利用工具">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>官方提供了一个极其好用的工具网页. 它可以让你方便地生成一个新的, 配置好的<b>BungeeCord</b>插件项目.
</p><p>该页面的地址 <a class="external autonumber" href="http://utilities.shall.fail/bungeecord/pluginhelper/">[1]</a>
</p><p>只要简单地输入<i>Plugin name</i>, <i>Plugin package</i>, <i>Plugin author</i>, <i>Plugin version</i>
</p><p>他就会自动为你生成一个项目, 和一些基础的代码.
</p><p>如果你是新手, 你大可以勾选<i>Include a listener for me, please.</i>. 这样他会为你生成一个玩家连接的监听器.
</p>
<h2><span id="创建你的第一个BungeeCord插件_(代理)"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E4.BD.A0.E7.9A.84.E7.AC.AC.E4.B8.80.E4.B8.AABungeeCord.E6.8F.92.E4.BB.B6_.28.E4.BB.A3.E7.90.86.29">创建你的第一个BungeeCord插件 (代理)</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=3" title="编辑小节:创建你的第一个BungeeCord插件 (代理)">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>恭喜你决定创建自己第一个BungeeCord插件啦! 这个教程会使你打好基础.<br />
Java 编程的知识是需要的.(<a href="/Bukkit/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B#.E5.AD.A6.E4.B9.A0Java" title="Bukkit/插件开发教程">我没有Java基础</a>)
</p>
<h3><span id="设置你的项目"></span><span class="mw-headline" id=".E8.AE.BE.E7.BD.AE.E4.BD.A0.E7.9A.84.E9.A1.B9.E7.9B.AE">设置你的项目</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=4" title="编辑小节:设置你的项目">编辑</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>这个教程只包括IntelliJ IDEA(一款IDE),其他IDE的操作相似.
在<a class="external text" href="https://www.spigotmc.org/wiki/create-your-first-bungeecord-plugin-proxy-spigotmc">原文</a>处附有Eclipse的操作<br />
</p><p>首先打开你的IDE,创建一个新的项目,在弹出的选项卡中选择Maven.(图片暂时传不上去,或<a class="external text" href="https://www.spigotmc.org/wiki/create-your-first-bungeecord-plugin-proxy-spigotmc">原文</a>)<br />
点击Next,里面会有一下几类文本框:
</p>
<ul><li>Name - 对应的是你的项目的名称</li>
<li>Directory - 项目文件保存的路径</li>
<li>GroupId - 输入你的包名</li>
<li>AntifactId - 输入你插件的名称</li></ul>
<p>现在,只修改Name.然后点击Finish按钮,你的IDE会跳转,并展示pom.xml文件.<br />
我们要在<b></project>前</b>添加一些内容.<br />
</p>
<pre><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></pre>
<p>这会在你的项目里添加BungeeCord的依赖.如果你使用IDEA,它会问你是否从pom.xml文件导入,选择导入.如果它询问正在更改的语言级别,允许它重新加载项目.
</p>
<h3><span id="创建主类"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E4.B8.BB.E7.B1.BB">创建主类</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=5" title="编辑小节:创建主类">编辑</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>现在展开TestPlugin,src,main,应该看起看来是这样的(:(脑补一下):<br />
</p><p>右键java,然后创建一个新包,命名为me.username.testplugin.接下来右键新建的包,创建一个新类,命名为TestPlugin.IDE会为你打开文件,如果它没有打开,那么你自己打开(。﹏。)<br />
现在,我们可以创建基本的插件.这一章节仅仅聚焦于制作一个仅在启动时显示一条信息的插件.别的章节你可以使自己的插件拥有更多功能.
</p><p>在TestPlugin<b>之后</b>在<b>{</b>之前加入<b>extends Plugin</b><br />
</p><p>
代码:</p><div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">package</span> <span class="nn">me.username.testplugin</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">net.md_5.bungee.api.plugin.Plugin</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">TestPlugin</span> <span class="kd">extends</span> <span class="n">Plugin</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="c1">// 你不应该显示启动信息</span>
<span class="c1">// bungeeCord已经帮你做了</span>
<span class="n">getLogger</span><span class="o">().</span><span class="na">info</span><span class="o">(</span><span class="s">"Yay! It loads!"</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<p><br />
</p>
<h3><span id="要让它被载入"></span><span class="mw-headline" id=".E8.A6.81.E8.AE.A9.E5.AE.83.E8.A2.AB.E8.BD.BD.E5.85.A5">要让它被载入</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=6" title="编辑小节:要让它被载入">编辑</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>现在我们可以创建plugin.yml文件,以便让BungeeCord识别出这是一个插件,然后告诉它怎样去载入它.右键resources,新建文件plugin.yml.在这个文件中,添加如下内容:<br />
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span>name: TestPlugin
main: me.username.testplugin.TestPlugin
version: 1.0
#author可加可不加
author: username
</pre></div>
<p>如果plugin.yml已经被Bukkit载入,你也可以新建bungee.yml.
</p>
<h3><span id="编译"></span><span class="mw-headline" id=".E7.BC.96.E8.AF.91">编译</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=7" title="编辑小节:编译">编辑</a><span class="mw-editsection-bracket">]</span></span></h3>
<p><b>恭喜,我们马上就要完成了</b>
<br />现在应该编译了.在右侧展开Maven项目窗口(如果你没有看见它,点击视图View再点击工具按钮Tool Buttons),展开你的项目,展开Lifecycle,双击clean,再双击包package.Maven会编译你的项目.现在打开你的项目路径,再target中寻找你的插件.安装并打开BungeeCord端.如果有一行日志像这样:<br />
<br /><big>
[INFO] Enabled plugin TestPlugin version 1.0 by username
</big><br /><br />
<b>那么你成功了!!!!!</b><br />
重编译插件,就在按着步骤来一遍
</p>
<h3><span id="对开发者的话"></span><span class="mw-headline" id=".E5.AF.B9.E5.BC.80.E5.8F.91.E8.80.85.E7.9A.84.E8.AF.9D">对开发者的话</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=8" title="编辑小节:对开发者的话">编辑</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>如果你是一名Bukkit插件开发者,并且对任何内容都非常熟悉,因为BungeeCord API深受Bukkit API的启发。许多概念(eventhandler和scheduler)保持相同,一些类和方法名称是相同的。
</p>
<h2><span id="事件处理API教程"></span><span class="mw-headline" id=".E4.BA.8B.E4.BB.B6.E5.A4.84.E7.90.86API.E6.95.99.E7.A8.8B">事件处理API教程</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=9" title="编辑小节:事件处理API教程">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>BungeeCord有一个丰富的事件API,它的行为类似于Bukkit的系统,但有些不同。本章描述如何创建监听器(Listener)和创建自己的事件.
</p>
<h3><span id="创建你的监听器"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E4.BD.A0.E7.9A.84.E7.9B.91.E5.90.AC.E5.99.A8">创建你的监听器</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=10" title="编辑小节:创建你的监听器">编辑</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>要想利用BungeeCord中的事件,在你的项目中创建一个新类.文件名任意,但出于本教程的目的,我们打算叫它
<br /><big>Events.java</big><br />
一旦你创建了你想要用作监听器的新类,你就必须在BungeeCord中实现监听器接口.你可以让你的类声明看起来像:<br />
</p>
<pre> public class Events implements Listener </pre><p><br />
</p><p>一旦你在你的类中实现了Listener,你就可以监听任何BungeeCord事件并对其做出反应.(查看所有的事件)
<br />举个简单的例子,我们将使用BungeeCord中的PostLoginEvent.让我们添加第一个监听器:
</p>
<p><br /></p><div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Events</span> <span class="kd">implements</span> <span class="n">Listener</span> <span class="o">{</span>
<span class="nd">@EventHandler</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onPostLogin</span><span class="o">(</span><span class="n">PostLoginEvent</span> <span class="n">event</span><span class="o">)</span> <span class="o">{</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div><p><br />
</p><p>每当玩家(ProxiedPlayer)成功通过身份验证并准备连接到服务器时会调用PostLoginEvent.通过我们的监听器,我们可以向所有其他玩家发送这样的消息,表示他们已经加入了BungeeCord 客户端网:
</p>
<p><br /></p><div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Events</span> <span class="kd">implements</span> <span class="n">Listener</span> <span class="o">{</span>
<span class="nd">@EventHandler</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onPostLogin</span><span class="o">(</span><span class="n">PostLoginEvent</span> <span class="n">event</span><span class="o">){</span>
<span class="k">for</span> <span class="o">(</span><span class="n">ProxiedPlayer</span> <span class="n">player</span> <span class="o">:</span> <span class="n">ProxyServer</span><span class="o">.</span><span class="na">getInstance</span><span class="o">().</span><span class="na">getPlayers</span><span class="o">())</span> <span class="o">{</span>
<span class="n">player</span><span class="o">.</span><span class="na">sendMessage</span><span class="o">(</span><span class="k">new</span> <span class="n">TextComponent</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">" has joined the"</span>
<span class="o">+</span> <span class="s">"network."</span><span class="o">));</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div><p><br />
</p><p>完成Events类之后,必须在主类中注册监听器.像这样:
</p>
<p><br /></p><div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Main</span> <span class="kd">extends</span> <span class="n">Plugin</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">getProxy</span><span class="o">().</span><span class="na">getPluginManager</span><span class="o">().</span><span class="na">registerListener</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="k">new</span> <span class="n">Events</span><span class="o">());</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div><p><br />
</p><p>确保你使用的是事件列表中的事件,这样你就可以在你的插件中适当地与事件进行交互。
</p>
<h3><span id="创建你自己的事件"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E4.BD.A0.E8.87.AA.E5.B7.B1.E7.9A.84.E4.BA.8B.E4.BB.B6">创建你自己的事件</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=11" title="编辑小节:创建你自己的事件">编辑</a><span class="mw-editsection-bracket">]</span></span></h3>
<h2><span id="常有的误区"></span><span class="mw-headline" id=".E5.B8.B8.E6.9C.89.E7.9A.84.E8.AF.AF.E5.8C.BA">常有的误区</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=12" title="编辑小节:常有的误区">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span id="创建基础的命令功能_(代理)"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E5.9F.BA.E7.A1.80.E7.9A.84.E5.91.BD.E4.BB.A4.E5.8A.9F.E8.83.BD_.28.E4.BB.A3.E7.90.86.29">创建基础的命令功能 (代理)</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=13" title="编辑小节:创建基础的命令功能 (代理)">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span id="Bukkit_和_BungeeCord_插件消息通道"></span><span class="mw-headline" id="Bukkit_.E5.92.8C_BungeeCord_.E6.8F.92.E4.BB.B6.E6.B6.88.E6.81.AF.E9.80.9A.E9.81.93">Bukkit 和 BungeeCord 插件消息通道</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=14" title="编辑小节:Bukkit 和 BungeeCord 插件消息通道">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span id="聊天组件_API"></span><span class="mw-headline" id=".E8.81.8A.E5.A4.A9.E7.BB.84.E4.BB.B6_API">聊天组件 API</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=15" title="编辑小节:聊天组件 API">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span id="在服务器之间传送玩家_(代理)"></span><span class="mw-headline" id=".E5.9C.A8.E6.9C.8D.E5.8A.A1.E5.99.A8.E4.B9.8B.E9.97.B4.E4.BC.A0.E9.80.81.E7.8E.A9.E5.AE.B6_.28.E4.BB.A3.E7.90.86.29">在服务器之间传送玩家 (代理)</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=16" title="编辑小节:在服务器之间传送玩家 (代理)">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span id="使用BungeeCord配置文件系统"></span><span class="mw-headline" id=".E4.BD.BF.E7.94.A8BungeeCord.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6.E7.B3.BB.E7.BB.9F">使用BungeeCord配置文件系统</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=17" title="编辑小节:使用BungeeCord配置文件系统">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span id="通过BungeeCord创建计分板"></span><span class="mw-headline" id=".E9.80.9A.E8.BF.87BungeeCord.E5.88.9B.E5.BB.BA.E8.AE.A1.E5.88.86.E6.9D.BF">通过BungeeCord创建计分板</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=18" title="编辑小节:通过BungeeCord创建计分板">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span id="创建一个Bungee的插件_(不需要Maven)"></span><span class="mw-headline" id=".E5.88.9B.E5.BB.BA.E4.B8.80.E4.B8.AABungee.E7.9A.84.E6.8F.92.E4.BB.B6_.28.E4.B8.8D.E9.9C.80.E8.A6.81Maven.29">创建一个Bungee的插件 (不需要Maven)</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&action=edit&section=19" title="编辑小节:创建一个Bungee的插件 (不需要Maven)">编辑</a><span class="mw-editsection-bracket">]</span></span></h2>
<!--
NewPP limit report
Cached time: 20220317060457
Cache expiry: 86400
Dynamic content: false
CPU time usage: 0.036 seconds
Real time usage: 1.180 seconds
Preprocessor visited node count: 213/1000000
Preprocessor generated node count: 839/1000000
Post‐expand include size: 2545/2097152 bytes
Template argument size: 754/2097152 bytes
Highest expansion depth: 5/40
Expensive parser function count: 0/100
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 5969/5000000 bytes
-->
<!--
Transclusion expansion time report (%,ms,calls,template)
100.00% 6.479 1 -total
68.87% 4.462 1 模板:待完善
51.20% 3.317 2 模板:Info
29.43% 1.907 1 模板:待更新
-->
</div> |