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

检查单独更改

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

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

根据本次更改生成的变量

变量
编辑是否被标记为小编辑 (minor_edit)
用户账户名称 (user_name)
Poikcue
用户所在群组(包括隐藏群组) (user_groups)
* user
页面编号 (article_articleid)
0
页面名字空间 (article_namespace)
0
页面标题(不含名字空间) (article_text)
Paper/事件监听器
完整页面标题 (article_prefixedtext)
Paper/事件监听器
最后十位对该页面贡献的用户 (article_recent_contributors)
操作 (action)
edit
编辑摘要/原因 (summary)
旧的内容模型 (old_content_model)
新的内容模型 (new_content_model)
wikitext
编辑前的旧页面,wiki代码格式 (old_wikitext)
编辑后的新页面,wiki代码格式 (new_wikitext)
<code>Events</code>(事件)是在游戏中监听某一特定行为发生的有效方式。它们可以被服务器(或插件)触发。<br /> 例如某名玩家加入了服务器,抑或是某个方块被破坏时,都将触发对应事件。<br /> 插件能够触发自定义事件,例如玩家完成了某个插件自定义的任务,以供其它插件监听。 == 你的监听器类 == 要进行监听,你需要创建一个类并实现 <code>Listener</code> 接口。<br /> 类名可任取,不过建议使用与该类所监听的事件相关的名称。 <syntaxhighlight lang="java">public class ExampleListener implements Listener { // ... }</syntaxhighlight> <span id="eventhandler"></span> == <code>@EventHandler</code> == 要监听某一个事件,你需要创建一个含有 <code>@EventHandler</code> 注解 ( <code>annotation</code> ) 的方法。<br /> 同理,方法名可任取,不过建议使用与该方法所监听的事件相关的名称,并避免无意义方法名。 == 监听器方法 == 方法体无需返回任何值,因此建议使用 <code>void</code> 作为返回类型。<br /> 监听器方法有且仅有一个参数,其类型为该方法所监听的事件的类型。 <syntaxhighlight lang="java"> public class ExampleListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </syntaxhighlight> <blockquote>由于插件可以自定义事件,这里无法列出一份包括所有可监听事件的列表。不过在[https://jd.papermc.io/paper/1.19/org/bukkit/event/Event.html 这里]可以了解 Paper 所提供的 <code>Event</code> 类的全部子类。 仅有实现了静态 <code>getHandlerList</code> 方法的事件才能被监听。 </blockquote> == 注册监听器 == 要注册监听器,你需要调用 <code>Bukkit.getPluginManager().registerEvents()</code> 并传入监听器类的实例和你的插件主类的实例。 这一方法将会注册监听器,并允许它监听事件。<br /> 这一方法通常写在你的插件主类的 <code>onEnable()</code> 方法中,此时监听器将在服务器开始计算游戏刻 (tick) 时注册。 <syntaxhighlight lang="java"> public class ExamplePlugin extends JavaPlugin { @Override public void onEnable() { getServer().getPluginManager().registerEvents(new ExampleListener(), this); } } </syntaxhighlight> <span id="eventpriority"></span> == EventPriority == 你也可以指定事件监听器的优先级。 <pre> public class ExampleListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </pre> 你可以选择六个不同的优先级: - <code>EventPriority.LOWEST</code> - <code>EventPriority.LOW</code> - <code>EventPriority.NORMAL</code> - <code>EventPriority.HIGH</code> - <code>EventPriority.HIGHEST</code> - <code>EventPriority.MONITOR</code> 实际上优先级的顺序与直觉相反。优先级 '''越高''',事件被调用就 '''越晚'''。<br /> 例如:你的插件需要对某个事件一锤定音,此后不希望被其他监听器再作覆盖,则需要使用<code>EventPriority.HIGHEST</code>。 <blockquote>'''注意'''<br /> <code>MONITOR</code> 的优先级常常用于获得其他插件对事件的修改结果,而不是亲自修改它。具有此优先级的监听器在所有监听器中排在最后。<br /> 因此这样的监听器可获悉先前插件对事件的修改,例如事件是否被取消(cancellation)和对事件中某些字段的修改(modification)。 </blockquote> == 取消事件 == 一些事件可以取消,阻止某些行为发生。这些事件类实现了 <code>Cancellable</code>。 译注:事件的触发时机是在某个行为发生以前,当事件监听器全部运行完毕后,被插件所修改过的事件结果才会真正发生。 <syntaxhighlight lang="java"> public class ExampleListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { event.setCancelled(true); } } </syntaxhighlight> <blockquote>在你的插件取消某事件之前,请思考一下其它插件是否已经取消或更改了该事件。<br /> 请先检查事件的各个字段再进行修改! </blockquote> 上面的例子会取消事件,这意味着玩家无法加入到服务器中。当一个事件被取消后,其他监听器将继续按顺序被调用下去,除非某个监听器在 <code>@EventHandler</code> 注解中添加了 <code>ignoreCancelled = true</code> 以忽略已取消的事件。 如欲忽略已取消的事件,可以这样写: <pre> public class ExampleListener implements Listener { @EventHandler(ignoreCancelled = true) public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </pre>
编辑产生的差异 (edit_diff)
@@ -1,1 +1,106 @@ +<code>Events</code>(事件)是在游戏中监听某一特定行为发生的有效方式。它们可以被服务器(或插件)触发。<br /> +例如某名玩家加入了服务器,抑或是某个方块被破坏时,都将触发对应事件。<br /> +插件能够触发自定义事件,例如玩家完成了某个插件自定义的任务,以供其它插件监听。 +== 你的监听器类 == + +要进行监听,你需要创建一个类并实现 <code>Listener</code> 接口。<br /> +类名可任取,不过建议使用与该类所监听的事件相关的名称。 + +<syntaxhighlight lang="java">public class ExampleListener implements Listener { + // ... +}</syntaxhighlight> +<span id="eventhandler"></span> +== <code>@EventHandler</code> == + +要监听某一个事件,你需要创建一个含有 <code>@EventHandler</code> 注解 ( <code>annotation</code> ) 的方法。<br /> +同理,方法名可任取,不过建议使用与该方法所监听的事件相关的名称,并避免无意义方法名。 + +== 监听器方法 == + +方法体无需返回任何值,因此建议使用 <code>void</code> 作为返回类型。<br /> +监听器方法有且仅有一个参数,其类型为该方法所监听的事件的类型。 + +<syntaxhighlight lang="java"> +public class ExampleListener implements Listener { + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + // ... + } +} +</syntaxhighlight> +<blockquote>由于插件可以自定义事件,这里无法列出一份包括所有可监听事件的列表。不过在[https://jd.papermc.io/paper/1.19/org/bukkit/event/Event.html 这里]可以了解 Paper 所提供的 <code>Event</code> 类的全部子类。 + +仅有实现了静态 <code>getHandlerList</code> 方法的事件才能被监听。 +</blockquote> +== 注册监听器 == + +要注册监听器,你需要调用 <code>Bukkit.getPluginManager().registerEvents()</code> 并传入监听器类的实例和你的插件主类的实例。 + +这一方法将会注册监听器,并允许它监听事件。<br /> +这一方法通常写在你的插件主类的 <code>onEnable()</code> 方法中,此时监听器将在服务器开始计算游戏刻 (tick) 时注册。 + +<syntaxhighlight lang="java"> +public class ExamplePlugin extends JavaPlugin { + + @Override + public void onEnable() { + getServer().getPluginManager().registerEvents(new ExampleListener(), this); + } +} +</syntaxhighlight> +<span id="eventpriority"></span> +== EventPriority == + +你也可以指定事件监听器的优先级。 + +<pre> +public class ExampleListener implements Listener { + + @EventHandler(priority = EventPriority.HIGH) + public void onPlayerJoin(PlayerJoinEvent event) { + // ... + } +} +</pre> +你可以选择六个不同的优先级: - <code>EventPriority.LOWEST</code> - <code>EventPriority.LOW</code> - <code>EventPriority.NORMAL</code> - <code>EventPriority.HIGH</code> - <code>EventPriority.HIGHEST</code> - <code>EventPriority.MONITOR</code> + +实际上优先级的顺序与直觉相反。优先级 '''越高''',事件被调用就 '''越晚'''。<br /> +例如:你的插件需要对某个事件一锤定音,此后不希望被其他监听器再作覆盖,则需要使用<code>EventPriority.HIGHEST</code>。 + +<blockquote>'''注意'''<br /> +<code>MONITOR</code> 的优先级常常用于获得其他插件对事件的修改结果,而不是亲自修改它。具有此优先级的监听器在所有监听器中排在最后。<br /> +因此这样的监听器可获悉先前插件对事件的修改,例如事件是否被取消(cancellation)和对事件中某些字段的修改(modification)。 +</blockquote> +== 取消事件 == + +一些事件可以取消,阻止某些行为发生。这些事件类实现了 <code>Cancellable</code>。 + +译注:事件的触发时机是在某个行为发生以前,当事件监听器全部运行完毕后,被插件所修改过的事件结果才会真正发生。 + +<syntaxhighlight lang="java"> +public class ExampleListener implements Listener { + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + event.setCancelled(true); + } +} +</syntaxhighlight> +<blockquote>在你的插件取消某事件之前,请思考一下其它插件是否已经取消或更改了该事件。<br /> +请先检查事件的各个字段再进行修改! +</blockquote> +上面的例子会取消事件,这意味着玩家无法加入到服务器中。当一个事件被取消后,其他监听器将继续按顺序被调用下去,除非某个监听器在 <code>@EventHandler</code> 注解中添加了 <code>ignoreCancelled = true</code> 以忽略已取消的事件。 + +如欲忽略已取消的事件,可以这样写: + +<pre> +public class ExampleListener implements Listener { + + @EventHandler(ignoreCancelled = true) + public void onPlayerJoin(PlayerJoinEvent event) { + // ... + } +} +</pre>
新页面大小 (new_size)
4892
编辑增加的行 (added_lines)
<code>Events</code>(事件)是在游戏中监听某一特定行为发生的有效方式。它们可以被服务器(或插件)触发。<br /> 例如某名玩家加入了服务器,抑或是某个方块被破坏时,都将触发对应事件。<br /> 插件能够触发自定义事件,例如玩家完成了某个插件自定义的任务,以供其它插件监听。 == 你的监听器类 == 要进行监听,你需要创建一个类并实现 <code>Listener</code> 接口。<br /> 类名可任取,不过建议使用与该类所监听的事件相关的名称。 <syntaxhighlight lang="java">public class ExampleListener implements Listener { // ... }</syntaxhighlight> <span id="eventhandler"></span> == <code>@EventHandler</code> == 要监听某一个事件,你需要创建一个含有 <code>@EventHandler</code> 注解 ( <code>annotation</code> ) 的方法。<br /> 同理,方法名可任取,不过建议使用与该方法所监听的事件相关的名称,并避免无意义方法名。 == 监听器方法 == 方法体无需返回任何值,因此建议使用 <code>void</code> 作为返回类型。<br /> 监听器方法有且仅有一个参数,其类型为该方法所监听的事件的类型。 <syntaxhighlight lang="java"> public class ExampleListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </syntaxhighlight> <blockquote>由于插件可以自定义事件,这里无法列出一份包括所有可监听事件的列表。不过在[https://jd.papermc.io/paper/1.19/org/bukkit/event/Event.html 这里]可以了解 Paper 所提供的 <code>Event</code> 类的全部子类。 仅有实现了静态 <code>getHandlerList</code> 方法的事件才能被监听。 </blockquote> == 注册监听器 == 要注册监听器,你需要调用 <code>Bukkit.getPluginManager().registerEvents()</code> 并传入监听器类的实例和你的插件主类的实例。 这一方法将会注册监听器,并允许它监听事件。<br /> 这一方法通常写在你的插件主类的 <code>onEnable()</code> 方法中,此时监听器将在服务器开始计算游戏刻 (tick) 时注册。 <syntaxhighlight lang="java"> public class ExamplePlugin extends JavaPlugin { @Override public void onEnable() { getServer().getPluginManager().registerEvents(new ExampleListener(), this); } } </syntaxhighlight> <span id="eventpriority"></span> == EventPriority == 你也可以指定事件监听器的优先级。 <pre> public class ExampleListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </pre> 你可以选择六个不同的优先级: - <code>EventPriority.LOWEST</code> - <code>EventPriority.LOW</code> - <code>EventPriority.NORMAL</code> - <code>EventPriority.HIGH</code> - <code>EventPriority.HIGHEST</code> - <code>EventPriority.MONITOR</code> 实际上优先级的顺序与直觉相反。优先级 '''越高''',事件被调用就 '''越晚'''。<br /> 例如:你的插件需要对某个事件一锤定音,此后不希望被其他监听器再作覆盖,则需要使用<code>EventPriority.HIGHEST</code>。 <blockquote>'''注意'''<br /> <code>MONITOR</code> 的优先级常常用于获得其他插件对事件的修改结果,而不是亲自修改它。具有此优先级的监听器在所有监听器中排在最后。<br /> 因此这样的监听器可获悉先前插件对事件的修改,例如事件是否被取消(cancellation)和对事件中某些字段的修改(modification)。 </blockquote> == 取消事件 == 一些事件可以取消,阻止某些行为发生。这些事件类实现了 <code>Cancellable</code>。 译注:事件的触发时机是在某个行为发生以前,当事件监听器全部运行完毕后,被插件所修改过的事件结果才会真正发生。 <syntaxhighlight lang="java"> public class ExampleListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { event.setCancelled(true); } } </syntaxhighlight> <blockquote>在你的插件取消某事件之前,请思考一下其它插件是否已经取消或更改了该事件。<br /> 请先检查事件的各个字段再进行修改! </blockquote> 上面的例子会取消事件,这意味着玩家无法加入到服务器中。当一个事件被取消后,其他监听器将继续按顺序被调用下去,除非某个监听器在 <code>@EventHandler</code> 注解中添加了 <code>ignoreCancelled = true</code> 以忽略已取消的事件。 如欲忽略已取消的事件,可以这样写: <pre> public class ExampleListener implements Listener { @EventHandler(ignoreCancelled = true) public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </pre>
编辑后的新页面,已解析为HTML源码 (new_html)
<div class="mw-parser-output"><p><code>Events</code>(事件)是在游戏中监听某一特定行为发生的有效方式。它们可以被服务器(或插件)触发。<br /> 例如某名玩家加入了服务器,抑或是某个方块被破坏时,都将触发对应事件。<br /> 插件能够触发自定义事件,例如玩家完成了某个插件自定义的任务,以供其它插件监听。 </p> <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.BD.A0.E7.9A.84.E7.9B.91.E5.90.AC.E5.99.A8.E7.B1.BB"><span class="tocnumber">1</span> <span class="toctext">你的监听器类</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#.40EventHandler"><span class="tocnumber">2</span> <span class="toctext">@EventHandler</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#.E7.9B.91.E5.90.AC.E5.99.A8.E6.96.B9.E6.B3.95"><span class="tocnumber">3</span> <span class="toctext">监听器方法</span></a></li> <li class="toclevel-1 tocsection-4"><a href="#.E6.B3.A8.E5.86.8C.E7.9B.91.E5.90.AC.E5.99.A8"><span class="tocnumber">4</span> <span class="toctext">注册监听器</span></a></li> <li class="toclevel-1 tocsection-5"><a href="#EventPriority"><span class="tocnumber">5</span> <span class="toctext">EventPriority</span></a></li> <li class="toclevel-1 tocsection-6"><a href="#.E5.8F.96.E6.B6.88.E4.BA.8B.E4.BB.B6"><span class="tocnumber">6</span> <span class="toctext">取消事件</span></a></li> </ul> </div> <h2><span id="你的监听器类"></span><span class="mw-headline" id=".E4.BD.A0.E7.9A.84.E7.9B.91.E5.90.AC.E5.99.A8.E7.B1.BB">你的监听器类</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC%E5%99%A8&amp;action=edit&amp;section=1" title="编辑小节:你的监听器类">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <p>要进行监听,你需要创建一个类并实现 <code>Listener</code> 接口。<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">ExampleListener</span> <span class="kd">implements</span> <span class="n">Listener</span> <span class="o">{</span> <span class="c1">// ...</span> <span class="o">}</span> </pre></div> <p><span id="eventhandler"></span> </p> <h2><span id="@EventHandler"></span><span class="mw-headline" id=".40EventHandler"><code>@EventHandler</code></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC%E5%99%A8&amp;action=edit&amp;section=2" title="编辑小节:@EventHandler">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <p>要监听某一个事件,你需要创建一个含有 <code>@EventHandler</code> 注解 ( <code>annotation</code> ) 的方法。<br /> 同理,方法名可任取,不过建议使用与该方法所监听的事件相关的名称,并避免无意义方法名。 </p> <h2><span id="监听器方法"></span><span class="mw-headline" id=".E7.9B.91.E5.90.AC.E5.99.A8.E6.96.B9.E6.B3.95">监听器方法</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC%E5%99%A8&amp;action=edit&amp;section=3" title="编辑小节:监听器方法">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <p>方法体无需返回任何值,因此建议使用 <code>void</code> 作为返回类型。<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">ExampleListener</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">onPlayerJoin</span><span class="o">(</span><span class="n">PlayerJoinEvent</span> <span class="n">event</span><span class="o">)</span> <span class="o">{</span> <span class="c1">// ...</span> <span class="o">}</span> <span class="o">}</span> </pre></div> <blockquote><p>由于插件可以自定义事件,这里无法列出一份包括所有可监听事件的列表。不过在<a class="external text" href="https://jd.papermc.io/paper/1.19/org/bukkit/event/Event.html">这里</a>可以了解 Paper 所提供的 <code>Event</code> 类的全部子类。 </p><p>仅有实现了静态 <code>getHandlerList</code> 方法的事件才能被监听。 </p> </blockquote> <h2><span id="注册监听器"></span><span class="mw-headline" id=".E6.B3.A8.E5.86.8C.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=Paper/%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC%E5%99%A8&amp;action=edit&amp;section=4" title="编辑小节:注册监听器">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <p>要注册监听器,你需要调用 <code>Bukkit.getPluginManager().registerEvents()</code> 并传入监听器类的实例和你的插件主类的实例。 </p><p>这一方法将会注册监听器,并允许它监听事件。<br /> 这一方法通常写在你的插件主类的 <code>onEnable()</code> 方法中,此时监听器将在服务器开始计算游戏刻 (tick) 时注册。 </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">ExamplePlugin</span> <span class="kd">extends</span> <span class="n">JavaPlugin</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">getServer</span><span class="o">().</span><span class="na">getPluginManager</span><span class="o">().</span><span class="na">registerEvents</span><span class="o">(</span><span class="k">new</span> <span class="n">ExampleListener</span><span class="o">(),</span> <span class="k">this</span><span class="o">);</span> <span class="o">}</span> <span class="o">}</span> </pre></div> <p><span id="eventpriority"></span> </p> <h2><span class="mw-headline" id="EventPriority">EventPriority</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC%E5%99%A8&amp;action=edit&amp;section=5" title="编辑小节:EventPriority">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <p>你也可以指定事件监听器的优先级。 </p> <pre>public class ExampleListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </pre> <p>你可以选择六个不同的优先级: - <code>EventPriority.LOWEST</code> - <code>EventPriority.LOW</code> - <code>EventPriority.NORMAL</code> - <code>EventPriority.HIGH</code> - <code>EventPriority.HIGHEST</code> - <code>EventPriority.MONITOR</code> </p><p>实际上优先级的顺序与直觉相反。优先级 <b>越高</b>,事件被调用就 <b>越晚</b>。<br /> 例如:你的插件需要对某个事件一锤定音,此后不希望被其他监听器再作覆盖,则需要使用<code>EventPriority.HIGHEST</code>。 </p> <blockquote><p><b>注意</b><br /> </p><p><code>MONITOR</code> 的优先级常常用于获得其他插件对事件的修改结果,而不是亲自修改它。具有此优先级的监听器在所有监听器中排在最后。<br /> 因此这样的监听器可获悉先前插件对事件的修改,例如事件是否被取消(cancellation)和对事件中某些字段的修改(modification)。 </p> </blockquote> <h2><span id="取消事件"></span><span class="mw-headline" id=".E5.8F.96.E6.B6.88.E4.BA.8B.E4.BB.B6">取消事件</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Paper/%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC%E5%99%A8&amp;action=edit&amp;section=6" title="编辑小节:取消事件">编辑</a><span class="mw-editsection-bracket">]</span></span></h2> <p>一些事件可以取消,阻止某些行为发生。这些事件类实现了 <code>Cancellable</code>。 </p><p>译注:事件的触发时机是在某个行为发生以前,当事件监听器全部运行完毕后,被插件所修改过的事件结果才会真正发生。 </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">ExampleListener</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">onPlayerJoin</span><span class="o">(</span><span class="n">PlayerJoinEvent</span> <span class="n">event</span><span class="o">)</span> <span class="o">{</span> <span class="n">event</span><span class="o">.</span><span class="na">setCancelled</span><span class="o">(</span><span class="kc">true</span><span class="o">);</span> <span class="o">}</span> <span class="o">}</span> </pre></div> <blockquote><p>在你的插件取消某事件之前,请思考一下其它插件是否已经取消或更改了该事件。<br /> </p><p>请先检查事件的各个字段再进行修改! </p> </blockquote> <p>上面的例子会取消事件,这意味着玩家无法加入到服务器中。当一个事件被取消后,其他监听器将继续按顺序被调用下去,除非某个监听器在 <code>@EventHandler</code> 注解中添加了 <code>ignoreCancelled = true</code> 以忽略已取消的事件。 </p><p>如欲忽略已取消的事件,可以这样写: </p> <pre>public class ExampleListener implements Listener { @EventHandler(ignoreCancelled = true) public void onPlayerJoin(PlayerJoinEvent event) { // ... } } </pre> <!-- NewPP limit report Cached time: 20221126052027 Cache expiry: 86400 Dynamic content: false CPU time usage: 0.020 seconds Real time usage: 4.768 seconds Preprocessor visited node count: 77/1000000 Preprocessor generated node count: 172/1000000 Post‐expand include size: 0/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 2/40 Expensive parser function count: 0/100 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 3186/5000000 bytes --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 0.000 1 -total --> </div>
更改的Unix时间戳 (timestamp)
1669440022