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

检查单独更改

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

本页面允许您检查防滥用过滤器根据某次单独更改所生成的变量,并使用过滤器进行测试。

根据本次更改生成的变量

变量
编辑是否被标记为小编辑 (minor_edit)
用户账户名称 (user_name)
Mofec x
用户所在群组(包括隐藏群组) (user_groups)
* user
页面编号 (article_articleid)
627
页面名字空间 (article_namespace)
0
页面标题(不含名字空间) (article_text)
BungeeCord开发教程
完整页面标题 (article_prefixedtext)
BungeeCord开发教程
最后十位对该页面贡献的用户 (article_recent_contributors)
Mofec x Mcdarc
操作 (action)
edit
编辑摘要/原因 (summary)
旧的内容模型 (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)==
编辑产生的差异 (edit_diff)
@@ -122,4 +122,46 @@ ==事件处理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> +确保你使用的是事件列表中的事件,这样你就可以在你的插件中适当地与事件进行交互。 +===创建你自己的事件=== + + ==常有的误区== ==创建基础的命令功能 (代理)==
编辑增加的行 (added_lines)
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> 确保你使用的是事件列表中的事件,这样你就可以在你的插件中适当地与事件进行交互。 ===创建你自己的事件===
编辑后的新页面,已解析为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&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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>&lt;/project&gt;前</b>添加一些内容.<br /> </p> <pre>&lt;repositories&gt; &lt;repository&gt; &lt;id&gt;bungeecord-repo&lt;/id&gt; &lt;url&gt;https://oss.sonatype.org/content/repositories/snapshots&lt;/url&gt; &lt;/repository&gt; &lt;/repositories&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;version&gt;3.6.1&lt;/version&gt; &lt;configuration&gt; &lt;source&gt;1.8&lt;/source&gt; &lt;target&gt;1.8&lt;/target&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;net.md-5&lt;/groupId&gt; &lt;artifactId&gt;bungeecord-api&lt;/artifactId&gt; &lt;version&gt;1.16-R0.5-SNAPSHOT&lt;/version&gt; &lt;type&gt;jar&lt;/type&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;net.md-5&lt;/groupId&gt; &lt;artifactId&gt;bungeecord-api&lt;/artifactId&gt; &lt;version&gt;1.16-R0.5-SNAPSHOT&lt;/version&gt; &lt;type&gt;javadoc&lt;/type&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;/dependencies&gt;</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&amp;action=edit&amp;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">&quot;Yay! It loads!&quot;</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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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">&quot; has joined the&quot;</span> <span class="o">+</span> <span class="s">&quot;network.&quot;</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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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>
更改的Unix时间戳 (timestamp)
1647497095