<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://mineplugin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=1582952890</id>
	<title>Minecraft插件百科 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://mineplugin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=1582952890"/>
	<link rel="alternate" type="text/html" href="https://mineplugin.org/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/1582952890"/>
	<updated>2026-05-12T03:12:59Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=18023</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=18023"/>
		<updated>2022-11-08T10:35:46Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 特色 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{模板:待完善}}&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=Chest Commands Gui&lt;br /&gt;
|版本=v3.2.0&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.7，1.8，1.9，1.10，1.11，1.12，1.13&lt;br /&gt;
|源地址=https://dev.bukkit.org/projects/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;ChestCommandsGUI&#039;&#039;&#039;是一个简单而功能强大的Bukkit插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
=== 特色 ===&lt;br /&gt;
* 支持多个菜单&lt;br /&gt;
* 可使用物品、指示牌、或者为菜单设置特殊的打开指令。&lt;br /&gt;
* 自定义占位符和符号。&lt;br /&gt;
* 高质量代码。&lt;br /&gt;
* 支持经济插件，可支持Vault（可选）。&lt;br /&gt;
* 自动检测新版本。&lt;br /&gt;
&lt;br /&gt;
=== 扩展插件 / 联动插件 ===&lt;br /&gt;
* PlayerPoints - 点券&lt;br /&gt;
* Vault - 经济插件&lt;br /&gt;
* Scheduled Commands - 定时执行命令&lt;br /&gt;
* Info Book - 首次登陆赠送教程书&lt;br /&gt;
&lt;br /&gt;
=== 配置文件存放目录 ===&lt;br /&gt;
服务器根目录/plugins/ChestCommands/menu/XX.yml&lt;br /&gt;
&lt;br /&gt;
=== 创建菜单 ===&lt;br /&gt;
* 第一种方式：复制和粘贴现有的菜单，然后进行改动&lt;br /&gt;
* 第二种方式：创建.yml文件，自己进行配置&lt;br /&gt;
* (玩家打开GUI界面所需要的权限对大小写要求是非常严格的！)&lt;br /&gt;
&lt;br /&gt;
== 基础总体设定 ==&lt;br /&gt;
=== Menu-settings ===&lt;br /&gt;
你可以在菜单的顶部找到这些选项，“Menu settings：”部分&lt;br /&gt;
&lt;br /&gt;
name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
&lt;br /&gt;
在打开菜单的时候将显示这个名称，自定义标题的长度不能超过30个字符(包括颜色字符，一个汉字=2字符)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
rows：6（必须）&lt;br /&gt;
&lt;br /&gt;
这个设置规定了菜单有多少行，正常显示的上限为6&lt;br /&gt;
&lt;br /&gt;
虽然超过6后依然正常支持，但是材质贴图会崩.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
command: &#039;menu&#039;（可选）&lt;br /&gt;
&lt;br /&gt;
这是打开菜单的命令（命令名），可以随便设置，注意不要重复，打开时使用“/cc open 你设置的命令名”&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
auto-refresh: 5 (可选) &lt;br /&gt;
&lt;br /&gt;
需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
open-with-item: (可选) &lt;br /&gt;
&lt;br /&gt;
id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
&lt;br /&gt;
right-click: true / false - 是否可以通过右键点击打开菜单！&lt;br /&gt;
&lt;br /&gt;
left-click: true / false - 是否可以通过左键点击打开菜单！&lt;br /&gt;
&lt;br /&gt;
===items===&lt;br /&gt;
不要用带有大写字母、颜色代码或符号的内部名称(读下面)，请记住，在同菜单中项目名称不可重复。&lt;br /&gt;
&lt;br /&gt;
每个项目都是由一个内部名称（对于玩家不可见）和节点组成，可以分配命令，自定义名称与图标。&lt;br /&gt;
&lt;br /&gt;
一个单独的项目应该这样写：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为“节点”，每个项目可以有不同的节点来定制它。点击查看[https://dev.bukkit.org/bukkit-plugins/chest-commands/pages/tutorial/nodes/ 节点列表]。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
每个项目必须要有坐标节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点配置教程 ==&lt;br /&gt;
此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
注：这三个节点严格要求每一项 ID position-x position-y 。&lt;br /&gt;
&lt;br /&gt;
=== ID ===&lt;br /&gt;
图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
&lt;br /&gt;
范例：ID: stone、&lt;br /&gt;
&lt;br /&gt;
你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
&lt;br /&gt;
范例 (10个黑羊毛):&lt;br /&gt;
&lt;br /&gt;
ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
=== POSITION-X / POSITION-Y ===&lt;br /&gt;
&lt;br /&gt;
[[文件:chestcommand.png]]&lt;br /&gt;
&lt;br /&gt;
有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
POSITION-X: 5&lt;br /&gt;
&lt;br /&gt;
POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
=== NAME ===&lt;br /&gt;
这个节点可以设置图标的显示名称。你可以使用颜色代码和符号。&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&lt;br /&gt;
=== LORE ===&lt;br /&gt;
该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
&lt;br /&gt;
例子：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ENCHANTMENT ===&lt;br /&gt;
这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
&lt;br /&gt;
附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&lt;br /&gt;
=== COLOR ===&lt;br /&gt;
这里可以设置皮革盔甲的颜色，也就是意味着如果ID那里不是皮甲的ID的话，就可以直接删去这一行了，格式是&#039;&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;&#039;,每个值必须在0-255之间。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&lt;br /&gt;
=== SKULL-OWNER ===&lt;br /&gt;
这里填写的是正版玩家的名称,如果ID那里不是 397且DATA-VALUE不是 3(玩家的头颅的ID)的话，就可以直接删去这一行了，这个节点用于在玩家头颅的图标上显示指定正版玩家的皮肤的头颅的那部分&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&lt;br /&gt;
=== COMMAND ===&lt;br /&gt;
这个节点设置可以设置命令(没有”/“前缀)，它支持各种各样的命令，在满足所有的限制后（花费的钱，权限一类的限制）才会执行，多个命令使用“;”（英文状态）分隔&lt;br /&gt;
&lt;br /&gt;
它不仅仅可以执行命令,与其他节点搭配会创造出更多的功能&lt;br /&gt;
&lt;br /&gt;
指令是一个较为复杂的节点&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;spawn&#039;&lt;br /&gt;
&lt;br /&gt;
=== PRICE ===&lt;br /&gt;
（需要前置插件：Vault）&lt;br /&gt;
&lt;br /&gt;
这个节点设置点击时的价格。玩家没有足够的钱将不会执行命令！&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
PRICE: 100.0&lt;br /&gt;
&lt;br /&gt;
=== LEVELS ===&lt;br /&gt;
这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级命令将不会触发；反之，对应的经验值等级将被扣除&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
LEVELS: 5&lt;br /&gt;
&lt;br /&gt;
=== POINTS ===&lt;br /&gt;
（需要前置插件：PlayerPoints）&lt;br /&gt;
&lt;br /&gt;
这个节点设置点击时的所需要的点券。如果玩家没有足够的点券将不会执行命令！&lt;br /&gt;
&lt;br /&gt;
POINTS: 50&lt;br /&gt;
&lt;br /&gt;
=== REQUIRED-ITEM ===&lt;br /&gt;
这个节点设置点击所需要的物品，没有该物品的命令将不会被执行，格式都是相同的ID。&lt;br /&gt;
&lt;br /&gt;
范例：（三十个橙色染色玻璃）&lt;br /&gt;
&lt;br /&gt;
REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&lt;br /&gt;
=== KEEP-OPEN ===&lt;br /&gt;
该节点规定了如果点击节点后，是否保持打开GUI界面（默认不保持），值可以是True或者False。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
KEEP-OPEN: true&lt;br /&gt;
&lt;br /&gt;
=== PERMISSION ===&lt;br /&gt;
这里可以自定义点击该图标所需要的的权限，(注意最好不要和其他插件的权限重复)，没有该权限的玩家点击该节点将不会执行指令，你也可以反向使用它(在权限前面加一个&amp;quot;-&amp;quot;号)如: &#039;-my.custom.permission&#039;,这代表了没有&amp;quot;my.custom.permission&amp;quot;权限的玩家才能点击执行该节点&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&lt;br /&gt;
=== VIEW-PERMISSION ===&lt;br /&gt;
这里可以自定义看到该图标所需要的的权限，(注意最好不要和其他权限重复)，没有该权限看不到该图标，你依然可以反向使用它，如：&#039;-my.custom.permission&#039;,这代表了没有&amp;quot;my.custom.permission&amp;quot;权限的玩家才能看见该节点&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&lt;br /&gt;
=== PERMISSION-MESSAGE ===&lt;br /&gt;
这个节点设置了玩家没有权限时的提示消息(可以删去，删除即使用默认消息，在config.yml可以看见并且你可以修改它)&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
PERMISSION-MESSAGE: &#039;&amp;amp;c你必须是VIP才能购买这个物品!&#039;&lt;br /&gt;
&lt;br /&gt;
=== 点击动作教程 ===&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
== 变量与指令 ==&lt;br /&gt;
这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
* {player} (使用者名字)。&lt;br /&gt;
* {world} (使用者所在世界)。&lt;br /&gt;
* {online} (在线玩家数量)。&lt;br /&gt;
* {max_players} (服务器玩家上限)。&lt;br /&gt;
* {money} (玩家的金钱，你必须拥有 Vault 插件)。&lt;br /&gt;
&lt;br /&gt;
=== 一般命令 ===&lt;br /&gt;
指令前不需要添加“/”，除了WorldEdit的命令。&lt;br /&gt;
&lt;br /&gt;
这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;spawn&#039;&lt;br /&gt;
&lt;br /&gt;
=== 以控制台的身份执行命令 ===&lt;br /&gt;
要小心使用这个命令!&lt;br /&gt;
&lt;br /&gt;
若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&lt;br /&gt;
=== 以OP的身份执行命令 ===&lt;br /&gt;
要小心使用这个命令!&lt;br /&gt;
&lt;br /&gt;
若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;op: say 你好世界!&#039;&lt;br /&gt;
&lt;br /&gt;
=== 多个指令 ===&lt;br /&gt;
用分号分隔多个命令&amp;quot;;&amp;quot;。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;spawn; me 我被传送到重生点!&#039;&lt;br /&gt;
&lt;br /&gt;
=== 私聊玩家 ===&lt;br /&gt;
像以前的例子，把tell：后面的内容私聊发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
&lt;br /&gt;
在范例中，信息将是红色的！&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;tell: &amp;amp;c你好!&#039;&lt;br /&gt;
&lt;br /&gt;
=== 广播消息 ===&lt;br /&gt;
每个人都能看到这个消息！&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;broadcast: {player}太棒了!&#039;&lt;br /&gt;
&lt;br /&gt;
=== 播放音乐 ===&lt;br /&gt;
一个音乐由3个参数构成(只有一个是必须的)这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&lt;br /&gt;
=== 给予物品 ===&lt;br /&gt;
这是一个用于给予物品的基础命令，您可以更改给予物品的数量和类型，对于更高级的事情，请使用vanilla命令.&lt;br /&gt;
&lt;br /&gt;
下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
=== 给予金钱 ===&lt;br /&gt;
这个命令将会给使用者金钱。&lt;br /&gt;
&lt;br /&gt;
你需要前置插件Vault和一个经济插件。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&lt;br /&gt;
=== 打开其他菜单 ===&lt;br /&gt;
就像在控制台的指令，输入“open：文件名”。“文件名”就是菜单的名字。如果菜单不存在将会显示一个错误的信息。&lt;br /&gt;
&lt;br /&gt;
使用者需要相应权限来打开菜单。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&lt;br /&gt;
=== BungeeCord服务器的命令 ===&lt;br /&gt;
你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这个命令将会使使用者尝试连接到目标服务器。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&lt;br /&gt;
=== 玩家点券(使用PlayerPoint插件) ===&lt;br /&gt;
在范例中，50个点券会给使用者，如果你想实现点击扣除点卷的功能，请看节点points。&lt;br /&gt;
&lt;br /&gt;
范例：&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&lt;br /&gt;
=== Boss血条消息(使用BarApi插件) ===&lt;br /&gt;
发送一条boss血条消息, 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
&lt;br /&gt;
在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
&lt;br /&gt;
范例:&lt;br /&gt;
&lt;br /&gt;
COMMAND: &#039;dragon-bar: 10 | &amp;amp;a你好, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 菜单牌设置教程 ==&lt;br /&gt;
=== 如何创建指示牌 ===&lt;br /&gt;
放置一个牌子&lt;br /&gt;
&lt;br /&gt;
在牌子的首行输入[Menu](需要权限： &amp;quot;chestcommands.sign&amp;quot;）&lt;br /&gt;
&lt;br /&gt;
在第二行输入菜单名字（需要在名称后加上&amp;quot;.yml&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
&lt;br /&gt;
如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
&lt;br /&gt;
=== 符号教程 ===&lt;br /&gt;
这些符号可以运用在文本中。&lt;br /&gt;
&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
* &amp;lt;3 = ❤&lt;br /&gt;
* [*] = ★&lt;br /&gt;
* [**] = ✹&lt;br /&gt;
* [p] = ●&lt;br /&gt;
* [v] = ✔&lt;br /&gt;
* [+] = ♦&lt;br /&gt;
* [++] = ✦&lt;br /&gt;
* [x] = █&lt;br /&gt;
* [/] = ▌&lt;br /&gt;
* [cross] = ✠&lt;br /&gt;
* [arrow_right] = →&lt;br /&gt;
* [arrow_left] = ←&lt;br /&gt;
* [arrow_up] = ↑&lt;br /&gt;
* [arrow_down] = ↓&lt;br /&gt;
&lt;br /&gt;
==== 添加新的符号 ====&lt;br /&gt;
打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
&lt;br /&gt;
名称: 内容&lt;br /&gt;
&lt;br /&gt;
[special]: \u2726 Special Item \u2726&lt;br /&gt;
&lt;br /&gt;
这表示着文中的[special]将会被替换✹ Special Item ✹。&lt;br /&gt;
&lt;br /&gt;
你可以使用任何的Unicode符号，使用java语言。网站： http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 显示插件信息&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 打开指定菜单(需要相应权限)&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他玩家打开菜单(不需要相应权限)&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有已加载的菜单&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 显示更新信息&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.XXX.yml || 打开XXX菜单的权限&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 免费使用&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
以100元/个钻石的价格卖给使用者。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;从系统买一颗钻石&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;卖给系统泥土&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 注释与外部链接 ==&lt;br /&gt;
* [https://github.com/filoghost/ChestCommands Github]&lt;br /&gt;
&lt;br /&gt;
[[Category:综合]][[Category:娱乐]][[Category:管理]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3516</id>
		<title>BetonQuest</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3516"/>
		<updated>2016-08-24T01:36:38Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=BetonQuest&lt;br /&gt;
|版本=v1.7.3&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.7.2-1.8.3&lt;br /&gt;
|網址=http://dev.bukkit.org/bukkit-plugins/betonquest/&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;center&amp;gt;[[文件:BetonQuestLOGO.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{待完善}}&lt;br /&gt;
[[Category:娱乐]] [[Category:角色]]&lt;br /&gt;
BetonQuest是一个好用的任务插件。它不像传统的插件将任务与对话绑定，而是网状多选结构(即类似Gal的剧情系统)。&amp;lt;br&amp;gt;&lt;br /&gt;
你的任务不一定要像普通单线任务&amp;quot;击杀, 带来物品, 获得奖励&amp;quot;一样，你可以创建多条任务线，通过与NPC的对话，玩家可以进入不同的任务线，获得不同的任务奖励。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
*你的冒险不止一条路可以走&lt;br /&gt;
*强大的事件系统:事件可以发生在任何地方&lt;br /&gt;
*强大的条件系统:你可以限制任何事情的(不)发生&lt;br /&gt;
*组队系统允许创建团队任务&lt;br /&gt;
*与NPC的对话的多样性&lt;br /&gt;
*任务日志记录在一本书中&lt;br /&gt;
*独立的任务物品背包&lt;br /&gt;
*可以对物品操作，甚至是书中的文本&lt;br /&gt;
*可以给玩家增加标签(tag)来储存信息&lt;br /&gt;
*完善的荣誉系统&lt;br /&gt;
*位置监听:当玩家进入指定区域会触发事件&lt;br /&gt;
*日常任务与重复奖励&lt;br /&gt;
*任务可以分配到不同的背包(方便管理)&lt;br /&gt;
*支持Citizens2&lt;br /&gt;
*MythicMobs, Skript, WorldGuard和Vault的混合(意思就是全部支持)&lt;br /&gt;
*多语言支持并且非常容易翻译&lt;br /&gt;
*玩家可以选择自己的语种&lt;br /&gt;
*可以使用API创建你自己的事件、条件、目标(Developer)&lt;br /&gt;
*支持SQLite&amp;amp;MySQL数据库&lt;br /&gt;
*可备份的配置及数据&lt;br /&gt;
*自动升级&lt;br /&gt;
== 概览 ==&lt;br /&gt;
这插件到底怎样运作？我将以一个简单的伐木任务为例来描述。请注意“事件”、“条件”和“目标”之间的区别。&amp;lt;br&amp;gt;&lt;br /&gt;
首先，你需要创建一个和NPC的对话。玩家可在对话内的多个选项中进行选择，NPC会根据选项做出不同的反应（例如NPC会在玩家要求工作时告诉他去砍些树） 。同时，在某些地方会有“事件”被触发，增加一个获得木头的“目标”。它将会把该玩家标记为开始任务的人。从现在开始，NPC会在对话中使用不同的选项，例如他会让玩家快点干活。这些选项将会基于“条件”被选择。&amp;lt;br&amp;gt;&lt;br /&gt;
当玩家完成“目标”时（例如通过摧毁木头），“事件”将会触发，将这个玩家标为采集木头的人。当玩家返回NPC处并与其对话时，NPC将以“条件”来核对玩家是否真的拥有那块木头。如果是的话，他将触发给予奖励的“事件”。&amp;lt;br&amp;gt;&lt;br /&gt;
我们没有创建任何“任务”对象，只是创建了一个能触发“事件”并与“条件”进行核对的对话。“目标”当然也不是“任务”，它只能在玩家得到木头时标记该玩家，不能单独存在。另一方面，该对话可以在之后开始其他任务（例如挖一些矿石），所以“目标”也不是“任务” &amp;lt;br&amp;gt;&lt;br /&gt;
不要为举的例子感到失望，这些只是简化后的过程，所以我可以更简单的解释这个系统，其实用BetonQuest可以做到更多&amp;lt;br&amp;gt;&lt;br /&gt;
这些对话可以像在Baldur&#039;s Gate或是Skyrim一样有多种路线，任务可以有多种方式来结束，也可以有很多不同的影响玩家声誉的结局，就靠你来决定了。&amp;lt;br&amp;gt;&lt;br /&gt;
这个插件也包含了一个在书中的日志。你玩过Morrowind吗? 它们差不多一样，我们只是保留了你查看日志的顺序，所以你不必翻好几百页。现在完成任务并不需要显示像“你收集了所有的矿石，现在回到矿工那儿！”这样的信息。反之，它可以更新玩家的日志，加入像这样的新的记录：“我收集了所有的矿石，我需要回到矿工那儿去拿奖励！”。这样会显得真实得多。&lt;br /&gt;
== 安装 ==&lt;br /&gt;
#首先您可以安装Citizens插件,你可以在[http://dev.bukkit.org/bukkit-plugins/citizens/ Bukkit]找到它.&lt;br /&gt;
#不过这不是前置插件,您也可以用方块来做NPC不过那样会减少真实感&lt;br /&gt;
#下载BetonQuest插件,将.jar放在您的插件文件夹中并启动服务器.BetonQuest将会生成配置文件.&lt;br /&gt;
#如果您想使用MySQL进行储存数据,打开config.yml，填写您的数据库信息.如果不想,留空就好了,插件会使用SQLite来代替.&lt;br /&gt;
#如果您不想使用自动更新,在禁用它之前,请重新启动服务器或重新加载插件.&lt;br /&gt;
#当您认为完成之后,您可以重新加载插件(/q reload).现在让我们来学习BetonQuests插件的基础知识吧.&lt;br /&gt;
== 配置 ==&lt;br /&gt;
&#039;&#039;&#039;#请勿修改Version选项，他可能会导致你的配置文件被覆盖。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
在config.yml中有几个选项，我将尽可能的叙述那些在使用这个插件前，你可能需要修改的选项。其余的选项都是在本文档中相应的小节叙述的。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;MySQL&#039;&#039;&#039;：如果你使用MySQL当作数据库，请填写其内容，留空将使用SQLite作为数据库。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;update&#039;&#039;&#039;：这部分控制着更新系统，&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;enable&#039;&#039;&#039;：选项默认设置为true，他控制着整个更新系统是否工作。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;download_bugfixes&#039;&#039;&#039;：控制着BetonQuest如果自动更新，是否下载最新的已经修复BUG的版本。 (比如1.7.3 -&amp;gt; 1.7.4 或 1.8.1 -&amp;gt; 1.8.3)，这些版本并不改变插件工作的方式，只是修复了BUG的版本，推荐将这项设置为True。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;：这个选项负责在启动的时候检测是否有新的版本，若有就通知(比如1.7.6 - &amp;gt; 1.8)，因为这些更新可能引入新特性或改变工作方式，所以他们不会自动下载。当你准备好更新的时候，你可以使用/q update指令。&lt;br /&gt;
&amp;lt;br /&amp;gt;如果你使用一个开发版本，这里将会有三个选项：&#039;&#039;&#039;notify_dev_build&#039;&#039;&#039;，它和&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;是一样的，但是他会检测是否有开发版本可以替换。在这里没有特定的版本检查，如果发现dev的数量较高，这个就会出现。你下载开发版本应当承担你的责任（原文:You download development builds on your own responsibility.)&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;Language&#039;&#039;&#039;：设置插件的语言： 目前有7种语言：英语(en),德国(de),法国(fr),西班牙(es),中国(cn)、荷兰(nl)和波兰(pl)。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;sounds&#039;&#039;&#039;：这个选项定义了在不同的场合播放的声音。&#039;&#039;&#039;start&#039;&#039;&#039;和&#039;&#039;&#039;end&#039;&#039;&#039;节点定义了当对话开始和结束的时候所播放的声音。&#039;&#039;&#039;journal&#039;&#039;&#039; 节点定义了当任务笔记更新时所播放的声音。&#039;&#039;&#039;update&#039;&#039;&#039;节点定义了指当日志文件更新时，所播放提醒玩家的声音。&#039;&#039;&#039;full&#039;&#039;&#039;节点定义了当玩家使用/j command，但是背包已经满了的情况下播放。所有的可能的声音名称可以&lt;br /&gt;
[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html 在这]找到。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;combat_delay&#039;&#039;&#039;：这个节点定义了一个战斗延迟系统（以秒为单位），定义了玩家必须在战斗结束多长时间后才可以开始对话。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;notify_pullback&#039;&#039;&#039;：这个选项定义了玩家在对话中试图离开是否禁止。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;default_package&#039;&#039;&#039;：这里写了一个默认包的名称，当你使用/q command 的时候默认是对应这个包。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;cmd_blacklist&#039;&#039;&#039;：这是一个列表，代表了在会话中不能使用的命令，注意这里仅可以输入一个词。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;hook&#039;&#039;&#039;：这里控制了是否与其他插件互动，你可以在这里关掉。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;remove_items_after_respawn&#039;&#039;&#039;如果你不设置gamerule的keepInventory（死亡掉落），请保持这个选项的启用，它可以防止死后其他玩家复制任务的物品，玩家死亡之后，他的任务物品的掉落物将会被删除，并且放到他的背包里。但是有些插件可能试图恢复玩家背包内的所有物品（例如WorldGuard开启keep-inventory）&lt;br /&gt;
&lt;br /&gt;
== 指令 ==&lt;br /&gt;
 /j – 给予一本日志&lt;br /&gt;
 /backpack – 打开背包&lt;br /&gt;
 /q – 列出所有可用的管理员指令&lt;br /&gt;
 /q reload – 重载插件&lt;br /&gt;
 /q objectives &amp;lt;playerName&amp;gt; [list/add/del] [instruction] –列出/修改玩家目标&lt;br /&gt;
 /q tags &amp;lt;playerName&amp;gt; [list/add/del] [tag] – 列出/修改玩家的标签&lt;br /&gt;
 /q points &amp;lt;playerName&amp;gt; [list/add/del] [category] [amount] – 列出/修改玩家在所有阵营的点数&lt;br /&gt;
 /q journal &amp;lt;playerName&amp;gt; [list/add/del] [package.pointer] [date] - lists&lt;br /&gt;
 /q event &amp;lt;playerName&amp;gt; &amp;lt;package.eventID&amp;gt; - 为玩家激活一个事件&lt;br /&gt;
 /q condition &amp;lt;playerName&amp;gt; &amp;lt;package.conditionID&amp;gt; - 显示玩家是否经历过指定的环境&lt;br /&gt;
 /q item &amp;lt;package.itemID&amp;gt; - 创建一个基于你手中物品的物品&lt;br /&gt;
 /q config &amp;lt;set/add/read&amp;gt; &amp;lt;path&amp;gt; [value] – 操作配置项&lt;br /&gt;
 /q purge &amp;lt;playerName&amp;gt; - 删除玩家数据&lt;br /&gt;
 /q backup – 创建配置文件和数据库的备份&lt;br /&gt;
 /q create &amp;lt;package&amp;gt;: 创建一个新的包并包含默认任务&lt;br /&gt;
 /q vector &amp;lt;packname.variable&amp;gt; &amp;lt;newvariable&amp;gt;: 计算第一个位置变量到你的位置并且储存到第二个参数中&lt;br /&gt;
 /questlang &amp;lt;lang&amp;gt; - 改变玩家的语言(如果由控制台使用就可以改变全局语言)&lt;br /&gt;
=== 缩写 ===&lt;br /&gt;
*&#039;&#039;&#039;/j:&#039;&#039;&#039; bj, journal, bjournal, betonjournal, betonquestjournal&lt;br /&gt;
*&#039;&#039;&#039;/backpack:&#039;&#039;&#039;b, bb, bbackpack, betonbackpack, betonquestbackpack&lt;br /&gt;
*&#039;&#039;&#039;/q:&#039;&#039;&#039; bq, bquest, bquests, betonquest, betonquests, quest, quests&lt;br /&gt;
**&#039;&#039;&#039;objective:&#039;&#039;&#039; o, objectives&lt;br /&gt;
**&#039;&#039;&#039;tag:&#039;&#039;&#039; t, tags&lt;br /&gt;
**&#039;&#039;&#039;point:&#039;&#039;&#039; p, points&lt;br /&gt;
**&#039;&#039;&#039;event:&#039;&#039;&#039; e, events&lt;br /&gt;
**&#039;&#039;&#039;condition:&#039;&#039;&#039; c, conditions&lt;br /&gt;
**&#039;&#039;&#039;journal:&#039;&#039;&#039; j, journals&lt;br /&gt;
**&#039;&#039;&#039;item:&#039;&#039;&#039; i, items&lt;br /&gt;
**&#039;&#039;&#039;create:&#039;&#039;&#039; package&lt;br /&gt;
*&#039;&#039;&#039;/questlang:&#039;&#039;&#039; ql&lt;br /&gt;
&lt;br /&gt;
=== 详情 ===&lt;br /&gt;
*/q reload重载所有配置，但是不是所有东西都会被保存。当数据库保存时，不可以修改玩家数据。数据库也是一样，你需要重启/重载服务器才可以保存数据库&amp;lt;br&amp;gt;&lt;br /&gt;
*标签相关的命令可以让你快速的编辑它 ，&#039;/q tags Beton&#039; 将会列出Beton这个玩家的标签。&#039;/q tags Beton add test&#039;将会添加&amp;quot;test&amp;quot;标签给玩家，并且 &#039;/q tags Beton del test&#039; 会移除它&amp;lt;br&amp;gt;&lt;br /&gt;
*点数相关的命令可以操纵点数。向一个类别添加点数应该用&#039;/q points Beton add reputation 20&#039; (给&amp;quot;reputation&amp;quot;添加20点)。你也可以使用负数来减去。 删除全部点数使用&#039;/q points Beton del reputation&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
*日志相关命令与上面两项相同。添加或删除使用 /q journal Beton add default.wood_started (or del)，并且你也可以在结尾加上时间来指定时间，格式为:23.04.2014_16:52。注意要用_来代替空格！名字前必须带上包名，因为命令不属于任何包&amp;lt;br&amp;gt;&lt;br /&gt;
*目标相关命令可以显示玩家的目标。它也可以直接对不表进行操作。记住要在事件/条件前加上包名！如果你想添加一个在events.yml中有定义的目标，只需要使用事件的相关命令&amp;lt;br&amp;gt;&lt;br /&gt;
*使在线玩家激活事件可以使用&#039;/q event Beton default.give_emeralds&#039;这将会为玩家Beton从”default”包激活 &amp;quot;give_emeralds&amp;quot;。也有条件相关的指令来操作，例如&#039;/q condition Beton default.has_food&#039;。事件与条件必须在它们的文件中定义，这个命令不支持原版指令。你可以不写包名，之后插件会自动读取default_package它可以在config.yml设置&amp;lt;br&amp;gt;&lt;br /&gt;
*如果需要创建一个&amp;quot;Nettlebane&amp;quot;任务物品,只需要把它拿在手里之后输入&#039;/q item default.nettlebane&#039;. 你手中的物品就会复制到items.yml 并且以你指定的名称保存(这里是&amp;quot;nettlebane&amp;quot;). 你也可以不输入包名.&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以在. set 项中自定义命令的参数。.add 可以让你快捷的添加字符到存在的值上. (需要注意的地方: 插件不会识别空格，你可以用“_”这个字符来代替空格。例如objective location，是一段存在的字符串，并且你想给它附加 100;200;300;world;10这个值，你的命令应该是/q config add default.events.loc_obj _100;200;300;world;10). read 可以显示配置的值。&amp;lt;br&amp;gt;&lt;br /&gt;
这里的路径就是值的地址。你可以用“.”来表示分支，例如config.language,可以设置语言键的值，同理&amp;quot;bye&amp;quot;这个玩家的配置项路径应该是&lt;br /&gt;
default.conversations.innkeeper.player_options.bye.text&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以使用&#039;/q purge Beton&#039;清除指定玩家的数据. 目前无法使用命令清除整个数据库，但你可以修改数据库的前缀&amp;lt;br&amp;gt;&lt;br /&gt;
如果你想要备份你的设置以及数据，需要你的服务器是空的(需要获取所有数据库的数据&amp;gt;所有玩家离线)之后运行&#039;/q backup&#039;这条命令，你将会获得一个包含所有数据的zip压缩文件。&amp;lt;br&amp;gt;&lt;br /&gt;
*使用&#039;/q create beton&#039; 你可以创建一个名为&#039;beton&#039;的任务，它将会与默认任务相同。&amp;lt;br&amp;gt;&lt;br /&gt;
*/q vector 命令可以让你创建一个由第一个位置变量到你的位置的矢量。结果会储存到&amp;quot;vectors.{第二参数}&amp;quot;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
*betonquest.admin – 允许使用管理员命令(/q ...)且可以创建NPC&lt;br /&gt;
*betonquest.journal – 允许使用/ J指令（默认为玩家）&lt;br /&gt;
*betonquest.backpack –允许使用/backpack 指令（默认为玩家）&lt;br /&gt;
*betonquest.conversation -允许与NPC对话（默认为玩家）betonquest.language -允许改变的语言（默认为玩家）&lt;br /&gt;
== 使用教程 ==&lt;br /&gt;
安装插件之后你首先想到的应该是怎么使用它。如果你想使用GUI，将&#039;&#039;default_conversation_IO&#039;&#039;修改为&#039;&#039;chest&#039;&#039;，之后保存文件并且在服务器上使用&#039;&#039;/q reload&#039;&#039;命令。&lt;br /&gt;
登录并在随意位置放一个彩色粘土。在它上面放一个头（例如僵尸的头）并且在粘土块的一侧放一个牌子。填写如下内容&lt;br /&gt;
&#039;&#039;&#039;[NPC]&lt;br /&gt;
Innkeeper&#039;&#039;&#039;&lt;br /&gt;
右键这个NPC，将会出现对话。如果没有，检查你是否成功地制作了NPC。Innkeeper会让你砍一些树，你可以看到日志有了新的记录，不要放置原木然后摧毁， BetonQuest会检测方块的数量，你只能去砍树。如果你是创造模式，给自己16个原木。之后，你可以返回NPC那里得到奖励&lt;br /&gt;
=== 使用事件和条件 ===&lt;br /&gt;
现在你会了非常基础的东西。我们不能做出来一个完整的对话，因为它们使用了很多事件与条件，所以我们要了解它们。去阅读词汇参考或者继续阅读教程&lt;br /&gt;
==== 事件 ====&lt;br /&gt;
让我们从默认包中打开&#039;&#039;events.yml&#039;&#039;。添加新的一行：&#039;&#039;foo: message Hello world!&#039;&#039;这是一个事件的指令字符。BetonQuest使用它来确定事件的类型和它要做的事情。&#039;&#039;foo&#039;&#039;是事件的名字，&#039;&#039;message&#039;&#039;是一个类型，并且Hello world!告诉message需要显示什么。在这种情况下，如果你运行&#039;&#039;foo&#039;&#039;事件，它会显示Hello owrld!信息。保存这个文件，使用&#039;&#039;/q reload&#039;&#039;命令然后使用&#039;&#039;/q e foo&#039;&#039;运行事件（q是quest缩写，e是event缩写，&amp;lt;名称&amp;gt;是你的Minecraft名字，没有括号，foo是我们创建的事件名称）。它会显示一个Hello world!信息&lt;br /&gt;
创建另一个更复杂的事件。比如传送，它需要一个参数，&#039;&#039;location&#039;&#039;(位置)。在&#039;&#039;events.yml&#039;&#039;中添加一行：&#039;&#039;bar: location 100;200;300;world（&amp;lt;事件名称&amp;gt;:location:x;y;z;&amp;lt;世界名称&amp;gt;）&#039;&#039;。保存文件，重新加载插件，然后运行事件。&lt;br /&gt;
祝贺你，你刚刚创建了你的第一个事件。继续做一些其他事件类型的实验。你可以在事件列表中找到它们。你完成了开始学习的条件。&lt;br /&gt;
==== 条件 ====&lt;br /&gt;
打开conditions.yml并添加新的一行：&#039;&#039;foo: location 100;200;300;world;5&#039;&#039;很明显，命名方式与事件相同，但它们没有任何联系。条件名称和事件名称是无关的，因此你可以给它们相同的名称。现在让我们看看指令字符。你可以认为地点是一种条件，它会检查玩家是否在附近。注意，最后一个参数是一个整数，5。这是检查的范围。完成了吗？做完了就保存文件并重新加载插件吧。&lt;br /&gt;
现在，走到你在条件所定义的位置，使用&#039;&#039;/q c foo&#039;&#039;（C是&#039;&#039;condition&#039;&#039;的缩写）。它应该会显示“&#039;&#039;checking condition blah blah blah: true&#039;&#039;”。我们把焦点放在最后的那个词，&#039;&#039;true&#039;&#039;。这意味着你满足条件：你站的位置在5格之内。现在移动2格，再次使用命令，你仍应符合条件。现在尝试走4格，它应该会显示false。你现在已经在5格之外。明白了吗？太好了！&lt;br /&gt;
现在，我告诉了你最简单地使用这些条件。再次打开&#039;&#039;events.yml&#039;&#039;文件，并在foo字符末尾添加条件：&#039;&#039;foo argument&#039;&#039;。顺便说一下，最好重命名foo事件为baz，这样名字不会混淆。现在你应该有这样的一行：&#039;&#039;message Hello world!  conditions: foo&#039;&#039;baz事件只会在foo条件为true时运行。重载插件，走到5格之外，尝试运行&#039;&#039;baz&#039;&#039;事件。漂亮，什么都没有发生。这是因为你不符合&#039;&#039;foo&#039;&#039;条件。走进范围再次尝试运行事件。它应该显示hello world！消息。&lt;br /&gt;
为我们完成了这样一个条件庆祝吧(ahaaaa lolllllll 2333333)，那么问题来了，如果你想在玩家不在范围内时显示消息，该怎么做呢？（我不告诉你[doge]）别担心，你不用&#039;&#039;specifyinverted_location&#039;&#039;条件或其他的什么（那么问题来了，那串英文是什么意思呢？）。你可以简单地否定条件，否定使条件以完全相反的方式运作，在这种情况下，条件只会在玩家在范围外时成立。打开&#039;&#039;events.yml&#039;&#039;并在&#039;&#039;foo&#039;&#039;条件前加一个感叹号（半角 ! ），现在应该是这样：&#039;&#039;baz: message Hello world! conditions:!foo&#039;&#039;，这表示“当&#039;&#039;foo&#039;&#039;不成立时显示Hello world!”保存文件，重新加载插件，运行事件然后乱跑一会儿，看看它是如何工作的。（对了，那串英文是反转_位置的意思啦，非要翻译就是相位反转_位面!xddddd[特定反转_位置]）&lt;br /&gt;
=== 标签基础 ===&lt;br /&gt;
现在，你学会了怎么用事件与条件。之后，我会告诉你什么是标签(tag)。创建两个个新的事件&#039;&#039;add_beton_tag: tag add beton&#039;&#039;和&#039;&#039;del_beton_tag: tag del beton&#039;&#039;。取事件名称时，要注意与内容相关，否则很容易混淆，很不方便。假设你有100个事件，foo24，bar65等等。你也许会迅速的被闪瞎。所以， &#039;&#039;add_beton_tag&#039;&#039;  标签给玩家添加了&#039;&#039;beton&#039;&#039;标签，&#039;&#039;del_beton_tag&#039;&#039; 移除了它。保存文件，重载插件并且运行事件。什么都没发生还是成功了呢？使用&#039;&#039;/q t&#039;&#039;命令(t是tags的缩写。)它会显示标签列表。现在我们注意一下&#039;&#039;default.beton&#039;&#039;，当然，&#039;&#039;default&#039;&#039;是包名，并且&#039;&#039;beton&#039;&#039;是标签名，并且在&#039;&#039;add_beton_tag&#039;&#039;事件中定义了。现在运行&#039;&#039;del_beton_tag&#039;&#039;事件，猜猜会发生什么？&#039;&#039;default.beton&#039;&#039;标签消失了！综上可知，添加删除标签的方法。&lt;br /&gt;
没有什么是可以犯错的，标签是BetonQuest中最有用的东西之一。它们需要通过tag条件来使用。打开&#039;&#039;conditions.yml&#039;&#039;并且添加&#039;&#039;has_beton_tag: tag beton&#039;&#039;。你可以认为&#039;&#039;tag&#039;&#039;是一种条件（和&#039;&#039;tag&#039;&#039;事件相同，但它们不是一样的，一个是事件，另一个是条件）&#039;&#039;beton&#039;&#039;是标签的名字。你没有指定&#039;&#039;default.beton&#039;&#039;，但你可以这样做。保存，重载插件并且检查条件。它会显示true。&lt;br /&gt;
现在你应该了解了这个方便的系统。你可以当玩家第一次与NPC交流时&lt;br /&gt;
添加一个标签，并且当NPC获取到这个标签他会说一些不同的话，比如“欢迎回来”。&lt;br /&gt;
=== 创建目标 ===&lt;br /&gt;
是时候写一些目标了！打开&#039;&#039;objectives.yml&#039;&#039;并且添加一行&#039;&#039;kill_creepers: mobkill creeper 3 events:bar conditions:has_beton_tag&#039;&#039;。让我们分析一下它。&#039;&#039;kill_creepers&#039;&#039;是目标的条件， &#039;&#039;mobkill&#039;&#039;是任务类型。为了完成任务，玩家需要杀一些怪物，&#039;&#039;creeper&#039;&#039;是一种怪物，所以我们知道这些怪物必须是苦力怕。3是数量，它意味着玩家必须杀3个苦力怕。&#039;&#039;event:bar&#039;&#039;意味着任务完成后激发bar事件。&#039;&#039;conditions:has_beton_tag&#039;&#039;告诉我们只有玩家拥有beton标签时任务才可以完成。保存，重载并且使用&#039;&#039;/q o add kill_creepers&#039;&#039;命令（o是目标,add告诉插件添加一个目标）。&lt;br /&gt;
你现在可以用&#039;&#039;/q o&#039;&#039;命令来检查目标是否创建成功，它会显示所有活动的目标。它应该显示&#039;&#039;default.kill_creepers&#039;&#039;。之后，删除beton标签然后杀几个苦力怕。当你杀了三个之后你发现什么都没发生。这是因为has_beton_tag条件不工作了，所以目标不会计数。现在再添加标签并且杀苦力怕。当第三个死了之后你会传送到bar事件定义的位置。&lt;br /&gt;
恭喜你！你学会了怎么用目标！你需要多做实验，因为任务中经常会使用它。仔细看看创建对话，你就完成了基础！&lt;br /&gt;
=== 创建对话 ===&lt;br /&gt;
现在你理解了BetonQuest的事件、条件、目标，是时候创建一发对话了！在默认包里有一个&#039;&#039;conversations&#039;&#039;文件夹。里面只有一个文件，&#039;&#039;innkeeper.yml&#039;&#039;。这是&#039;&#039;innkeepe&#039;&#039;r的对话文件，就是那个让你砍树的人。参考它来完成你的第一个对话吧。创建一个新文件，命名为&#039;&#039;miner.yml&#039;&#039;。输入（为了学的更快，不要复制！）以下内容&lt;br /&gt;
&#039;&#039;&#039;quester: Miner&lt;br /&gt;
first: greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&#039;&#039;&#039;&lt;br /&gt;
这是最基本的对话， Mine在开始谈话时将会说 Hi there,traveler!，之后，这个对话就会结束，因为这里没有玩家可以选择的选项。&lt;br /&gt;
现在你需要给一个NPC添加对话选项。你需要在 main.yml 文件中添加。现在打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，记住了吗0w0？现在，添加另外一行在 innkeeper字段底下：Miner: miner.yml，保存这个文件然后重启你的服务器。这将会连接我们的名叫“Miner（矿工）”的NPC的最新对话。在你的服务器内创建一个新的NPC，给他一个带有“Miner（矿工）”名字的木牌并且点击他的头部。&lt;br /&gt;
现在给NPC添加对话选项，你需要在 main.yml 文件中添加。打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，添加另外一行在 innkeeper字段底下：Miner:miner.yml，保存这个文件然后重启你的服务器。这将会让我们的 “Miner” NPC说话。在你的服务器内创建一个新的NPC，给他命名为“Miner”并点击他。&lt;br /&gt;
猜猜会发生什么？对话就会显示一遍，从开始到结尾。这个名为“Miner（矿工）”的NPC就会说Hi there,traveler! （你好啊，旅行者！）就像你设置的那样。现在看到设置对话的文件然后编辑它（再一次编辑，手动输入，不要复制粘贴！），所以这个选项看起来是这样的：&lt;br /&gt;
这个名为“Miner”的NPC会说Hi there,traveler!，就像你设置的那样。现在再编辑设置对话的文件（再一次编辑，手动输入，不要复制粘贴！），&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
保存这个文件，重启服务器，再次开启对话，你就会看到有两个选项可以供你选择：Hello!（你好！）和I need to go,sorry.（对不起，我要走了。）。选择它们其中的任何一个就会结束这个对话，因为这些选项没有任何内容。现在创建一个新的选项，例如weather（天气）和Nice weather.（好天气。）然后使hello的选项指向它。当你保存并且重启之后， Miner就会说Nice weather.（好天气。）当你告诉他Hello!（你好！）时，我想你会知道他会说什么！&lt;br /&gt;
现在，不管什么时候与Miner对话，他都会说一样的东西。如果你第二次和他对话，他应该已经知道你的名字，我们可以使用标签(tag)来完成它。定义一个&#039;&#039;meet_mine&#039;&#039;r事件(event)和&#039;&#039;has_met_miner&#039;&#039;条件(condition)。当你与Miner对话时，他会检查has_met_miner条件。如果没有，他将会为你执行&#039;&#039;meet_miner&#039;&#039;事件，你下一次与他对话时，&#039;&#039;has_met_miner&#039;&#039;就会成立，他就可以知道你的名字了&lt;br /&gt;
现在，更改first_greeting这个选项。添加meet_miner事件并且在事件中添加has_met_miner条件（请使用!来否定这个条件，因为这个选项只会在玩家没有见过Miner的时候显示）。你需要用 &#039;&#039; 来包含条件（分词符号），因为YAML中字符串不能以感叹号开头，写成下面这样：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
如果玩家的has_met_miner不成立，first_greeting这个选项会被使用， meet_miner事件被激活，就会显示hello和bye选项。如果玩家已经见过Miner，has_met_miner条件不成立会发生什么？NPC将会尝试使用在first中定义的选项。让我们加入吧！&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
这个选项没有任何事件，如果first_greeting不成立，NPC就会显示这个选项。 “%player%”是一个变量，它将会显示你的名字。这里有比这个更好的选择，会在 参考 这个章节中说明。保存并且重启，然后开始对话。如果你正确的做了所有的事情，Miner就会把你当做“旅行者”欢迎你，第二次跟他讲话，他就会带着你的Minecraft昵称欢迎你~&lt;br /&gt;
这应该是你现在配置文件的样子，你可以检查一下配置错误：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting,regular_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye &lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
  weather:&lt;br /&gt;
    text: Nice weather.&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
    pointer: weather&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
现在你应该尝试制作自己的对话，你可以看着theinnkeeper.yml文件来帮助你创建对话。试着理解对话是怎样一步一步地工作的。你应该试着教程来完成创建Miner来完成这个任务：他找你要一些铁矿石并放在熔炉里冶炼，下一回他就会穿着盔甲！&lt;br /&gt;
你需要阅读 参考 章节，查看如何处理任务中的项目以及如何将条目添加到日记中。如果你想使用Citizens的NPC代替粘土，你需要阅读这一章。要了解更多关于事件、条件、目标、对话和变量，阅读下一章。&lt;br /&gt;
&lt;br /&gt;
== 条件、事件、目标 ==&lt;br /&gt;
Condition（条件）, event（事件）, objectives（目标）被定义为“指令字符”。它可以匹配包含condition/event/objective的文字。感谢这些字符知道它们需要做什么。如果你想使用这些指令字符，请看下面的参考。它描述了这些指令字符的作用和用法。所有的指令字符都在特定的文件中定义，例如所有条件都在condition.yml.中配置。定义语法：&#039;&#039;name: &#039;the instruction string containing the data&#039;&#039;&#039;。单引号大多情况可以省略（建议不省略）。以下，我会更详细地描述使用方法&lt;br /&gt;
=== 条件 ===&lt;br /&gt;
条件是创建高级任务必不可少的工具。它们可以让你控制玩家在对话中可以选择哪些选项，NPC如何回应这些选项或者任务目标完成。所有可能的条件参考如下。&lt;br /&gt;
让我们看看玩家有没有一个&#039;&#039;beton_start&#039;&#039;标签(tags(标签)是一个可以在事件中添加给玩家的，之后我们就可以检查♂它了)你需要写一个像: &#039;&#039;tag beton_start&#039;&#039;这样指令字符。这是定义我们需要寻找什么。第一个单词是条件类型。它说明了这个条件需要检查一个标签。第二个是&#039;&#039;beton_test&#039;&#039;。它定义了哪个标签是我们想要寻找的。注意，你不能在一个条件中定义多个标签。为了做到它你需要多个条件。现在如果你在对话选项中使用了条件，它将会在玩家拥有这个标签时候出现。但是如果你想在玩家没有这个标签时候显示呢？为了达到这个目的你要在条件前面加一个&#039;&#039;!&#039;&#039;来达到目的。注意它是在对话设置里添加而不是条件配置。&lt;br /&gt;
现在你拥有了一个条件&lt;br /&gt;
使用它来检查玩家是否正在做这个任务并且阻止他再做一次。当然，这个标签将会在任务开始之后添加，通过事件&lt;br /&gt;
=== 事件 ===&lt;br /&gt;
在某些时候你想让一些事情发生。刷新日志，设置标签，给予奖励，这些需要事件来完成。你需要像条件一样通过指令字符和指定名字定义它。你可以在事件参考中找到所有的给事件用的指令字符。在指令字符后面你可以添加条件：使用逗号分隔条件一类的东西，例如：&#039;&#039;angry,!quest_started&#039;&#039;。这将会让事件在条件达成时触发。&lt;br /&gt;
=== 目标 ===&lt;br /&gt;
当你在创建任务的时候，任务目标是最主要的。你可以用一个指令字符“objective”来创建一个任务目标。这些可以在objectives.yml文件中定义，在说明文字的后面，你可以为目标添加条件或者事件。条件即限制任务的完成条件（比如需要城镇的入口防卫，在给定的任务地点击杀僵尸），事件会在任务完成时触发（比如给予奖励，或者设置一个标签，当从NPC上获得奖励时标签会激活），你可以在说明位置后面按照这样的格式去定义：“&#039;&#039;conditions:条件1,条件2 events:事件1,事件2&#039;&#039;”，用逗号去分割，而不是用空格。&lt;br /&gt;
&lt;br /&gt;
目标任务在启动的时候载入，但是除非玩家去激活它们，否则不会消耗资源。这意味着，如果你定义了100个目标任务，有20个玩家一起执行其中一个，另外20个玩家执行另一个，其他的任务没有人去执行，那么仅仅有2个目标任务是激活的，不是100个，也不是40个，这样会更加高效。&lt;br /&gt;
&lt;br /&gt;
== 支持插件 ==&lt;br /&gt;
BetonQuest可以支持其他的插件，使用它们的功能。目前有三个插件: Citizens, Vault and MythicMobs.&lt;br /&gt;
=== Citizens ===&lt;br /&gt;
如果你有这个插件就可以创建NPC 来对话。我非常建议安装这个插件，NPC可以让对话更真实。Citizens也可以让你的NPC击杀的目标。&lt;br /&gt;
==== NPC击杀目标 &#039;&#039;npckill&#039;&#039; ====&lt;br /&gt;
NPC击杀目标需要玩家击杀指定ID的NPC。你也可以设置杀多少次NPC。目标名称后面必须是NPC的ID。你可以用&#039;&#039;amount:&#039;&#039; 设置数字。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npckill 16 amount:3 events:reward label:citizens&#039;&#039;&lt;br /&gt;
==== NPC互动目标 ====&lt;br /&gt;
玩家必须与指定ID的NPC交互。它也可以关闭动作，这样对话就不会触发了。第一个参数是数字(NPC的ID)第二个是设置项 &#039;&#039;cancel&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npcinteract 3 cancel conditions:sneak events:steal label:stealing&#039;&#039;&lt;br /&gt;
=== Vault ===&lt;br /&gt;
安装Vault你可以有权限事件和金钱条件/事件。&lt;br /&gt;
==== 权限事件 &#039;&#039;permission&#039;&#039; ====&lt;br /&gt;
删除或者增加一个组的权限。第一个参数是&#039;&#039;add&#039;&#039;或者&#039;&#039;remove&#039;&#039;，这很好理解。第二个是 &#039;&#039;perm&#039;&#039;或者&#039;&#039;group&#039;&#039;，这个也不难弄清楚。下一个就是你要添加或者删除的字符串。最后你需要指定一个世界。如果世界为空的话，这个修改就会变成全局的。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;permission remove group bandit world_nether&#039;&#039;&lt;br /&gt;
==== 金钱事件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
从玩家的帐户存取款，只有一个参数，就是数量，它可以是负数。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money -100&#039;&#039;&lt;br /&gt;
==== 金钱条件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
检查玩家的金钱是否足够，也只有一个参数，即需要达到的数值，不能为负&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money 500&#039;&#039;&lt;br /&gt;
=== MythicMobs ===&lt;br /&gt;
你可以设置MythicMobs怪物击杀目标和MythicMobs生成怪物的事件。&lt;br /&gt;
==== MythicMobs怪物击杀目标 &#039;&#039;mmobkill&#039;&#039; ====&lt;br /&gt;
完成这个目标需要击杀指定数量的指定怪物。第一个参数必须是怪物的内部名称(在MythicMobs的配置中有)。你可以添加&#039;&#039;amount:&#039;&#039;来指定击杀的数量&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mmobkill SkeletalKnight amount:2 events:reward label:mythicmobs&#039;&#039;&lt;br /&gt;
==== MythicMobs怪物生存事件 &#039;&#039;mspawnmob&#039;&#039; ====&lt;br /&gt;
在指定的地方生成指定数量的怪。第一个参数应该是位置，格式是&#039;&#039;100;200;300;world&#039;&#039;。第二个是MythicMobs的内部名字(在MythicMobs的配置中有)后面跟一个冒号和等级。第三个是数量(必填)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mspawnmob 100;200;300;world SkeletalKnight:1 5&#039;&#039;&lt;br /&gt;
=== Skript ===&lt;br /&gt;
BetonQuest也可以与Skript联动。为了避免混淆，我会使用插件的名称(Skript的一些事件BetonQuestnt也有。Skript可以让你通过脚本使用BetonQuest的事件，并且也可以用BetonQuest执行脚本。&lt;br /&gt;
==== Skript事件通过 BetonQuest &#039;&#039;skript&#039;&#039; 事件触发 ====&lt;br /&gt;
这里描述了Skript事件和BetonQuest事件。&lt;br /&gt;
#&#039;&#039;&#039;Skript 事件&#039;&#039;&#039; - &#039;&#039;on [betonquest] event &amp;quot;id&amp;quot;&#039;&#039; – 这一行可以触发 &#039;&#039;betonquest&#039;&#039; 中设定好的代码，并且 &#039;&#039;id&#039;&#039; 只能是字符串，且必须与你指定BetonQuest的事件相同。&lt;br /&gt;
#&#039;&#039;&#039;BetonQuest事件&#039;&#039;&#039;- &#039;&#039;skript&#039;&#039; – 这个事件会触发Skript的事件。指令只有一个参数，是事件的ID。必须和Skript中定义的事件相同。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; 脚本: &#039;&#039;on betonquest event &amp;quot;concrete&amp;quot; &#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;fire_concrete_script: skript concrete&#039;&#039;&lt;br /&gt;
==== Skript条件 ====&lt;br /&gt;
你可以用 &#039;&#039;player meets [betonquest] condition &amp;quot;id&amp;quot;&#039;&#039; 语句检查BetonQuest 的条件。Betonquest是配置项，并且 &#039;&#039;id&#039;&#039; 是条件名称，在conditions.yml中定义。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;player meets condition &amp;quot;has_ore&amp;quot;&#039;&#039;&lt;br /&gt;
conditions.yml: &#039;&#039;has_ore: item iron_ore:5&#039;&#039;&lt;br /&gt;
==== Skript事件 ====&lt;br /&gt;
你可以用脚本触发BetonQuest事件。Skript的语句是&#039;&#039;fire [betonquest] event &amp;quot;id&amp;quot; for player&#039;&#039;。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;fire event &amp;quot;give_emeralds&amp;quot; for player&#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;give_emeralds: give emerald:5&#039;&#039;&lt;br /&gt;
=== WorldGuard ===&lt;br /&gt;
==== WorldGuard区域目标 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
完成这个目标需要进入指定区域，唯一的参数是区域名称。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton events:kill label:trap&#039;&#039;&lt;br /&gt;
==== WorldGuard区域条件 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
条件会在玩家处于指定区域时成立，唯一的参数是区域名&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton&#039;&#039;&lt;br /&gt;
[[分类:优秀条目申请]] [[分类:角色]] [[分类：娱乐]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3515</id>
		<title>BetonQuest</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3515"/>
		<updated>2016-08-23T11:18:04Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=BetonQuest&lt;br /&gt;
|版本=v1.7.3&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.7.2-1.8.3&lt;br /&gt;
|網址=http://dev.bukkit.org/bukkit-plugins/betonquest/&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;center&amp;gt;[[文件:BetonQuestLOGO.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{待完善}}&lt;br /&gt;
[[Category:娱乐]] [[Category:角色]]&lt;br /&gt;
BetonQuest是一个好用的任务插件。它不像传统的插件将任务与对话绑定，而是网状多选结构(即类似Gal的剧情系统)。&amp;lt;br&amp;gt;&lt;br /&gt;
你的任务不一定要像普通单线任务&amp;quot;击杀, 带来物品, 获得奖励&amp;quot;一样，你可以创建多条任务线，通过与NPC的对话，玩家可以进入不同的任务线，获得不同的任务奖励。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
*你的冒险不止一条路可以走&lt;br /&gt;
*强大的事件系统:事件可以发生在任何地方&lt;br /&gt;
*强大的条件系统:你可以限制任何事情的(不)发生&lt;br /&gt;
*组队系统允许创建团队任务&lt;br /&gt;
*与NPC的对话的多样性&lt;br /&gt;
*任务日志记录在一本书中&lt;br /&gt;
*独立的任务物品背包&lt;br /&gt;
*可以对物品操作，甚至是书中的文本&lt;br /&gt;
*可以给玩家增加标签(tag)来储存信息&lt;br /&gt;
*完善的荣誉系统&lt;br /&gt;
*位置监听:当玩家进入指定区域会触发事件&lt;br /&gt;
*日常任务与重复奖励&lt;br /&gt;
*任务可以分配到不同的背包(方便管理)&lt;br /&gt;
*支持Citizens2&lt;br /&gt;
*MythicMobs, Skript, WorldGuard和Vault的混合(意思就是全部支持)&lt;br /&gt;
*多语言支持并且非常容易翻译&lt;br /&gt;
*玩家可以选择自己的语种&lt;br /&gt;
*可以使用API创建你自己的事件、条件、目标(Developer)&lt;br /&gt;
*支持SQLite&amp;amp;MySQL数据库&lt;br /&gt;
*可备份的配置及数据&lt;br /&gt;
*自动升级&lt;br /&gt;
== 概览 ==&lt;br /&gt;
这插件到底怎样运作？我将以一个简单的伐木任务为例来描述。请注意“事件”、“条件”和“目标”之间的区别。&amp;lt;br&amp;gt;&lt;br /&gt;
首先，你需要创建一个和NPC的对话。玩家可在对话内的多个选项中进行选择，NPC会根据选项做出不同的反应（例如NPC会在玩家要求工作时告诉他去砍些树） 。同时，在某些地方会有“事件”被触发，增加一个获得木头的“目标”。它将会把该玩家标记为开始任务的人。从现在开始，NPC会在对话中使用不同的选项，例如他会让玩家快点干活。这些选项将会基于“条件”被选择。&amp;lt;br&amp;gt;&lt;br /&gt;
当玩家完成“目标”时（例如通过摧毁木头），“事件”将会触发，将这个玩家标为采集木头的人。当玩家返回NPC处并与其对话时，NPC将以“条件”来核对玩家是否真的拥有那块木头。如果是的话，他将触发给予奖励的“事件”。&amp;lt;br&amp;gt;&lt;br /&gt;
我们没有创建任何“任务”对象，只是创建了一个能触发“事件”并与“条件”进行核对的对话。“目标”当然也不是“任务”，它只能在玩家得到木头时标记该玩家，不能单独存在。另一方面，该对话可以在之后开始其他任务（例如挖一些矿石），所以“目标”也不是“任务” &amp;lt;br&amp;gt;&lt;br /&gt;
不要为举的例子感到失望，这些只是简化后的过程，所以我可以更简单的解释这个系统，其实用BetonQuest可以做到更多&amp;lt;br&amp;gt;&lt;br /&gt;
这些对话可以像在Baldur&#039;s Gate或是Skyrim一样有多种路线，任务可以有多种方式来结束，也可以有很多不同的影响玩家声誉的结局，就靠你来决定了。&amp;lt;br&amp;gt;&lt;br /&gt;
这个插件也包含了一个在书中的日志。你玩过Morrowind吗? 它们差不多一样，我们只是保留了你查看日志的顺序，所以你不必翻好几百页。现在完成任务并不需要显示像“你收集了所有的矿石，现在回到矿工那儿！”这样的信息。反之，它可以更新玩家的日志，加入像这样的新的记录：“我收集了所有的矿石，我需要回到矿工那儿去拿奖励！”。这样会显得真实得多。&lt;br /&gt;
== 安装 ==&lt;br /&gt;
#首先您可以安装Citizens插件,你可以在[http://dev.bukkit.org/bukkit-plugins/citizens/ Bukkit]找到它.&lt;br /&gt;
#不过这不是前置插件,您也可以用方块来做NPC不过那样会减少真实感&lt;br /&gt;
#下载BetonQuest插件,将.jar放在您的插件文件夹中并启动服务器.BetonQuest将会生成配置文件.&lt;br /&gt;
#如果您想使用MySQL进行储存数据,打开config.yml，填写您的数据库信息.如果不想,留空就好了,插件会使用SQLite来代替.&lt;br /&gt;
#如果您不想使用自动更新,在禁用它之前,请重新启动服务器或重新加载插件.&lt;br /&gt;
#当您认为完成之后,您可以重新加载插件(/q reload).现在让我们来学习BetonQuests插件的基础知识吧.&lt;br /&gt;
== 配置 ==&lt;br /&gt;
&#039;&#039;&#039;#请勿修改Version选项，他可能会导致你的配置文件被覆盖。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
在config.yml中有几个选项，我将尽可能的叙述那些在使用这个插件前，你可能需要修改的选项。其余的选项都是在本文档中相应的小节叙述的。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;MySQL&#039;&#039;&#039;：如果你使用MySQL当作数据库，请填写其内容，留空将使用SQLite作为数据库。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;update&#039;&#039;&#039;：这部分控制着更新系统，&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;enable&#039;&#039;&#039;：选项默认设置为true，他控制着整个更新系统是否工作。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;download_bugfixes&#039;&#039;&#039;：控制着BetonQuest如果自动更新，是否下载最新的已经修复BUG的版本。 (比如1.7.3 -&amp;gt; 1.7.4 或 1.8.1 -&amp;gt; 1.8.3)，这些版本并不改变插件工作的方式，只是修复了BUG的版本，推荐将这项设置为True。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;：这个选项负责在启动的时候检测是否有新的版本，若有就通知(比如1.7.6 - &amp;gt; 1.8)，因为这些更新可能引入新特性或改变工作方式，所以他们不会自动下载。当你准备好更新的时候，你可以使用/q update指令。&lt;br /&gt;
&amp;lt;br /&amp;gt;如果你使用一个开发版本，这里将会有三个选项：&#039;&#039;&#039;notify_dev_build&#039;&#039;&#039;，它和&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;是一样的，但是他会检测是否有开发版本可以替换。在这里没有特定的版本检查，如果发现dev的数量较高，这个就会出现。你下载开发版本应当承担你的责任（原文:You download development builds on your own responsibility.)&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;Language&#039;&#039;&#039;：设置插件的语言： 目前有7种语言：英语(en),德国(de),法国(fr),西班牙(es),中国(cn)、荷兰(nl)和波兰(pl)。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;sounds&#039;&#039;&#039;：这个选项定义了在不同的场合播放的声音。&#039;&#039;&#039;start&#039;&#039;&#039;和&#039;&#039;&#039;end&#039;&#039;&#039;节点定义了当对话开始和结束的时候所播放的声音。&#039;&#039;&#039;journal&#039;&#039;&#039; 节点定义了当任务笔记更新时所播放的声音。&#039;&#039;&#039;update&#039;&#039;&#039;节点定义了指当日志文件更新时，所播放提醒玩家的声音。&#039;&#039;&#039;full&#039;&#039;&#039;节点定义了当玩家使用/j command，但是背包已经满了的情况下播放。所有的可能的声音名称可以&lt;br /&gt;
[https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html 在这]找到。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;combat_delay&#039;&#039;&#039;：这个节点定义了一个战斗延迟系统（以秒为单位），定义了玩家必须在战斗结束多长时间后才可以开始对话。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;notify_pullback&#039;&#039;&#039;：这个选项定义了玩家在对话中试图离开是否禁止。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;default_package&#039;&#039;&#039;：这里写了一个默认包的名称，当你使用/q command 的时候默认是对应这个包。&lt;br /&gt;
&lt;br /&gt;
== 指令 ==&lt;br /&gt;
 /j – 给予一本日志&lt;br /&gt;
 /backpack – 打开背包&lt;br /&gt;
 /q – 列出所有可用的管理员指令&lt;br /&gt;
 /q reload – 重载插件&lt;br /&gt;
 /q objectives &amp;lt;playerName&amp;gt; [list/add/del] [instruction] –列出/修改玩家目标&lt;br /&gt;
 /q tags &amp;lt;playerName&amp;gt; [list/add/del] [tag] – 列出/修改玩家的标签&lt;br /&gt;
 /q points &amp;lt;playerName&amp;gt; [list/add/del] [category] [amount] – 列出/修改玩家在所有阵营的点数&lt;br /&gt;
 /q journal &amp;lt;playerName&amp;gt; [list/add/del] [package.pointer] [date] - lists&lt;br /&gt;
 /q event &amp;lt;playerName&amp;gt; &amp;lt;package.eventID&amp;gt; - 为玩家激活一个事件&lt;br /&gt;
 /q condition &amp;lt;playerName&amp;gt; &amp;lt;package.conditionID&amp;gt; - 显示玩家是否经历过指定的环境&lt;br /&gt;
 /q item &amp;lt;package.itemID&amp;gt; - 创建一个基于你手中物品的物品&lt;br /&gt;
 /q config &amp;lt;set/add/read&amp;gt; &amp;lt;path&amp;gt; [value] – 操作配置项&lt;br /&gt;
 /q purge &amp;lt;playerName&amp;gt; - 删除玩家数据&lt;br /&gt;
 /q backup – 创建配置文件和数据库的备份&lt;br /&gt;
 /q create &amp;lt;package&amp;gt;: 创建一个新的包并包含默认任务&lt;br /&gt;
 /q vector &amp;lt;packname.variable&amp;gt; &amp;lt;newvariable&amp;gt;: 计算第一个位置变量到你的位置并且储存到第二个参数中&lt;br /&gt;
 /questlang &amp;lt;lang&amp;gt; - 改变玩家的语言(如果由控制台使用就可以改变全局语言)&lt;br /&gt;
=== 缩写 ===&lt;br /&gt;
*&#039;&#039;&#039;/j:&#039;&#039;&#039; bj, journal, bjournal, betonjournal, betonquestjournal&lt;br /&gt;
*&#039;&#039;&#039;/backpack:&#039;&#039;&#039;b, bb, bbackpack, betonbackpack, betonquestbackpack&lt;br /&gt;
*&#039;&#039;&#039;/q:&#039;&#039;&#039; bq, bquest, bquests, betonquest, betonquests, quest, quests&lt;br /&gt;
**&#039;&#039;&#039;objective:&#039;&#039;&#039; o, objectives&lt;br /&gt;
**&#039;&#039;&#039;tag:&#039;&#039;&#039; t, tags&lt;br /&gt;
**&#039;&#039;&#039;point:&#039;&#039;&#039; p, points&lt;br /&gt;
**&#039;&#039;&#039;event:&#039;&#039;&#039; e, events&lt;br /&gt;
**&#039;&#039;&#039;condition:&#039;&#039;&#039; c, conditions&lt;br /&gt;
**&#039;&#039;&#039;journal:&#039;&#039;&#039; j, journals&lt;br /&gt;
**&#039;&#039;&#039;item:&#039;&#039;&#039; i, items&lt;br /&gt;
**&#039;&#039;&#039;create:&#039;&#039;&#039; package&lt;br /&gt;
*&#039;&#039;&#039;/questlang:&#039;&#039;&#039; ql&lt;br /&gt;
&lt;br /&gt;
=== 详情 ===&lt;br /&gt;
*/q reload重载所有配置，但是不是所有东西都会被保存。当数据库保存时，不可以修改玩家数据。数据库也是一样，你需要重启/重载服务器才可以保存数据库&amp;lt;br&amp;gt;&lt;br /&gt;
*标签相关的命令可以让你快速的编辑它 ，&#039;/q tags Beton&#039; 将会列出Beton这个玩家的标签。&#039;/q tags Beton add test&#039;将会添加&amp;quot;test&amp;quot;标签给玩家，并且 &#039;/q tags Beton del test&#039; 会移除它&amp;lt;br&amp;gt;&lt;br /&gt;
*点数相关的命令可以操纵点数。向一个类别添加点数应该用&#039;/q points Beton add reputation 20&#039; (给&amp;quot;reputation&amp;quot;添加20点)。你也可以使用负数来减去。 删除全部点数使用&#039;/q points Beton del reputation&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
*日志相关命令与上面两项相同。添加或删除使用 /q journal Beton add default.wood_started (or del)，并且你也可以在结尾加上时间来指定时间，格式为:23.04.2014_16:52。注意要用_来代替空格！名字前必须带上包名，因为命令不属于任何包&amp;lt;br&amp;gt;&lt;br /&gt;
*目标相关命令可以显示玩家的目标。它也可以直接对不表进行操作。记住要在事件/条件前加上包名！如果你想添加一个在events.yml中有定义的目标，只需要使用事件的相关命令&amp;lt;br&amp;gt;&lt;br /&gt;
*使在线玩家激活事件可以使用&#039;/q event Beton default.give_emeralds&#039;这将会为玩家Beton从”default”包激活 &amp;quot;give_emeralds&amp;quot;。也有条件相关的指令来操作，例如&#039;/q condition Beton default.has_food&#039;。事件与条件必须在它们的文件中定义，这个命令不支持原版指令。你可以不写包名，之后插件会自动读取default_package它可以在config.yml设置&amp;lt;br&amp;gt;&lt;br /&gt;
*如果需要创建一个&amp;quot;Nettlebane&amp;quot;任务物品,只需要把它拿在手里之后输入&#039;/q item default.nettlebane&#039;. 你手中的物品就会复制到items.yml 并且以你指定的名称保存(这里是&amp;quot;nettlebane&amp;quot;). 你也可以不输入包名.&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以在. set 项中自定义命令的参数。.add 可以让你快捷的添加字符到存在的值上. (需要注意的地方: 插件不会识别空格，你可以用“_”这个字符来代替空格。例如objective location，是一段存在的字符串，并且你想给它附加 100;200;300;world;10这个值，你的命令应该是/q config add default.events.loc_obj _100;200;300;world;10). read 可以显示配置的值。&amp;lt;br&amp;gt;&lt;br /&gt;
这里的路径就是值的地址。你可以用“.”来表示分支，例如config.language,可以设置语言键的值，同理&amp;quot;bye&amp;quot;这个玩家的配置项路径应该是&lt;br /&gt;
default.conversations.innkeeper.player_options.bye.text&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以使用&#039;/q purge Beton&#039;清除指定玩家的数据. 目前无法使用命令清除整个数据库，但你可以修改数据库的前缀&amp;lt;br&amp;gt;&lt;br /&gt;
如果你想要备份你的设置以及数据，需要你的服务器是空的(需要获取所有数据库的数据&amp;gt;所有玩家离线)之后运行&#039;/q backup&#039;这条命令，你将会获得一个包含所有数据的zip压缩文件。&amp;lt;br&amp;gt;&lt;br /&gt;
*使用&#039;/q create beton&#039; 你可以创建一个名为&#039;beton&#039;的任务，它将会与默认任务相同。&amp;lt;br&amp;gt;&lt;br /&gt;
*/q vector 命令可以让你创建一个由第一个位置变量到你的位置的矢量。结果会储存到&amp;quot;vectors.{第二参数}&amp;quot;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
*betonquest.admin – 允许使用管理员命令(/q ...)且可以创建NPC&lt;br /&gt;
*betonquest.journal – 允许使用/ J指令（默认为玩家）&lt;br /&gt;
*betonquest.backpack –允许使用/backpack 指令（默认为玩家）&lt;br /&gt;
*betonquest.conversation -允许与NPC对话（默认为玩家）betonquest.language -允许改变的语言（默认为玩家）&lt;br /&gt;
== 使用教程 ==&lt;br /&gt;
安装插件之后你首先想到的应该是怎么使用它。如果你想使用GUI，将&#039;&#039;default_conversation_IO&#039;&#039;修改为&#039;&#039;chest&#039;&#039;，之后保存文件并且在服务器上使用&#039;&#039;/q reload&#039;&#039;命令。&lt;br /&gt;
登录并在随意位置放一个彩色粘土。在它上面放一个头（例如僵尸的头）并且在粘土块的一侧放一个牌子。填写如下内容&lt;br /&gt;
&#039;&#039;&#039;[NPC]&lt;br /&gt;
Innkeeper&#039;&#039;&#039;&lt;br /&gt;
右键这个NPC，将会出现对话。如果没有，检查你是否成功地制作了NPC。Innkeeper会让你砍一些树，你可以看到日志有了新的记录，不要放置原木然后摧毁， BetonQuest会检测方块的数量，你只能去砍树。如果你是创造模式，给自己16个原木。之后，你可以返回NPC那里得到奖励&lt;br /&gt;
=== 使用事件和条件 ===&lt;br /&gt;
现在你会了非常基础的东西。我们不能做出来一个完整的对话，因为它们使用了很多事件与条件，所以我们要了解它们。去阅读词汇参考或者继续阅读教程&lt;br /&gt;
==== 事件 ====&lt;br /&gt;
让我们从默认包中打开&#039;&#039;events.yml&#039;&#039;。添加新的一行：&#039;&#039;foo: message Hello world!&#039;&#039;这是一个事件的指令字符。BetonQuest使用它来确定事件的类型和它要做的事情。&#039;&#039;foo&#039;&#039;是事件的名字，&#039;&#039;message&#039;&#039;是一个类型，并且Hello world!告诉message需要显示什么。在这种情况下，如果你运行&#039;&#039;foo&#039;&#039;事件，它会显示Hello owrld!信息。保存这个文件，使用&#039;&#039;/q reload&#039;&#039;命令然后使用&#039;&#039;/q e foo&#039;&#039;运行事件（q是quest缩写，e是event缩写，&amp;lt;名称&amp;gt;是你的Minecraft名字，没有括号，foo是我们创建的事件名称）。它会显示一个Hello world!信息&lt;br /&gt;
创建另一个更复杂的事件。比如传送，它需要一个参数，&#039;&#039;location&#039;&#039;(位置)。在&#039;&#039;events.yml&#039;&#039;中添加一行：&#039;&#039;bar: location 100;200;300;world（&amp;lt;事件名称&amp;gt;:location:x;y;z;&amp;lt;世界名称&amp;gt;）&#039;&#039;。保存文件，重新加载插件，然后运行事件。&lt;br /&gt;
祝贺你，你刚刚创建了你的第一个事件。继续做一些其他事件类型的实验。你可以在事件列表中找到它们。你完成了开始学习的条件。&lt;br /&gt;
==== 条件 ====&lt;br /&gt;
打开conditions.yml并添加新的一行：&#039;&#039;foo: location 100;200;300;world;5&#039;&#039;很明显，命名方式与事件相同，但它们没有任何联系。条件名称和事件名称是无关的，因此你可以给它们相同的名称。现在让我们看看指令字符。你可以认为地点是一种条件，它会检查玩家是否在附近。注意，最后一个参数是一个整数，5。这是检查的范围。完成了吗？做完了就保存文件并重新加载插件吧。&lt;br /&gt;
现在，走到你在条件所定义的位置，使用&#039;&#039;/q c foo&#039;&#039;（C是&#039;&#039;condition&#039;&#039;的缩写）。它应该会显示“&#039;&#039;checking condition blah blah blah: true&#039;&#039;”。我们把焦点放在最后的那个词，&#039;&#039;true&#039;&#039;。这意味着你满足条件：你站的位置在5格之内。现在移动2格，再次使用命令，你仍应符合条件。现在尝试走4格，它应该会显示false。你现在已经在5格之外。明白了吗？太好了！&lt;br /&gt;
现在，我告诉了你最简单地使用这些条件。再次打开&#039;&#039;events.yml&#039;&#039;文件，并在foo字符末尾添加条件：&#039;&#039;foo argument&#039;&#039;。顺便说一下，最好重命名foo事件为baz，这样名字不会混淆。现在你应该有这样的一行：&#039;&#039;message Hello world!  conditions: foo&#039;&#039;baz事件只会在foo条件为true时运行。重载插件，走到5格之外，尝试运行&#039;&#039;baz&#039;&#039;事件。漂亮，什么都没有发生。这是因为你不符合&#039;&#039;foo&#039;&#039;条件。走进范围再次尝试运行事件。它应该显示hello world！消息。&lt;br /&gt;
为我们完成了这样一个条件庆祝吧(ahaaaa lolllllll 2333333)，那么问题来了，如果你想在玩家不在范围内时显示消息，该怎么做呢？（我不告诉你[doge]）别担心，你不用&#039;&#039;specifyinverted_location&#039;&#039;条件或其他的什么（那么问题来了，那串英文是什么意思呢？）。你可以简单地否定条件，否定使条件以完全相反的方式运作，在这种情况下，条件只会在玩家在范围外时成立。打开&#039;&#039;events.yml&#039;&#039;并在&#039;&#039;foo&#039;&#039;条件前加一个感叹号（半角 ! ），现在应该是这样：&#039;&#039;baz: message Hello world! conditions:!foo&#039;&#039;，这表示“当&#039;&#039;foo&#039;&#039;不成立时显示Hello world!”保存文件，重新加载插件，运行事件然后乱跑一会儿，看看它是如何工作的。（对了，那串英文是反转_位置的意思啦，非要翻译就是相位反转_位面!xddddd[特定反转_位置]）&lt;br /&gt;
=== 标签基础 ===&lt;br /&gt;
现在，你学会了怎么用事件与条件。之后，我会告诉你什么是标签(tag)。创建两个个新的事件&#039;&#039;add_beton_tag: tag add beton&#039;&#039;和&#039;&#039;del_beton_tag: tag del beton&#039;&#039;。取事件名称时，要注意与内容相关，否则很容易混淆，很不方便。假设你有100个事件，foo24，bar65等等。你也许会迅速的被闪瞎。所以， &#039;&#039;add_beton_tag&#039;&#039;  标签给玩家添加了&#039;&#039;beton&#039;&#039;标签，&#039;&#039;del_beton_tag&#039;&#039; 移除了它。保存文件，重载插件并且运行事件。什么都没发生还是成功了呢？使用&#039;&#039;/q t&#039;&#039;命令(t是tags的缩写。)它会显示标签列表。现在我们注意一下&#039;&#039;default.beton&#039;&#039;，当然，&#039;&#039;default&#039;&#039;是包名，并且&#039;&#039;beton&#039;&#039;是标签名，并且在&#039;&#039;add_beton_tag&#039;&#039;事件中定义了。现在运行&#039;&#039;del_beton_tag&#039;&#039;事件，猜猜会发生什么？&#039;&#039;default.beton&#039;&#039;标签消失了！综上可知，添加删除标签的方法。&lt;br /&gt;
没有什么是可以犯错的，标签是BetonQuest中最有用的东西之一。它们需要通过tag条件来使用。打开&#039;&#039;conditions.yml&#039;&#039;并且添加&#039;&#039;has_beton_tag: tag beton&#039;&#039;。你可以认为&#039;&#039;tag&#039;&#039;是一种条件（和&#039;&#039;tag&#039;&#039;事件相同，但它们不是一样的，一个是事件，另一个是条件）&#039;&#039;beton&#039;&#039;是标签的名字。你没有指定&#039;&#039;default.beton&#039;&#039;，但你可以这样做。保存，重载插件并且检查条件。它会显示true。&lt;br /&gt;
现在你应该了解了这个方便的系统。你可以当玩家第一次与NPC交流时&lt;br /&gt;
添加一个标签，并且当NPC获取到这个标签他会说一些不同的话，比如“欢迎回来”。&lt;br /&gt;
=== 创建目标 ===&lt;br /&gt;
是时候写一些目标了！打开&#039;&#039;objectives.yml&#039;&#039;并且添加一行&#039;&#039;kill_creepers: mobkill creeper 3 events:bar conditions:has_beton_tag&#039;&#039;。让我们分析一下它。&#039;&#039;kill_creepers&#039;&#039;是目标的条件， &#039;&#039;mobkill&#039;&#039;是任务类型。为了完成任务，玩家需要杀一些怪物，&#039;&#039;creeper&#039;&#039;是一种怪物，所以我们知道这些怪物必须是苦力怕。3是数量，它意味着玩家必须杀3个苦力怕。&#039;&#039;event:bar&#039;&#039;意味着任务完成后激发bar事件。&#039;&#039;conditions:has_beton_tag&#039;&#039;告诉我们只有玩家拥有beton标签时任务才可以完成。保存，重载并且使用&#039;&#039;/q o add kill_creepers&#039;&#039;命令（o是目标,add告诉插件添加一个目标）。&lt;br /&gt;
你现在可以用&#039;&#039;/q o&#039;&#039;命令来检查目标是否创建成功，它会显示所有活动的目标。它应该显示&#039;&#039;default.kill_creepers&#039;&#039;。之后，删除beton标签然后杀几个苦力怕。当你杀了三个之后你发现什么都没发生。这是因为has_beton_tag条件不工作了，所以目标不会计数。现在再添加标签并且杀苦力怕。当第三个死了之后你会传送到bar事件定义的位置。&lt;br /&gt;
恭喜你！你学会了怎么用目标！你需要多做实验，因为任务中经常会使用它。仔细看看创建对话，你就完成了基础！&lt;br /&gt;
=== 创建对话 ===&lt;br /&gt;
现在你理解了BetonQuest的事件、条件、目标，是时候创建一发对话了！在默认包里有一个&#039;&#039;conversations&#039;&#039;文件夹。里面只有一个文件，&#039;&#039;innkeeper.yml&#039;&#039;。这是&#039;&#039;innkeepe&#039;&#039;r的对话文件，就是那个让你砍树的人。参考它来完成你的第一个对话吧。创建一个新文件，命名为&#039;&#039;miner.yml&#039;&#039;。输入（为了学的更快，不要复制！）以下内容&lt;br /&gt;
&#039;&#039;&#039;quester: Miner&lt;br /&gt;
first: greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&#039;&#039;&#039;&lt;br /&gt;
这是最基本的对话， Mine在开始谈话时将会说 Hi there,traveler!，之后，这个对话就会结束，因为这里没有玩家可以选择的选项。&lt;br /&gt;
现在你需要给一个NPC添加对话选项。你需要在 main.yml 文件中添加。现在打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，记住了吗0w0？现在，添加另外一行在 innkeeper字段底下：Miner: miner.yml，保存这个文件然后重启你的服务器。这将会连接我们的名叫“Miner（矿工）”的NPC的最新对话。在你的服务器内创建一个新的NPC，给他一个带有“Miner（矿工）”名字的木牌并且点击他的头部。&lt;br /&gt;
现在给NPC添加对话选项，你需要在 main.yml 文件中添加。打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，添加另外一行在 innkeeper字段底下：Miner:miner.yml，保存这个文件然后重启你的服务器。这将会让我们的 “Miner” NPC说话。在你的服务器内创建一个新的NPC，给他命名为“Miner”并点击他。&lt;br /&gt;
猜猜会发生什么？对话就会显示一遍，从开始到结尾。这个名为“Miner（矿工）”的NPC就会说Hi there,traveler! （你好啊，旅行者！）就像你设置的那样。现在看到设置对话的文件然后编辑它（再一次编辑，手动输入，不要复制粘贴！），所以这个选项看起来是这样的：&lt;br /&gt;
这个名为“Miner”的NPC会说Hi there,traveler!，就像你设置的那样。现在再编辑设置对话的文件（再一次编辑，手动输入，不要复制粘贴！），&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
保存这个文件，重启服务器，再次开启对话，你就会看到有两个选项可以供你选择：Hello!（你好！）和I need to go,sorry.（对不起，我要走了。）。选择它们其中的任何一个就会结束这个对话，因为这些选项没有任何内容。现在创建一个新的选项，例如weather（天气）和Nice weather.（好天气。）然后使hello的选项指向它。当你保存并且重启之后， Miner就会说Nice weather.（好天气。）当你告诉他Hello!（你好！）时，我想你会知道他会说什么！&lt;br /&gt;
现在，不管什么时候与Miner对话，他都会说一样的东西。如果你第二次和他对话，他应该已经知道你的名字，我们可以使用标签(tag)来完成它。定义一个&#039;&#039;meet_mine&#039;&#039;r事件(event)和&#039;&#039;has_met_miner&#039;&#039;条件(condition)。当你与Miner对话时，他会检查has_met_miner条件。如果没有，他将会为你执行&#039;&#039;meet_miner&#039;&#039;事件，你下一次与他对话时，&#039;&#039;has_met_miner&#039;&#039;就会成立，他就可以知道你的名字了&lt;br /&gt;
现在，更改first_greeting这个选项。添加meet_miner事件并且在事件中添加has_met_miner条件（请使用!来否定这个条件，因为这个选项只会在玩家没有见过Miner的时候显示）。你需要用 &#039;&#039; 来包含条件（分词符号），因为YAML中字符串不能以感叹号开头，写成下面这样：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
如果玩家的has_met_miner不成立，first_greeting这个选项会被使用， meet_miner事件被激活，就会显示hello和bye选项。如果玩家已经见过Miner，has_met_miner条件不成立会发生什么？NPC将会尝试使用在first中定义的选项。让我们加入吧！&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
这个选项没有任何事件，如果first_greeting不成立，NPC就会显示这个选项。 “%player%”是一个变量，它将会显示你的名字。这里有比这个更好的选择，会在 参考 这个章节中说明。保存并且重启，然后开始对话。如果你正确的做了所有的事情，Miner就会把你当做“旅行者”欢迎你，第二次跟他讲话，他就会带着你的Minecraft昵称欢迎你~&lt;br /&gt;
这应该是你现在配置文件的样子，你可以检查一下配置错误：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting,regular_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye &lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
  weather:&lt;br /&gt;
    text: Nice weather.&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
    pointer: weather&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
现在你应该尝试制作自己的对话，你可以看着theinnkeeper.yml文件来帮助你创建对话。试着理解对话是怎样一步一步地工作的。你应该试着教程来完成创建Miner来完成这个任务：他找你要一些铁矿石并放在熔炉里冶炼，下一回他就会穿着盔甲！&lt;br /&gt;
你需要阅读 参考 章节，查看如何处理任务中的项目以及如何将条目添加到日记中。如果你想使用Citizens的NPC代替粘土，你需要阅读这一章。要了解更多关于事件、条件、目标、对话和变量，阅读下一章。&lt;br /&gt;
&lt;br /&gt;
== 条件、事件、目标 ==&lt;br /&gt;
Condition（条件）, event（事件）, objectives（目标）被定义为“指令字符”。它可以匹配包含condition/event/objective的文字。感谢这些字符知道它们需要做什么。如果你想使用这些指令字符，请看下面的参考。它描述了这些指令字符的作用和用法。所有的指令字符都在特定的文件中定义，例如所有条件都在condition.yml.中配置。定义语法：&#039;&#039;name: &#039;the instruction string containing the data&#039;&#039;&#039;。单引号大多情况可以省略（建议不省略）。以下，我会更详细地描述使用方法&lt;br /&gt;
=== 条件 ===&lt;br /&gt;
条件是创建高级任务必不可少的工具。它们可以让你控制玩家在对话中可以选择哪些选项，NPC如何回应这些选项或者任务目标完成。所有可能的条件参考如下。&lt;br /&gt;
让我们看看玩家有没有一个&#039;&#039;beton_start&#039;&#039;标签(tags(标签)是一个可以在事件中添加给玩家的，之后我们就可以检查♂它了)你需要写一个像: &#039;&#039;tag beton_start&#039;&#039;这样指令字符。这是定义我们需要寻找什么。第一个单词是条件类型。它说明了这个条件需要检查一个标签。第二个是&#039;&#039;beton_test&#039;&#039;。它定义了哪个标签是我们想要寻找的。注意，你不能在一个条件中定义多个标签。为了做到它你需要多个条件。现在如果你在对话选项中使用了条件，它将会在玩家拥有这个标签时候出现。但是如果你想在玩家没有这个标签时候显示呢？为了达到这个目的你要在条件前面加一个&#039;&#039;!&#039;&#039;来达到目的。注意它是在对话设置里添加而不是条件配置。&lt;br /&gt;
现在你拥有了一个条件&lt;br /&gt;
使用它来检查玩家是否正在做这个任务并且阻止他再做一次。当然，这个标签将会在任务开始之后添加，通过事件&lt;br /&gt;
=== 事件 ===&lt;br /&gt;
在某些时候你想让一些事情发生。刷新日志，设置标签，给予奖励，这些需要事件来完成。你需要像条件一样通过指令字符和指定名字定义它。你可以在事件参考中找到所有的给事件用的指令字符。在指令字符后面你可以添加条件：使用逗号分隔条件一类的东西，例如：&#039;&#039;angry,!quest_started&#039;&#039;。这将会让事件在条件达成时触发。&lt;br /&gt;
=== 目标 ===&lt;br /&gt;
当你在创建任务的时候，任务目标是最主要的。你可以用一个指令字符“objective”来创建一个任务目标。这些可以在objectives.yml文件中定义，在说明文字的后面，你可以为目标添加条件或者事件。条件即限制任务的完成条件（比如需要城镇的入口防卫，在给定的任务地点击杀僵尸），事件会在任务完成时触发（比如给予奖励，或者设置一个标签，当从NPC上获得奖励时标签会激活），你可以在说明位置后面按照这样的格式去定义：“&#039;&#039;conditions:条件1,条件2 events:事件1,事件2&#039;&#039;”，用逗号去分割，而不是用空格。&lt;br /&gt;
&lt;br /&gt;
目标任务在启动的时候载入，但是除非玩家去激活它们，否则不会消耗资源。这意味着，如果你定义了100个目标任务，有20个玩家一起执行其中一个，另外20个玩家执行另一个，其他的任务没有人去执行，那么仅仅有2个目标任务是激活的，不是100个，也不是40个，这样会更加高效。&lt;br /&gt;
&lt;br /&gt;
== 支持插件 ==&lt;br /&gt;
BetonQuest可以支持其他的插件，使用它们的功能。目前有三个插件: Citizens, Vault and MythicMobs.&lt;br /&gt;
=== Citizens ===&lt;br /&gt;
如果你有这个插件就可以创建NPC 来对话。我非常建议安装这个插件，NPC可以让对话更真实。Citizens也可以让你的NPC击杀的目标。&lt;br /&gt;
==== NPC击杀目标 &#039;&#039;npckill&#039;&#039; ====&lt;br /&gt;
NPC击杀目标需要玩家击杀指定ID的NPC。你也可以设置杀多少次NPC。目标名称后面必须是NPC的ID。你可以用&#039;&#039;amount:&#039;&#039; 设置数字。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npckill 16 amount:3 events:reward label:citizens&#039;&#039;&lt;br /&gt;
==== NPC互动目标 ====&lt;br /&gt;
玩家必须与指定ID的NPC交互。它也可以关闭动作，这样对话就不会触发了。第一个参数是数字(NPC的ID)第二个是设置项 &#039;&#039;cancel&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npcinteract 3 cancel conditions:sneak events:steal label:stealing&#039;&#039;&lt;br /&gt;
=== Vault ===&lt;br /&gt;
安装Vault你可以有权限事件和金钱条件/事件。&lt;br /&gt;
==== 权限事件 &#039;&#039;permission&#039;&#039; ====&lt;br /&gt;
删除或者增加一个组的权限。第一个参数是&#039;&#039;add&#039;&#039;或者&#039;&#039;remove&#039;&#039;，这很好理解。第二个是 &#039;&#039;perm&#039;&#039;或者&#039;&#039;group&#039;&#039;，这个也不难弄清楚。下一个就是你要添加或者删除的字符串。最后你需要指定一个世界。如果世界为空的话，这个修改就会变成全局的。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;permission remove group bandit world_nether&#039;&#039;&lt;br /&gt;
==== 金钱事件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
从玩家的帐户存取款，只有一个参数，就是数量，它可以是负数。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money -100&#039;&#039;&lt;br /&gt;
==== 金钱条件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
检查玩家的金钱是否足够，也只有一个参数，即需要达到的数值，不能为负&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money 500&#039;&#039;&lt;br /&gt;
=== MythicMobs ===&lt;br /&gt;
你可以设置MythicMobs怪物击杀目标和MythicMobs生成怪物的事件。&lt;br /&gt;
==== MythicMobs怪物击杀目标 &#039;&#039;mmobkill&#039;&#039; ====&lt;br /&gt;
完成这个目标需要击杀指定数量的指定怪物。第一个参数必须是怪物的内部名称(在MythicMobs的配置中有)。你可以添加&#039;&#039;amount:&#039;&#039;来指定击杀的数量&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mmobkill SkeletalKnight amount:2 events:reward label:mythicmobs&#039;&#039;&lt;br /&gt;
==== MythicMobs怪物生存事件 &#039;&#039;mspawnmob&#039;&#039; ====&lt;br /&gt;
在指定的地方生成指定数量的怪。第一个参数应该是位置，格式是&#039;&#039;100;200;300;world&#039;&#039;。第二个是MythicMobs的内部名字(在MythicMobs的配置中有)后面跟一个冒号和等级。第三个是数量(必填)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mspawnmob 100;200;300;world SkeletalKnight:1 5&#039;&#039;&lt;br /&gt;
=== Skript ===&lt;br /&gt;
BetonQuest也可以与Skript联动。为了避免混淆，我会使用插件的名称(Skript的一些事件BetonQuestnt也有。Skript可以让你通过脚本使用BetonQuest的事件，并且也可以用BetonQuest执行脚本。&lt;br /&gt;
==== Skript事件通过 BetonQuest &#039;&#039;skript&#039;&#039; 事件触发 ====&lt;br /&gt;
这里描述了Skript事件和BetonQuest事件。&lt;br /&gt;
#&#039;&#039;&#039;Skript 事件&#039;&#039;&#039; - &#039;&#039;on [betonquest] event &amp;quot;id&amp;quot;&#039;&#039; – 这一行可以触发 &#039;&#039;betonquest&#039;&#039; 中设定好的代码，并且 &#039;&#039;id&#039;&#039; 只能是字符串，且必须与你指定BetonQuest的事件相同。&lt;br /&gt;
#&#039;&#039;&#039;BetonQuest事件&#039;&#039;&#039;- &#039;&#039;skript&#039;&#039; – 这个事件会触发Skript的事件。指令只有一个参数，是事件的ID。必须和Skript中定义的事件相同。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; 脚本: &#039;&#039;on betonquest event &amp;quot;concrete&amp;quot; &#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;fire_concrete_script: skript concrete&#039;&#039;&lt;br /&gt;
==== Skript条件 ====&lt;br /&gt;
你可以用 &#039;&#039;player meets [betonquest] condition &amp;quot;id&amp;quot;&#039;&#039; 语句检查BetonQuest 的条件。Betonquest是配置项，并且 &#039;&#039;id&#039;&#039; 是条件名称，在conditions.yml中定义。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;player meets condition &amp;quot;has_ore&amp;quot;&#039;&#039;&lt;br /&gt;
conditions.yml: &#039;&#039;has_ore: item iron_ore:5&#039;&#039;&lt;br /&gt;
==== Skript事件 ====&lt;br /&gt;
你可以用脚本触发BetonQuest事件。Skript的语句是&#039;&#039;fire [betonquest] event &amp;quot;id&amp;quot; for player&#039;&#039;。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;fire event &amp;quot;give_emeralds&amp;quot; for player&#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;give_emeralds: give emerald:5&#039;&#039;&lt;br /&gt;
=== WorldGuard ===&lt;br /&gt;
==== WorldGuard区域目标 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
完成这个目标需要进入指定区域，唯一的参数是区域名称。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton events:kill label:trap&#039;&#039;&lt;br /&gt;
==== WorldGuard区域条件 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
条件会在玩家处于指定区域时成立，唯一的参数是区域名&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton&#039;&#039;&lt;br /&gt;
[[分类:优秀条目申请]] [[分类:角色]] [[分类：娱乐]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3514</id>
		<title>BetonQuest</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3514"/>
		<updated>2016-08-23T09:03:50Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=BetonQuest&lt;br /&gt;
|版本=v1.7.3&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.7.2-1.8.3&lt;br /&gt;
|網址=http://dev.bukkit.org/bukkit-plugins/betonquest/&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;center&amp;gt;[[文件:BetonQuestLOGO.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{待完善}}&lt;br /&gt;
[[Category:娱乐]] [[Category:角色]]&lt;br /&gt;
BetonQuest是一个好用的任务插件。它不像传统的插件将任务与对话绑定，而是网状多选结构(即类似Gal的剧情系统)。&amp;lt;br&amp;gt;&lt;br /&gt;
你的任务不一定要像普通单线任务&amp;quot;击杀, 带来物品, 获得奖励&amp;quot;一样，你可以创建多条任务线，通过与NPC的对话，玩家可以进入不同的任务线，获得不同的任务奖励。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
*你的冒险不止一条路可以走&lt;br /&gt;
*强大的事件系统:事件可以发生在任何地方&lt;br /&gt;
*强大的条件系统:你可以限制任何事情的(不)发生&lt;br /&gt;
*组队系统允许创建团队任务&lt;br /&gt;
*与NPC的对话的多样性&lt;br /&gt;
*任务日志记录在一本书中&lt;br /&gt;
*独立的任务物品背包&lt;br /&gt;
*可以对物品操作，甚至是书中的文本&lt;br /&gt;
*可以给玩家增加标签(tag)来储存信息&lt;br /&gt;
*完善的荣誉系统&lt;br /&gt;
*位置监听:当玩家进入指定区域会触发事件&lt;br /&gt;
*日常任务与重复奖励&lt;br /&gt;
*任务可以分配到不同的背包(方便管理)&lt;br /&gt;
*支持Citizens2&lt;br /&gt;
*MythicMobs, Skript, WorldGuard和Vault的混合(意思就是全部支持)&lt;br /&gt;
*多语言支持并且非常容易翻译&lt;br /&gt;
*玩家可以选择自己的语种&lt;br /&gt;
*可以使用API创建你自己的事件、条件、目标(Developer)&lt;br /&gt;
*支持SQLite&amp;amp;MySQL数据库&lt;br /&gt;
*可备份的配置及数据&lt;br /&gt;
*自动升级&lt;br /&gt;
== 概览 ==&lt;br /&gt;
这插件到底怎样运作？我将以一个简单的伐木任务为例来描述。请注意“事件”、“条件”和“目标”之间的区别。&amp;lt;br&amp;gt;&lt;br /&gt;
首先，你需要创建一个和NPC的对话。玩家可在对话内的多个选项中进行选择，NPC会根据选项做出不同的反应（例如NPC会在玩家要求工作时告诉他去砍些树） 。同时，在某些地方会有“事件”被触发，增加一个获得木头的“目标”。它将会把该玩家标记为开始任务的人。从现在开始，NPC会在对话中使用不同的选项，例如他会让玩家快点干活。这些选项将会基于“条件”被选择。&amp;lt;br&amp;gt;&lt;br /&gt;
当玩家完成“目标”时（例如通过摧毁木头），“事件”将会触发，将这个玩家标为采集木头的人。当玩家返回NPC处并与其对话时，NPC将以“条件”来核对玩家是否真的拥有那块木头。如果是的话，他将触发给予奖励的“事件”。&amp;lt;br&amp;gt;&lt;br /&gt;
我们没有创建任何“任务”对象，只是创建了一个能触发“事件”并与“条件”进行核对的对话。“目标”当然也不是“任务”，它只能在玩家得到木头时标记该玩家，不能单独存在。另一方面，该对话可以在之后开始其他任务（例如挖一些矿石），所以“目标”也不是“任务” &amp;lt;br&amp;gt;&lt;br /&gt;
不要为举的例子感到失望，这些只是简化后的过程，所以我可以更简单的解释这个系统，其实用BetonQuest可以做到更多&amp;lt;br&amp;gt;&lt;br /&gt;
这些对话可以像在Baldur&#039;s Gate或是Skyrim一样有多种路线，任务可以有多种方式来结束，也可以有很多不同的影响玩家声誉的结局，就靠你来决定了。&amp;lt;br&amp;gt;&lt;br /&gt;
这个插件也包含了一个在书中的日志。你玩过Morrowind吗? 它们差不多一样，我们只是保留了你查看日志的顺序，所以你不必翻好几百页。现在完成任务并不需要显示像“你收集了所有的矿石，现在回到矿工那儿！”这样的信息。反之，它可以更新玩家的日志，加入像这样的新的记录：“我收集了所有的矿石，我需要回到矿工那儿去拿奖励！”。这样会显得真实得多。&lt;br /&gt;
== 安装 ==&lt;br /&gt;
#首先您可以安装Citizens插件,你可以在[http://dev.bukkit.org/bukkit-plugins/citizens/ Bukkit]找到它.&lt;br /&gt;
#不过这不是前置插件,您也可以用方块来做NPC不过那样会减少真实感&lt;br /&gt;
#下载BetonQuest插件,将.jar放在您的插件文件夹中并启动服务器.BetonQuest将会生成配置文件.&lt;br /&gt;
#如果您想使用MySQL进行储存数据,打开config.yml，填写您的数据库信息.如果不想,留空就好了,插件会使用SQLite来代替.&lt;br /&gt;
#如果您不想使用自动更新,在禁用它之前,请重新启动服务器或重新加载插件.&lt;br /&gt;
#当您认为完成之后,您可以重新加载插件(/q reload).现在让我们来学习BetonQuests插件的基础知识吧.&lt;br /&gt;
== 配置 ==&lt;br /&gt;
&#039;&#039;&#039;#请勿修改Version选项，他可能会导致你的配置文件被覆盖。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
在config.yml中有几个选项，我将尽可能的叙述那些在使用这个插件前，你可能需要修改的选项。其余的选项都是在本文档中相应的小节叙述的。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;MySQL&#039;&#039;&#039;：如果你使用MySQL当作数据库，请填写其内容，留空将使用SQLite作为数据库。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;update&#039;&#039;&#039;：这部分控制着更新系统，&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;enable&#039;&#039;&#039;选项默认设置为true，他控制着整个更新系统是否工作。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;download_bugfixes&#039;&#039;&#039;控制着BetonQuest如果自动更新，是否下载最新的已经修复BUG的版本。 (比如1.7.3 -&amp;gt; 1.7.4 或 1.8.1 -&amp;gt; 1.8.3)，这些版本并不改变插件工作的方式，只是修复了BUG的版本，推荐将这项设置为True。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;这个选项负责在启动的时候检测是否有新的版本，若有就通知(比如1.7.6 - &amp;gt; 1.8)，因为这些更新可能引入新特性或改变工作方式，所以他们不会自动下载。当你准备好更新的时候，你可以使用/q update指令。&lt;br /&gt;
&amp;lt;br /&amp;gt;如果你使用一个开发版本，这里将会有三个选项：&#039;&#039;&#039;notify_dev_build&#039;&#039;&#039;，它和&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;是一样的，但是他会检测是否有开发版本可以替换。在这里没有特定的版本检查，如果发现dev的数量较高，这个就会出现。你下载开发版本应当承担你的责任（原文:You download development builds on your own responsibility.)&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;Language&#039;&#039;&#039;设置插件的语言： 目前有7种语言：英语(en),德国(de),法国(fr),西班牙(es),中国(cn)、荷兰(nl)和波兰(pl)。&lt;br /&gt;
&lt;br /&gt;
== 指令 ==&lt;br /&gt;
 /j – 给予一本日志&lt;br /&gt;
 /backpack – 打开背包&lt;br /&gt;
 /q – 列出所有可用的管理员指令&lt;br /&gt;
 /q reload – 重载插件&lt;br /&gt;
 /q objectives &amp;lt;playerName&amp;gt; [list/add/del] [instruction] –列出/修改玩家目标&lt;br /&gt;
 /q tags &amp;lt;playerName&amp;gt; [list/add/del] [tag] – 列出/修改玩家的标签&lt;br /&gt;
 /q points &amp;lt;playerName&amp;gt; [list/add/del] [category] [amount] – 列出/修改玩家在所有阵营的点数&lt;br /&gt;
 /q journal &amp;lt;playerName&amp;gt; [list/add/del] [package.pointer] [date] - lists&lt;br /&gt;
 /q event &amp;lt;playerName&amp;gt; &amp;lt;package.eventID&amp;gt; - 为玩家激活一个事件&lt;br /&gt;
 /q condition &amp;lt;playerName&amp;gt; &amp;lt;package.conditionID&amp;gt; - 显示玩家是否经历过指定的环境&lt;br /&gt;
 /q item &amp;lt;package.itemID&amp;gt; - 创建一个基于你手中物品的物品&lt;br /&gt;
 /q config &amp;lt;set/add/read&amp;gt; &amp;lt;path&amp;gt; [value] – 操作配置项&lt;br /&gt;
 /q purge &amp;lt;playerName&amp;gt; - 删除玩家数据&lt;br /&gt;
 /q backup – 创建配置文件和数据库的备份&lt;br /&gt;
 /q create &amp;lt;package&amp;gt;: 创建一个新的包并包含默认任务&lt;br /&gt;
 /q vector &amp;lt;packname.variable&amp;gt; &amp;lt;newvariable&amp;gt;: 计算第一个位置变量到你的位置并且储存到第二个参数中&lt;br /&gt;
 /questlang &amp;lt;lang&amp;gt; - 改变玩家的语言(如果由控制台使用就可以改变全局语言)&lt;br /&gt;
=== 缩写 ===&lt;br /&gt;
*&#039;&#039;&#039;/j:&#039;&#039;&#039; bj, journal, bjournal, betonjournal, betonquestjournal&lt;br /&gt;
*&#039;&#039;&#039;/backpack:&#039;&#039;&#039;b, bb, bbackpack, betonbackpack, betonquestbackpack&lt;br /&gt;
*&#039;&#039;&#039;/q:&#039;&#039;&#039; bq, bquest, bquests, betonquest, betonquests, quest, quests&lt;br /&gt;
**&#039;&#039;&#039;objective:&#039;&#039;&#039; o, objectives&lt;br /&gt;
**&#039;&#039;&#039;tag:&#039;&#039;&#039; t, tags&lt;br /&gt;
**&#039;&#039;&#039;point:&#039;&#039;&#039; p, points&lt;br /&gt;
**&#039;&#039;&#039;event:&#039;&#039;&#039; e, events&lt;br /&gt;
**&#039;&#039;&#039;condition:&#039;&#039;&#039; c, conditions&lt;br /&gt;
**&#039;&#039;&#039;journal:&#039;&#039;&#039; j, journals&lt;br /&gt;
**&#039;&#039;&#039;item:&#039;&#039;&#039; i, items&lt;br /&gt;
**&#039;&#039;&#039;create:&#039;&#039;&#039; package&lt;br /&gt;
*&#039;&#039;&#039;/questlang:&#039;&#039;&#039; ql&lt;br /&gt;
&lt;br /&gt;
=== 详情 ===&lt;br /&gt;
*/q reload重载所有配置，但是不是所有东西都会被保存。当数据库保存时，不可以修改玩家数据。数据库也是一样，你需要重启/重载服务器才可以保存数据库&amp;lt;br&amp;gt;&lt;br /&gt;
*标签相关的命令可以让你快速的编辑它 ，&#039;/q tags Beton&#039; 将会列出Beton这个玩家的标签。&#039;/q tags Beton add test&#039;将会添加&amp;quot;test&amp;quot;标签给玩家，并且 &#039;/q tags Beton del test&#039; 会移除它&amp;lt;br&amp;gt;&lt;br /&gt;
*点数相关的命令可以操纵点数。向一个类别添加点数应该用&#039;/q points Beton add reputation 20&#039; (给&amp;quot;reputation&amp;quot;添加20点)。你也可以使用负数来减去。 删除全部点数使用&#039;/q points Beton del reputation&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
*日志相关命令与上面两项相同。添加或删除使用 /q journal Beton add default.wood_started (or del)，并且你也可以在结尾加上时间来指定时间，格式为:23.04.2014_16:52。注意要用_来代替空格！名字前必须带上包名，因为命令不属于任何包&amp;lt;br&amp;gt;&lt;br /&gt;
*目标相关命令可以显示玩家的目标。它也可以直接对不表进行操作。记住要在事件/条件前加上包名！如果你想添加一个在events.yml中有定义的目标，只需要使用事件的相关命令&amp;lt;br&amp;gt;&lt;br /&gt;
*使在线玩家激活事件可以使用&#039;/q event Beton default.give_emeralds&#039;这将会为玩家Beton从”default”包激活 &amp;quot;give_emeralds&amp;quot;。也有条件相关的指令来操作，例如&#039;/q condition Beton default.has_food&#039;。事件与条件必须在它们的文件中定义，这个命令不支持原版指令。你可以不写包名，之后插件会自动读取default_package它可以在config.yml设置&amp;lt;br&amp;gt;&lt;br /&gt;
*如果需要创建一个&amp;quot;Nettlebane&amp;quot;任务物品,只需要把它拿在手里之后输入&#039;/q item default.nettlebane&#039;. 你手中的物品就会复制到items.yml 并且以你指定的名称保存(这里是&amp;quot;nettlebane&amp;quot;). 你也可以不输入包名.&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以在. set 项中自定义命令的参数。.add 可以让你快捷的添加字符到存在的值上. (需要注意的地方: 插件不会识别空格，你可以用“_”这个字符来代替空格。例如objective location，是一段存在的字符串，并且你想给它附加 100;200;300;world;10这个值，你的命令应该是/q config add default.events.loc_obj _100;200;300;world;10). read 可以显示配置的值。&amp;lt;br&amp;gt;&lt;br /&gt;
这里的路径就是值的地址。你可以用“.”来表示分支，例如config.language,可以设置语言键的值，同理&amp;quot;bye&amp;quot;这个玩家的配置项路径应该是&lt;br /&gt;
default.conversations.innkeeper.player_options.bye.text&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以使用&#039;/q purge Beton&#039;清除指定玩家的数据. 目前无法使用命令清除整个数据库，但你可以修改数据库的前缀&amp;lt;br&amp;gt;&lt;br /&gt;
如果你想要备份你的设置以及数据，需要你的服务器是空的(需要获取所有数据库的数据&amp;gt;所有玩家离线)之后运行&#039;/q backup&#039;这条命令，你将会获得一个包含所有数据的zip压缩文件。&amp;lt;br&amp;gt;&lt;br /&gt;
*使用&#039;/q create beton&#039; 你可以创建一个名为&#039;beton&#039;的任务，它将会与默认任务相同。&amp;lt;br&amp;gt;&lt;br /&gt;
*/q vector 命令可以让你创建一个由第一个位置变量到你的位置的矢量。结果会储存到&amp;quot;vectors.{第二参数}&amp;quot;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
*betonquest.admin – 允许使用管理员命令(/q ...)且可以创建NPC&lt;br /&gt;
*betonquest.journal – 允许使用/ J指令（默认为玩家）&lt;br /&gt;
*betonquest.backpack –允许使用/backpack 指令（默认为玩家）&lt;br /&gt;
*betonquest.conversation -允许与NPC对话（默认为玩家）betonquest.language -允许改变的语言（默认为玩家）&lt;br /&gt;
== 使用教程 ==&lt;br /&gt;
安装插件之后你首先想到的应该是怎么使用它。如果你想使用GUI，将&#039;&#039;default_conversation_IO&#039;&#039;修改为&#039;&#039;chest&#039;&#039;，之后保存文件并且在服务器上使用&#039;&#039;/q reload&#039;&#039;命令。&lt;br /&gt;
登录并在随意位置放一个彩色粘土。在它上面放一个头（例如僵尸的头）并且在粘土块的一侧放一个牌子。填写如下内容&lt;br /&gt;
&#039;&#039;&#039;[NPC]&lt;br /&gt;
Innkeeper&#039;&#039;&#039;&lt;br /&gt;
右键这个NPC，将会出现对话。如果没有，检查你是否成功地制作了NPC。Innkeeper会让你砍一些树，你可以看到日志有了新的记录，不要放置原木然后摧毁， BetonQuest会检测方块的数量，你只能去砍树。如果你是创造模式，给自己16个原木。之后，你可以返回NPC那里得到奖励&lt;br /&gt;
=== 使用事件和条件 ===&lt;br /&gt;
现在你会了非常基础的东西。我们不能做出来一个完整的对话，因为它们使用了很多事件与条件，所以我们要了解它们。去阅读词汇参考或者继续阅读教程&lt;br /&gt;
==== 事件 ====&lt;br /&gt;
让我们从默认包中打开&#039;&#039;events.yml&#039;&#039;。添加新的一行：&#039;&#039;foo: message Hello world!&#039;&#039;这是一个事件的指令字符。BetonQuest使用它来确定事件的类型和它要做的事情。&#039;&#039;foo&#039;&#039;是事件的名字，&#039;&#039;message&#039;&#039;是一个类型，并且Hello world!告诉message需要显示什么。在这种情况下，如果你运行&#039;&#039;foo&#039;&#039;事件，它会显示Hello owrld!信息。保存这个文件，使用&#039;&#039;/q reload&#039;&#039;命令然后使用&#039;&#039;/q e foo&#039;&#039;运行事件（q是quest缩写，e是event缩写，&amp;lt;名称&amp;gt;是你的Minecraft名字，没有括号，foo是我们创建的事件名称）。它会显示一个Hello world!信息&lt;br /&gt;
创建另一个更复杂的事件。比如传送，它需要一个参数，&#039;&#039;location&#039;&#039;(位置)。在&#039;&#039;events.yml&#039;&#039;中添加一行：&#039;&#039;bar: location 100;200;300;world（&amp;lt;事件名称&amp;gt;:location:x;y;z;&amp;lt;世界名称&amp;gt;）&#039;&#039;。保存文件，重新加载插件，然后运行事件。&lt;br /&gt;
祝贺你，你刚刚创建了你的第一个事件。继续做一些其他事件类型的实验。你可以在事件列表中找到它们。你完成了开始学习的条件。&lt;br /&gt;
==== 条件 ====&lt;br /&gt;
打开conditions.yml并添加新的一行：&#039;&#039;foo: location 100;200;300;world;5&#039;&#039;很明显，命名方式与事件相同，但它们没有任何联系。条件名称和事件名称是无关的，因此你可以给它们相同的名称。现在让我们看看指令字符。你可以认为地点是一种条件，它会检查玩家是否在附近。注意，最后一个参数是一个整数，5。这是检查的范围。完成了吗？做完了就保存文件并重新加载插件吧。&lt;br /&gt;
现在，走到你在条件所定义的位置，使用&#039;&#039;/q c foo&#039;&#039;（C是&#039;&#039;condition&#039;&#039;的缩写）。它应该会显示“&#039;&#039;checking condition blah blah blah: true&#039;&#039;”。我们把焦点放在最后的那个词，&#039;&#039;true&#039;&#039;。这意味着你满足条件：你站的位置在5格之内。现在移动2格，再次使用命令，你仍应符合条件。现在尝试走4格，它应该会显示false。你现在已经在5格之外。明白了吗？太好了！&lt;br /&gt;
现在，我告诉了你最简单地使用这些条件。再次打开&#039;&#039;events.yml&#039;&#039;文件，并在foo字符末尾添加条件：&#039;&#039;foo argument&#039;&#039;。顺便说一下，最好重命名foo事件为baz，这样名字不会混淆。现在你应该有这样的一行：&#039;&#039;message Hello world!  conditions: foo&#039;&#039;baz事件只会在foo条件为true时运行。重载插件，走到5格之外，尝试运行&#039;&#039;baz&#039;&#039;事件。漂亮，什么都没有发生。这是因为你不符合&#039;&#039;foo&#039;&#039;条件。走进范围再次尝试运行事件。它应该显示hello world！消息。&lt;br /&gt;
为我们完成了这样一个条件庆祝吧(ahaaaa lolllllll 2333333)，那么问题来了，如果你想在玩家不在范围内时显示消息，该怎么做呢？（我不告诉你[doge]）别担心，你不用&#039;&#039;specifyinverted_location&#039;&#039;条件或其他的什么（那么问题来了，那串英文是什么意思呢？）。你可以简单地否定条件，否定使条件以完全相反的方式运作，在这种情况下，条件只会在玩家在范围外时成立。打开&#039;&#039;events.yml&#039;&#039;并在&#039;&#039;foo&#039;&#039;条件前加一个感叹号（半角 ! ），现在应该是这样：&#039;&#039;baz: message Hello world! conditions:!foo&#039;&#039;，这表示“当&#039;&#039;foo&#039;&#039;不成立时显示Hello world!”保存文件，重新加载插件，运行事件然后乱跑一会儿，看看它是如何工作的。（对了，那串英文是反转_位置的意思啦，非要翻译就是相位反转_位面!xddddd[特定反转_位置]）&lt;br /&gt;
=== 标签基础 ===&lt;br /&gt;
现在，你学会了怎么用事件与条件。之后，我会告诉你什么是标签(tag)。创建两个个新的事件&#039;&#039;add_beton_tag: tag add beton&#039;&#039;和&#039;&#039;del_beton_tag: tag del beton&#039;&#039;。取事件名称时，要注意与内容相关，否则很容易混淆，很不方便。假设你有100个事件，foo24，bar65等等。你也许会迅速的被闪瞎。所以， &#039;&#039;add_beton_tag&#039;&#039;  标签给玩家添加了&#039;&#039;beton&#039;&#039;标签，&#039;&#039;del_beton_tag&#039;&#039; 移除了它。保存文件，重载插件并且运行事件。什么都没发生还是成功了呢？使用&#039;&#039;/q t&#039;&#039;命令(t是tags的缩写。)它会显示标签列表。现在我们注意一下&#039;&#039;default.beton&#039;&#039;，当然，&#039;&#039;default&#039;&#039;是包名，并且&#039;&#039;beton&#039;&#039;是标签名，并且在&#039;&#039;add_beton_tag&#039;&#039;事件中定义了。现在运行&#039;&#039;del_beton_tag&#039;&#039;事件，猜猜会发生什么？&#039;&#039;default.beton&#039;&#039;标签消失了！综上可知，添加删除标签的方法。&lt;br /&gt;
没有什么是可以犯错的，标签是BetonQuest中最有用的东西之一。它们需要通过tag条件来使用。打开&#039;&#039;conditions.yml&#039;&#039;并且添加&#039;&#039;has_beton_tag: tag beton&#039;&#039;。你可以认为&#039;&#039;tag&#039;&#039;是一种条件（和&#039;&#039;tag&#039;&#039;事件相同，但它们不是一样的，一个是事件，另一个是条件）&#039;&#039;beton&#039;&#039;是标签的名字。你没有指定&#039;&#039;default.beton&#039;&#039;，但你可以这样做。保存，重载插件并且检查条件。它会显示true。&lt;br /&gt;
现在你应该了解了这个方便的系统。你可以当玩家第一次与NPC交流时&lt;br /&gt;
添加一个标签，并且当NPC获取到这个标签他会说一些不同的话，比如“欢迎回来”。&lt;br /&gt;
=== 创建目标 ===&lt;br /&gt;
是时候写一些目标了！打开&#039;&#039;objectives.yml&#039;&#039;并且添加一行&#039;&#039;kill_creepers: mobkill creeper 3 events:bar conditions:has_beton_tag&#039;&#039;。让我们分析一下它。&#039;&#039;kill_creepers&#039;&#039;是目标的条件， &#039;&#039;mobkill&#039;&#039;是任务类型。为了完成任务，玩家需要杀一些怪物，&#039;&#039;creeper&#039;&#039;是一种怪物，所以我们知道这些怪物必须是苦力怕。3是数量，它意味着玩家必须杀3个苦力怕。&#039;&#039;event:bar&#039;&#039;意味着任务完成后激发bar事件。&#039;&#039;conditions:has_beton_tag&#039;&#039;告诉我们只有玩家拥有beton标签时任务才可以完成。保存，重载并且使用&#039;&#039;/q o add kill_creepers&#039;&#039;命令（o是目标,add告诉插件添加一个目标）。&lt;br /&gt;
你现在可以用&#039;&#039;/q o&#039;&#039;命令来检查目标是否创建成功，它会显示所有活动的目标。它应该显示&#039;&#039;default.kill_creepers&#039;&#039;。之后，删除beton标签然后杀几个苦力怕。当你杀了三个之后你发现什么都没发生。这是因为has_beton_tag条件不工作了，所以目标不会计数。现在再添加标签并且杀苦力怕。当第三个死了之后你会传送到bar事件定义的位置。&lt;br /&gt;
恭喜你！你学会了怎么用目标！你需要多做实验，因为任务中经常会使用它。仔细看看创建对话，你就完成了基础！&lt;br /&gt;
=== 创建对话 ===&lt;br /&gt;
现在你理解了BetonQuest的事件、条件、目标，是时候创建一发对话了！在默认包里有一个&#039;&#039;conversations&#039;&#039;文件夹。里面只有一个文件，&#039;&#039;innkeeper.yml&#039;&#039;。这是&#039;&#039;innkeepe&#039;&#039;r的对话文件，就是那个让你砍树的人。参考它来完成你的第一个对话吧。创建一个新文件，命名为&#039;&#039;miner.yml&#039;&#039;。输入（为了学的更快，不要复制！）以下内容&lt;br /&gt;
&#039;&#039;&#039;quester: Miner&lt;br /&gt;
first: greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&#039;&#039;&#039;&lt;br /&gt;
这是最基本的对话， Mine在开始谈话时将会说 Hi there,traveler!，之后，这个对话就会结束，因为这里没有玩家可以选择的选项。&lt;br /&gt;
现在你需要给一个NPC添加对话选项。你需要在 main.yml 文件中添加。现在打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，记住了吗0w0？现在，添加另外一行在 innkeeper字段底下：Miner: miner.yml，保存这个文件然后重启你的服务器。这将会连接我们的名叫“Miner（矿工）”的NPC的最新对话。在你的服务器内创建一个新的NPC，给他一个带有“Miner（矿工）”名字的木牌并且点击他的头部。&lt;br /&gt;
现在给NPC添加对话选项，你需要在 main.yml 文件中添加。打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，添加另外一行在 innkeeper字段底下：Miner:miner.yml，保存这个文件然后重启你的服务器。这将会让我们的 “Miner” NPC说话。在你的服务器内创建一个新的NPC，给他命名为“Miner”并点击他。&lt;br /&gt;
猜猜会发生什么？对话就会显示一遍，从开始到结尾。这个名为“Miner（矿工）”的NPC就会说Hi there,traveler! （你好啊，旅行者！）就像你设置的那样。现在看到设置对话的文件然后编辑它（再一次编辑，手动输入，不要复制粘贴！），所以这个选项看起来是这样的：&lt;br /&gt;
这个名为“Miner”的NPC会说Hi there,traveler!，就像你设置的那样。现在再编辑设置对话的文件（再一次编辑，手动输入，不要复制粘贴！），&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
保存这个文件，重启服务器，再次开启对话，你就会看到有两个选项可以供你选择：Hello!（你好！）和I need to go,sorry.（对不起，我要走了。）。选择它们其中的任何一个就会结束这个对话，因为这些选项没有任何内容。现在创建一个新的选项，例如weather（天气）和Nice weather.（好天气。）然后使hello的选项指向它。当你保存并且重启之后， Miner就会说Nice weather.（好天气。）当你告诉他Hello!（你好！）时，我想你会知道他会说什么！&lt;br /&gt;
现在，不管什么时候与Miner对话，他都会说一样的东西。如果你第二次和他对话，他应该已经知道你的名字，我们可以使用标签(tag)来完成它。定义一个&#039;&#039;meet_mine&#039;&#039;r事件(event)和&#039;&#039;has_met_miner&#039;&#039;条件(condition)。当你与Miner对话时，他会检查has_met_miner条件。如果没有，他将会为你执行&#039;&#039;meet_miner&#039;&#039;事件，你下一次与他对话时，&#039;&#039;has_met_miner&#039;&#039;就会成立，他就可以知道你的名字了&lt;br /&gt;
现在，更改first_greeting这个选项。添加meet_miner事件并且在事件中添加has_met_miner条件（请使用!来否定这个条件，因为这个选项只会在玩家没有见过Miner的时候显示）。你需要用 &#039;&#039; 来包含条件（分词符号），因为YAML中字符串不能以感叹号开头，写成下面这样：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
如果玩家的has_met_miner不成立，first_greeting这个选项会被使用， meet_miner事件被激活，就会显示hello和bye选项。如果玩家已经见过Miner，has_met_miner条件不成立会发生什么？NPC将会尝试使用在first中定义的选项。让我们加入吧！&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
这个选项没有任何事件，如果first_greeting不成立，NPC就会显示这个选项。 “%player%”是一个变量，它将会显示你的名字。这里有比这个更好的选择，会在 参考 这个章节中说明。保存并且重启，然后开始对话。如果你正确的做了所有的事情，Miner就会把你当做“旅行者”欢迎你，第二次跟他讲话，他就会带着你的Minecraft昵称欢迎你~&lt;br /&gt;
这应该是你现在配置文件的样子，你可以检查一下配置错误：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting,regular_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye &lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
  weather:&lt;br /&gt;
    text: Nice weather.&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
    pointer: weather&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
现在你应该尝试制作自己的对话，你可以看着theinnkeeper.yml文件来帮助你创建对话。试着理解对话是怎样一步一步地工作的。你应该试着教程来完成创建Miner来完成这个任务：他找你要一些铁矿石并放在熔炉里冶炼，下一回他就会穿着盔甲！&lt;br /&gt;
你需要阅读 参考 章节，查看如何处理任务中的项目以及如何将条目添加到日记中。如果你想使用Citizens的NPC代替粘土，你需要阅读这一章。要了解更多关于事件、条件、目标、对话和变量，阅读下一章。&lt;br /&gt;
&lt;br /&gt;
== 条件、事件、目标 ==&lt;br /&gt;
Condition（条件）, event（事件）, objectives（目标）被定义为“指令字符”。它可以匹配包含condition/event/objective的文字。感谢这些字符知道它们需要做什么。如果你想使用这些指令字符，请看下面的参考。它描述了这些指令字符的作用和用法。所有的指令字符都在特定的文件中定义，例如所有条件都在condition.yml.中配置。定义语法：&#039;&#039;name: &#039;the instruction string containing the data&#039;&#039;&#039;。单引号大多情况可以省略（建议不省略）。以下，我会更详细地描述使用方法&lt;br /&gt;
=== 条件 ===&lt;br /&gt;
条件是创建高级任务必不可少的工具。它们可以让你控制玩家在对话中可以选择哪些选项，NPC如何回应这些选项或者任务目标完成。所有可能的条件参考如下。&lt;br /&gt;
让我们看看玩家有没有一个&#039;&#039;beton_start&#039;&#039;标签(tags(标签)是一个可以在事件中添加给玩家的，之后我们就可以检查♂它了)你需要写一个像: &#039;&#039;tag beton_start&#039;&#039;这样指令字符。这是定义我们需要寻找什么。第一个单词是条件类型。它说明了这个条件需要检查一个标签。第二个是&#039;&#039;beton_test&#039;&#039;。它定义了哪个标签是我们想要寻找的。注意，你不能在一个条件中定义多个标签。为了做到它你需要多个条件。现在如果你在对话选项中使用了条件，它将会在玩家拥有这个标签时候出现。但是如果你想在玩家没有这个标签时候显示呢？为了达到这个目的你要在条件前面加一个&#039;&#039;!&#039;&#039;来达到目的。注意它是在对话设置里添加而不是条件配置。&lt;br /&gt;
现在你拥有了一个条件&lt;br /&gt;
使用它来检查玩家是否正在做这个任务并且阻止他再做一次。当然，这个标签将会在任务开始之后添加，通过事件&lt;br /&gt;
=== 事件 ===&lt;br /&gt;
在某些时候你想让一些事情发生。刷新日志，设置标签，给予奖励，这些需要事件来完成。你需要像条件一样通过指令字符和指定名字定义它。你可以在事件参考中找到所有的给事件用的指令字符。在指令字符后面你可以添加条件：使用逗号分隔条件一类的东西，例如：&#039;&#039;angry,!quest_started&#039;&#039;。这将会让事件在条件达成时触发。&lt;br /&gt;
=== 目标 ===&lt;br /&gt;
当你在创建任务的时候，任务目标是最主要的。你可以用一个指令字符“objective”来创建一个任务目标。这些可以在objectives.yml文件中定义，在说明文字的后面，你可以为目标添加条件或者事件。条件即限制任务的完成条件（比如需要城镇的入口防卫，在给定的任务地点击杀僵尸），事件会在任务完成时触发（比如给予奖励，或者设置一个标签，当从NPC上获得奖励时标签会激活），你可以在说明位置后面按照这样的格式去定义：“&#039;&#039;conditions:条件1,条件2 events:事件1,事件2&#039;&#039;”，用逗号去分割，而不是用空格。&lt;br /&gt;
&lt;br /&gt;
目标任务在启动的时候载入，但是除非玩家去激活它们，否则不会消耗资源。这意味着，如果你定义了100个目标任务，有20个玩家一起执行其中一个，另外20个玩家执行另一个，其他的任务没有人去执行，那么仅仅有2个目标任务是激活的，不是100个，也不是40个，这样会更加高效。&lt;br /&gt;
&lt;br /&gt;
== 支持插件 ==&lt;br /&gt;
BetonQuest可以支持其他的插件，使用它们的功能。目前有三个插件: Citizens, Vault and MythicMobs.&lt;br /&gt;
=== Citizens ===&lt;br /&gt;
如果你有这个插件就可以创建NPC 来对话。我非常建议安装这个插件，NPC可以让对话更真实。Citizens也可以让你的NPC击杀的目标。&lt;br /&gt;
==== NPC击杀目标 &#039;&#039;npckill&#039;&#039; ====&lt;br /&gt;
NPC击杀目标需要玩家击杀指定ID的NPC。你也可以设置杀多少次NPC。目标名称后面必须是NPC的ID。你可以用&#039;&#039;amount:&#039;&#039; 设置数字。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npckill 16 amount:3 events:reward label:citizens&#039;&#039;&lt;br /&gt;
==== NPC互动目标 ====&lt;br /&gt;
玩家必须与指定ID的NPC交互。它也可以关闭动作，这样对话就不会触发了。第一个参数是数字(NPC的ID)第二个是设置项 &#039;&#039;cancel&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npcinteract 3 cancel conditions:sneak events:steal label:stealing&#039;&#039;&lt;br /&gt;
=== Vault ===&lt;br /&gt;
安装Vault你可以有权限事件和金钱条件/事件。&lt;br /&gt;
==== 权限事件 &#039;&#039;permission&#039;&#039; ====&lt;br /&gt;
删除或者增加一个组的权限。第一个参数是&#039;&#039;add&#039;&#039;或者&#039;&#039;remove&#039;&#039;，这很好理解。第二个是 &#039;&#039;perm&#039;&#039;或者&#039;&#039;group&#039;&#039;，这个也不难弄清楚。下一个就是你要添加或者删除的字符串。最后你需要指定一个世界。如果世界为空的话，这个修改就会变成全局的。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;permission remove group bandit world_nether&#039;&#039;&lt;br /&gt;
==== 金钱事件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
从玩家的帐户存取款，只有一个参数，就是数量，它可以是负数。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money -100&#039;&#039;&lt;br /&gt;
==== 金钱条件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
检查玩家的金钱是否足够，也只有一个参数，即需要达到的数值，不能为负&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money 500&#039;&#039;&lt;br /&gt;
=== MythicMobs ===&lt;br /&gt;
你可以设置MythicMobs怪物击杀目标和MythicMobs生成怪物的事件。&lt;br /&gt;
==== MythicMobs怪物击杀目标 &#039;&#039;mmobkill&#039;&#039; ====&lt;br /&gt;
完成这个目标需要击杀指定数量的指定怪物。第一个参数必须是怪物的内部名称(在MythicMobs的配置中有)。你可以添加&#039;&#039;amount:&#039;&#039;来指定击杀的数量&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mmobkill SkeletalKnight amount:2 events:reward label:mythicmobs&#039;&#039;&lt;br /&gt;
==== MythicMobs怪物生存事件 &#039;&#039;mspawnmob&#039;&#039; ====&lt;br /&gt;
在指定的地方生成指定数量的怪。第一个参数应该是位置，格式是&#039;&#039;100;200;300;world&#039;&#039;。第二个是MythicMobs的内部名字(在MythicMobs的配置中有)后面跟一个冒号和等级。第三个是数量(必填)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mspawnmob 100;200;300;world SkeletalKnight:1 5&#039;&#039;&lt;br /&gt;
=== Skript ===&lt;br /&gt;
BetonQuest也可以与Skript联动。为了避免混淆，我会使用插件的名称(Skript的一些事件BetonQuestnt也有。Skript可以让你通过脚本使用BetonQuest的事件，并且也可以用BetonQuest执行脚本。&lt;br /&gt;
==== Skript事件通过 BetonQuest &#039;&#039;skript&#039;&#039; 事件触发 ====&lt;br /&gt;
这里描述了Skript事件和BetonQuest事件。&lt;br /&gt;
#&#039;&#039;&#039;Skript 事件&#039;&#039;&#039; - &#039;&#039;on [betonquest] event &amp;quot;id&amp;quot;&#039;&#039; – 这一行可以触发 &#039;&#039;betonquest&#039;&#039; 中设定好的代码，并且 &#039;&#039;id&#039;&#039; 只能是字符串，且必须与你指定BetonQuest的事件相同。&lt;br /&gt;
#&#039;&#039;&#039;BetonQuest事件&#039;&#039;&#039;- &#039;&#039;skript&#039;&#039; – 这个事件会触发Skript的事件。指令只有一个参数，是事件的ID。必须和Skript中定义的事件相同。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; 脚本: &#039;&#039;on betonquest event &amp;quot;concrete&amp;quot; &#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;fire_concrete_script: skript concrete&#039;&#039;&lt;br /&gt;
==== Skript条件 ====&lt;br /&gt;
你可以用 &#039;&#039;player meets [betonquest] condition &amp;quot;id&amp;quot;&#039;&#039; 语句检查BetonQuest 的条件。Betonquest是配置项，并且 &#039;&#039;id&#039;&#039; 是条件名称，在conditions.yml中定义。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;player meets condition &amp;quot;has_ore&amp;quot;&#039;&#039;&lt;br /&gt;
conditions.yml: &#039;&#039;has_ore: item iron_ore:5&#039;&#039;&lt;br /&gt;
==== Skript事件 ====&lt;br /&gt;
你可以用脚本触发BetonQuest事件。Skript的语句是&#039;&#039;fire [betonquest] event &amp;quot;id&amp;quot; for player&#039;&#039;。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;fire event &amp;quot;give_emeralds&amp;quot; for player&#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;give_emeralds: give emerald:5&#039;&#039;&lt;br /&gt;
=== WorldGuard ===&lt;br /&gt;
==== WorldGuard区域目标 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
完成这个目标需要进入指定区域，唯一的参数是区域名称。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton events:kill label:trap&#039;&#039;&lt;br /&gt;
==== WorldGuard区域条件 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
条件会在玩家处于指定区域时成立，唯一的参数是区域名&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton&#039;&#039;&lt;br /&gt;
[[分类:优秀条目申请]] [[分类:角色]] [[分类：娱乐]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3513</id>
		<title>BetonQuest</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3513"/>
		<updated>2016-08-23T09:03:12Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=BetonQuest&lt;br /&gt;
|版本=v1.7.3&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.7.2-1.8.3&lt;br /&gt;
|網址=http://dev.bukkit.org/bukkit-plugins/betonquest/&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;center&amp;gt;[[文件:BetonQuestLOGO.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{待完善}}&lt;br /&gt;
[[Category:娱乐]] [[Category:角色]]&lt;br /&gt;
BetonQuest是一个好用的任务插件。它不像传统的插件将任务与对话绑定，而是网状多选结构(即类似Gal的剧情系统)。&amp;lt;br&amp;gt;&lt;br /&gt;
你的任务不一定要像普通单线任务&amp;quot;击杀, 带来物品, 获得奖励&amp;quot;一样，你可以创建多条任务线，通过与NPC的对话，玩家可以进入不同的任务线，获得不同的任务奖励。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
*你的冒险不止一条路可以走&lt;br /&gt;
*强大的事件系统:事件可以发生在任何地方&lt;br /&gt;
*强大的条件系统:你可以限制任何事情的(不)发生&lt;br /&gt;
*组队系统允许创建团队任务&lt;br /&gt;
*与NPC的对话的多样性&lt;br /&gt;
*任务日志记录在一本书中&lt;br /&gt;
*独立的任务物品背包&lt;br /&gt;
*可以对物品操作，甚至是书中的文本&lt;br /&gt;
*可以给玩家增加标签(tag)来储存信息&lt;br /&gt;
*完善的荣誉系统&lt;br /&gt;
*位置监听:当玩家进入指定区域会触发事件&lt;br /&gt;
*日常任务与重复奖励&lt;br /&gt;
*任务可以分配到不同的背包(方便管理)&lt;br /&gt;
*支持Citizens2&lt;br /&gt;
*MythicMobs, Skript, WorldGuard和Vault的混合(意思就是全部支持)&lt;br /&gt;
*多语言支持并且非常容易翻译&lt;br /&gt;
*玩家可以选择自己的语种&lt;br /&gt;
*可以使用API创建你自己的事件、条件、目标(Developer)&lt;br /&gt;
*支持SQLite&amp;amp;MySQL数据库&lt;br /&gt;
*可备份的配置及数据&lt;br /&gt;
*自动升级&lt;br /&gt;
== 概览 ==&lt;br /&gt;
这插件到底怎样运作？我将以一个简单的伐木任务为例来描述。请注意“事件”、“条件”和“目标”之间的区别。&amp;lt;br&amp;gt;&lt;br /&gt;
首先，你需要创建一个和NPC的对话。玩家可在对话内的多个选项中进行选择，NPC会根据选项做出不同的反应（例如NPC会在玩家要求工作时告诉他去砍些树） 。同时，在某些地方会有“事件”被触发，增加一个获得木头的“目标”。它将会把该玩家标记为开始任务的人。从现在开始，NPC会在对话中使用不同的选项，例如他会让玩家快点干活。这些选项将会基于“条件”被选择。&amp;lt;br&amp;gt;&lt;br /&gt;
当玩家完成“目标”时（例如通过摧毁木头），“事件”将会触发，将这个玩家标为采集木头的人。当玩家返回NPC处并与其对话时，NPC将以“条件”来核对玩家是否真的拥有那块木头。如果是的话，他将触发给予奖励的“事件”。&amp;lt;br&amp;gt;&lt;br /&gt;
我们没有创建任何“任务”对象，只是创建了一个能触发“事件”并与“条件”进行核对的对话。“目标”当然也不是“任务”，它只能在玩家得到木头时标记该玩家，不能单独存在。另一方面，该对话可以在之后开始其他任务（例如挖一些矿石），所以“目标”也不是“任务” &amp;lt;br&amp;gt;&lt;br /&gt;
不要为举的例子感到失望，这些只是简化后的过程，所以我可以更简单的解释这个系统，其实用BetonQuest可以做到更多&amp;lt;br&amp;gt;&lt;br /&gt;
这些对话可以像在Baldur&#039;s Gate或是Skyrim一样有多种路线，任务可以有多种方式来结束，也可以有很多不同的影响玩家声誉的结局，就靠你来决定了。&amp;lt;br&amp;gt;&lt;br /&gt;
这个插件也包含了一个在书中的日志。你玩过Morrowind吗? 它们差不多一样，我们只是保留了你查看日志的顺序，所以你不必翻好几百页。现在完成任务并不需要显示像“你收集了所有的矿石，现在回到矿工那儿！”这样的信息。反之，它可以更新玩家的日志，加入像这样的新的记录：“我收集了所有的矿石，我需要回到矿工那儿去拿奖励！”。这样会显得真实得多。&lt;br /&gt;
== 安装 ==&lt;br /&gt;
#首先您可以安装Citizens插件,你可以在[http://dev.bukkit.org/bukkit-plugins/citizens/ Bukkit]找到它.&lt;br /&gt;
#不过这不是前置插件,您也可以用方块来做NPC不过那样会减少真实感&lt;br /&gt;
#下载BetonQuest插件,将.jar放在您的插件文件夹中并启动服务器.BetonQuest将会生成配置文件.&lt;br /&gt;
#如果您想使用MySQL进行储存数据,打开config.yml，填写您的数据库信息.如果不想,留空就好了,插件会使用SQLite来代替.&lt;br /&gt;
#如果您不想使用自动更新,在禁用它之前,请重新启动服务器或重新加载插件.&lt;br /&gt;
#当您认为完成之后,您可以重新加载插件(/q reload).现在让我们来学习BetonQuests插件的基础知识吧.&lt;br /&gt;
== 配置 ==&lt;br /&gt;
&#039;&#039;&#039;#请勿修改Version选项，他可能会导致你的配置文件被覆盖。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
在config.yml中有几个选项，我将尽可能的叙述那些在使用这个插件前，你可能需要修改的选项。其余的选项都是在本文档中相应的小节叙述的。&lt;br /&gt;
#&#039;&#039;&#039;MySQL&#039;&#039;&#039;：如果你使用MySQL当作数据库，请填写其内容，留空将使用SQLite作为数据库。&lt;br /&gt;
#&#039;&#039;&#039;update&#039;&#039;&#039;：这部分控制着更新系统，&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;enable&#039;&#039;&#039;选项默认设置为true，他控制着整个更新系统是否工作。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;download_bugfixes&#039;&#039;&#039;控制着BetonQuest如果自动更新，是否下载最新的已经修复BUG的版本。 (比如1.7.3 -&amp;gt; 1.7.4 或 1.8.1 -&amp;gt; 1.8.3)，这些版本并不改变插件工作的方式，只是修复了BUG的版本，推荐将这项设置为True。&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;这个选项负责在启动的时候检测是否有新的版本，若有就通知(比如1.7.6 - &amp;gt; 1.8)，因为这些更新可能引入新特性或改变工作方式，所以他们不会自动下载。当你准备好更新的时候，你可以使用/q update指令。&lt;br /&gt;
#如果你使用一个开发版本，这里将会有三个选项：&#039;&#039;&#039;notify_dev_build&#039;&#039;&#039;，它和&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;是一样的，但是他会检测是否有开发版本可以替换。在这里没有特定的版本检查，如果发现dev的数量较高，这个就会出现。你下载开发版本应当承担你的责任（原文:You download development builds on your own responsibility.)&lt;br /&gt;
#&#039;&#039;&#039;Language&#039;&#039;&#039;设置插件的语言： 目前有7种语言：英语(en),德国(de),法国(fr),西班牙(es),中国(cn)、荷兰(nl)和波兰(pl)。&lt;br /&gt;
&lt;br /&gt;
== 指令 ==&lt;br /&gt;
 /j – 给予一本日志&lt;br /&gt;
 /backpack – 打开背包&lt;br /&gt;
 /q – 列出所有可用的管理员指令&lt;br /&gt;
 /q reload – 重载插件&lt;br /&gt;
 /q objectives &amp;lt;playerName&amp;gt; [list/add/del] [instruction] –列出/修改玩家目标&lt;br /&gt;
 /q tags &amp;lt;playerName&amp;gt; [list/add/del] [tag] – 列出/修改玩家的标签&lt;br /&gt;
 /q points &amp;lt;playerName&amp;gt; [list/add/del] [category] [amount] – 列出/修改玩家在所有阵营的点数&lt;br /&gt;
 /q journal &amp;lt;playerName&amp;gt; [list/add/del] [package.pointer] [date] - lists&lt;br /&gt;
 /q event &amp;lt;playerName&amp;gt; &amp;lt;package.eventID&amp;gt; - 为玩家激活一个事件&lt;br /&gt;
 /q condition &amp;lt;playerName&amp;gt; &amp;lt;package.conditionID&amp;gt; - 显示玩家是否经历过指定的环境&lt;br /&gt;
 /q item &amp;lt;package.itemID&amp;gt; - 创建一个基于你手中物品的物品&lt;br /&gt;
 /q config &amp;lt;set/add/read&amp;gt; &amp;lt;path&amp;gt; [value] – 操作配置项&lt;br /&gt;
 /q purge &amp;lt;playerName&amp;gt; - 删除玩家数据&lt;br /&gt;
 /q backup – 创建配置文件和数据库的备份&lt;br /&gt;
 /q create &amp;lt;package&amp;gt;: 创建一个新的包并包含默认任务&lt;br /&gt;
 /q vector &amp;lt;packname.variable&amp;gt; &amp;lt;newvariable&amp;gt;: 计算第一个位置变量到你的位置并且储存到第二个参数中&lt;br /&gt;
 /questlang &amp;lt;lang&amp;gt; - 改变玩家的语言(如果由控制台使用就可以改变全局语言)&lt;br /&gt;
=== 缩写 ===&lt;br /&gt;
*&#039;&#039;&#039;/j:&#039;&#039;&#039; bj, journal, bjournal, betonjournal, betonquestjournal&lt;br /&gt;
*&#039;&#039;&#039;/backpack:&#039;&#039;&#039;b, bb, bbackpack, betonbackpack, betonquestbackpack&lt;br /&gt;
*&#039;&#039;&#039;/q:&#039;&#039;&#039; bq, bquest, bquests, betonquest, betonquests, quest, quests&lt;br /&gt;
**&#039;&#039;&#039;objective:&#039;&#039;&#039; o, objectives&lt;br /&gt;
**&#039;&#039;&#039;tag:&#039;&#039;&#039; t, tags&lt;br /&gt;
**&#039;&#039;&#039;point:&#039;&#039;&#039; p, points&lt;br /&gt;
**&#039;&#039;&#039;event:&#039;&#039;&#039; e, events&lt;br /&gt;
**&#039;&#039;&#039;condition:&#039;&#039;&#039; c, conditions&lt;br /&gt;
**&#039;&#039;&#039;journal:&#039;&#039;&#039; j, journals&lt;br /&gt;
**&#039;&#039;&#039;item:&#039;&#039;&#039; i, items&lt;br /&gt;
**&#039;&#039;&#039;create:&#039;&#039;&#039; package&lt;br /&gt;
*&#039;&#039;&#039;/questlang:&#039;&#039;&#039; ql&lt;br /&gt;
&lt;br /&gt;
=== 详情 ===&lt;br /&gt;
*/q reload重载所有配置，但是不是所有东西都会被保存。当数据库保存时，不可以修改玩家数据。数据库也是一样，你需要重启/重载服务器才可以保存数据库&amp;lt;br&amp;gt;&lt;br /&gt;
*标签相关的命令可以让你快速的编辑它 ，&#039;/q tags Beton&#039; 将会列出Beton这个玩家的标签。&#039;/q tags Beton add test&#039;将会添加&amp;quot;test&amp;quot;标签给玩家，并且 &#039;/q tags Beton del test&#039; 会移除它&amp;lt;br&amp;gt;&lt;br /&gt;
*点数相关的命令可以操纵点数。向一个类别添加点数应该用&#039;/q points Beton add reputation 20&#039; (给&amp;quot;reputation&amp;quot;添加20点)。你也可以使用负数来减去。 删除全部点数使用&#039;/q points Beton del reputation&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
*日志相关命令与上面两项相同。添加或删除使用 /q journal Beton add default.wood_started (or del)，并且你也可以在结尾加上时间来指定时间，格式为:23.04.2014_16:52。注意要用_来代替空格！名字前必须带上包名，因为命令不属于任何包&amp;lt;br&amp;gt;&lt;br /&gt;
*目标相关命令可以显示玩家的目标。它也可以直接对不表进行操作。记住要在事件/条件前加上包名！如果你想添加一个在events.yml中有定义的目标，只需要使用事件的相关命令&amp;lt;br&amp;gt;&lt;br /&gt;
*使在线玩家激活事件可以使用&#039;/q event Beton default.give_emeralds&#039;这将会为玩家Beton从”default”包激活 &amp;quot;give_emeralds&amp;quot;。也有条件相关的指令来操作，例如&#039;/q condition Beton default.has_food&#039;。事件与条件必须在它们的文件中定义，这个命令不支持原版指令。你可以不写包名，之后插件会自动读取default_package它可以在config.yml设置&amp;lt;br&amp;gt;&lt;br /&gt;
*如果需要创建一个&amp;quot;Nettlebane&amp;quot;任务物品,只需要把它拿在手里之后输入&#039;/q item default.nettlebane&#039;. 你手中的物品就会复制到items.yml 并且以你指定的名称保存(这里是&amp;quot;nettlebane&amp;quot;). 你也可以不输入包名.&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以在. set 项中自定义命令的参数。.add 可以让你快捷的添加字符到存在的值上. (需要注意的地方: 插件不会识别空格，你可以用“_”这个字符来代替空格。例如objective location，是一段存在的字符串，并且你想给它附加 100;200;300;world;10这个值，你的命令应该是/q config add default.events.loc_obj _100;200;300;world;10). read 可以显示配置的值。&amp;lt;br&amp;gt;&lt;br /&gt;
这里的路径就是值的地址。你可以用“.”来表示分支，例如config.language,可以设置语言键的值，同理&amp;quot;bye&amp;quot;这个玩家的配置项路径应该是&lt;br /&gt;
default.conversations.innkeeper.player_options.bye.text&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以使用&#039;/q purge Beton&#039;清除指定玩家的数据. 目前无法使用命令清除整个数据库，但你可以修改数据库的前缀&amp;lt;br&amp;gt;&lt;br /&gt;
如果你想要备份你的设置以及数据，需要你的服务器是空的(需要获取所有数据库的数据&amp;gt;所有玩家离线)之后运行&#039;/q backup&#039;这条命令，你将会获得一个包含所有数据的zip压缩文件。&amp;lt;br&amp;gt;&lt;br /&gt;
*使用&#039;/q create beton&#039; 你可以创建一个名为&#039;beton&#039;的任务，它将会与默认任务相同。&amp;lt;br&amp;gt;&lt;br /&gt;
*/q vector 命令可以让你创建一个由第一个位置变量到你的位置的矢量。结果会储存到&amp;quot;vectors.{第二参数}&amp;quot;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
*betonquest.admin – 允许使用管理员命令(/q ...)且可以创建NPC&lt;br /&gt;
*betonquest.journal – 允许使用/ J指令（默认为玩家）&lt;br /&gt;
*betonquest.backpack –允许使用/backpack 指令（默认为玩家）&lt;br /&gt;
*betonquest.conversation -允许与NPC对话（默认为玩家）betonquest.language -允许改变的语言（默认为玩家）&lt;br /&gt;
== 使用教程 ==&lt;br /&gt;
安装插件之后你首先想到的应该是怎么使用它。如果你想使用GUI，将&#039;&#039;default_conversation_IO&#039;&#039;修改为&#039;&#039;chest&#039;&#039;，之后保存文件并且在服务器上使用&#039;&#039;/q reload&#039;&#039;命令。&lt;br /&gt;
登录并在随意位置放一个彩色粘土。在它上面放一个头（例如僵尸的头）并且在粘土块的一侧放一个牌子。填写如下内容&lt;br /&gt;
&#039;&#039;&#039;[NPC]&lt;br /&gt;
Innkeeper&#039;&#039;&#039;&lt;br /&gt;
右键这个NPC，将会出现对话。如果没有，检查你是否成功地制作了NPC。Innkeeper会让你砍一些树，你可以看到日志有了新的记录，不要放置原木然后摧毁， BetonQuest会检测方块的数量，你只能去砍树。如果你是创造模式，给自己16个原木。之后，你可以返回NPC那里得到奖励&lt;br /&gt;
=== 使用事件和条件 ===&lt;br /&gt;
现在你会了非常基础的东西。我们不能做出来一个完整的对话，因为它们使用了很多事件与条件，所以我们要了解它们。去阅读词汇参考或者继续阅读教程&lt;br /&gt;
==== 事件 ====&lt;br /&gt;
让我们从默认包中打开&#039;&#039;events.yml&#039;&#039;。添加新的一行：&#039;&#039;foo: message Hello world!&#039;&#039;这是一个事件的指令字符。BetonQuest使用它来确定事件的类型和它要做的事情。&#039;&#039;foo&#039;&#039;是事件的名字，&#039;&#039;message&#039;&#039;是一个类型，并且Hello world!告诉message需要显示什么。在这种情况下，如果你运行&#039;&#039;foo&#039;&#039;事件，它会显示Hello owrld!信息。保存这个文件，使用&#039;&#039;/q reload&#039;&#039;命令然后使用&#039;&#039;/q e foo&#039;&#039;运行事件（q是quest缩写，e是event缩写，&amp;lt;名称&amp;gt;是你的Minecraft名字，没有括号，foo是我们创建的事件名称）。它会显示一个Hello world!信息&lt;br /&gt;
创建另一个更复杂的事件。比如传送，它需要一个参数，&#039;&#039;location&#039;&#039;(位置)。在&#039;&#039;events.yml&#039;&#039;中添加一行：&#039;&#039;bar: location 100;200;300;world（&amp;lt;事件名称&amp;gt;:location:x;y;z;&amp;lt;世界名称&amp;gt;）&#039;&#039;。保存文件，重新加载插件，然后运行事件。&lt;br /&gt;
祝贺你，你刚刚创建了你的第一个事件。继续做一些其他事件类型的实验。你可以在事件列表中找到它们。你完成了开始学习的条件。&lt;br /&gt;
==== 条件 ====&lt;br /&gt;
打开conditions.yml并添加新的一行：&#039;&#039;foo: location 100;200;300;world;5&#039;&#039;很明显，命名方式与事件相同，但它们没有任何联系。条件名称和事件名称是无关的，因此你可以给它们相同的名称。现在让我们看看指令字符。你可以认为地点是一种条件，它会检查玩家是否在附近。注意，最后一个参数是一个整数，5。这是检查的范围。完成了吗？做完了就保存文件并重新加载插件吧。&lt;br /&gt;
现在，走到你在条件所定义的位置，使用&#039;&#039;/q c foo&#039;&#039;（C是&#039;&#039;condition&#039;&#039;的缩写）。它应该会显示“&#039;&#039;checking condition blah blah blah: true&#039;&#039;”。我们把焦点放在最后的那个词，&#039;&#039;true&#039;&#039;。这意味着你满足条件：你站的位置在5格之内。现在移动2格，再次使用命令，你仍应符合条件。现在尝试走4格，它应该会显示false。你现在已经在5格之外。明白了吗？太好了！&lt;br /&gt;
现在，我告诉了你最简单地使用这些条件。再次打开&#039;&#039;events.yml&#039;&#039;文件，并在foo字符末尾添加条件：&#039;&#039;foo argument&#039;&#039;。顺便说一下，最好重命名foo事件为baz，这样名字不会混淆。现在你应该有这样的一行：&#039;&#039;message Hello world!  conditions: foo&#039;&#039;baz事件只会在foo条件为true时运行。重载插件，走到5格之外，尝试运行&#039;&#039;baz&#039;&#039;事件。漂亮，什么都没有发生。这是因为你不符合&#039;&#039;foo&#039;&#039;条件。走进范围再次尝试运行事件。它应该显示hello world！消息。&lt;br /&gt;
为我们完成了这样一个条件庆祝吧(ahaaaa lolllllll 2333333)，那么问题来了，如果你想在玩家不在范围内时显示消息，该怎么做呢？（我不告诉你[doge]）别担心，你不用&#039;&#039;specifyinverted_location&#039;&#039;条件或其他的什么（那么问题来了，那串英文是什么意思呢？）。你可以简单地否定条件，否定使条件以完全相反的方式运作，在这种情况下，条件只会在玩家在范围外时成立。打开&#039;&#039;events.yml&#039;&#039;并在&#039;&#039;foo&#039;&#039;条件前加一个感叹号（半角 ! ），现在应该是这样：&#039;&#039;baz: message Hello world! conditions:!foo&#039;&#039;，这表示“当&#039;&#039;foo&#039;&#039;不成立时显示Hello world!”保存文件，重新加载插件，运行事件然后乱跑一会儿，看看它是如何工作的。（对了，那串英文是反转_位置的意思啦，非要翻译就是相位反转_位面!xddddd[特定反转_位置]）&lt;br /&gt;
=== 标签基础 ===&lt;br /&gt;
现在，你学会了怎么用事件与条件。之后，我会告诉你什么是标签(tag)。创建两个个新的事件&#039;&#039;add_beton_tag: tag add beton&#039;&#039;和&#039;&#039;del_beton_tag: tag del beton&#039;&#039;。取事件名称时，要注意与内容相关，否则很容易混淆，很不方便。假设你有100个事件，foo24，bar65等等。你也许会迅速的被闪瞎。所以， &#039;&#039;add_beton_tag&#039;&#039;  标签给玩家添加了&#039;&#039;beton&#039;&#039;标签，&#039;&#039;del_beton_tag&#039;&#039; 移除了它。保存文件，重载插件并且运行事件。什么都没发生还是成功了呢？使用&#039;&#039;/q t&#039;&#039;命令(t是tags的缩写。)它会显示标签列表。现在我们注意一下&#039;&#039;default.beton&#039;&#039;，当然，&#039;&#039;default&#039;&#039;是包名，并且&#039;&#039;beton&#039;&#039;是标签名，并且在&#039;&#039;add_beton_tag&#039;&#039;事件中定义了。现在运行&#039;&#039;del_beton_tag&#039;&#039;事件，猜猜会发生什么？&#039;&#039;default.beton&#039;&#039;标签消失了！综上可知，添加删除标签的方法。&lt;br /&gt;
没有什么是可以犯错的，标签是BetonQuest中最有用的东西之一。它们需要通过tag条件来使用。打开&#039;&#039;conditions.yml&#039;&#039;并且添加&#039;&#039;has_beton_tag: tag beton&#039;&#039;。你可以认为&#039;&#039;tag&#039;&#039;是一种条件（和&#039;&#039;tag&#039;&#039;事件相同，但它们不是一样的，一个是事件，另一个是条件）&#039;&#039;beton&#039;&#039;是标签的名字。你没有指定&#039;&#039;default.beton&#039;&#039;，但你可以这样做。保存，重载插件并且检查条件。它会显示true。&lt;br /&gt;
现在你应该了解了这个方便的系统。你可以当玩家第一次与NPC交流时&lt;br /&gt;
添加一个标签，并且当NPC获取到这个标签他会说一些不同的话，比如“欢迎回来”。&lt;br /&gt;
=== 创建目标 ===&lt;br /&gt;
是时候写一些目标了！打开&#039;&#039;objectives.yml&#039;&#039;并且添加一行&#039;&#039;kill_creepers: mobkill creeper 3 events:bar conditions:has_beton_tag&#039;&#039;。让我们分析一下它。&#039;&#039;kill_creepers&#039;&#039;是目标的条件， &#039;&#039;mobkill&#039;&#039;是任务类型。为了完成任务，玩家需要杀一些怪物，&#039;&#039;creeper&#039;&#039;是一种怪物，所以我们知道这些怪物必须是苦力怕。3是数量，它意味着玩家必须杀3个苦力怕。&#039;&#039;event:bar&#039;&#039;意味着任务完成后激发bar事件。&#039;&#039;conditions:has_beton_tag&#039;&#039;告诉我们只有玩家拥有beton标签时任务才可以完成。保存，重载并且使用&#039;&#039;/q o add kill_creepers&#039;&#039;命令（o是目标,add告诉插件添加一个目标）。&lt;br /&gt;
你现在可以用&#039;&#039;/q o&#039;&#039;命令来检查目标是否创建成功，它会显示所有活动的目标。它应该显示&#039;&#039;default.kill_creepers&#039;&#039;。之后，删除beton标签然后杀几个苦力怕。当你杀了三个之后你发现什么都没发生。这是因为has_beton_tag条件不工作了，所以目标不会计数。现在再添加标签并且杀苦力怕。当第三个死了之后你会传送到bar事件定义的位置。&lt;br /&gt;
恭喜你！你学会了怎么用目标！你需要多做实验，因为任务中经常会使用它。仔细看看创建对话，你就完成了基础！&lt;br /&gt;
=== 创建对话 ===&lt;br /&gt;
现在你理解了BetonQuest的事件、条件、目标，是时候创建一发对话了！在默认包里有一个&#039;&#039;conversations&#039;&#039;文件夹。里面只有一个文件，&#039;&#039;innkeeper.yml&#039;&#039;。这是&#039;&#039;innkeepe&#039;&#039;r的对话文件，就是那个让你砍树的人。参考它来完成你的第一个对话吧。创建一个新文件，命名为&#039;&#039;miner.yml&#039;&#039;。输入（为了学的更快，不要复制！）以下内容&lt;br /&gt;
&#039;&#039;&#039;quester: Miner&lt;br /&gt;
first: greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&#039;&#039;&#039;&lt;br /&gt;
这是最基本的对话， Mine在开始谈话时将会说 Hi there,traveler!，之后，这个对话就会结束，因为这里没有玩家可以选择的选项。&lt;br /&gt;
现在你需要给一个NPC添加对话选项。你需要在 main.yml 文件中添加。现在打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，记住了吗0w0？现在，添加另外一行在 innkeeper字段底下：Miner: miner.yml，保存这个文件然后重启你的服务器。这将会连接我们的名叫“Miner（矿工）”的NPC的最新对话。在你的服务器内创建一个新的NPC，给他一个带有“Miner（矿工）”名字的木牌并且点击他的头部。&lt;br /&gt;
现在给NPC添加对话选项，你需要在 main.yml 文件中添加。打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，添加另外一行在 innkeeper字段底下：Miner:miner.yml，保存这个文件然后重启你的服务器。这将会让我们的 “Miner” NPC说话。在你的服务器内创建一个新的NPC，给他命名为“Miner”并点击他。&lt;br /&gt;
猜猜会发生什么？对话就会显示一遍，从开始到结尾。这个名为“Miner（矿工）”的NPC就会说Hi there,traveler! （你好啊，旅行者！）就像你设置的那样。现在看到设置对话的文件然后编辑它（再一次编辑，手动输入，不要复制粘贴！），所以这个选项看起来是这样的：&lt;br /&gt;
这个名为“Miner”的NPC会说Hi there,traveler!，就像你设置的那样。现在再编辑设置对话的文件（再一次编辑，手动输入，不要复制粘贴！），&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
保存这个文件，重启服务器，再次开启对话，你就会看到有两个选项可以供你选择：Hello!（你好！）和I need to go,sorry.（对不起，我要走了。）。选择它们其中的任何一个就会结束这个对话，因为这些选项没有任何内容。现在创建一个新的选项，例如weather（天气）和Nice weather.（好天气。）然后使hello的选项指向它。当你保存并且重启之后， Miner就会说Nice weather.（好天气。）当你告诉他Hello!（你好！）时，我想你会知道他会说什么！&lt;br /&gt;
现在，不管什么时候与Miner对话，他都会说一样的东西。如果你第二次和他对话，他应该已经知道你的名字，我们可以使用标签(tag)来完成它。定义一个&#039;&#039;meet_mine&#039;&#039;r事件(event)和&#039;&#039;has_met_miner&#039;&#039;条件(condition)。当你与Miner对话时，他会检查has_met_miner条件。如果没有，他将会为你执行&#039;&#039;meet_miner&#039;&#039;事件，你下一次与他对话时，&#039;&#039;has_met_miner&#039;&#039;就会成立，他就可以知道你的名字了&lt;br /&gt;
现在，更改first_greeting这个选项。添加meet_miner事件并且在事件中添加has_met_miner条件（请使用!来否定这个条件，因为这个选项只会在玩家没有见过Miner的时候显示）。你需要用 &#039;&#039; 来包含条件（分词符号），因为YAML中字符串不能以感叹号开头，写成下面这样：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
如果玩家的has_met_miner不成立，first_greeting这个选项会被使用， meet_miner事件被激活，就会显示hello和bye选项。如果玩家已经见过Miner，has_met_miner条件不成立会发生什么？NPC将会尝试使用在first中定义的选项。让我们加入吧！&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
这个选项没有任何事件，如果first_greeting不成立，NPC就会显示这个选项。 “%player%”是一个变量，它将会显示你的名字。这里有比这个更好的选择，会在 参考 这个章节中说明。保存并且重启，然后开始对话。如果你正确的做了所有的事情，Miner就会把你当做“旅行者”欢迎你，第二次跟他讲话，他就会带着你的Minecraft昵称欢迎你~&lt;br /&gt;
这应该是你现在配置文件的样子，你可以检查一下配置错误：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting,regular_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye &lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
  weather:&lt;br /&gt;
    text: Nice weather.&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
    pointer: weather&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
现在你应该尝试制作自己的对话，你可以看着theinnkeeper.yml文件来帮助你创建对话。试着理解对话是怎样一步一步地工作的。你应该试着教程来完成创建Miner来完成这个任务：他找你要一些铁矿石并放在熔炉里冶炼，下一回他就会穿着盔甲！&lt;br /&gt;
你需要阅读 参考 章节，查看如何处理任务中的项目以及如何将条目添加到日记中。如果你想使用Citizens的NPC代替粘土，你需要阅读这一章。要了解更多关于事件、条件、目标、对话和变量，阅读下一章。&lt;br /&gt;
&lt;br /&gt;
== 条件、事件、目标 ==&lt;br /&gt;
Condition（条件）, event（事件）, objectives（目标）被定义为“指令字符”。它可以匹配包含condition/event/objective的文字。感谢这些字符知道它们需要做什么。如果你想使用这些指令字符，请看下面的参考。它描述了这些指令字符的作用和用法。所有的指令字符都在特定的文件中定义，例如所有条件都在condition.yml.中配置。定义语法：&#039;&#039;name: &#039;the instruction string containing the data&#039;&#039;&#039;。单引号大多情况可以省略（建议不省略）。以下，我会更详细地描述使用方法&lt;br /&gt;
=== 条件 ===&lt;br /&gt;
条件是创建高级任务必不可少的工具。它们可以让你控制玩家在对话中可以选择哪些选项，NPC如何回应这些选项或者任务目标完成。所有可能的条件参考如下。&lt;br /&gt;
让我们看看玩家有没有一个&#039;&#039;beton_start&#039;&#039;标签(tags(标签)是一个可以在事件中添加给玩家的，之后我们就可以检查♂它了)你需要写一个像: &#039;&#039;tag beton_start&#039;&#039;这样指令字符。这是定义我们需要寻找什么。第一个单词是条件类型。它说明了这个条件需要检查一个标签。第二个是&#039;&#039;beton_test&#039;&#039;。它定义了哪个标签是我们想要寻找的。注意，你不能在一个条件中定义多个标签。为了做到它你需要多个条件。现在如果你在对话选项中使用了条件，它将会在玩家拥有这个标签时候出现。但是如果你想在玩家没有这个标签时候显示呢？为了达到这个目的你要在条件前面加一个&#039;&#039;!&#039;&#039;来达到目的。注意它是在对话设置里添加而不是条件配置。&lt;br /&gt;
现在你拥有了一个条件&lt;br /&gt;
使用它来检查玩家是否正在做这个任务并且阻止他再做一次。当然，这个标签将会在任务开始之后添加，通过事件&lt;br /&gt;
=== 事件 ===&lt;br /&gt;
在某些时候你想让一些事情发生。刷新日志，设置标签，给予奖励，这些需要事件来完成。你需要像条件一样通过指令字符和指定名字定义它。你可以在事件参考中找到所有的给事件用的指令字符。在指令字符后面你可以添加条件：使用逗号分隔条件一类的东西，例如：&#039;&#039;angry,!quest_started&#039;&#039;。这将会让事件在条件达成时触发。&lt;br /&gt;
=== 目标 ===&lt;br /&gt;
当你在创建任务的时候，任务目标是最主要的。你可以用一个指令字符“objective”来创建一个任务目标。这些可以在objectives.yml文件中定义，在说明文字的后面，你可以为目标添加条件或者事件。条件即限制任务的完成条件（比如需要城镇的入口防卫，在给定的任务地点击杀僵尸），事件会在任务完成时触发（比如给予奖励，或者设置一个标签，当从NPC上获得奖励时标签会激活），你可以在说明位置后面按照这样的格式去定义：“&#039;&#039;conditions:条件1,条件2 events:事件1,事件2&#039;&#039;”，用逗号去分割，而不是用空格。&lt;br /&gt;
&lt;br /&gt;
目标任务在启动的时候载入，但是除非玩家去激活它们，否则不会消耗资源。这意味着，如果你定义了100个目标任务，有20个玩家一起执行其中一个，另外20个玩家执行另一个，其他的任务没有人去执行，那么仅仅有2个目标任务是激活的，不是100个，也不是40个，这样会更加高效。&lt;br /&gt;
&lt;br /&gt;
== 支持插件 ==&lt;br /&gt;
BetonQuest可以支持其他的插件，使用它们的功能。目前有三个插件: Citizens, Vault and MythicMobs.&lt;br /&gt;
=== Citizens ===&lt;br /&gt;
如果你有这个插件就可以创建NPC 来对话。我非常建议安装这个插件，NPC可以让对话更真实。Citizens也可以让你的NPC击杀的目标。&lt;br /&gt;
==== NPC击杀目标 &#039;&#039;npckill&#039;&#039; ====&lt;br /&gt;
NPC击杀目标需要玩家击杀指定ID的NPC。你也可以设置杀多少次NPC。目标名称后面必须是NPC的ID。你可以用&#039;&#039;amount:&#039;&#039; 设置数字。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npckill 16 amount:3 events:reward label:citizens&#039;&#039;&lt;br /&gt;
==== NPC互动目标 ====&lt;br /&gt;
玩家必须与指定ID的NPC交互。它也可以关闭动作，这样对话就不会触发了。第一个参数是数字(NPC的ID)第二个是设置项 &#039;&#039;cancel&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npcinteract 3 cancel conditions:sneak events:steal label:stealing&#039;&#039;&lt;br /&gt;
=== Vault ===&lt;br /&gt;
安装Vault你可以有权限事件和金钱条件/事件。&lt;br /&gt;
==== 权限事件 &#039;&#039;permission&#039;&#039; ====&lt;br /&gt;
删除或者增加一个组的权限。第一个参数是&#039;&#039;add&#039;&#039;或者&#039;&#039;remove&#039;&#039;，这很好理解。第二个是 &#039;&#039;perm&#039;&#039;或者&#039;&#039;group&#039;&#039;，这个也不难弄清楚。下一个就是你要添加或者删除的字符串。最后你需要指定一个世界。如果世界为空的话，这个修改就会变成全局的。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;permission remove group bandit world_nether&#039;&#039;&lt;br /&gt;
==== 金钱事件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
从玩家的帐户存取款，只有一个参数，就是数量，它可以是负数。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money -100&#039;&#039;&lt;br /&gt;
==== 金钱条件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
检查玩家的金钱是否足够，也只有一个参数，即需要达到的数值，不能为负&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money 500&#039;&#039;&lt;br /&gt;
=== MythicMobs ===&lt;br /&gt;
你可以设置MythicMobs怪物击杀目标和MythicMobs生成怪物的事件。&lt;br /&gt;
==== MythicMobs怪物击杀目标 &#039;&#039;mmobkill&#039;&#039; ====&lt;br /&gt;
完成这个目标需要击杀指定数量的指定怪物。第一个参数必须是怪物的内部名称(在MythicMobs的配置中有)。你可以添加&#039;&#039;amount:&#039;&#039;来指定击杀的数量&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mmobkill SkeletalKnight amount:2 events:reward label:mythicmobs&#039;&#039;&lt;br /&gt;
==== MythicMobs怪物生存事件 &#039;&#039;mspawnmob&#039;&#039; ====&lt;br /&gt;
在指定的地方生成指定数量的怪。第一个参数应该是位置，格式是&#039;&#039;100;200;300;world&#039;&#039;。第二个是MythicMobs的内部名字(在MythicMobs的配置中有)后面跟一个冒号和等级。第三个是数量(必填)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mspawnmob 100;200;300;world SkeletalKnight:1 5&#039;&#039;&lt;br /&gt;
=== Skript ===&lt;br /&gt;
BetonQuest也可以与Skript联动。为了避免混淆，我会使用插件的名称(Skript的一些事件BetonQuestnt也有。Skript可以让你通过脚本使用BetonQuest的事件，并且也可以用BetonQuest执行脚本。&lt;br /&gt;
==== Skript事件通过 BetonQuest &#039;&#039;skript&#039;&#039; 事件触发 ====&lt;br /&gt;
这里描述了Skript事件和BetonQuest事件。&lt;br /&gt;
#&#039;&#039;&#039;Skript 事件&#039;&#039;&#039; - &#039;&#039;on [betonquest] event &amp;quot;id&amp;quot;&#039;&#039; – 这一行可以触发 &#039;&#039;betonquest&#039;&#039; 中设定好的代码，并且 &#039;&#039;id&#039;&#039; 只能是字符串，且必须与你指定BetonQuest的事件相同。&lt;br /&gt;
#&#039;&#039;&#039;BetonQuest事件&#039;&#039;&#039;- &#039;&#039;skript&#039;&#039; – 这个事件会触发Skript的事件。指令只有一个参数，是事件的ID。必须和Skript中定义的事件相同。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; 脚本: &#039;&#039;on betonquest event &amp;quot;concrete&amp;quot; &#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;fire_concrete_script: skript concrete&#039;&#039;&lt;br /&gt;
==== Skript条件 ====&lt;br /&gt;
你可以用 &#039;&#039;player meets [betonquest] condition &amp;quot;id&amp;quot;&#039;&#039; 语句检查BetonQuest 的条件。Betonquest是配置项，并且 &#039;&#039;id&#039;&#039; 是条件名称，在conditions.yml中定义。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;player meets condition &amp;quot;has_ore&amp;quot;&#039;&#039;&lt;br /&gt;
conditions.yml: &#039;&#039;has_ore: item iron_ore:5&#039;&#039;&lt;br /&gt;
==== Skript事件 ====&lt;br /&gt;
你可以用脚本触发BetonQuest事件。Skript的语句是&#039;&#039;fire [betonquest] event &amp;quot;id&amp;quot; for player&#039;&#039;。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;fire event &amp;quot;give_emeralds&amp;quot; for player&#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;give_emeralds: give emerald:5&#039;&#039;&lt;br /&gt;
=== WorldGuard ===&lt;br /&gt;
==== WorldGuard区域目标 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
完成这个目标需要进入指定区域，唯一的参数是区域名称。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton events:kill label:trap&#039;&#039;&lt;br /&gt;
==== WorldGuard区域条件 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
条件会在玩家处于指定区域时成立，唯一的参数是区域名&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton&#039;&#039;&lt;br /&gt;
[[分类:优秀条目申请]] [[分类:角色]] [[分类：娱乐]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3512</id>
		<title>BetonQuest</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BetonQuest&amp;diff=3512"/>
		<updated>2016-08-23T09:02:27Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=BetonQuest&lt;br /&gt;
|版本=v1.7.3&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.7.2-1.8.3&lt;br /&gt;
|網址=http://dev.bukkit.org/bukkit-plugins/betonquest/&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;center&amp;gt;[[文件:BetonQuestLOGO.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{待完善}}&lt;br /&gt;
[[Category:娱乐]] [[Category:角色]]&lt;br /&gt;
BetonQuest是一个好用的任务插件。它不像传统的插件将任务与对话绑定，而是网状多选结构(即类似Gal的剧情系统)。&amp;lt;br&amp;gt;&lt;br /&gt;
你的任务不一定要像普通单线任务&amp;quot;击杀, 带来物品, 获得奖励&amp;quot;一样，你可以创建多条任务线，通过与NPC的对话，玩家可以进入不同的任务线，获得不同的任务奖励。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
*你的冒险不止一条路可以走&lt;br /&gt;
*强大的事件系统:事件可以发生在任何地方&lt;br /&gt;
*强大的条件系统:你可以限制任何事情的(不)发生&lt;br /&gt;
*组队系统允许创建团队任务&lt;br /&gt;
*与NPC的对话的多样性&lt;br /&gt;
*任务日志记录在一本书中&lt;br /&gt;
*独立的任务物品背包&lt;br /&gt;
*可以对物品操作，甚至是书中的文本&lt;br /&gt;
*可以给玩家增加标签(tag)来储存信息&lt;br /&gt;
*完善的荣誉系统&lt;br /&gt;
*位置监听:当玩家进入指定区域会触发事件&lt;br /&gt;
*日常任务与重复奖励&lt;br /&gt;
*任务可以分配到不同的背包(方便管理)&lt;br /&gt;
*支持Citizens2&lt;br /&gt;
*MythicMobs, Skript, WorldGuard和Vault的混合(意思就是全部支持)&lt;br /&gt;
*多语言支持并且非常容易翻译&lt;br /&gt;
*玩家可以选择自己的语种&lt;br /&gt;
*可以使用API创建你自己的事件、条件、目标(Developer)&lt;br /&gt;
*支持SQLite&amp;amp;MySQL数据库&lt;br /&gt;
*可备份的配置及数据&lt;br /&gt;
*自动升级&lt;br /&gt;
== 概览 ==&lt;br /&gt;
这插件到底怎样运作？我将以一个简单的伐木任务为例来描述。请注意“事件”、“条件”和“目标”之间的区别。&amp;lt;br&amp;gt;&lt;br /&gt;
首先，你需要创建一个和NPC的对话。玩家可在对话内的多个选项中进行选择，NPC会根据选项做出不同的反应（例如NPC会在玩家要求工作时告诉他去砍些树） 。同时，在某些地方会有“事件”被触发，增加一个获得木头的“目标”。它将会把该玩家标记为开始任务的人。从现在开始，NPC会在对话中使用不同的选项，例如他会让玩家快点干活。这些选项将会基于“条件”被选择。&amp;lt;br&amp;gt;&lt;br /&gt;
当玩家完成“目标”时（例如通过摧毁木头），“事件”将会触发，将这个玩家标为采集木头的人。当玩家返回NPC处并与其对话时，NPC将以“条件”来核对玩家是否真的拥有那块木头。如果是的话，他将触发给予奖励的“事件”。&amp;lt;br&amp;gt;&lt;br /&gt;
我们没有创建任何“任务”对象，只是创建了一个能触发“事件”并与“条件”进行核对的对话。“目标”当然也不是“任务”，它只能在玩家得到木头时标记该玩家，不能单独存在。另一方面，该对话可以在之后开始其他任务（例如挖一些矿石），所以“目标”也不是“任务” &amp;lt;br&amp;gt;&lt;br /&gt;
不要为举的例子感到失望，这些只是简化后的过程，所以我可以更简单的解释这个系统，其实用BetonQuest可以做到更多&amp;lt;br&amp;gt;&lt;br /&gt;
这些对话可以像在Baldur&#039;s Gate或是Skyrim一样有多种路线，任务可以有多种方式来结束，也可以有很多不同的影响玩家声誉的结局，就靠你来决定了。&amp;lt;br&amp;gt;&lt;br /&gt;
这个插件也包含了一个在书中的日志。你玩过Morrowind吗? 它们差不多一样，我们只是保留了你查看日志的顺序，所以你不必翻好几百页。现在完成任务并不需要显示像“你收集了所有的矿石，现在回到矿工那儿！”这样的信息。反之，它可以更新玩家的日志，加入像这样的新的记录：“我收集了所有的矿石，我需要回到矿工那儿去拿奖励！”。这样会显得真实得多。&lt;br /&gt;
== 安装 ==&lt;br /&gt;
#首先您可以安装Citizens插件,你可以在[http://dev.bukkit.org/bukkit-plugins/citizens/ Bukkit]找到它.&lt;br /&gt;
#不过这不是前置插件,您也可以用方块来做NPC不过那样会减少真实感&lt;br /&gt;
#下载BetonQuest插件,将.jar放在您的插件文件夹中并启动服务器.BetonQuest将会生成配置文件.&lt;br /&gt;
#如果您想使用MySQL进行储存数据,打开config.yml，填写您的数据库信息.如果不想,留空就好了,插件会使用SQLite来代替.&lt;br /&gt;
#如果您不想使用自动更新,在禁用它之前,请重新启动服务器或重新加载插件.&lt;br /&gt;
#当您认为完成之后,您可以重新加载插件(/q reload).现在让我们来学习BetonQuests插件的基础知识吧.&lt;br /&gt;
== 配置 ==&lt;br /&gt;
&#039;&#039;&#039;#请勿修改Version选项，他可能会导致你的配置文件被覆盖。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
在config.yml中有几个选项，我将尽可能的叙述那些在使用这个插件前，你可能需要修改的选项。其余的选项都是在本文档中相应的小节叙述的。&lt;br /&gt;
#&#039;&#039;&#039;MySQL&#039;&#039;&#039;：如果你使用MySQL当作数据库，请填写其内容，留空将使用SQLite作为数据库。&lt;br /&gt;
#&#039;&#039;&#039;update&#039;&#039;&#039;：这部分控制着更新系统，&lt;br /&gt;
  &#039;&#039;&#039;enable&#039;&#039;&#039;选项默认设置为true，他控制着整个更新系统是否工作。&lt;br /&gt;
  &#039;&#039;&#039;download_bugfixes&#039;&#039;&#039;控制着BetonQuest如果自动更新，是否下载最新的已经修复BUG的版本。 (比如1.7.3 -&amp;gt; 1.7.4 或 1.8.1 -&amp;gt; 1.8.3)，这些版本并不改变插件工作的方式，只是修复了BUG的版本，推荐将这项设置为True。&lt;br /&gt;
  &#039;&#039;&#039;notify_new_release&#039;&#039;&#039;这个选项负责在启动的时候检测是否有新的版本，若有就通知(比如1.7.6 - &amp;gt; 1.8)，因为这些更新可能引入新特性或改变工作方式，所以他们不会自动下载。当你准备好更新的时候，你可以使用/q update指令。&lt;br /&gt;
#如果你使用一个开发版本，这里将会有三个选项：&#039;&#039;&#039;notify_dev_build&#039;&#039;&#039;，它和&#039;&#039;&#039;notify_new_release&#039;&#039;&#039;是一样的，但是他会检测是否有开发版本可以替换。在这里没有特定的版本检查，如果发现dev的数量较高，这个就会出现。你下载开发版本应当承担你的责任（原文:You download development builds on your own responsibility.)&lt;br /&gt;
#&#039;&#039;&#039;Language&#039;&#039;&#039;设置插件的语言： 目前有7种语言：英语(en),德国(de),法国(fr),西班牙(es),中国(cn)、荷兰(nl)和波兰(pl)。&lt;br /&gt;
== 指令 ==&lt;br /&gt;
 /j – 给予一本日志&lt;br /&gt;
 /backpack – 打开背包&lt;br /&gt;
 /q – 列出所有可用的管理员指令&lt;br /&gt;
 /q reload – 重载插件&lt;br /&gt;
 /q objectives &amp;lt;playerName&amp;gt; [list/add/del] [instruction] –列出/修改玩家目标&lt;br /&gt;
 /q tags &amp;lt;playerName&amp;gt; [list/add/del] [tag] – 列出/修改玩家的标签&lt;br /&gt;
 /q points &amp;lt;playerName&amp;gt; [list/add/del] [category] [amount] – 列出/修改玩家在所有阵营的点数&lt;br /&gt;
 /q journal &amp;lt;playerName&amp;gt; [list/add/del] [package.pointer] [date] - lists&lt;br /&gt;
 /q event &amp;lt;playerName&amp;gt; &amp;lt;package.eventID&amp;gt; - 为玩家激活一个事件&lt;br /&gt;
 /q condition &amp;lt;playerName&amp;gt; &amp;lt;package.conditionID&amp;gt; - 显示玩家是否经历过指定的环境&lt;br /&gt;
 /q item &amp;lt;package.itemID&amp;gt; - 创建一个基于你手中物品的物品&lt;br /&gt;
 /q config &amp;lt;set/add/read&amp;gt; &amp;lt;path&amp;gt; [value] – 操作配置项&lt;br /&gt;
 /q purge &amp;lt;playerName&amp;gt; - 删除玩家数据&lt;br /&gt;
 /q backup – 创建配置文件和数据库的备份&lt;br /&gt;
 /q create &amp;lt;package&amp;gt;: 创建一个新的包并包含默认任务&lt;br /&gt;
 /q vector &amp;lt;packname.variable&amp;gt; &amp;lt;newvariable&amp;gt;: 计算第一个位置变量到你的位置并且储存到第二个参数中&lt;br /&gt;
 /questlang &amp;lt;lang&amp;gt; - 改变玩家的语言(如果由控制台使用就可以改变全局语言)&lt;br /&gt;
=== 缩写 ===&lt;br /&gt;
*&#039;&#039;&#039;/j:&#039;&#039;&#039; bj, journal, bjournal, betonjournal, betonquestjournal&lt;br /&gt;
*&#039;&#039;&#039;/backpack:&#039;&#039;&#039;b, bb, bbackpack, betonbackpack, betonquestbackpack&lt;br /&gt;
*&#039;&#039;&#039;/q:&#039;&#039;&#039; bq, bquest, bquests, betonquest, betonquests, quest, quests&lt;br /&gt;
**&#039;&#039;&#039;objective:&#039;&#039;&#039; o, objectives&lt;br /&gt;
**&#039;&#039;&#039;tag:&#039;&#039;&#039; t, tags&lt;br /&gt;
**&#039;&#039;&#039;point:&#039;&#039;&#039; p, points&lt;br /&gt;
**&#039;&#039;&#039;event:&#039;&#039;&#039; e, events&lt;br /&gt;
**&#039;&#039;&#039;condition:&#039;&#039;&#039; c, conditions&lt;br /&gt;
**&#039;&#039;&#039;journal:&#039;&#039;&#039; j, journals&lt;br /&gt;
**&#039;&#039;&#039;item:&#039;&#039;&#039; i, items&lt;br /&gt;
**&#039;&#039;&#039;create:&#039;&#039;&#039; package&lt;br /&gt;
*&#039;&#039;&#039;/questlang:&#039;&#039;&#039; ql&lt;br /&gt;
&lt;br /&gt;
=== 详情 ===&lt;br /&gt;
*/q reload重载所有配置，但是不是所有东西都会被保存。当数据库保存时，不可以修改玩家数据。数据库也是一样，你需要重启/重载服务器才可以保存数据库&amp;lt;br&amp;gt;&lt;br /&gt;
*标签相关的命令可以让你快速的编辑它 ，&#039;/q tags Beton&#039; 将会列出Beton这个玩家的标签。&#039;/q tags Beton add test&#039;将会添加&amp;quot;test&amp;quot;标签给玩家，并且 &#039;/q tags Beton del test&#039; 会移除它&amp;lt;br&amp;gt;&lt;br /&gt;
*点数相关的命令可以操纵点数。向一个类别添加点数应该用&#039;/q points Beton add reputation 20&#039; (给&amp;quot;reputation&amp;quot;添加20点)。你也可以使用负数来减去。 删除全部点数使用&#039;/q points Beton del reputation&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
*日志相关命令与上面两项相同。添加或删除使用 /q journal Beton add default.wood_started (or del)，并且你也可以在结尾加上时间来指定时间，格式为:23.04.2014_16:52。注意要用_来代替空格！名字前必须带上包名，因为命令不属于任何包&amp;lt;br&amp;gt;&lt;br /&gt;
*目标相关命令可以显示玩家的目标。它也可以直接对不表进行操作。记住要在事件/条件前加上包名！如果你想添加一个在events.yml中有定义的目标，只需要使用事件的相关命令&amp;lt;br&amp;gt;&lt;br /&gt;
*使在线玩家激活事件可以使用&#039;/q event Beton default.give_emeralds&#039;这将会为玩家Beton从”default”包激活 &amp;quot;give_emeralds&amp;quot;。也有条件相关的指令来操作，例如&#039;/q condition Beton default.has_food&#039;。事件与条件必须在它们的文件中定义，这个命令不支持原版指令。你可以不写包名，之后插件会自动读取default_package它可以在config.yml设置&amp;lt;br&amp;gt;&lt;br /&gt;
*如果需要创建一个&amp;quot;Nettlebane&amp;quot;任务物品,只需要把它拿在手里之后输入&#039;/q item default.nettlebane&#039;. 你手中的物品就会复制到items.yml 并且以你指定的名称保存(这里是&amp;quot;nettlebane&amp;quot;). 你也可以不输入包名.&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以在. set 项中自定义命令的参数。.add 可以让你快捷的添加字符到存在的值上. (需要注意的地方: 插件不会识别空格，你可以用“_”这个字符来代替空格。例如objective location，是一段存在的字符串，并且你想给它附加 100;200;300;world;10这个值，你的命令应该是/q config add default.events.loc_obj _100;200;300;world;10). read 可以显示配置的值。&amp;lt;br&amp;gt;&lt;br /&gt;
这里的路径就是值的地址。你可以用“.”来表示分支，例如config.language,可以设置语言键的值，同理&amp;quot;bye&amp;quot;这个玩家的配置项路径应该是&lt;br /&gt;
default.conversations.innkeeper.player_options.bye.text&amp;lt;br&amp;gt;&lt;br /&gt;
*你可以使用&#039;/q purge Beton&#039;清除指定玩家的数据. 目前无法使用命令清除整个数据库，但你可以修改数据库的前缀&amp;lt;br&amp;gt;&lt;br /&gt;
如果你想要备份你的设置以及数据，需要你的服务器是空的(需要获取所有数据库的数据&amp;gt;所有玩家离线)之后运行&#039;/q backup&#039;这条命令，你将会获得一个包含所有数据的zip压缩文件。&amp;lt;br&amp;gt;&lt;br /&gt;
*使用&#039;/q create beton&#039; 你可以创建一个名为&#039;beton&#039;的任务，它将会与默认任务相同。&amp;lt;br&amp;gt;&lt;br /&gt;
*/q vector 命令可以让你创建一个由第一个位置变量到你的位置的矢量。结果会储存到&amp;quot;vectors.{第二参数}&amp;quot;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
*betonquest.admin – 允许使用管理员命令(/q ...)且可以创建NPC&lt;br /&gt;
*betonquest.journal – 允许使用/ J指令（默认为玩家）&lt;br /&gt;
*betonquest.backpack –允许使用/backpack 指令（默认为玩家）&lt;br /&gt;
*betonquest.conversation -允许与NPC对话（默认为玩家）betonquest.language -允许改变的语言（默认为玩家）&lt;br /&gt;
== 使用教程 ==&lt;br /&gt;
安装插件之后你首先想到的应该是怎么使用它。如果你想使用GUI，将&#039;&#039;default_conversation_IO&#039;&#039;修改为&#039;&#039;chest&#039;&#039;，之后保存文件并且在服务器上使用&#039;&#039;/q reload&#039;&#039;命令。&lt;br /&gt;
登录并在随意位置放一个彩色粘土。在它上面放一个头（例如僵尸的头）并且在粘土块的一侧放一个牌子。填写如下内容&lt;br /&gt;
&#039;&#039;&#039;[NPC]&lt;br /&gt;
Innkeeper&#039;&#039;&#039;&lt;br /&gt;
右键这个NPC，将会出现对话。如果没有，检查你是否成功地制作了NPC。Innkeeper会让你砍一些树，你可以看到日志有了新的记录，不要放置原木然后摧毁， BetonQuest会检测方块的数量，你只能去砍树。如果你是创造模式，给自己16个原木。之后，你可以返回NPC那里得到奖励&lt;br /&gt;
=== 使用事件和条件 ===&lt;br /&gt;
现在你会了非常基础的东西。我们不能做出来一个完整的对话，因为它们使用了很多事件与条件，所以我们要了解它们。去阅读词汇参考或者继续阅读教程&lt;br /&gt;
==== 事件 ====&lt;br /&gt;
让我们从默认包中打开&#039;&#039;events.yml&#039;&#039;。添加新的一行：&#039;&#039;foo: message Hello world!&#039;&#039;这是一个事件的指令字符。BetonQuest使用它来确定事件的类型和它要做的事情。&#039;&#039;foo&#039;&#039;是事件的名字，&#039;&#039;message&#039;&#039;是一个类型，并且Hello world!告诉message需要显示什么。在这种情况下，如果你运行&#039;&#039;foo&#039;&#039;事件，它会显示Hello owrld!信息。保存这个文件，使用&#039;&#039;/q reload&#039;&#039;命令然后使用&#039;&#039;/q e foo&#039;&#039;运行事件（q是quest缩写，e是event缩写，&amp;lt;名称&amp;gt;是你的Minecraft名字，没有括号，foo是我们创建的事件名称）。它会显示一个Hello world!信息&lt;br /&gt;
创建另一个更复杂的事件。比如传送，它需要一个参数，&#039;&#039;location&#039;&#039;(位置)。在&#039;&#039;events.yml&#039;&#039;中添加一行：&#039;&#039;bar: location 100;200;300;world（&amp;lt;事件名称&amp;gt;:location:x;y;z;&amp;lt;世界名称&amp;gt;）&#039;&#039;。保存文件，重新加载插件，然后运行事件。&lt;br /&gt;
祝贺你，你刚刚创建了你的第一个事件。继续做一些其他事件类型的实验。你可以在事件列表中找到它们。你完成了开始学习的条件。&lt;br /&gt;
==== 条件 ====&lt;br /&gt;
打开conditions.yml并添加新的一行：&#039;&#039;foo: location 100;200;300;world;5&#039;&#039;很明显，命名方式与事件相同，但它们没有任何联系。条件名称和事件名称是无关的，因此你可以给它们相同的名称。现在让我们看看指令字符。你可以认为地点是一种条件，它会检查玩家是否在附近。注意，最后一个参数是一个整数，5。这是检查的范围。完成了吗？做完了就保存文件并重新加载插件吧。&lt;br /&gt;
现在，走到你在条件所定义的位置，使用&#039;&#039;/q c foo&#039;&#039;（C是&#039;&#039;condition&#039;&#039;的缩写）。它应该会显示“&#039;&#039;checking condition blah blah blah: true&#039;&#039;”。我们把焦点放在最后的那个词，&#039;&#039;true&#039;&#039;。这意味着你满足条件：你站的位置在5格之内。现在移动2格，再次使用命令，你仍应符合条件。现在尝试走4格，它应该会显示false。你现在已经在5格之外。明白了吗？太好了！&lt;br /&gt;
现在，我告诉了你最简单地使用这些条件。再次打开&#039;&#039;events.yml&#039;&#039;文件，并在foo字符末尾添加条件：&#039;&#039;foo argument&#039;&#039;。顺便说一下，最好重命名foo事件为baz，这样名字不会混淆。现在你应该有这样的一行：&#039;&#039;message Hello world!  conditions: foo&#039;&#039;baz事件只会在foo条件为true时运行。重载插件，走到5格之外，尝试运行&#039;&#039;baz&#039;&#039;事件。漂亮，什么都没有发生。这是因为你不符合&#039;&#039;foo&#039;&#039;条件。走进范围再次尝试运行事件。它应该显示hello world！消息。&lt;br /&gt;
为我们完成了这样一个条件庆祝吧(ahaaaa lolllllll 2333333)，那么问题来了，如果你想在玩家不在范围内时显示消息，该怎么做呢？（我不告诉你[doge]）别担心，你不用&#039;&#039;specifyinverted_location&#039;&#039;条件或其他的什么（那么问题来了，那串英文是什么意思呢？）。你可以简单地否定条件，否定使条件以完全相反的方式运作，在这种情况下，条件只会在玩家在范围外时成立。打开&#039;&#039;events.yml&#039;&#039;并在&#039;&#039;foo&#039;&#039;条件前加一个感叹号（半角 ! ），现在应该是这样：&#039;&#039;baz: message Hello world! conditions:!foo&#039;&#039;，这表示“当&#039;&#039;foo&#039;&#039;不成立时显示Hello world!”保存文件，重新加载插件，运行事件然后乱跑一会儿，看看它是如何工作的。（对了，那串英文是反转_位置的意思啦，非要翻译就是相位反转_位面!xddddd[特定反转_位置]）&lt;br /&gt;
=== 标签基础 ===&lt;br /&gt;
现在，你学会了怎么用事件与条件。之后，我会告诉你什么是标签(tag)。创建两个个新的事件&#039;&#039;add_beton_tag: tag add beton&#039;&#039;和&#039;&#039;del_beton_tag: tag del beton&#039;&#039;。取事件名称时，要注意与内容相关，否则很容易混淆，很不方便。假设你有100个事件，foo24，bar65等等。你也许会迅速的被闪瞎。所以， &#039;&#039;add_beton_tag&#039;&#039;  标签给玩家添加了&#039;&#039;beton&#039;&#039;标签，&#039;&#039;del_beton_tag&#039;&#039; 移除了它。保存文件，重载插件并且运行事件。什么都没发生还是成功了呢？使用&#039;&#039;/q t&#039;&#039;命令(t是tags的缩写。)它会显示标签列表。现在我们注意一下&#039;&#039;default.beton&#039;&#039;，当然，&#039;&#039;default&#039;&#039;是包名，并且&#039;&#039;beton&#039;&#039;是标签名，并且在&#039;&#039;add_beton_tag&#039;&#039;事件中定义了。现在运行&#039;&#039;del_beton_tag&#039;&#039;事件，猜猜会发生什么？&#039;&#039;default.beton&#039;&#039;标签消失了！综上可知，添加删除标签的方法。&lt;br /&gt;
没有什么是可以犯错的，标签是BetonQuest中最有用的东西之一。它们需要通过tag条件来使用。打开&#039;&#039;conditions.yml&#039;&#039;并且添加&#039;&#039;has_beton_tag: tag beton&#039;&#039;。你可以认为&#039;&#039;tag&#039;&#039;是一种条件（和&#039;&#039;tag&#039;&#039;事件相同，但它们不是一样的，一个是事件，另一个是条件）&#039;&#039;beton&#039;&#039;是标签的名字。你没有指定&#039;&#039;default.beton&#039;&#039;，但你可以这样做。保存，重载插件并且检查条件。它会显示true。&lt;br /&gt;
现在你应该了解了这个方便的系统。你可以当玩家第一次与NPC交流时&lt;br /&gt;
添加一个标签，并且当NPC获取到这个标签他会说一些不同的话，比如“欢迎回来”。&lt;br /&gt;
=== 创建目标 ===&lt;br /&gt;
是时候写一些目标了！打开&#039;&#039;objectives.yml&#039;&#039;并且添加一行&#039;&#039;kill_creepers: mobkill creeper 3 events:bar conditions:has_beton_tag&#039;&#039;。让我们分析一下它。&#039;&#039;kill_creepers&#039;&#039;是目标的条件， &#039;&#039;mobkill&#039;&#039;是任务类型。为了完成任务，玩家需要杀一些怪物，&#039;&#039;creeper&#039;&#039;是一种怪物，所以我们知道这些怪物必须是苦力怕。3是数量，它意味着玩家必须杀3个苦力怕。&#039;&#039;event:bar&#039;&#039;意味着任务完成后激发bar事件。&#039;&#039;conditions:has_beton_tag&#039;&#039;告诉我们只有玩家拥有beton标签时任务才可以完成。保存，重载并且使用&#039;&#039;/q o add kill_creepers&#039;&#039;命令（o是目标,add告诉插件添加一个目标）。&lt;br /&gt;
你现在可以用&#039;&#039;/q o&#039;&#039;命令来检查目标是否创建成功，它会显示所有活动的目标。它应该显示&#039;&#039;default.kill_creepers&#039;&#039;。之后，删除beton标签然后杀几个苦力怕。当你杀了三个之后你发现什么都没发生。这是因为has_beton_tag条件不工作了，所以目标不会计数。现在再添加标签并且杀苦力怕。当第三个死了之后你会传送到bar事件定义的位置。&lt;br /&gt;
恭喜你！你学会了怎么用目标！你需要多做实验，因为任务中经常会使用它。仔细看看创建对话，你就完成了基础！&lt;br /&gt;
=== 创建对话 ===&lt;br /&gt;
现在你理解了BetonQuest的事件、条件、目标，是时候创建一发对话了！在默认包里有一个&#039;&#039;conversations&#039;&#039;文件夹。里面只有一个文件，&#039;&#039;innkeeper.yml&#039;&#039;。这是&#039;&#039;innkeepe&#039;&#039;r的对话文件，就是那个让你砍树的人。参考它来完成你的第一个对话吧。创建一个新文件，命名为&#039;&#039;miner.yml&#039;&#039;。输入（为了学的更快，不要复制！）以下内容&lt;br /&gt;
&#039;&#039;&#039;quester: Miner&lt;br /&gt;
first: greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&#039;&#039;&#039;&lt;br /&gt;
这是最基本的对话， Mine在开始谈话时将会说 Hi there,traveler!，之后，这个对话就会结束，因为这里没有玩家可以选择的选项。&lt;br /&gt;
现在你需要给一个NPC添加对话选项。你需要在 main.yml 文件中添加。现在打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，记住了吗0w0？现在，添加另外一行在 innkeeper字段底下：Miner: miner.yml，保存这个文件然后重启你的服务器。这将会连接我们的名叫“Miner（矿工）”的NPC的最新对话。在你的服务器内创建一个新的NPC，给他一个带有“Miner（矿工）”名字的木牌并且点击他的头部。&lt;br /&gt;
现在给NPC添加对话选项，你需要在 main.yml 文件中添加。打开它。就像你看到的，inkeeper.yml 对话对应的是文件中的innkeeper字段。这是你需要打在木牌上其中的一项，添加另外一行在 innkeeper字段底下：Miner:miner.yml，保存这个文件然后重启你的服务器。这将会让我们的 “Miner” NPC说话。在你的服务器内创建一个新的NPC，给他命名为“Miner”并点击他。&lt;br /&gt;
猜猜会发生什么？对话就会显示一遍，从开始到结尾。这个名为“Miner（矿工）”的NPC就会说Hi there,traveler! （你好啊，旅行者！）就像你设置的那样。现在看到设置对话的文件然后编辑它（再一次编辑，手动输入，不要复制粘贴！），所以这个选项看起来是这样的：&lt;br /&gt;
这个名为“Miner”的NPC会说Hi there,traveler!，就像你设置的那样。现在再编辑设置对话的文件（再一次编辑，手动输入，不要复制粘贴！），&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
保存这个文件，重启服务器，再次开启对话，你就会看到有两个选项可以供你选择：Hello!（你好！）和I need to go,sorry.（对不起，我要走了。）。选择它们其中的任何一个就会结束这个对话，因为这些选项没有任何内容。现在创建一个新的选项，例如weather（天气）和Nice weather.（好天气。）然后使hello的选项指向它。当你保存并且重启之后， Miner就会说Nice weather.（好天气。）当你告诉他Hello!（你好！）时，我想你会知道他会说什么！&lt;br /&gt;
现在，不管什么时候与Miner对话，他都会说一样的东西。如果你第二次和他对话，他应该已经知道你的名字，我们可以使用标签(tag)来完成它。定义一个&#039;&#039;meet_mine&#039;&#039;r事件(event)和&#039;&#039;has_met_miner&#039;&#039;条件(condition)。当你与Miner对话时，他会检查has_met_miner条件。如果没有，他将会为你执行&#039;&#039;meet_miner&#039;&#039;事件，你下一次与他对话时，&#039;&#039;has_met_miner&#039;&#039;就会成立，他就可以知道你的名字了&lt;br /&gt;
现在，更改first_greeting这个选项。添加meet_miner事件并且在事件中添加has_met_miner条件（请使用!来否定这个条件，因为这个选项只会在玩家没有见过Miner的时候显示）。你需要用 &#039;&#039; 来包含条件（分词符号），因为YAML中字符串不能以感叹号开头，写成下面这样：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
如果玩家的has_met_miner不成立，first_greeting这个选项会被使用， meet_miner事件被激活，就会显示hello和bye选项。如果玩家已经见过Miner，has_met_miner条件不成立会发生什么？NPC将会尝试使用在first中定义的选项。让我们加入吧！&lt;br /&gt;
&#039;&#039;&#039;NPC_options:&lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&#039;&#039;&#039;&lt;br /&gt;
这个选项没有任何事件，如果first_greeting不成立，NPC就会显示这个选项。 “%player%”是一个变量，它将会显示你的名字。这里有比这个更好的选择，会在 参考 这个章节中说明。保存并且重启，然后开始对话。如果你正确的做了所有的事情，Miner就会把你当做“旅行者”欢迎你，第二次跟他讲话，他就会带着你的Minecraft昵称欢迎你~&lt;br /&gt;
这应该是你现在配置文件的样子，你可以检查一下配置错误：&lt;br /&gt;
&#039;&#039;&#039;first: first_greeting,regular_greeting&lt;br /&gt;
NPC_options:&lt;br /&gt;
  first_greeting:&lt;br /&gt;
    text: Hi there, traveler!&lt;br /&gt;
    condition: &#039;!has_met_miner&#039;&lt;br /&gt;
    event: meet_miner&lt;br /&gt;
    pointers: hello, bye &lt;br /&gt;
  regular_greeting:&lt;br /&gt;
    text: Hi %player%!&lt;br /&gt;
    pointers: hello, bye&lt;br /&gt;
  weather:&lt;br /&gt;
    text: Nice weather.&lt;br /&gt;
player_options:&lt;br /&gt;
  hello:&lt;br /&gt;
    text: Hello!&lt;br /&gt;
    pointer: weather&lt;br /&gt;
  bye:&lt;br /&gt;
    text: I need to go, sorry.&#039;&#039;&#039;&lt;br /&gt;
现在你应该尝试制作自己的对话，你可以看着theinnkeeper.yml文件来帮助你创建对话。试着理解对话是怎样一步一步地工作的。你应该试着教程来完成创建Miner来完成这个任务：他找你要一些铁矿石并放在熔炉里冶炼，下一回他就会穿着盔甲！&lt;br /&gt;
你需要阅读 参考 章节，查看如何处理任务中的项目以及如何将条目添加到日记中。如果你想使用Citizens的NPC代替粘土，你需要阅读这一章。要了解更多关于事件、条件、目标、对话和变量，阅读下一章。&lt;br /&gt;
&lt;br /&gt;
== 条件、事件、目标 ==&lt;br /&gt;
Condition（条件）, event（事件）, objectives（目标）被定义为“指令字符”。它可以匹配包含condition/event/objective的文字。感谢这些字符知道它们需要做什么。如果你想使用这些指令字符，请看下面的参考。它描述了这些指令字符的作用和用法。所有的指令字符都在特定的文件中定义，例如所有条件都在condition.yml.中配置。定义语法：&#039;&#039;name: &#039;the instruction string containing the data&#039;&#039;&#039;。单引号大多情况可以省略（建议不省略）。以下，我会更详细地描述使用方法&lt;br /&gt;
=== 条件 ===&lt;br /&gt;
条件是创建高级任务必不可少的工具。它们可以让你控制玩家在对话中可以选择哪些选项，NPC如何回应这些选项或者任务目标完成。所有可能的条件参考如下。&lt;br /&gt;
让我们看看玩家有没有一个&#039;&#039;beton_start&#039;&#039;标签(tags(标签)是一个可以在事件中添加给玩家的，之后我们就可以检查♂它了)你需要写一个像: &#039;&#039;tag beton_start&#039;&#039;这样指令字符。这是定义我们需要寻找什么。第一个单词是条件类型。它说明了这个条件需要检查一个标签。第二个是&#039;&#039;beton_test&#039;&#039;。它定义了哪个标签是我们想要寻找的。注意，你不能在一个条件中定义多个标签。为了做到它你需要多个条件。现在如果你在对话选项中使用了条件，它将会在玩家拥有这个标签时候出现。但是如果你想在玩家没有这个标签时候显示呢？为了达到这个目的你要在条件前面加一个&#039;&#039;!&#039;&#039;来达到目的。注意它是在对话设置里添加而不是条件配置。&lt;br /&gt;
现在你拥有了一个条件&lt;br /&gt;
使用它来检查玩家是否正在做这个任务并且阻止他再做一次。当然，这个标签将会在任务开始之后添加，通过事件&lt;br /&gt;
=== 事件 ===&lt;br /&gt;
在某些时候你想让一些事情发生。刷新日志，设置标签，给予奖励，这些需要事件来完成。你需要像条件一样通过指令字符和指定名字定义它。你可以在事件参考中找到所有的给事件用的指令字符。在指令字符后面你可以添加条件：使用逗号分隔条件一类的东西，例如：&#039;&#039;angry,!quest_started&#039;&#039;。这将会让事件在条件达成时触发。&lt;br /&gt;
=== 目标 ===&lt;br /&gt;
当你在创建任务的时候，任务目标是最主要的。你可以用一个指令字符“objective”来创建一个任务目标。这些可以在objectives.yml文件中定义，在说明文字的后面，你可以为目标添加条件或者事件。条件即限制任务的完成条件（比如需要城镇的入口防卫，在给定的任务地点击杀僵尸），事件会在任务完成时触发（比如给予奖励，或者设置一个标签，当从NPC上获得奖励时标签会激活），你可以在说明位置后面按照这样的格式去定义：“&#039;&#039;conditions:条件1,条件2 events:事件1,事件2&#039;&#039;”，用逗号去分割，而不是用空格。&lt;br /&gt;
&lt;br /&gt;
目标任务在启动的时候载入，但是除非玩家去激活它们，否则不会消耗资源。这意味着，如果你定义了100个目标任务，有20个玩家一起执行其中一个，另外20个玩家执行另一个，其他的任务没有人去执行，那么仅仅有2个目标任务是激活的，不是100个，也不是40个，这样会更加高效。&lt;br /&gt;
&lt;br /&gt;
== 支持插件 ==&lt;br /&gt;
BetonQuest可以支持其他的插件，使用它们的功能。目前有三个插件: Citizens, Vault and MythicMobs.&lt;br /&gt;
=== Citizens ===&lt;br /&gt;
如果你有这个插件就可以创建NPC 来对话。我非常建议安装这个插件，NPC可以让对话更真实。Citizens也可以让你的NPC击杀的目标。&lt;br /&gt;
==== NPC击杀目标 &#039;&#039;npckill&#039;&#039; ====&lt;br /&gt;
NPC击杀目标需要玩家击杀指定ID的NPC。你也可以设置杀多少次NPC。目标名称后面必须是NPC的ID。你可以用&#039;&#039;amount:&#039;&#039; 设置数字。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npckill 16 amount:3 events:reward label:citizens&#039;&#039;&lt;br /&gt;
==== NPC互动目标 ====&lt;br /&gt;
玩家必须与指定ID的NPC交互。它也可以关闭动作，这样对话就不会触发了。第一个参数是数字(NPC的ID)第二个是设置项 &#039;&#039;cancel&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;npcinteract 3 cancel conditions:sneak events:steal label:stealing&#039;&#039;&lt;br /&gt;
=== Vault ===&lt;br /&gt;
安装Vault你可以有权限事件和金钱条件/事件。&lt;br /&gt;
==== 权限事件 &#039;&#039;permission&#039;&#039; ====&lt;br /&gt;
删除或者增加一个组的权限。第一个参数是&#039;&#039;add&#039;&#039;或者&#039;&#039;remove&#039;&#039;，这很好理解。第二个是 &#039;&#039;perm&#039;&#039;或者&#039;&#039;group&#039;&#039;，这个也不难弄清楚。下一个就是你要添加或者删除的字符串。最后你需要指定一个世界。如果世界为空的话，这个修改就会变成全局的。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;permission remove group bandit world_nether&#039;&#039;&lt;br /&gt;
==== 金钱事件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
从玩家的帐户存取款，只有一个参数，就是数量，它可以是负数。&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money -100&#039;&#039;&lt;br /&gt;
==== 金钱条件 &#039;&#039;money&#039;&#039; ====&lt;br /&gt;
检查玩家的金钱是否足够，也只有一个参数，即需要达到的数值，不能为负&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;money 500&#039;&#039;&lt;br /&gt;
=== MythicMobs ===&lt;br /&gt;
你可以设置MythicMobs怪物击杀目标和MythicMobs生成怪物的事件。&lt;br /&gt;
==== MythicMobs怪物击杀目标 &#039;&#039;mmobkill&#039;&#039; ====&lt;br /&gt;
完成这个目标需要击杀指定数量的指定怪物。第一个参数必须是怪物的内部名称(在MythicMobs的配置中有)。你可以添加&#039;&#039;amount:&#039;&#039;来指定击杀的数量&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mmobkill SkeletalKnight amount:2 events:reward label:mythicmobs&#039;&#039;&lt;br /&gt;
==== MythicMobs怪物生存事件 &#039;&#039;mspawnmob&#039;&#039; ====&lt;br /&gt;
在指定的地方生成指定数量的怪。第一个参数应该是位置，格式是&#039;&#039;100;200;300;world&#039;&#039;。第二个是MythicMobs的内部名字(在MythicMobs的配置中有)后面跟一个冒号和等级。第三个是数量(必填)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;mspawnmob 100;200;300;world SkeletalKnight:1 5&#039;&#039;&lt;br /&gt;
=== Skript ===&lt;br /&gt;
BetonQuest也可以与Skript联动。为了避免混淆，我会使用插件的名称(Skript的一些事件BetonQuestnt也有。Skript可以让你通过脚本使用BetonQuest的事件，并且也可以用BetonQuest执行脚本。&lt;br /&gt;
==== Skript事件通过 BetonQuest &#039;&#039;skript&#039;&#039; 事件触发 ====&lt;br /&gt;
这里描述了Skript事件和BetonQuest事件。&lt;br /&gt;
#&#039;&#039;&#039;Skript 事件&#039;&#039;&#039; - &#039;&#039;on [betonquest] event &amp;quot;id&amp;quot;&#039;&#039; – 这一行可以触发 &#039;&#039;betonquest&#039;&#039; 中设定好的代码，并且 &#039;&#039;id&#039;&#039; 只能是字符串，且必须与你指定BetonQuest的事件相同。&lt;br /&gt;
#&#039;&#039;&#039;BetonQuest事件&#039;&#039;&#039;- &#039;&#039;skript&#039;&#039; – 这个事件会触发Skript的事件。指令只有一个参数，是事件的ID。必须和Skript中定义的事件相同。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; 脚本: &#039;&#039;on betonquest event &amp;quot;concrete&amp;quot; &#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;fire_concrete_script: skript concrete&#039;&#039;&lt;br /&gt;
==== Skript条件 ====&lt;br /&gt;
你可以用 &#039;&#039;player meets [betonquest] condition &amp;quot;id&amp;quot;&#039;&#039; 语句检查BetonQuest 的条件。Betonquest是配置项，并且 &#039;&#039;id&#039;&#039; 是条件名称，在conditions.yml中定义。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;player meets condition &amp;quot;has_ore&amp;quot;&#039;&#039;&lt;br /&gt;
conditions.yml: &#039;&#039;has_ore: item iron_ore:5&#039;&#039;&lt;br /&gt;
==== Skript事件 ====&lt;br /&gt;
你可以用脚本触发BetonQuest事件。Skript的语句是&#039;&#039;fire [betonquest] event &amp;quot;id&amp;quot; for player&#039;&#039;。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039;脚本: &#039;&#039;fire event &amp;quot;give_emeralds&amp;quot; for player&#039;&#039;&lt;br /&gt;
events.yml:&#039;&#039;give_emeralds: give emerald:5&#039;&#039;&lt;br /&gt;
=== WorldGuard ===&lt;br /&gt;
==== WorldGuard区域目标 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
完成这个目标需要进入指定区域，唯一的参数是区域名称。&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton events:kill label:trap&#039;&#039;&lt;br /&gt;
==== WorldGuard区域条件 &#039;&#039;region&#039;&#039; ====&lt;br /&gt;
条件会在玩家处于指定区域时成立，唯一的参数是区域名&lt;br /&gt;
&#039;&#039;&#039;例子:&#039;&#039;&#039; &#039;&#039;region beton&#039;&#039;&lt;br /&gt;
[[分类:优秀条目申请]] [[分类:角色]] [[分类：娱乐]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BossShop&amp;diff=2445</id>
		<title>BossShop</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BossShop&amp;diff=2445"/>
		<updated>2016-02-17T03:54:21Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​创建页面，内容为“== 概览 ==   BossShop 允许你创建服务器菜单/商店GUI界面。是一个十分强大的GUI界面菜单。   这是一个有史以来最友好的GUI插件...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概览 ==&lt;br /&gt;
  BossShop 允许你创建服务器菜单/商店GUI界面。是一个十分强大的GUI界面菜单。&lt;br /&gt;
  这是一个有史以来最友好的GUI插件，告别所有烦人的指令和SignShop吧。&lt;br /&gt;
== 什么是 BossShop ==&lt;br /&gt;
  &lt;br /&gt;
  BossShop 是一个插件，它允许你创建简单/高级的GUI商店（这取决于你）。它允许创建具有独特的项目, 价格，回报。总而言之，它可以做很多事情。 你可以给购买者设置一些折扣， 也可  &lt;br /&gt;
  以给你的玩家提供Warp菜单, 点击投票，以及更多。 可能性是无穷的。&lt;br /&gt;
  听起来很有趣，但是工作量很大？ 我也不喜欢特别大的配置文件。所以我（作者） 写了一个很好的计划，让BossShop更容易安装和配置。&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=TerrainControl&amp;diff=2442</id>
		<title>TerrainControl</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=TerrainControl&amp;diff=2442"/>
		<updated>2016-02-17T02:28:41Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Intermediate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=TerrainControl&lt;br /&gt;
|版本=v2.7.2&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.7.2-1.8.3&lt;br /&gt;
|網址=[https://github.com/MCTCP/TerrainControl/wiki/ WikiOnGithub]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{待搬运}}&lt;br /&gt;
[[TerrainControl/en|查看原文]]&lt;br /&gt;
[https://github.com/MCTCP/TerrainControl/wiki Github Wiki]&lt;br /&gt;
== 概述 ==&lt;br /&gt;
Terrain Control 是一款高级的地形生成器. 通过多样化的配置文件，它使得用户可以在不了解Java的情况下，而控制Minecraft地形生成机制的大多数方面. 它可以运行在Bukkit/Forge服务端以及带有Forge的单人游戏上. Terrain Control 继承自旧版的 [http://www.minecraftforum.net/topic/313991-phoenixterrainmod/ PhoenixTerrainMod], 而其又是基于著名的 [http://www.minecraftforum.net/topic/71565-biomemod/ BiomeTerrainMod]. Terrain Control 由[http://dev.bukkit.org/profiles/Khoorn/ Khoorn]维护 (同时也是Github上的 [https://github.com/Wickth Wickth] ).&lt;br /&gt;
&lt;br /&gt;
*控制水平与垂直方向的地形生成噪声函数&lt;br /&gt;
*控制每个生态群系的地形生成高度以及波动性&lt;br /&gt;
*由图像生成生态群系图&lt;br /&gt;
*控制生态群系，岛屿和大陆的规模&lt;br /&gt;
*自定义生态群系&lt;br /&gt;
*众多关于洞穴与峡谷的设置项&lt;br /&gt;
*控制自然结构的生成，诸如天然矿井、要塞和村庄&lt;br /&gt;
*对矿物、植物、地牢、池塘和其他生成物的完全控制&lt;br /&gt;
*自定义树木和其他对象(BO2 and BO3)&lt;br /&gt;
*替换方块&lt;br /&gt;
*支持视觉设置，如设置树叶的颜色 (需要客户端也安装TerrainControl)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
想了解更多，来[https://github.com/MCTCP/TerrainControl/wiki/Features 这里]看看吧!&lt;br /&gt;
&lt;br /&gt;
== 向导 ==&lt;br /&gt;
=== 准备工作 ===&lt;br /&gt;
==== 安装向导 ====&lt;br /&gt;
时间: 2014.1.5&lt;br /&gt;
Terrain Control 插件支持CraftBukkit, Spigot, Cauldron and Forge (甚至担任游戏). 一个普通的jar文件可以在所有这些平台上面运行.&lt;br /&gt;
* Forge (单人游戏)&lt;br /&gt;
&lt;br /&gt;
首先, 下载并且安装Forge. 运行一次Minecraft以确保所有文件正常运行. 然后通过百科主页面上的下载链接下载插件. 确保和Minecraft本体的版本对应.把文件放进.minecraft文件夹下的mods文件夹.&lt;br /&gt;
&lt;br /&gt;
你现在可以创建一个Terrain Control所定义的世界类型.这个 Mod 只会影响到这一个世界与这个世界的类型. 如果你没有更改在 .minecraft/mods/TerrainControl/worlds/YOUR_WORLD_NAME/ 里面的配置文件, 世界只会成为一个默认的Minecraft世界. 每当你改变了配置, 你必须删除 .minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界. 被更改的设置不会影响到已经生成的区块. 向导会教给你如何自定义一个世界类型.&lt;br /&gt;
* CraftBukkit, Spigot 和 Cauldron 服务器	&lt;br /&gt;
&lt;br /&gt;
只需要把jar文件丢尽plugins文件夹,就像其他的Bukkit插件一样. 这并不需要在玩家的客户端上安装相应的单人游戏版本, 但是如果安装了可以体验到更多的特性.&lt;br /&gt;
&lt;br /&gt;
在你安装完成之后, 你必须仍然为你的新世界激活这个插件. 如果你没有一个多世界管理插件类似于Multiverse, 下面给你的 bukkit.yml 来允许插件操作这个世界 (使用空格按钮, 不要使用 tabs!):&lt;br /&gt;
&lt;br /&gt;
worlds:&lt;br /&gt;
  你的世界名称:&lt;br /&gt;
    generator: TerrainControl&lt;br /&gt;
&lt;br /&gt;
如果你使用了 Multiverse, 你可以创建一个Terrain Control 类型的时间通过使用命令:&lt;br /&gt;
&lt;br /&gt;
/mv create 世界名称 normal -g TerrainControl&lt;br /&gt;
&lt;br /&gt;
如果你正在使用多世界插件来应用Terrain Control 来更改你的一个默认类型的世界, 也要增加 Terrain Control 到 bukkit.yml (操作:上面描述过). Terrain Control 需要正确的将这个世界初始化为默认世界. (鉴于本人水平,本语段可能出现了歧义)&lt;br /&gt;
如果你在使用另一个多世界管理插件, 查找该插件的介绍文档. 使用 TerrainControl (没有一个空格在 Terrain 和 Control之间) 作为控制者名称(即generator 后面填的).区分大小写.&lt;br /&gt;
&lt;br /&gt;
如果你没有更改在 plugins/TerrainControl/worlds/YOUR_WORLD_NAME/ 文件见下的配置, 世界只会成为一个默认的Minecraft世界. 每当你改变了配置, 你必须删除 .minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界. 被更改的设置不会影响到已经生成的区块. 向导会教给你如何自定义一个世界类型.&lt;br /&gt;
* Forge服务器(也就是官服)&lt;br /&gt;
&lt;br /&gt;
确保Forge安装到了服务器. 把插件放进mods文件夹. 去 server.properties 文件然后设置level-type 到 TerrainControl (没有一个空格在 Terrain 和 Control之间). 删除主世界的 level.dat 来得到一个正确的世界类型.&lt;br /&gt;
&lt;br /&gt;
如果你没有更改在 .minecraft/mods/TerrainControl/worlds/YOUR_WORLD_NAME/ 里面的配置文件, 世界只会成为一个默认的Minecraft世界. 每当你改变了配置, 你必须删除 .minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界. 被更改的设置不会影响到已经生成的区块. 向导会教给你如何自定义一个世界类型.&lt;br /&gt;
==== 准备工作向导 ====&lt;br /&gt;
欢迎,新的使用者!&lt;br /&gt;
&lt;br /&gt;
在你成功的安装Terrain Control之后, 你可以开始创建你的新世界. 创建一个创造模式的世界(TerrainControl作为控制者),世界的种子需要是”12”.  我们使用这个特定的种子是为了使你的世界与教程所介绍的相同.如果你不需要创建一个TerrainControl世界使用这个特定的种子,只需要跳过这个列表.&lt;br /&gt;
* 如果你是单人游戏, 左键创建新的世界按钮, 选择创造模式作为游戏模式然后填写一个名字. 左键更多世界选项按钮, 把种子改成12然后选择 TerrainControl 作为世界类型. 确保打开了允许作弊, 你需要使用 /tp 命令.&lt;br /&gt;
* 如果你在 Bukkit 服务器上然后你有 Multiverse 多世界插件,你可以使用 /mv create world_name NORMAL -s 12 -g TerrainControl 来创建世界然后使用 /mv tp world_name 来传送到这个世界.&lt;br /&gt;
* 如果使用的是另外一个多世界管理插件而且使用的是Bukkit服务器.查询多世界插件的帮助文档.创建一个新世界记得把12作为世界的种子,将TerrainControl作为世界类型.&lt;br /&gt;
* 如果你在使用Bukkit服务器但是没有任何多世界管理插件,去 bukkit.yml 然后再增加下列内容:&lt;br /&gt;
&lt;br /&gt;
worlds:&lt;br /&gt;
  你的世界名称:&lt;br /&gt;
    generator: TerrainControl&lt;br /&gt;
&lt;br /&gt;
记得把 “你的世界名称” 改为你所习惯的世界名称. 而且,在文件里面不要使用tab键,只能使用空格键.前往 server.properties 文件然后将 level-seed 设置为12.删除整个世界文件夹来得到一个全新的 level.dat 文件含有正确的种子.&lt;br /&gt;
* 如果你使用的是Forge服务器(官服), 前往 server.properties 然后设置 level-type 为TerrainControl 然后 level-seed 为12. 删除整个世界文件夹来得到一个全新的 level.dat 文件含有正确的种子.&lt;br /&gt;
&lt;br /&gt;
现在登陆一次你的世界让 Terrain Control 生成全新的配置. 使用命令 /seed来验证种子是12. 你会注意到这个世界和默认的Minecraft世界没有任何区别: 别忘记你还没有更改一点点配置文件哟! 关掉你的服务器/游戏吧.&lt;br /&gt;
&lt;br /&gt;
找到你的Terrain Control 设置文件夹.Locate your Terrain Control settings folder. (如果不知道在哪儿可以参考安装说明嘤). 你应该可以看到一些类似于这样的东西:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-1.png||TerrainControl-1]]&lt;br /&gt;
&lt;br /&gt;
让我们打开 WorldConfig.ini. 使用Notepad 当然很好哦. 但是不要使用含有字体样式的编辑器哦,比如说Word.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All lines starting with a # are comments. They give a brief description of each variable. On the WorldConfig page on the wiki, you can usually find a more detailed description.&lt;br /&gt;
&lt;br /&gt;
To verify that everything works, we are going to change a variable. GenerationDepth is a nice one to change. If you set it to 9, all biomes get halved in size, in both the x and z directions. If you set it to 11, all biomes get doubled in size, again in both the x and z directions. If you set it to 12 the biomes are as large as in the Large Biomes world type. Let&#039;s try that. Change the number to 12 and save the file.&lt;br /&gt;
&lt;br /&gt;
If you would (re)start the game/the server now, you still won&#039;t see any changes. You have to explore new areas to see the new terrain, just like for any other generator update in Minecraft. Because this is quite annoying, it is a better idea to delete the region folder inside the world folder. This deletes the terrain, but keeps the player positions and the map seed. Never do this while the game/the server is running!&lt;br /&gt;
&lt;br /&gt;
After you have deleted the region folder, start the game/the server and test your changes. You should now see a world with large biomes.&lt;br /&gt;
&lt;br /&gt;
It&#039;s now time to explore the WorldBiomes folder. Again, don&#039;t forget to close the game/the server. You see a lot of .bc files, whichs stands for BiomeConfig. Some biomes look very obscure (what is Sky.bc?), others are not a biome at all (Since when is a beach a biome? What about river?), and others use strange names (Mesa Plateau F M?). These names were chosen by Mojang.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-2.png||TerrainControl-2]]&lt;br /&gt;
&lt;br /&gt;
For now you could ignore those strange biomes. Just open up the Desert.bc file. If you scroll down, you will see the BiomeHeight and BiomeVolatility (just below &#039;&#039;&#039;Terrain Generator Variables&#039;&#039;&#039;). Let&#039;s add some hills to the desert! Set BiomeHeight to 0.2 (makes the terrain higher, but not more hilly) and BiomeVolatility to 0.4 (makes the terrain more hilly). Now save the result, delete the region folder, and find a desert biome. If you indeed used the seed 12, you can easily teleport to one using the command /tp -19 80 -306.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-3.png||TerrainControl-3]]&lt;br /&gt;
&lt;br /&gt;
Maybe the stone in the cliff annoys you, wouldn&#039;t sandstone look better? Close the game/the server, open the Desert.bc and set StoneBlock (in the Blocks section) to SANDSTONE. This replaces all stone with sandstone. Stop the game/server, delete the region folder and start the game/server again.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-4.png||TerrainControl-4]]&lt;br /&gt;
&lt;br /&gt;
Now you have seen a tiny bit of the power of Terrain Control. It&#039;s time for the next step! If you just want to know what each setting does, you can take a look at the other settings in WorldConfig and the BiomeConfigs. If you want to start creating custom biomes, you should read this tutorial, which starts at the point where this tutorial ends. On the home page you could also find a lot of other (external) tutorials. The examples page might also be useful.&lt;br /&gt;
&lt;br /&gt;
==== Your first custom biome ====&lt;br /&gt;
In this tutorial we are going to create our first custom biome. In the previous tutorial we modified the standard desert to be more hilly and to have sandstone instead of stone. We will now create a hilly area with a lot of flowers and some trees.&lt;br /&gt;
&lt;br /&gt;
You can continue working on the world of the previous tutorial. Alternatively, you can create a new world with the seed 12. Make sure that the GenerationDepth setting (found in the WorldConfig.ini) is set to 12 too. This will make the biomes bigger. If you have done that correctly, the coordinates found in the tutorial will work for you. If not, you will find yourself lost in some other biome and you&#039;ll have to search around a lot.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll start by adding the custom biome to the biome lists. The first list we are going to modify is the CustomBiomes list. Open up the WorldConfig.ini file and search for that setting. Edit the line with CustomBiomes to look like this:&lt;br /&gt;
&lt;br /&gt;
CustomBiomes:Flowerfield:40&lt;br /&gt;
&lt;br /&gt;
This will make Terrain Control generate and read the config files for the biome called Flowerfield. The biome will have the id 40. Biome ids work just like block ids, except that they are separate lists and that 254 is the highest possible biome id. Just like block ids, two biomes may not share the same id.&lt;br /&gt;
&lt;br /&gt;
If you restart the server/game now, you&#039;ll see that a new file in the BiomeConfigs directory has popped up: FlowerfieldBiomeConfig.ini. However, your world looks still the same. We need to add our biome to one of the biome lists. NormalBiomes, found in the WorldConfig.ini, is a good choice, as it lets the biome generate as a normal biome, just like most of Minecraft&#039;s biomes. Add your biome to the NormalBiomes list:&lt;br /&gt;
&lt;br /&gt;
NormalBiomes:Desert,Forest,Extreme Hills,Swampland,Plains,Taiga,Jungle,Flowerfield&lt;br /&gt;
&lt;br /&gt;
Make sure the server is closed/world is unloaded, remove the region folder inside the world folder and start the server/load the world again. If use the command /tp -1010 78 -11 to teleport to that location, you can see the custom biome. It doesn&#039;t look very nice yet, but hey, we haven&#039;t yet changed any settings of the biome:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-5.png|TerrainControl-5]]&lt;br /&gt;
&lt;br /&gt;
If you aren&#039;t using the Terrain Control mod on singleplayer, the colors will look a little bit different.&lt;br /&gt;
&lt;br /&gt;
First of all, we are going to make the biome a lot greener. Open up the FlowerfieldBiomeConfig.ini. Scroll down until you see the Visuals and weather section. You can change the colors of the biome here. However, if you don&#039;t have the Terrain Control client mod, you won&#039;t see any effect. If you are going to use the map on singleplayer, this is of course no problem, but if you are going to use the world on a Bukkit server, most of your players will only see the standard Minecraft colors. All colors are hexadecimal. You can Google around a bit to find a color picker. Please note that most color pickers will prefix the color with a #, which is common in the webdesign-world. Terrain Control however requires you to use 0x instead, which is common in the Java-world.&lt;br /&gt;
&lt;br /&gt;
For this tutorial, we aren&#039;t going to use the color settings. Terrain Control has a cool option to save the biome with the id of another biome. This will cause the colors, weather and mobs of the biome to look like the other biome. Luckily, the terrain shape and features will still look the same. We are going to use the mushroom isle biome for this, as it has nice green grass (normally you can&#039;t see that, as the biome is covered in mycelium, but try placing down a block of grass there and you&#039;ll see it). As an added bonus, no hostily mobs will spawn in our flower field, as the mushroom biome has them disabled. Scroll up to find the ReplaceToBiomeName setting and set it to MushroomIsland.&lt;br /&gt;
&lt;br /&gt;
Make sure the server is closed/world is unloaded, remove the region folder inside the world folder and start the server/load the world again. If use the command /tp -1010 78 -11 to teleport to that location, you can now see that the biome is a lot greener:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-6.png|TerrainControl-6]]&lt;br /&gt;
&lt;br /&gt;
Now we are going to make the biome a bit more hilly. Open up the FlowerfieldBiomeConfig.ini again and set BiomeVolatility to 0.5. If you would take a look now, you&#039;ll see that the land drops below sea level now on some places. We don&#039;t want this, so to fix this we raise the biome a bit, without making it more hilly. Set BiomeHeight to 0.5 to make the biome a bit higher.&lt;br /&gt;
&lt;br /&gt;
Close the server/world, remove the region folder and open the server/world again. You should now see some hills:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-7.png|TerrainControl-7]]&lt;br /&gt;
&lt;br /&gt;
Now we are going to add some resources to the biome. Terrain Control has a powerful resource system. It consists of a long list of resources. Each resource can be an ore, a plant, a tree, a small lake, etc. Almost all resources have a frequency setting which tells how many times that resource must be processed for the chunk. Almost all resources also have a rarity setting, which determines the chance of success for each attempt. Usually the terrain is another limiting factor: if there is not enough space for a tree there, it simply won&#039;t spawn, regardless of a rarity of 100.&lt;br /&gt;
&lt;br /&gt;
Resources use the function syntax, which is also used on some other places in the configs. It works like this:&lt;br /&gt;
&lt;br /&gt;
NameOfFunction(parameter,parameter,parameter,...)&lt;br /&gt;
&lt;br /&gt;
If you already have experience with a spreadsheet program like Microsoft Excel, this syntax should be familiar. Each parameter does affects something in the resource.&lt;br /&gt;
&lt;br /&gt;
All resources placed together form a list, called the resources queue. It is out of the scope of this tutorial to explain every possible resource (see this page for that), but some interesting resources for our plant biome will be described.&lt;br /&gt;
&lt;br /&gt;
Flowers are single block resources in Minecraft. In the resources queue there are two resources designed for single-block things. Grass is easier to work with than Plant, but it can only spawn on top of the terrain. Plant chooses a random height between it&#039; min and max height and then looks whether the location is suitable. Grass simply places itself on the highest block, which it can look up from the heightmap.&lt;br /&gt;
&lt;br /&gt;
For some reason Mojang placed flowers using the Plant resource in Minecraft. There is no reason for us to do the same, we are going to use the Grass resource. The syntax of the Grass resource is as follows:&lt;br /&gt;
&lt;br /&gt;
Grass(Block,BlockData,Frequency,Rarity,BlockSource[,BlockSource2,BlockSource3.....])&lt;br /&gt;
&lt;br /&gt;
Block is the id or name of the block to spawn. BlockData is the block data from 0 to 15. Frequency and Rarity were just explained a few paragraphs back. BlockSource is the block to spawn on.&lt;br /&gt;
&lt;br /&gt;
First of all, we remove the standard lines with flowers, as we are not going to use the Plant resource for them. Remove these two lines from the resources queue:&lt;br /&gt;
&lt;br /&gt;
Plant(RED_ROSE,2,100.0,0,128,GRASS,DIRT,SOIL)&lt;br /&gt;
Plant(YELLOW_FLOWER,2,100.0,0,128,GRASS,DIRT,SOIL)&lt;br /&gt;
And add the following Grass resources at the end of the resources queue:&lt;br /&gt;
&lt;br /&gt;
Grass(RED_ROSE,0,40,100,GRASS)&lt;br /&gt;
Grass(YELLOW_FLOWER,0,80,100,GRASS)&lt;br /&gt;
This should add 40 red roses and 80 yellow flowers to each chunk. Of course, the terrain is not always suitable, so we&#039;ll see less flowers. Another thing is that on each attempt a random location in the chunk is choses, which means that it can choose a location that already has a flower!&lt;br /&gt;
&lt;br /&gt;
Nevertheless, if you close the server/world, remove the region folder and open the server/world again, you should see this:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-8.png|TerrainControl-8]]&lt;br /&gt;
&lt;br /&gt;
That are a lot of flowers! Let&#039;s add some tall grass as well to the biome. There is already a tall grass resource in the resources queue, so let&#039;s just increase the frequency of that resource. Change this line:&lt;br /&gt;
&lt;br /&gt;
Grass(LONG_GRASS,1,10,100.0,GRASS,DIRT)&lt;br /&gt;
To this line: (note that the 10 is replaced with the 80)&lt;br /&gt;
&lt;br /&gt;
Grass(LONG_GRASS,1,80,100.0,GRASS,DIRT)&lt;br /&gt;
Close the server/world, remove the region folder and open the server/world again. Looks a lot better, doesn&#039;t it:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-9.png|TerrainControl-9]]&lt;br /&gt;
&lt;br /&gt;
We&#039;re almost done with this tutorial, but we still want to add some trees. Without trees, it is very difficult to survive in a biome. The syntax of the tree resource is as follows:&lt;br /&gt;
&lt;br /&gt;
Tree(Frequency,TreeType,TreeType_Chance[,Additional_TreeType,Additional_TreeType_Chance.....])&lt;br /&gt;
&lt;br /&gt;
It has a nifty syntax to specify what trees you want. For each attempt (there are Frequency attempts), it first chooses the first TreeType. If this Treetype fails to spawn, either because of the TreeType_Chance (this is a success percentage) or because of unsuitable terrain, it continues to the next one, the Additional_TreeType. If that tree also fails to spawn, it continues to the next one. This continues until all tree types in the list have been processed.&lt;br /&gt;
&lt;br /&gt;
Some tree types have bad names. For example, Forest is actually a birch tree. Tree is simply an oak tree.&lt;br /&gt;
&lt;br /&gt;
Add this line to the end of the resources queue:&lt;br /&gt;
&lt;br /&gt;
Tree(1,Forest,4,Tree,4)&lt;br /&gt;
This means that there is just one attempt in each chunk. In that attempt, there is a 4% chance that the birch spawns (provided the terrain is suitable for that tree). If the birch tree doesn&#039;t spawn, there is a 4% chance that a normal oak tree will spawn.&lt;br /&gt;
&lt;br /&gt;
Close the server/world, remove the region folder and open the server/world again. Our biome is now technically finished:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-10.png|TerrainControl-10]]&lt;br /&gt;
&lt;br /&gt;
However, if you are on Bukkit and use the command /tc map, the biome will show up as a block biome. You can change this by choosing another color for the BiomeColor setting. We will use 0xb8e65c. Close the server/world, remove the region folder and open the server/world again. Execute the command /tc map. You should get a map like this one:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-11.png|TerrainControl-11]]&lt;br /&gt;
&lt;br /&gt;
If you had any problems recreating this world, you can download the completed version here.&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have just created your own custom biome! You can now create as many custom biomes as you want. You know how to create hills, forests, grass, flowers, etc. Some additional tips:&lt;br /&gt;
* BiomeTemperature:0 will cause the biome to be covered by snow. However, people without the TC mod on the client will see snow on the ground, but rain in the air. To fix this you can use ReplaceToBiomeName:Taiga.&lt;br /&gt;
* Water is generated when the terrain falls under the sea level. Using the BiomeVolatility and BiomeHeight settings you can best control how the land is shaped.&lt;br /&gt;
* Take a look in the configs of the default biomes to see how a certain effect is achieved. The downloads thread in the TC forums is also a valuable resource.&lt;br /&gt;
Good luck!&lt;br /&gt;
&lt;br /&gt;
==== Common problems ====&lt;br /&gt;
Terrain Control doesn&#039;t always do what you would expect. On this page some problems frequently encountered by beginners are highlighted. If you&#039;re still stuck, you can create a [http://dev.bukkit.org/server-mods/terrain-control/forum/ forum topic] that describes your problem. Be as detailed as possible and be prepared to post your startup log (preferably on pastebin.com or similar) or your settings (preferably in a ZIP file).&lt;br /&gt;
* My world settings folder isn&#039;t created, only GlobalObjects exists.&lt;br /&gt;
Terrain Control won&#039;t take over all your worlds when you install it. You&#039;ll need to enable it first for a world. Closely follow the installation instructions. When you&#039;re still stuck, it is important to post your startup logs when you are creating a forum topic.&lt;br /&gt;
* My settings don&#039;t have any effect on the terrain.&lt;br /&gt;
Have you tried regenerating the terrain? If yes, move your TerrainControl folder, start the server/the game again and look whether Terrain Control has remade the settings files. If not, Terrain Control is not even reading them. See the problem above this one on how to solve that. If yes, look at the BiomeMode and TerrainMode and make sure that they aren&#039;t set to Default (which makes them ignore your settings and use the vanilla settings instead).&lt;br /&gt;
* I&#039;m spawning in an ocean and I can&#039;t find any land&lt;br /&gt;
Don&#039;t worry, it is there. Keep swimming. Alternatively, you can change the seed of the map (for servers: you&#039;ll need a new level.dat for this, changing it only in the server.properies isn&#039;t enough) to something else. The seed 11 will spawn you on land with the default settings. You can also disable or reduce the oceans using the LandRarity setting in the WorldConfig:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-12.png|TerrainControl-12]]&lt;br /&gt;
&lt;br /&gt;
* This specific setting doesn&#039;t work (but other settings do)&lt;br /&gt;
Most settings are case sensitive and whitespace sensitive, so be precise. Some settings need higher values to give a noticeable effect. Other settings need the Terrain Control client (see the comments in the files and/or this wiki). Some settings are dependant on another setting (again, see the comments in the files and/or this wiki).&lt;br /&gt;
&lt;br /&gt;
If you are not experienced with Terrain Control, always make sure that SettingsMode is set to WriteAll. This will make Terrain Ontrol reset or remove everything it doesn&#039;t understand, so that you&#039;ll immediately notice that something was wrong.&lt;br /&gt;
&lt;br /&gt;
=== Intermediate ===&lt;br /&gt;
==== 如何从一张图片创建世界 ====&lt;br /&gt;
&#039;&#039;&#039;如果你不能找到你所需要的信息，你可以参考论坛或使用这个[http://kartwork.de/tutorial/html/map_by_image.html this tutorial] by mysource&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
创造属于你自己的世界是很困难的，河流，岛屿，也许总是会在错误的地方产生，这应该不是你想要的。也许你的山看起来不够好，当然，你也可以拥有更多生物群系的选项。.但是，运用地形控制的功能，从一个图像生成生物群系，. 你可以完全操控你的世界,或者使用原有生态环境并改变地形来创建衣服一个 [https://github.com/MCTCP/TerrainControl/wiki/Creating-a-world-from-an-image#small-map-improvements to do some small map improvements].&lt;br /&gt;
&lt;br /&gt;
===== 优点与缺点 =====&lt;br /&gt;
优点:&lt;br /&gt;
* 完全控制你的生物群落&lt;br /&gt;
* 使其更容易处理&lt;br /&gt;
* 可以用来定制冒险的地图&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
缺点:&lt;br /&gt;
* Images are not infinite, you must fall back on another biome generator when you are outside the image.&lt;br /&gt;
* 没有随机生物群系组合：生物群系布局看起来一样好（或坏），正如你所画的。&lt;br /&gt;
* 有一些怪异的东西将在下面说明。&lt;br /&gt;
&lt;br /&gt;
===== 创建一个图像 =====&lt;br /&gt;
在每一个[https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs BiomeConfigs] 有一个&#039;&#039;BiomeColor&#039;&#039;变量. 这个变量应该是生物群系的十六进制颜色。它不仅用作 &#039;&#039;/tc map&#039;&#039;  命令输出颜色,而且作为输入图像的颜色。必须使用准确的“BiomeColor”在画的形象让生物群落产生。Two biomes may not have the same color, if they do that color will result in ocean generating instead. For each custom biome you should change the  &#039;&#039;BiomeColor&#039;&#039;  from 0x000000 (black) to another color.&lt;br /&gt;
&lt;br /&gt;
The default biome colors in both RGB and hex (Terrain Control uses the same colors as [http://www.minecraftforum.net/topic/626786-amidst/ AMIDST]):&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-13.png|TerrainControl-13]]&lt;br /&gt;
&lt;br /&gt;
Each pixel on the image represents 4x4 blocks. As said above, the color in the image must be exactly the  &#039;&#039;BiomeColor&#039;&#039; . Most brush tools of the photo editors won&#039;t work, as they change the color to another one:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-14.png|TerrainControl-14]]&lt;br /&gt;
&lt;br /&gt;
The blurring (called anti-aliasing) allows objects to blend properly with the rest of an image, however Terrain Control doesn&#039;t recognize those colors. When Terrain Control finds a color it doesn&#039;t have a config for it places ocean. It is better to use editors (commonly called) pencil tool since that tool doesn&#039;t use anti-aliasing. Be sure to save the image as a png file as this is the only format supported and most other formats will change the colors during compression. Before generating a world check the image to ensure it hasn&#039;t been anti-aliased or compressed. &lt;br /&gt;
&lt;br /&gt;
Another common error is to resize the image without disabling anti-aliasing:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-15.png|TerrainControl-15]]&lt;br /&gt;
&lt;br /&gt;
When painting your image from scratch either assume the right edge (right as &#039;not left&#039;, not as &#039;not wrong&#039;) is north, or use the top as north (as most commonly do) and rotate your image 90 degrees clockwise before generating. If you are editing a map made from the  &#039;&#039;/tc map&#039;&#039;  command see that section below.&lt;br /&gt;
&lt;br /&gt;
===== Letting Terrain Control generate it properly =====&lt;br /&gt;
After you are satified with your image and everything is rotated and resized correctly, it&#039;s time to let Terrain Control do the work! Place the image next to the WorldConfig.ini file and take a look at the following settings in that file:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageMode&#039;&#039;  - Can be set to  &#039;&#039;ContinueNormal&#039;&#039;  or  &#039;&#039;FillEmpty&#039;&#039; .  &#039;&#039;ContinueNormal&#039;&#039;  will tell Terrain Control to generate terrain randomly (like  &#039;&#039;BiomeMode:Normal&#039;&#039; , based on it&#039;s settings) once it has hit areas outside the image.  &#039;&#039;FillEmpty&#039;&#039;  will fill any areas outside the image with the biome set in the  &#039;&#039;ImageFillBiome&#039;&#039;  setting, default ocean.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageFile&#039;&#039;  - The name of the image file to use, default of map.png. Must be a .png image.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageFillBiome&#039;&#039;  - The biome to use for generation once outside of the image area when  &#039;&#039;ImageMode&#039;&#039;  is set to FillEmpty. (Note: need to test if this changes the biome used when TC finds a biome color it doesn&#039;t recognize or conflicts with another biome color.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageXOffset&#039;&#039;  and  &#039;&#039;ImageYOffset&#039;&#039;  - Shift the the co-ordinate position of the image, useful for getting the center of your image at x:0 y:0. When using  &#039;&#039;ContinueNormal&#039;&#039;  set these to half the image size. In FillEmpty mode set this to half the image size in the negative value. Example - A 500x500 pixel map.png would have X and Y offset set to 250 in  &#039;&#039;ContinueNormal&#039;&#039;  and -250 in FillEmpty.&lt;br /&gt;
&lt;br /&gt;
===== Editing a random map using /tc map and ContinueNormal =====&lt;br /&gt;
Terrain Control has the command  &#039;&#039;/tc map&#039;&#039;  to output a biome map. The images generated by it can, with some extra work, be reused as an input image for  &#039;&#039;FromImage&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
When using  &#039;&#039;/tc map&#039;&#039;  Terrain Control will make the right edge (right as &#039;not left&#039;, not as &#039;not wrong&#039;) of the map north, so to get north at the top of the image rotate it 90 degrees counter clockwise. When  &#039;&#039;/tc map&#039;&#039;  outputs it does so at 1 pixel = 1 block, but the input is always 1 pixel = 4x4 blocks. To get the image the right size it must be downsized to a quarter its normal size.&lt;br /&gt;
&lt;br /&gt;
==== Basic world customization ====&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Under construction. The IsleBiomes and BorderBiomes still need to be described.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
This tutorial will help you shaping your world. In this tutorial only  &#039;&#039;BiomeMode:Normal&#039;&#039;  is described The tutorial is written for both singleplayer and multiplayer, with or without the [https://github.com/MCTCP/TerrainControl/wiki/Terrain-Control-User-Interface User Interface]. You should already have installed Terrain Control and you should also know how to change the settings and how to regenerate the world. If not, look [https://github.com/MCTCP/TerrainControl/wiki/Installation-instructions here] for the installation instructions and [https://github.com/MCTCP/TerrainControl/wiki/Beginners%27-tutorial-without-the-UI here] for a beginners&#039; tutorial.&lt;br /&gt;
&lt;br /&gt;
Start again with a new world. First of all, open the [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig.ini] file and look at the settings below &#039;Biome Generator Variables&#039; (for the UI: World tab -&amp;gt; Biomes tab). Scroll a little bit down and you will see four variables:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NormalBiomes&#039;&#039; ,  &#039;&#039;IceBiomes&#039;&#039; ,  &#039;&#039;IsleBiomes&#039;&#039;  and  &#039;&#039;BorderBiomes&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
To understand them you need a little more background information. The Minecraft world is made of continents. On the mainland the  &#039;&#039;NormalBiomes&#039;&#039;  generate. The rest is filled by the biome Ocean. To make things a bit more interesting you can give biomes a border (for example, beaches are a border between the biome Ocean and most other biomes) using the  &#039;&#039;BorderBiomes&#039;&#039; . Also you can generate biomes inside other biomes. They are called  &#039;&#039;IsleBiomes&#039;&#039; . For example, MushroomIsland is a isle biome inside the Ocean biome. Some areas of the map are marked as &#039;frozen&#039;. When a frozen area is generated on top of a continent one of the  &#039;&#039;IceBiomes&#039;&#039;  will spawn (instead of one of the &#039;NormalBiomes&#039;). If it&#039;s generated on top of an ocean the biome FrozenOcean will spawn (however you can toggle this off).&lt;br /&gt;
&lt;br /&gt;
===== Technical biomes =====&lt;br /&gt;
There are also some &#039;technical biomes&#039;. They are not considered as a true biome, but they make the terrain more varied. This section describes their function in the default settings, and maybe inspires you to create your own. Keep in mind that you can change everything: if you would want, you could even generate the TaigaHills biome as a border between jungles and deserts.&lt;br /&gt;
&lt;br /&gt;
River is one of the technical biomes: it&#039;s called a river, but it is just a biome with a lot of water. The world generator places that biome on top of the continents (in the shape of a river), and when a frozen area generates on top of a river, the biome FrozenRiver generates instead (however you can toggle this off). You can edit the RiverBiomeConfig to generate something that doesn&#039;t look like a river at all:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-S1.jpg|TerrainControl-S1]]&lt;br /&gt;
&lt;br /&gt;
There are also some Hill-biomes: TaigaHills, JungleHills, DesertHills and ForestHills. Those are added as a  IsleBiome  and they generate inside the Taiga, Jungle, Desert and Forest. When you see a large hill inside one of these biomes, you can be sure that you are looking to a HillsBiome. (Although Extreme Hills is added to the &#039;NormalBiomes&#039; and doesn&#039;t generate inside other biomes). River, which is just a biome with much water, is also added as a  IsleBiome : it is generated as an isle inside the swamps.&lt;br /&gt;
&lt;br /&gt;
MushroomIslandShore is generated as a  BorderBiome  between the MushroomIsland and all other biomes (usually an ocean) to smooth out the transition, and Extreme Hills Edge (also a  BorderBiome ) is added to smooth out the transitions between the Extreme Hills and most other biomes. &lt;br /&gt;
&lt;br /&gt;
Most people working with Terrain Control use a lot of technical biomes to generate the terrain they want. They use them to smooth out the transition between two biomes, to make a biome more varied, to generate snow peaks, etcetera. For example, [https://github.com/Burckhart Burckhart] [http://dev.bukkit.org/server-mods/terrain-control/forum/41337-nested-biomes/#p2 has used] a lot of  BorderBiomes  and  IsleBiomes  to generate a mountain range.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-17.jpg|TerrainControl-17]]&lt;br /&gt;
&lt;br /&gt;
===== NormalBiomes =====&lt;br /&gt;
Here you can see a map of just land and ocean.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-18.png|TerrainControl-18]]&lt;br /&gt;
&lt;br /&gt;
The green areas are filled with the  NormalBiomes  and the blue areas are filled with the biome Ocean.&lt;br /&gt;
&lt;br /&gt;
You can use the variable  LandRarity  to adjust the ratio between land and ocean:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-12.png|TerrainControl-12]]&lt;br /&gt;
&lt;br /&gt;
Now it&#039;s time to see how that green land is filled. We set  LandRarity  on 100. If you look at the  NormalBiomes  variable, you will see the following:&lt;br /&gt;
&lt;br /&gt;
 NormalBiomes:Desert,Forest,Extreme Hills,Swampland,Plains,Taiga,Jungle &lt;br /&gt;
&lt;br /&gt;
Which gives the following biome map ( IsleBiomes  and  IceBiomes  are removed so that the image looks cleaner):&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-20.png|TerrainControl-20]]&lt;br /&gt;
&lt;br /&gt;
If you want a hot world, you can remove most biomes from  NormalBiomes :&lt;br /&gt;
&lt;br /&gt;
 NormalBiomes:Desert,Jungle &lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-21.png|TerrainControl-21]]&lt;br /&gt;
&lt;br /&gt;
(If you still see some cold areas ingame, it&#039;s because of the  IceBiomes . We see about them later.)&lt;br /&gt;
&lt;br /&gt;
You can change the rarity of the biomes in the [https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs BiomeConfigs]. If you want to have less jungles in your world, go to the JungleBiomeConfig.ini and set  BiomeRarity  (which is actually the biome probability) to 25.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-22.png|TerrainControl-22]]&lt;br /&gt;
&lt;br /&gt;
That was it for  NormalBiomes  for now. Later on we will add our own custom biomes.&lt;br /&gt;
&lt;br /&gt;
===== IsleBiomes =====&lt;br /&gt;
&#039;&#039;TODO: Here we play around with some isle biomes&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Isle biomes are biomes that can be placed in other biomes. The biome needs to be smaller (so  BiomeSize  needs to be higher) to be able to spawn in another biome.&lt;br /&gt;
&lt;br /&gt;
When a biome is used as an isle biome  BiomeRarity  works slightly different. It is now very sensitive:  BiomeRarity:100  will make it spawn everywhere in the biome (except at the borders - to fill that area you should use a border biome).  BiomeRarity:99  will make it spawn in about 50% of the biome,  BiomeRarity:98  in 25% of the biome and so on.&lt;br /&gt;
&lt;br /&gt;
Mister_Tesseract has made a detailed tutorial about isle biomes. [https://docs.google.com/document/d/1pVqAE28zkS-eVFyxt3HtnLwEkJrGcPShEORhoGxZbOk/edit Read it here].&lt;br /&gt;
&lt;br /&gt;
===== BorderBiomes =====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
译者注:这是作者还没有完成,不是译者没有翻译&lt;br /&gt;
&lt;br /&gt;
===== IceBiomes =====&lt;br /&gt;
Some parts of the world are marked as &#039;frozen&#039;. If a frozen area is generated on top of a continent, one of the  IceBiomes  will spawn. If a frozen area is generated on top of a river, the biome FrozenRiver will spawn instead. You can toggle this off by setting  FrozenRivers  ([https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig]) to false. If a frozen area is generated on top of an ocean, the biome FrozenOcean will spawn. You can toggle this off by setting  FrozenOcean  ([https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig]) to false.&lt;br /&gt;
&lt;br /&gt;
You can change the probability of the frozen areas by changing the  IceRarity  variable. Lower values give less frozen areas, higher values will make more parts of the map frozen.&lt;br /&gt;
&lt;br /&gt;
Please note that the temperature of the biome is not determined by adding it to the  IceBiomes  list, but by the  BiomeTemperature  variable in the BiomeConfigs. You can have cold biomes in the  NormalBiomes  list (Taiga is an example of that in the default configs), and you can have hot biomes in the  IceBiomes  list. This makes the name  IceBiomes  a little misleading.&lt;br /&gt;
&lt;br /&gt;
===== CustomBiomes =====&lt;br /&gt;
By default only the vanilla biomes are in the BiomeConfigs folder. To add your own biome you must first add it to the  CustomBiomes  list. This will make Terrain Control generate it&#039;s settings file (or use the file if it already exists). However, it doesn&#039;t generate them in the world. Just like the vanilla biomes you must add it to one or more of the four biome lists. So your custom biome is always on at least two places in the WorldConfig.ini. &lt;br /&gt;
&lt;br /&gt;
(However, you can also let your biomes generate from an image, in which you just add it to the  CustomBiomes  list and to the image. More about that [https://github.com/MCTCP/TerrainControl/wiki/Creating-a-world-from-an-image over here].)&lt;br /&gt;
&lt;br /&gt;
After each entry in the list you will see a &amp;quot;:&amp;quot; with a number after it (if you don&#039;t add it by yourself, Terrain Control will add it):&lt;br /&gt;
&lt;br /&gt;
 CustomBiomes:MyBiome:50,MyOtherBiome:51 &lt;br /&gt;
&lt;br /&gt;
This is the biome id which is saved in the world. Never change this without resetting the world! (Imagine you had a custom Jungle biome with id 50, and now the id 50 is used by a snow biome. This would cause all custom Jungles to be frozen!) Also, never use a id that is already in use by vanilla. Currently vanilla uses the ids 0-22, but as new biomes are added to vanilla, new biome ids will be used. If you use a biome id above 40 you should be save for a very long time.&lt;br /&gt;
&lt;br /&gt;
==== Basic biomes customization ====&lt;br /&gt;
This page focuses on the basics of creating and editing biomes including changing ground and water blocks, ore generation, tree/plant spawning and creating hills/pits. For info on the  ReplacedBlocks  feature, using  CustomHeightControl  and more difficult features like waterfalls see Advance Biomes Customization (Under Construction).&lt;br /&gt;
&lt;br /&gt;
Biome editing may be broken into four main parts: biome placement, terrain shape, biome population and appearance. For information on biome placement see [https://github.com/MCTCP/TerrainControl/wiki/Basic-world-customization this tutorial].&lt;br /&gt;
&lt;br /&gt;
===== Terrain shape =====&lt;br /&gt;
The basic shape of the terrain is affected by a lt of variables. You can change the height, how hilly it is and up to what level air blocks should be filled with water blocks. The shape of the terrain is forming during the first pass of terrain generation, just after the biomes have been calculated.&lt;br /&gt;
&lt;br /&gt;
====== Terrain height ======&lt;br /&gt;
The first and most important variable in determining a biomes height is the  BiomeHeight  setting. This variable is dependent on what  WorldHeightBits  is set to in the worldconfig. Minecraft divides the terrain height it generates into equal positive and negative values with a  BiomeHeight  of 0.0 representing the middle. On default settings ( WorldHeightBits:7 ) the terrain will generate up to 128 blocks in height, which would put  BiomeHeight:0.0  at y=64. If  WorldHeightBits  is changed to 8 then the generation height doubles to 256, and every height settings effect roughly doubles.  BiomeHeight:0.0  becomes y=128 and upping it to 0.1 will have double the effect of raising it to 0.1 on  WorldHeightBits:7 . Upping the  WorldHeightBits  to 8 is necessary to get terrain generation up to the maximum of 256.  WorldHeightBits  may be lowered to have the opposite effect, with each step lower the terrain generation max height will be cut in half. A  WorldHeightBits  of 6 would not generate terrain above y=64. Note: these two features do not work if the generator is set to  OldGenerator  in the [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig].&lt;br /&gt;
&lt;br /&gt;
Changing  ExtraBiomeHeight  can create overhangs and cliffs 8 times its value. Changing  ExtraHeightConstrictWaist  determines how the cliffs generate. Keeping values between -0.4 and 1.0, positive values give the cliffs an hour glass like shape by removing the middle region ( 4 x ExtraBiomeHeight ). Greater than 1.0 can cause hanging and floating terrain. Negative values cause the middle region ( 4 x ExtraBiomeHeight ) to expand. Decreasing below -0.4 can start to create shelves that can have massive caves beneath.&lt;br /&gt;
&lt;br /&gt;
The following table can help with determining what height settings to use based on  WorldHeightBits  of 7 and 8. Do not use -2.0 as a  BiomeHeight  setting as this is bugged (causes a division by zero). Also note the terrain will not generate to the max of 256 and will stop at 255, if not a few blocks before that.  BiomeHeight  may have any value between -10 and 10, although any value above/below 4/-4 has no further effect.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! BiomeHeight !! WorldHeightBits:7 !! WorldHeightBits:8&lt;br /&gt;
|-&lt;br /&gt;
| -4 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| -3.5 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| -3 || 16 || 28&lt;br /&gt;
|-&lt;br /&gt;
| -2.5 || 24 || 45&lt;br /&gt;
|-&lt;br /&gt;
| -2 || Error || Error&lt;br /&gt;
|-&lt;br /&gt;
| -1.99 || 32 || 60&lt;br /&gt;
|-&lt;br /&gt;
| -1.5 || 40 || 78&lt;br /&gt;
|-&lt;br /&gt;
| -1 || 48 || 95&lt;br /&gt;
|-&lt;br /&gt;
| -0.5 || 57 || 111&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 67 || 128&lt;br /&gt;
|-&lt;br /&gt;
| 0.5 || 76 || 144&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 85 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 1.5 || 94 || 173&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 102 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 2.5 || 111 || 207&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 119 || 223&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 128 || 240&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 128 || 255&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Terrain volatility ======&lt;br /&gt;
There are a lot of settings to fine-tune how hilly the terrain is. The most important of them is  BiomeVolatility . Increasing it will make the terrain more hilly. 0.0 makes the terrain almost flat. A value of 1.0 will give you hills. 2.0 gives you cliffs. Just like  BiomeHeight  the effects are doubled on  WorldHeightBits:8 . This setting does not work on  TerrainMode:OldGenerator .&lt;br /&gt;
&lt;br /&gt;
===== Biome population =====&lt;br /&gt;
During the second pass of terrain generation the biomes are populated with resources like ores, trees, custom objects, flowers, tall grasses and small ponds above/below sea level. After this is done, biomes with a low  BiomeTemperature  will be covered in snow.&lt;br /&gt;
&lt;br /&gt;
You can find all resources in the [https://github.com/MCTCP/TerrainControl/wiki/Resources-queue Resources queue].&lt;br /&gt;
&lt;br /&gt;
===== Appearance =====&lt;br /&gt;
There are things that haven&#039;t got anything to do with terrain generation, but that you still want to change. For exampe, uou can edit the colors and weather of the biome. Sadly, the vanilla singleplayer client will ignore all those settings. It will also display custom (non-vanilla) biomes with the colors and weather of the plains biome. Players will need to install the Forge version of Terrain Control to fix this.&lt;br /&gt;
&lt;br /&gt;
These settings, along with a description, can be found [https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs#wiki-biome-visual-settings here].&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== A TerrainControl Analysis ====&lt;br /&gt;
===== Slice It Up =====&lt;br /&gt;
A TerrainControl Analysis by Mister_Tesseract, modified by the community.&lt;br /&gt;
&lt;br /&gt;
This page has been copied from [https://docs.google.com/document/d/1pVqAE28zkS-eVFyxt3HtnLwEkJrGcPShEORhoGxZbOk/edit here] over to the wiki. Discuss this article in [http://dev.bukkit.org/bukkit-plugins/terrain-control/forum/43563-a-terrain-control-analysis/ this forum thread].&lt;br /&gt;
&lt;br /&gt;
===== Table of contents =====&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#introduction Introduction]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#defaults The chosen “default” values for the variables]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#generation-process Generation Process]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#icesize-and-ice-biomes IceSize and Ice Biomes]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#border-and-isle-biomes Border and Isle Biomes]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#biomerarity BiomeRarity]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#biomecolor BiomeColor]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#riverbiome RiverBiome]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#biometemperature-and-biomewetness BiomeTemperature and BiomeWetness]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#replacetobiomename ReplaceToBiomeName]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#biomeheight BiomeHeight]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#fracturehorizontal-and-fracturevertical FractureHorizontal and FractureVertical]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#biomevolatility BiomeVolatility]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#maxaverageheight-and-maxaveragedepth MaxAverageHeight and MaxAverageDepth]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#volatility1-and-volatility2 Volatility1 and Volatility2]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#customheightcontrol CustomHeightControl]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#surfaceblock-and-groundblock SurfaceBlock and GroundBlock]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#useworldwaterlevel UseWorldWaterLevel]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#replacedblocks ReplacedBlocks]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#biome-visual-settings Biome visual settings]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#credits Credits]&lt;br /&gt;
&lt;br /&gt;
===== Introduction =====&lt;br /&gt;
[https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#top Back to top]&lt;br /&gt;
&lt;br /&gt;
Hello and thank you for your interest in this research about TerrainControl. I, Mister_Tesseract, call it a “research” and not a “tutorial” because it is more than a tutorial in that it tries to understand how the plugin works beyond what you really need to make it work in a general purpose. It is also less than a tutorial because it doesn’t provide many how-to’s (but perhaps I will do that a little more in the future). My ambition with this research is that after reading this once it is complete, you should be able to understand the deep mechanics that rule the TerrainControl generator enough to make virtually every possible biome in Minecraft.&lt;br /&gt;
&lt;br /&gt;
Why not a simple step-by-step tutorial? I see two main reasons for this.&lt;br /&gt;
&lt;br /&gt;
The first one is that TerrainControl is such a complex and vaste plugin that you cannot learn much from a step-by-step tutorial that would teach you how to make just one biome and then leave you on your own. There are so many parameters in TerrainControl that a tutorial would need to guide you through the creation of at least ten different biomes in order to have you get a glimpse of what it can do.&lt;br /&gt;
&lt;br /&gt;
The second reason, a more personal one, is that it’s not my style to make that kind of tutorial. I have studied physics (and epistemology a little) and all that science gives you a methodology you cannot get out of your head just like that (and it’s so cool). So I set up an experimental protocol, I take measurements, I estimate margins of error, and I try to find applications for the newly acquired knowledge, which is pretty much what researchers do. This method cannot lead to a how-to tutorial without loss of information. But in the future I’m probably going to try and make a “generic” how-to which will explain in what order it is best to build a biome.&lt;br /&gt;
&lt;br /&gt;
Obviously, I could look inside the source code and find the exact laws that rule the TerrainControl plugin and the Minecraft generator (or maybe I’ll find nothing at all) but believe me or not, I do this as if it was part of the game ; and I actually find it interesting and funny. In other words, I’m like a Minecraft crazy scientist trying to find the laws of the creation the universe.&lt;br /&gt;
&lt;br /&gt;
Sometimes I might not be very clear in my explanations, and I apologize in advance for anything you couldn’t understand and that is due to my lack of clarity. Such clarity is one of my objectives but my priority was to finish a first version in order to release it as soon as possible. Hopefully that clarity will soon stop being a problem thanks to your feedback.&lt;br /&gt;
&lt;br /&gt;
I try to use generated map images (with the command /tc map) as much as possible but sometimes I had to make more precise measurements, or it just didn’t help to have a map image (for instance when the image doesn’t show altitude). Here is the method I followed when a map image was not enough to fulfill the requirements in precision:&lt;br /&gt;
1.Create a world config with only one Biome in addition to Ocean and use it in a new world.&lt;br /&gt;
2.Delete the region folder if there is one.&lt;br /&gt;
3.Start the game in that world and make measurements about height, slope and shape of the terrain, and vegetation and ores.&lt;br /&gt;
4.Change a setting in the Biome config and save.&lt;br /&gt;
5.Quit the game.&lt;br /&gt;
6.Repeat from 2. until having enough measurements to have an accurate enough idea of the curve’s behaviour.&lt;br /&gt;
&lt;br /&gt;
What I am looking for in this research is pertinence in terms of utility and not necessarily finding the exact inflection point of a function. For example, sometimes I will indicate what happens if you set a value inferior to -0.25 for  MaxAverageHeight , but if you go at -0.20 it won&#039;t change very much so I could have put -0.20 to be more precise in my work. But the value -0.25 is safe and precise enough to be used as a zero and the lost information is a low cost compared to the time it would take to find the limit with better precision. This is what I mean by ‘utility’.&lt;br /&gt;
&lt;br /&gt;
This partially explains the absence of regular intervals in the tables. You will also find odd values like 3.62 followed by 4.0 which seem close enough but I kept the measurement made at 3.62 because it gives a better idea of how strong you have to go down from 256.&lt;br /&gt;
&lt;br /&gt;
There is also the default irregularity in terrain when all values are zero or close to their minimal effect. This doesn’t allow a perfect output in layer numbers because the terrain is not perfectly flat, even in the flattest areas (with most settings). I decided to choose the layer of floor that seemed to be the most represented in my environment after looking around a little, which was closest to the idea of an average/median value.&lt;br /&gt;
&lt;br /&gt;
This study is evaluating every separate variable all other things being equal. If you have different results it is probably because you changed two variables at once. Some combinations of several variable changes will give expected results and some won’t. It is already a huge work to study each variable separately ; I probably won’t step into the details of studying every couple or triplet because it would take a very long time.&lt;br /&gt;
&lt;br /&gt;
A very important point about all this research is that I write things here as I discover them. The facts (measurements) are obviously real and you will be able to reproduce them at will; but my interpretation is relative and it is always possible that a new fact comes burn my paradigm down to ashes. It happened to me when I came to Border and Isle biomes, as their size couldn’t match my interpretation. I then had to start from square one with world generation.&lt;br /&gt;
&lt;br /&gt;
Conclusion: take every interpretation I make about this with a grain of salt. This is science, and as Karl Popper established it, if it’s science, then it can be tested. Even the most certain knowledge can be rammed down by the tiniest new fact. That is why I encourage you to comment and tell me when I’m wrong so the interpretation can be rebuilt and our knowledge in TerrainControl can see progress.&lt;br /&gt;
&lt;br /&gt;
===== The chosen “default” values for the variables =====&lt;br /&gt;
[https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#top Back to top]&lt;br /&gt;
&lt;br /&gt;
The values and effects provided here were determined with using this [http://pastebin.com/RdG7BEGx WorldConfig.ini] with a flat, resourceless [http://pastebin.com/npbudUdJ PlainsBiomeConfig.ini] biome. There are a few differences with default/vanilla settings:&lt;br /&gt;
* WorldHeightBits  = 8 (max land height = 28 = 256) so regular land will be at layer 128 (instead of 64 for vanilla Minecraft). The default value for this is usually 7, which prevents land from appearing above layer 128.&lt;br /&gt;
* Almost every biome value is 0.0. The values that differ from zero are  VolatilityWeight1  and  VolatilityWeight2  because their default values are repectively 0.5 and 0.45. Sometimes  BiomeVolatility  is 0.1 instead of 0.0 because it looks like other variables are multiplied by  BiomeVolatility  and 0.0 would nullify them.&lt;br /&gt;
* No resources at all, for faster generation: it’s a lot of work for the computer to generate a new map at every game, and finding ores is of course not the objective. This is true for doing research like mine, but it is also true when it comes to creating custom biomes. There will be a point where you’ll be reloading a new map every 60 seconds and change the value by 0.05 in order to get the fine tune. Then you want to go as fast as possible and resource generation takes a lot of processing time. That is why ore, trees and mob distribution is the thing you want to create in last position in your biome, especially with a slow computer. Of course, when it will come to researching about ore generation, it will be included as well.&lt;br /&gt;
&lt;br /&gt;
===== Generation Process =====&lt;br /&gt;
[https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#top Back to top]&lt;br /&gt;
&lt;br /&gt;
This part is about how I view how terrain generation works. I have acquired a good comprehension of it after reading this thread on the forums of dev.bukkit.org and I have developed my own way to formulating it but it’s basically the same explanation.&lt;br /&gt;
&lt;br /&gt;
I wanted to explain separately  WorldConfig.ini  and  xBiomeConfig.ini  but it’s not possible to do without gaps or redundancy so I’m going to explain both of them as a whole. You will just have to figure out yourself where each variable stands.&lt;br /&gt;
&lt;br /&gt;
One thing that I want to point at is that you can use any seed for TerrainControl. I noticed on the bukkit forums that some people kept using the seed “tim1998+steps1956” (which is not more special than any other seed). It is not mandatory at all. Every seed will work with TerrainControl, just like every seed works in the vanilla game.&lt;br /&gt;
&lt;br /&gt;
The smallest unit of size that the generator can create is 1 chunk. By default, GenerationDepth has a value which is around 10. Every new increase of 1 for GenerationDepth is a double in size for the largest thing the generator will be able to generate. The biggest possible size for a generated surface will then be 2&amp;lt;sup&amp;gt;GenerationDepth&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note&#039;&#039;&#039;: the following description is not true for biomes set as Border or Isle, only for normal Biomes. Borders and Isles will be explained right after.&lt;br /&gt;
&lt;br /&gt;
At first, the world is a full Ocean. Once  GenerationDepth  is determined, the generator will add land areas (not biomes yet, only landmass) on that Ocean. This depends on three parameters:  LandSize ,  LandRarity  and  LandFuzzy .&lt;br /&gt;
&lt;br /&gt;
LandRarity  has “useful” values from 90 to 99 (100 if you want very little or no Ocean). It’s not a linear function, so below 94 it’s very difficult to find any land.&lt;br /&gt;
&lt;br /&gt;
LandSize  will determine size of landmasses, and then the generator will add ice areas with  IceSize  the same way.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-S3.png]]&lt;br /&gt;
&lt;br /&gt;
LandFuzzy  adds irregularities to the landmass borders (maybe biome borders ?). Its value has to be between 0 and  GenerationDepth - LandSize  because those irregularities use the accuracy of the generator. with value 0 there won’t be any fuzzy added to the land borders, and maximum  LandFuzzy  values will add lots of irregularities which size will vary from half of the landsize  (LandSize - 1)  to 1 chunk.&lt;br /&gt;
&lt;br /&gt;
After that, the generator will fill in the biomes, from the largest (small  BiomeSize  value) to the tiniest (large  BiomeSize  value).&lt;br /&gt;
&lt;br /&gt;
I’ve determined that the biggest sized item the generator can create will be roughly 2GenerationDepth times bigger than 1 chunk.&lt;br /&gt;
&lt;br /&gt;
Demonstration: 1. Open a reset world. 2. Go to coordinates 0,0 and look towards east. 3. Go forward until you step on a new biome, then stop. 4. Note your coordinates which are at the limit between biomes (x or z should be 0). 5. Increase GenerationDepth by 1. Reset the world and open it again. 6. Repeat steps 2 to 5 as many times as desired.&lt;br /&gt;
&lt;br /&gt;
These are the results I got :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! GenerationDepth !! Distance&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 34&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 67&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 136&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 269&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you look well you may notice that the distance doubles when increasing  GenerationDepth  by 1. In every direction it’s the same pattern.&lt;br /&gt;
&lt;br /&gt;
The following table is a direct consequence of that. With a biome taken from the first line, you can find biomes smaller than half a chunk because of other settings. I made it with a special biome with a very high BiomeHeight. It made it easier to spot while researching for  GenerationDepth  and other size variables.&lt;br /&gt;
&lt;br /&gt;
Note that the same table can be used for  BiomeSize  and  IceSize  instead of  LandSize .&lt;br /&gt;
&lt;br /&gt;
Because the values in this table are theoretical, the size of biomes, land and iceland will differ from the values indicated here but a biome A with 1 more in BiomeSize than a biome B will always have approximately 4 times the surface of biome B. I have still to determine an acceptable margin of error for this ; until then it should be accepted as a good enough approximation that two biomes with the same size class have a surface ratio inferior to 4, and two biomes with 1 in size class difference should have a surface ratio between 2 and 8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LandSize !! GD - LandSize !! Land size in chunks !! Land size in blocks&lt;br /&gt;
|-&lt;br /&gt;
| GD || 0 || 1 || 16x16 = 256&lt;br /&gt;
|-&lt;br /&gt;
| GD-1 || 1 || 4 (not 2 because it’s a surface and 2*2=4) || 32x32 = 1.024&lt;br /&gt;
|-&lt;br /&gt;
| GD-2 || 2 || 16 || 64x64 = 4.096&lt;br /&gt;
|-&lt;br /&gt;
| GD-3 || 3 || 64 || 128x128 = 16.384&lt;br /&gt;
|-&lt;br /&gt;
| GD-4 || 4 || 256 || 256x256 = 65.536&lt;br /&gt;
|-&lt;br /&gt;
| GD-5 || 5 || 1024 || 512x512 = 260.000&lt;br /&gt;
|-&lt;br /&gt;
| GD-6 || 6 || 4096 || 1024x1024 = 1.000.000&lt;br /&gt;
|-&lt;br /&gt;
| ... || ... || ... || ...&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GD-1 || 4GD-1 || 2GD-1x2GD-1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GD || 4GD || 2GDx2GD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Recap :&lt;br /&gt;
* GenerationDepth  : Largest possible size for an item.&lt;br /&gt;
* GenerationDepth - Landsize : The bigger it is, the bigger the land size.&lt;br /&gt;
* GenerationDepth - Icesize  : The bigger it is, the bigger the ice size.&lt;br /&gt;
* GenerationDepth - BiomeSize  : The bigger it is, the bigger the biome size (not true for Isle Biomes).&lt;br /&gt;
* A decrease of 1 in size class means a double size in blocks.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-S4.png]]&lt;br /&gt;
&lt;br /&gt;
== The settings explained ==&lt;br /&gt;
=== Variable names ===&lt;br /&gt;
=== WorldConfig ===&lt;br /&gt;
=== BiomeConfigs ===&lt;br /&gt;
=== PluginConfig ===&lt;br /&gt;
=== BO2 Objects ===&lt;br /&gt;
=== BO3 Objects ===&lt;br /&gt;
=== Land Fuzzy ===&lt;br /&gt;
== Other pages ==&lt;br /&gt;
=== Examples page ===&lt;br /&gt;
=== Commands and Permissions ===&lt;br /&gt;
=== Compatibility with other mods ===&lt;br /&gt;
=== Compatibility with WorldPainter ===&lt;br /&gt;
== External tutorials ==&lt;br /&gt;
* General tutorial by mysource&lt;br /&gt;
* Effect of the seed on a map and working with higher (y&amp;gt;128) worlds by mysource&lt;br /&gt;
* Achieve certain world styles by mysource&lt;br /&gt;
* Create a map by image by mysource&lt;br /&gt;
* World merging by mysource&lt;br /&gt;
* How Terrain Control&#039;s biome generator works by Khoorn&lt;br /&gt;
* Cave variables explained by thedeadlytao&lt;br /&gt;
* GenerationDepth and LandSize/Rarity Explained by thedeadlytao&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2368</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2368"/>
		<updated>2016-02-15T01:37:57Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{模板:待完善}}&lt;br /&gt;
翻译者注：此插件的API和Event部分的翻译，因为水平原因，无法完成，希望有经验的帮忙翻一下=A=&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
=== vote: ===&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
=== debug: ===&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
== API ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
  The new API allows for developers to get feedback on whether or not transactions occurred. While you can still use the old methods of calling       &lt;br /&gt;
  console commands, these methods will allow you to accomplish the same thing without having to go through console.&lt;br /&gt;
  In your plugin.yml, make sure to add your dependency on PlayerPoints. &lt;br /&gt;
  Either:&lt;br /&gt;
  *depend: [PlayerPoints]&lt;br /&gt;
  Or:&lt;br /&gt;
  *softdepend: [PlayerPoints]&lt;br /&gt;
  During enable, you need to grab the PlayerPoints plugin instance and save that reference somewhere as you will be using the API through it.&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    import org.black_ixx.playerpoints.PlayerPoints;&lt;br /&gt;
&lt;br /&gt;
    private PlayerPoints playerPoints;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Validate that we have access to PlayerPoints&lt;br /&gt;
     *&lt;br /&gt;
     * @return True if we have PlayerPoints, else false.&lt;br /&gt;
     */&lt;br /&gt;
    private boolean hookPlayerPoints() {&lt;br /&gt;
        final Plugin plugin = this.getServer().getPluginManager().getPlugin(&amp;quot;PlayerPoints&amp;quot;);&lt;br /&gt;
        playerPoints = PlayerPoints.class.cast(plugin);&lt;br /&gt;
        return playerPoints != null; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Accessor for other parts of your plugin to retrieve PlayerPoints.&lt;br /&gt;
     *&lt;br /&gt;
     * @return PlayerPoints plugin instance&lt;br /&gt;
     */&lt;br /&gt;
    public PlayerPoints getPlayerPoints() {&lt;br /&gt;
        return playerPoints;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  If its not enabled, you&#039;re going to have to handle that situation accordingly.&lt;br /&gt;
&lt;br /&gt;
  -If it is enabled, then utilizing the API is rather simple. You don&#039;t need to get an instance, or hold onto some object. All you have to do   &lt;br /&gt;
  is call the method from static class.- The static access of the API had to be changed in order to service situations where multiple linked   &lt;br /&gt;
  servers are referencing the same MySQL table.&lt;br /&gt;
&lt;br /&gt;
  Now, you access the API through the plugin instance that we saved earlier. All the methods of the API are the same as before. &lt;br /&gt;
  Example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
      int balance = playerPoints.getAPI().look(&amp;quot;Player&amp;quot;);&lt;br /&gt;
      The above code will return the amount of points that the player named &amp;quot;Player&amp;quot; has.&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  Another example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    if(playerPoints.getAPI().take(&amp;quot;Player&amp;quot;, 100)) {&lt;br /&gt;
    	//Success&lt;br /&gt;
    } else {&lt;br /&gt;
       //Failed, probably not enough points&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  The above code attempts to take 100 points away from the player &amp;quot;Player&amp;quot;. As mentioned before, you get feedback on the operation on whether or       &lt;br /&gt;
  not it succeeded in performing the transaction.&lt;br /&gt;
&lt;br /&gt;
=== JavaDocs ===&lt;br /&gt;
  All the methods in the API have JavaDocs. Here is a copy of that reference.&lt;br /&gt;
&lt;br /&gt;
  give(String playername, int amount)&lt;br /&gt;
    Gives points to specified player&lt;br /&gt;
    Returns: true if we successfully adjusted points, else false&lt;br /&gt;
  take(String playername, int amount)&lt;br /&gt;
    Take points from specified player. If amount given is not already negative, it is done internally.&lt;br /&gt;
    Returns: true if they had enough points to be removed, else false.&lt;br /&gt;
  look(String playername)&lt;br /&gt;
    Look up the current points of a player, if available. If the player is not in the config file, we default to 0.&lt;br /&gt;
    Returns: integer of the amount of points the player has&lt;br /&gt;
  pay(String sorce, String target, int amount)&lt;br /&gt;
    Transfer points from one player to another. Attempts to take the points, if available, from the source player account and then attempts &lt;br /&gt;
     to give that amount to the target player account. If the give portion fails, the amount taken is returned to the source player account.&lt;br /&gt;
    Returns: true if the transfer succeeded, else false.&lt;br /&gt;
  set(String playername, int amount)&lt;br /&gt;
    Sets a player&#039;s points to the given value. This overwrites whatever current amount they had before.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
  reset(String playername)&lt;br /&gt;
    Removes the player from the config, effectively removing the points that the player had.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
== Event ==&lt;br /&gt;
  PlayerPoints sends out events whenever a player&#039;s point amount will be modified.&lt;br /&gt;
  Events can be modified and cancelled.&lt;br /&gt;
=== PlayerPointsChangeEvent ===&lt;br /&gt;
Called when the player&#039;s points will be changed. You get the name of the target player and the amount that it will change by.  &lt;br /&gt;
=== PlayerPointsResetEvent ===&lt;br /&gt;
Called when the player&#039;s points will be reset.&lt;br /&gt;
== GitHub ==&lt;br /&gt;
  [https://github.com/Mitsugaru/PlayerPoints/ 点击此处去GitHub]&lt;br /&gt;
== 相关插件 ==&lt;br /&gt;
  [http://dev.bukkit.org/bukkit-plugins/bossshop/ BossShop（官网地址）]&lt;br /&gt;
  [http://dev.bukkit.org/bukkit-plugins/karmiconomy/ Karmiconomy（官网地址）]&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2367</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2367"/>
		<updated>2016-02-15T01:36:04Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
=== vote: ===&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
=== debug: ===&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
== API ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
  The new API allows for developers to get feedback on whether or not transactions occurred. While you can still use the old methods of calling       &lt;br /&gt;
  console commands, these methods will allow you to accomplish the same thing without having to go through console.&lt;br /&gt;
  In your plugin.yml, make sure to add your dependency on PlayerPoints. &lt;br /&gt;
  Either:&lt;br /&gt;
  *depend: [PlayerPoints]&lt;br /&gt;
  Or:&lt;br /&gt;
  *softdepend: [PlayerPoints]&lt;br /&gt;
  During enable, you need to grab the PlayerPoints plugin instance and save that reference somewhere as you will be using the API through it.&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    import org.black_ixx.playerpoints.PlayerPoints;&lt;br /&gt;
&lt;br /&gt;
    private PlayerPoints playerPoints;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Validate that we have access to PlayerPoints&lt;br /&gt;
     *&lt;br /&gt;
     * @return True if we have PlayerPoints, else false.&lt;br /&gt;
     */&lt;br /&gt;
    private boolean hookPlayerPoints() {&lt;br /&gt;
        final Plugin plugin = this.getServer().getPluginManager().getPlugin(&amp;quot;PlayerPoints&amp;quot;);&lt;br /&gt;
        playerPoints = PlayerPoints.class.cast(plugin);&lt;br /&gt;
        return playerPoints != null; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Accessor for other parts of your plugin to retrieve PlayerPoints.&lt;br /&gt;
     *&lt;br /&gt;
     * @return PlayerPoints plugin instance&lt;br /&gt;
     */&lt;br /&gt;
    public PlayerPoints getPlayerPoints() {&lt;br /&gt;
        return playerPoints;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  If its not enabled, you&#039;re going to have to handle that situation accordingly.&lt;br /&gt;
&lt;br /&gt;
  -If it is enabled, then utilizing the API is rather simple. You don&#039;t need to get an instance, or hold onto some object. All you have to do   &lt;br /&gt;
  is call the method from static class.- The static access of the API had to be changed in order to service situations where multiple linked   &lt;br /&gt;
  servers are referencing the same MySQL table.&lt;br /&gt;
&lt;br /&gt;
  Now, you access the API through the plugin instance that we saved earlier. All the methods of the API are the same as before. &lt;br /&gt;
  Example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
      int balance = playerPoints.getAPI().look(&amp;quot;Player&amp;quot;);&lt;br /&gt;
      The above code will return the amount of points that the player named &amp;quot;Player&amp;quot; has.&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  Another example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    if(playerPoints.getAPI().take(&amp;quot;Player&amp;quot;, 100)) {&lt;br /&gt;
    	//Success&lt;br /&gt;
    } else {&lt;br /&gt;
       //Failed, probably not enough points&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  The above code attempts to take 100 points away from the player &amp;quot;Player&amp;quot;. As mentioned before, you get feedback on the operation on whether or       &lt;br /&gt;
  not it succeeded in performing the transaction.&lt;br /&gt;
&lt;br /&gt;
=== JavaDocs ===&lt;br /&gt;
  All the methods in the API have JavaDocs. Here is a copy of that reference.&lt;br /&gt;
&lt;br /&gt;
  give(String playername, int amount)&lt;br /&gt;
    Gives points to specified player&lt;br /&gt;
    Returns: true if we successfully adjusted points, else false&lt;br /&gt;
  take(String playername, int amount)&lt;br /&gt;
    Take points from specified player. If amount given is not already negative, it is done internally.&lt;br /&gt;
    Returns: true if they had enough points to be removed, else false.&lt;br /&gt;
  look(String playername)&lt;br /&gt;
    Look up the current points of a player, if available. If the player is not in the config file, we default to 0.&lt;br /&gt;
    Returns: integer of the amount of points the player has&lt;br /&gt;
  pay(String sorce, String target, int amount)&lt;br /&gt;
    Transfer points from one player to another. Attempts to take the points, if available, from the source player account and then attempts &lt;br /&gt;
     to give that amount to the target player account. If the give portion fails, the amount taken is returned to the source player account.&lt;br /&gt;
    Returns: true if the transfer succeeded, else false.&lt;br /&gt;
  set(String playername, int amount)&lt;br /&gt;
    Sets a player&#039;s points to the given value. This overwrites whatever current amount they had before.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
  reset(String playername)&lt;br /&gt;
    Removes the player from the config, effectively removing the points that the player had.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
== Event ==&lt;br /&gt;
  PlayerPoints sends out events whenever a player&#039;s point amount will be modified.&lt;br /&gt;
  Events can be modified and cancelled.&lt;br /&gt;
=== PlayerPointsChangeEvent ===&lt;br /&gt;
Called when the player&#039;s points will be changed. You get the name of the target player and the amount that it will change by.  &lt;br /&gt;
=== PlayerPointsResetEvent ===&lt;br /&gt;
Called when the player&#039;s points will be reset.&lt;br /&gt;
== GitHub ==&lt;br /&gt;
  [https://github.com/Mitsugaru/PlayerPoints/ 点击此处去GitHub]&lt;br /&gt;
== 相关插件 ==&lt;br /&gt;
  [http://dev.bukkit.org/bukkit-plugins/bossshop/ BossShop（官网地址）]&lt;br /&gt;
  [http://dev.bukkit.org/bukkit-plugins/karmiconomy/ Karmiconomy（官网地址）]&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2366</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2366"/>
		<updated>2016-02-15T01:32:47Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​搬运Event原文，由于是编程开发类的，水平不足，怕翻译错误，请有相关经验的帮翻译下=A= Thanks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
=== vote: ===&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
=== debug: ===&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
== API ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
  The new API allows for developers to get feedback on whether or not transactions occurred. While you can still use the old methods of calling       &lt;br /&gt;
  console commands, these methods will allow you to accomplish the same thing without having to go through console.&lt;br /&gt;
  In your plugin.yml, make sure to add your dependency on PlayerPoints. &lt;br /&gt;
  Either:&lt;br /&gt;
  *depend: [PlayerPoints]&lt;br /&gt;
  Or:&lt;br /&gt;
  *softdepend: [PlayerPoints]&lt;br /&gt;
  During enable, you need to grab the PlayerPoints plugin instance and save that reference somewhere as you will be using the API through it.&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    import org.black_ixx.playerpoints.PlayerPoints;&lt;br /&gt;
&lt;br /&gt;
    private PlayerPoints playerPoints;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Validate that we have access to PlayerPoints&lt;br /&gt;
     *&lt;br /&gt;
     * @return True if we have PlayerPoints, else false.&lt;br /&gt;
     */&lt;br /&gt;
    private boolean hookPlayerPoints() {&lt;br /&gt;
        final Plugin plugin = this.getServer().getPluginManager().getPlugin(&amp;quot;PlayerPoints&amp;quot;);&lt;br /&gt;
        playerPoints = PlayerPoints.class.cast(plugin);&lt;br /&gt;
        return playerPoints != null; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Accessor for other parts of your plugin to retrieve PlayerPoints.&lt;br /&gt;
     *&lt;br /&gt;
     * @return PlayerPoints plugin instance&lt;br /&gt;
     */&lt;br /&gt;
    public PlayerPoints getPlayerPoints() {&lt;br /&gt;
        return playerPoints;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  If its not enabled, you&#039;re going to have to handle that situation accordingly.&lt;br /&gt;
&lt;br /&gt;
  -If it is enabled, then utilizing the API is rather simple. You don&#039;t need to get an instance, or hold onto some object. All you have to do   &lt;br /&gt;
  is call the method from static class.- The static access of the API had to be changed in order to service situations where multiple linked   &lt;br /&gt;
  servers are referencing the same MySQL table.&lt;br /&gt;
&lt;br /&gt;
  Now, you access the API through the plugin instance that we saved earlier. All the methods of the API are the same as before. &lt;br /&gt;
  Example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
      int balance = playerPoints.getAPI().look(&amp;quot;Player&amp;quot;);&lt;br /&gt;
      The above code will return the amount of points that the player named &amp;quot;Player&amp;quot; has.&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  Another example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    if(playerPoints.getAPI().take(&amp;quot;Player&amp;quot;, 100)) {&lt;br /&gt;
    	//Success&lt;br /&gt;
    } else {&lt;br /&gt;
       //Failed, probably not enough points&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  The above code attempts to take 100 points away from the player &amp;quot;Player&amp;quot;. As mentioned before, you get feedback on the operation on whether or       &lt;br /&gt;
  not it succeeded in performing the transaction.&lt;br /&gt;
&lt;br /&gt;
=== JavaDocs ===&lt;br /&gt;
  All the methods in the API have JavaDocs. Here is a copy of that reference.&lt;br /&gt;
&lt;br /&gt;
  give(String playername, int amount)&lt;br /&gt;
    Gives points to specified player&lt;br /&gt;
    Returns: true if we successfully adjusted points, else false&lt;br /&gt;
  take(String playername, int amount)&lt;br /&gt;
    Take points from specified player. If amount given is not already negative, it is done internally.&lt;br /&gt;
    Returns: true if they had enough points to be removed, else false.&lt;br /&gt;
  look(String playername)&lt;br /&gt;
    Look up the current points of a player, if available. If the player is not in the config file, we default to 0.&lt;br /&gt;
    Returns: integer of the amount of points the player has&lt;br /&gt;
  pay(String sorce, String target, int amount)&lt;br /&gt;
    Transfer points from one player to another. Attempts to take the points, if available, from the source player account and then attempts &lt;br /&gt;
     to give that amount to the target player account. If the give portion fails, the amount taken is returned to the source player account.&lt;br /&gt;
    Returns: true if the transfer succeeded, else false.&lt;br /&gt;
  set(String playername, int amount)&lt;br /&gt;
    Sets a player&#039;s points to the given value. This overwrites whatever current amount they had before.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
  reset(String playername)&lt;br /&gt;
    Removes the player from the config, effectively removing the points that the player had.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
== Event ==&lt;br /&gt;
  PlayerPoints sends out events whenever a player&#039;s point amount will be modified.&lt;br /&gt;
  Events can be modified and cancelled.&lt;br /&gt;
=== PlayerPointsChangeEvent ===&lt;br /&gt;
Called when the player&#039;s points will be changed. You get the name of the target player and the amount that it will change by.  &lt;br /&gt;
=== PlayerPointsResetEvent ===&lt;br /&gt;
Called when the player&#039;s points will be reset.&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2283</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2283"/>
		<updated>2016-02-13T13:17:05Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* JavaDocs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
=== vote: ===&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
=== debug: ===&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
== API ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
  The new API allows for developers to get feedback on whether or not transactions occurred. While you can still use the old methods of calling       &lt;br /&gt;
  console commands, these methods will allow you to accomplish the same thing without having to go through console.&lt;br /&gt;
  In your plugin.yml, make sure to add your dependency on PlayerPoints. &lt;br /&gt;
  Either:&lt;br /&gt;
  *depend: [PlayerPoints]&lt;br /&gt;
  Or:&lt;br /&gt;
  *softdepend: [PlayerPoints]&lt;br /&gt;
  During enable, you need to grab the PlayerPoints plugin instance and save that reference somewhere as you will be using the API through it.&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    import org.black_ixx.playerpoints.PlayerPoints;&lt;br /&gt;
&lt;br /&gt;
    private PlayerPoints playerPoints;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Validate that we have access to PlayerPoints&lt;br /&gt;
     *&lt;br /&gt;
     * @return True if we have PlayerPoints, else false.&lt;br /&gt;
     */&lt;br /&gt;
    private boolean hookPlayerPoints() {&lt;br /&gt;
        final Plugin plugin = this.getServer().getPluginManager().getPlugin(&amp;quot;PlayerPoints&amp;quot;);&lt;br /&gt;
        playerPoints = PlayerPoints.class.cast(plugin);&lt;br /&gt;
        return playerPoints != null; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Accessor for other parts of your plugin to retrieve PlayerPoints.&lt;br /&gt;
     *&lt;br /&gt;
     * @return PlayerPoints plugin instance&lt;br /&gt;
     */&lt;br /&gt;
    public PlayerPoints getPlayerPoints() {&lt;br /&gt;
        return playerPoints;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  If its not enabled, you&#039;re going to have to handle that situation accordingly.&lt;br /&gt;
&lt;br /&gt;
  -If it is enabled, then utilizing the API is rather simple. You don&#039;t need to get an instance, or hold onto some object. All you have to do   &lt;br /&gt;
  is call the method from static class.- The static access of the API had to be changed in order to service situations where multiple linked   &lt;br /&gt;
  servers are referencing the same MySQL table.&lt;br /&gt;
&lt;br /&gt;
  Now, you access the API through the plugin instance that we saved earlier. All the methods of the API are the same as before. &lt;br /&gt;
  Example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
      int balance = playerPoints.getAPI().look(&amp;quot;Player&amp;quot;);&lt;br /&gt;
      The above code will return the amount of points that the player named &amp;quot;Player&amp;quot; has.&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  Another example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    if(playerPoints.getAPI().take(&amp;quot;Player&amp;quot;, 100)) {&lt;br /&gt;
    	//Success&lt;br /&gt;
    } else {&lt;br /&gt;
       //Failed, probably not enough points&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  The above code attempts to take 100 points away from the player &amp;quot;Player&amp;quot;. As mentioned before, you get feedback on the operation on whether or       &lt;br /&gt;
  not it succeeded in performing the transaction.&lt;br /&gt;
&lt;br /&gt;
=== JavaDocs ===&lt;br /&gt;
  All the methods in the API have JavaDocs. Here is a copy of that reference.&lt;br /&gt;
&lt;br /&gt;
  give(String playername, int amount)&lt;br /&gt;
    Gives points to specified player&lt;br /&gt;
    Returns: true if we successfully adjusted points, else false&lt;br /&gt;
  take(String playername, int amount)&lt;br /&gt;
    Take points from specified player. If amount given is not already negative, it is done internally.&lt;br /&gt;
    Returns: true if they had enough points to be removed, else false.&lt;br /&gt;
  look(String playername)&lt;br /&gt;
    Look up the current points of a player, if available. If the player is not in the config file, we default to 0.&lt;br /&gt;
    Returns: integer of the amount of points the player has&lt;br /&gt;
  pay(String sorce, String target, int amount)&lt;br /&gt;
    Transfer points from one player to another. Attempts to take the points, if available, from the source player account and then attempts &lt;br /&gt;
     to give that amount to the target player account. If the give portion fails, the amount taken is returned to the source player account.&lt;br /&gt;
    Returns: true if the transfer succeeded, else false.&lt;br /&gt;
  set(String playername, int amount)&lt;br /&gt;
    Sets a player&#039;s points to the given value. This overwrites whatever current amount they had before.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
  reset(String playername)&lt;br /&gt;
    Removes the player from the config, effectively removing the points that the player had.&lt;br /&gt;
    Returns true if successful, else false.&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2282</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2282"/>
		<updated>2016-02-13T13:16:05Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* JavaDocs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
=== vote: ===&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
=== debug: ===&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
== API ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
  The new API allows for developers to get feedback on whether or not transactions occurred. While you can still use the old methods of calling       &lt;br /&gt;
  console commands, these methods will allow you to accomplish the same thing without having to go through console.&lt;br /&gt;
  In your plugin.yml, make sure to add your dependency on PlayerPoints. &lt;br /&gt;
  Either:&lt;br /&gt;
  *depend: [PlayerPoints]&lt;br /&gt;
  Or:&lt;br /&gt;
  *softdepend: [PlayerPoints]&lt;br /&gt;
  During enable, you need to grab the PlayerPoints plugin instance and save that reference somewhere as you will be using the API through it.&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    import org.black_ixx.playerpoints.PlayerPoints;&lt;br /&gt;
&lt;br /&gt;
    private PlayerPoints playerPoints;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Validate that we have access to PlayerPoints&lt;br /&gt;
     *&lt;br /&gt;
     * @return True if we have PlayerPoints, else false.&lt;br /&gt;
     */&lt;br /&gt;
    private boolean hookPlayerPoints() {&lt;br /&gt;
        final Plugin plugin = this.getServer().getPluginManager().getPlugin(&amp;quot;PlayerPoints&amp;quot;);&lt;br /&gt;
        playerPoints = PlayerPoints.class.cast(plugin);&lt;br /&gt;
        return playerPoints != null; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Accessor for other parts of your plugin to retrieve PlayerPoints.&lt;br /&gt;
     *&lt;br /&gt;
     * @return PlayerPoints plugin instance&lt;br /&gt;
     */&lt;br /&gt;
    public PlayerPoints getPlayerPoints() {&lt;br /&gt;
        return playerPoints;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  If its not enabled, you&#039;re going to have to handle that situation accordingly.&lt;br /&gt;
&lt;br /&gt;
  -If it is enabled, then utilizing the API is rather simple. You don&#039;t need to get an instance, or hold onto some object. All you have to do   &lt;br /&gt;
  is call the method from static class.- The static access of the API had to be changed in order to service situations where multiple linked   &lt;br /&gt;
  servers are referencing the same MySQL table.&lt;br /&gt;
&lt;br /&gt;
  Now, you access the API through the plugin instance that we saved earlier. All the methods of the API are the same as before. &lt;br /&gt;
  Example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
      int balance = playerPoints.getAPI().look(&amp;quot;Player&amp;quot;);&lt;br /&gt;
      The above code will return the amount of points that the player named &amp;quot;Player&amp;quot; has.&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  Another example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    if(playerPoints.getAPI().take(&amp;quot;Player&amp;quot;, 100)) {&lt;br /&gt;
    	//Success&lt;br /&gt;
    } else {&lt;br /&gt;
       //Failed, probably not enough points&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  The above code attempts to take 100 points away from the player &amp;quot;Player&amp;quot;. As mentioned before, you get feedback on the operation on whether or       &lt;br /&gt;
  not it succeeded in performing the transaction.&lt;br /&gt;
&lt;br /&gt;
=== JavaDocs ===&lt;br /&gt;
  All the methods in the API have JavaDocs. Here is a copy of that reference.&lt;br /&gt;
&lt;br /&gt;
  * give(String playername, int amount)&lt;br /&gt;
    * Gives points to specified player&lt;br /&gt;
    * Returns: true if we successfully adjusted points, else false&lt;br /&gt;
  * take(String playername, int amount)&lt;br /&gt;
    * Take points from specified player. If amount given is not already negative, it is done internally.&lt;br /&gt;
    * Returns: true if they had enough points to be removed, else false.&lt;br /&gt;
  * look(String playername)&lt;br /&gt;
    * Look up the current points of a player, if available. If the player is not in the config file, we default to 0.&lt;br /&gt;
    * Returns: integer of the amount of points the player has&lt;br /&gt;
  * pay(String sorce, String target, int amount)&lt;br /&gt;
    * Transfer points from one player to another. Attempts to take the points, if available, from the source player account and then attempts &lt;br /&gt;
     to give that amount to the target player account. If the give portion fails, the amount taken is returned to the source player account.&lt;br /&gt;
    * Returns: true if the transfer succeeded, else false.&lt;br /&gt;
  * set(String playername, int amount)&lt;br /&gt;
    * Sets a player&#039;s points to the given value. This overwrites whatever current amount they had before.&lt;br /&gt;
    * Returns true if successful, else false.&lt;br /&gt;
  * reset(String playername)&lt;br /&gt;
    * Removes the player from the config, effectively removing the points that the player had.&lt;br /&gt;
    * Returns true if successful, else false.&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2281</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2281"/>
		<updated>2016-02-13T13:14:44Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​格式编辑&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
=== vote: ===&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
=== debug: ===&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
== API ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
  The new API allows for developers to get feedback on whether or not transactions occurred. While you can still use the old methods of calling       &lt;br /&gt;
  console commands, these methods will allow you to accomplish the same thing without having to go through console.&lt;br /&gt;
  In your plugin.yml, make sure to add your dependency on PlayerPoints. &lt;br /&gt;
  Either:&lt;br /&gt;
  *depend: [PlayerPoints]&lt;br /&gt;
  Or:&lt;br /&gt;
  *softdepend: [PlayerPoints]&lt;br /&gt;
  During enable, you need to grab the PlayerPoints plugin instance and save that reference somewhere as you will be using the API through it.&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    import org.black_ixx.playerpoints.PlayerPoints;&lt;br /&gt;
&lt;br /&gt;
    private PlayerPoints playerPoints;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Validate that we have access to PlayerPoints&lt;br /&gt;
     *&lt;br /&gt;
     * @return True if we have PlayerPoints, else false.&lt;br /&gt;
     */&lt;br /&gt;
    private boolean hookPlayerPoints() {&lt;br /&gt;
        final Plugin plugin = this.getServer().getPluginManager().getPlugin(&amp;quot;PlayerPoints&amp;quot;);&lt;br /&gt;
        playerPoints = PlayerPoints.class.cast(plugin);&lt;br /&gt;
        return playerPoints != null; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Accessor for other parts of your plugin to retrieve PlayerPoints.&lt;br /&gt;
     *&lt;br /&gt;
     * @return PlayerPoints plugin instance&lt;br /&gt;
     */&lt;br /&gt;
    public PlayerPoints getPlayerPoints() {&lt;br /&gt;
        return playerPoints;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  If its not enabled, you&#039;re going to have to handle that situation accordingly.&lt;br /&gt;
&lt;br /&gt;
  -If it is enabled, then utilizing the API is rather simple. You don&#039;t need to get an instance, or hold onto some object. All you have to do   &lt;br /&gt;
  is call the method from static class.- The static access of the API had to be changed in order to service situations where multiple linked   &lt;br /&gt;
  servers are referencing the same MySQL table.&lt;br /&gt;
&lt;br /&gt;
  Now, you access the API through the plugin instance that we saved earlier. All the methods of the API are the same as before. &lt;br /&gt;
  Example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
      int balance = playerPoints.getAPI().look(&amp;quot;Player&amp;quot;);&lt;br /&gt;
      The above code will return the amount of points that the player named &amp;quot;Player&amp;quot; has.&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  Another example:&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
    if(playerPoints.getAPI().take(&amp;quot;Player&amp;quot;, 100)) {&lt;br /&gt;
    	//Success&lt;br /&gt;
    } else {&lt;br /&gt;
       //Failed, probably not enough points&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  The above code attempts to take 100 points away from the player &amp;quot;Player&amp;quot;. As mentioned before, you get feedback on the operation on whether or       &lt;br /&gt;
  not it succeeded in performing the transaction.&lt;br /&gt;
&lt;br /&gt;
=== JavaDocs ===&lt;br /&gt;
  All the methods in the API have JavaDocs. Here is a copy of that reference.&lt;br /&gt;
&lt;br /&gt;
  *give(String playername, int amount)&lt;br /&gt;
    *Gives points to specified player&lt;br /&gt;
    *Returns: true if we successfully adjusted points, else false&lt;br /&gt;
  *take(String playername, int amount)&lt;br /&gt;
    *Take points from specified player. If amount given is not already negative, it is done internally.&lt;br /&gt;
    *Returns: true if they had enough points to be removed, else false.&lt;br /&gt;
  *look(String playername)&lt;br /&gt;
    *Look up the current points of a player, if available. If the player is not in the config file, we default to 0.&lt;br /&gt;
    *Returns: integer of the amount of points the player has&lt;br /&gt;
  *pay(String sorce, String target, int amount)&lt;br /&gt;
    *Transfer points from one player to another. Attempts to take the points, if available, from the source player account and then attempts &lt;br /&gt;
     to give that amount to the target player account. If the give portion fails, the amount taken is returned to the source player account.&lt;br /&gt;
    *Returns: true if the transfer succeeded, else false.&lt;br /&gt;
  *set(String playername, int amount)&lt;br /&gt;
    *Sets a player&#039;s points to the given value. This overwrites whatever current amount they had before.&lt;br /&gt;
    *Returns true if successful, else false.&lt;br /&gt;
  *reset(String playername)&lt;br /&gt;
    *Removes the player from the config, effectively removing the points that the player had.&lt;br /&gt;
    *Returns true if successful, else false.&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2279</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2279"/>
		<updated>2016-02-13T13:05:09Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​搬运API原文，&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
=== vote: ===&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
=== debug: ===&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
== API ==&lt;br /&gt;
Overview&lt;br /&gt;
The new API allows for developers to get feedback on whether or not transactions occurred. While you can still use the old methods of calling console commands, these methods will allow you to accomplish the same thing without having to go through console.&lt;br /&gt;
&lt;br /&gt;
In your plugin.yml, make sure to add your dependency on PlayerPoints. &lt;br /&gt;
Either:&lt;br /&gt;
&lt;br /&gt;
depend: [PlayerPoints]&lt;br /&gt;
Or:&lt;br /&gt;
&lt;br /&gt;
softdepend: [PlayerPoints]&lt;br /&gt;
During enable, you need to grab the PlayerPoints plugin instance and save that reference somewhere as you will be using the API through it.&lt;br /&gt;
&lt;br /&gt;
import org.black_ixx.playerpoints.PlayerPoints;&lt;br /&gt;
&lt;br /&gt;
private PlayerPoints playerPoints;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Validate that we have access to PlayerPoints&lt;br /&gt;
 *&lt;br /&gt;
 * @return True if we have PlayerPoints, else false.&lt;br /&gt;
 */&lt;br /&gt;
private boolean hookPlayerPoints() {&lt;br /&gt;
    final Plugin plugin = this.getServer().getPluginManager().getPlugin(&amp;quot;PlayerPoints&amp;quot;);&lt;br /&gt;
    playerPoints = PlayerPoints.class.cast(plugin);&lt;br /&gt;
    return playerPoints != null; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Accessor for other parts of your plugin to retrieve PlayerPoints.&lt;br /&gt;
 *&lt;br /&gt;
 * @return PlayerPoints plugin instance&lt;br /&gt;
 */&lt;br /&gt;
public PlayerPoints getPlayerPoints() {&lt;br /&gt;
    return playerPoints;&lt;br /&gt;
}&lt;br /&gt;
If its not enabled, you&#039;re going to have to handle that situation accordingly.&lt;br /&gt;
&lt;br /&gt;
-If it is enabled, then utilizing the API is rather simple. You don&#039;t need to get an instance, or hold onto some object. All you have to do is call the method from static class.- The static access of the API had to be changed in order to service situations where multiple linked servers are referencing the same MySQL table.&lt;br /&gt;
&lt;br /&gt;
Now, you access the API through the plugin instance that we saved earlier. All the methods of the API are the same as before. &lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
int balance = playerPoints.getAPI().look(&amp;quot;Player&amp;quot;);&lt;br /&gt;
The above code will return the amount of points that the player named &amp;quot;Player&amp;quot; has. &lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
if(playerPoints.getAPI().take(&amp;quot;Player&amp;quot;, 100)) {&lt;br /&gt;
	//Success&lt;br /&gt;
} else {&lt;br /&gt;
	//Failed, probably not enough points&lt;br /&gt;
}&lt;br /&gt;
The above code attempts to take 100 points away from the player &amp;quot;Player&amp;quot;. As mentioned before, you get feedback on the operation on whether or not it succeeded in performing the transaction.&lt;br /&gt;
&lt;br /&gt;
JavaDocs&lt;br /&gt;
All the methods in the API have JavaDocs. Here is a copy of that reference.&lt;br /&gt;
&lt;br /&gt;
give(String playername, int amount)&lt;br /&gt;
Gives points to specified player&lt;br /&gt;
Returns: true if we successfully adjusted points, else false&lt;br /&gt;
take(String playername, int amount)&lt;br /&gt;
Take points from specified player. If amount given is not already negative, it is done internally.&lt;br /&gt;
Returns: true if they had enough points to be removed, else false.&lt;br /&gt;
look(String playername)&lt;br /&gt;
Look up the current points of a player, if available. If the player is not in the config file, we default to 0.&lt;br /&gt;
Returns: integer of the amount of points the player has&lt;br /&gt;
pay(String sorce, String target, int amount)&lt;br /&gt;
Transfer points from one player to another. Attempts to take the points, if available, from the source player account and then attempts to give that amount to the target player account. If the give portion fails, the amount taken is returned to the source player account.&lt;br /&gt;
Returns: true if the transfer succeeded, else false.&lt;br /&gt;
set(String playername, int amount)&lt;br /&gt;
Sets a player&#039;s points to the given value. This overwrites whatever current amount they had before.&lt;br /&gt;
Returns true if successful, else false.&lt;br /&gt;
reset(String playername)&lt;br /&gt;
Removes the player from the config, effectively removing the points that the player had.&lt;br /&gt;
Returns true if successful, else false.&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2274</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2274"/>
		<updated>2016-02-13T11:16:25Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Config（配置文件） */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
 这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
   如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
   如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
 Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）&amp;lt;br /&amp;gt; 这些版本没有经过BukkitDev 的批准。需要构建者自己承担风险。&lt;br /&gt;
 http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
 在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
:*可以将点券给予玩家。&lt;br /&gt;
:*可以从玩家那里拿去点券。&lt;br /&gt;
:*向玩家支付点券。&lt;br /&gt;
:*查看看其他玩家拥有多少点券？&lt;br /&gt;
:*查看你有多少点券？&lt;br /&gt;
:*排行榜&lt;br /&gt;
:*支持设置权限来限制。&lt;br /&gt;
:*可选Vault的支持&lt;br /&gt;
:*用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql: ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  *host:数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  *port: 数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  *database: 数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  *user:登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  *password:登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    *use:如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;br /&gt;
== vote: ==&lt;br /&gt;
  *enabled: Whether or not to use the Votifier listener (Default: false)&lt;br /&gt;
  *amount: Amount of points to give on a vote event (Default: 100)&lt;br /&gt;
  *online: Whether the player must be online to receive the points (Default: false)&lt;br /&gt;
== debug: ==&lt;br /&gt;
  *database: 开启数据库连接的报错显示（这个选项的默认参数是false）&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:修正]]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2226</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2226"/>
		<updated>2016-02-12T13:31:48Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{模板:待完善}}&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
== 有用的一些前置插件 ==&lt;br /&gt;
  Player Points - 允许使用另外的一种货币（点券）。&lt;br /&gt;
  Scheduled Commands - 当你需要在一段时间后执行命令。&lt;br /&gt;
  Info Book - 一个管理书籍的插件&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;Sell dirt&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
== Github ==&lt;br /&gt;
  https://github.com/filoghost/ChestCommands&lt;br /&gt;
== 捐助 ==&lt;br /&gt;
如果你有能力，建议给作者一些捐助&lt;br /&gt;
他的paypal链接： [https://www.paypal.com/cgi-bin/webscr?return=http%3A%2F%2Fdev.bukkit.org%2Fbukkit-plugins%2Fchest-commands%2F&amp;amp;cn=Add+special+instructions+to+the+addon+author%28s%29&amp;amp;business=filoghost%40gmail.com&amp;amp;bn=PP-DonationsBF%3Abtn_donateCC_LG.gif%3ANonHosted&amp;amp;cancel_return=http%3A%2F%2Fdev.bukkit.org%2Fbukkit-plugins%2Fchest-commands%2F&amp;amp;lc=US&amp;amp;item_name=Chest+Commands+GUI+%28from+Bukkit.org%29&amp;amp;cmd=_donations&amp;amp;rm=1&amp;amp;no_shipping=1&amp;amp;currency_code=EUR 点击这里]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2225</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2225"/>
		<updated>2016-02-12T13:31:18Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  &#039;&#039;&#039;port: &#039;&#039;&#039;数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  &#039;&#039;&#039;database: &#039;&#039;&#039;数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  &#039;&#039;&#039;user：&#039;&#039;&#039;登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  &#039;&#039;&#039;password:&#039;&#039;&#039;登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    &#039;&#039;&#039;use:&#039;&#039;&#039;如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2224</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2224"/>
		<updated>2016-02-12T13:30:44Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{模板:待完善}}&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  &#039;&#039;&#039;port: &#039;&#039;&#039;数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  &#039;&#039;&#039;database: &#039;&#039;&#039;数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  &#039;&#039;&#039;user：&#039;&#039;&#039;登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  &#039;&#039;&#039;password:&#039;&#039;&#039;登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    &#039;&#039;&#039;use:&#039;&#039;&#039;如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:1582952890&amp;diff=2222</id>
		<title>用户:1582952890</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:1582952890&amp;diff=2222"/>
		<updated>2016-02-12T12:21:19Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 一些问答题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 这个逗比的简介 ==&lt;br /&gt;
=== 一些问答题 ===&lt;br /&gt;
  &#039;&#039;&#039;Q：这个逗比是谁？&#039;&#039;&#039;&lt;br /&gt;
  A：沉寂&lt;br /&gt;
  &#039;&#039;&#039;Q：这个逗比来自何方？&#039;&#039;&#039;&lt;br /&gt;
  A：用你管啊？&lt;br /&gt;
  &#039;&#039;&#039;Q：这个逗比喜欢吃什么？&#039;&#039;&#039;&lt;br /&gt;
  A：肉丝面！&lt;br /&gt;
  &#039;&#039;&#039;Q：这个逗比的MCBBS号是什么&#039;&#039;&#039;&lt;br /&gt;
  A：和百科账号雷同，不，简直是一样！&lt;br /&gt;
  &#039;&#039;&#039;Q：这个逗比有什么爱好？&#039;&#039;&#039;&lt;br /&gt;
  A：在群内灌水，吃面条。&lt;br /&gt;
  &#039;&#039;&#039;Q：这个逗比的MC用户名是啥？&#039;&#039;&#039;&lt;br /&gt;
  A：ChenJi，反正不是正版=A=&lt;br /&gt;
未完待续&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:1582952890&amp;diff=2221</id>
		<title>用户:1582952890</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:1582952890&amp;diff=2221"/>
		<updated>2016-02-12T12:20:22Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​创建页面，内容为“== 这个逗比的简介 == === 一些问答题 ===   Q：这个逗比是谁？   A：沉寂   Q：这个逗比来自何方？   A：用你管啊？   Q：这个逗...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 这个逗比的简介 ==&lt;br /&gt;
=== 一些问答题 ===&lt;br /&gt;
  Q：这个逗比是谁？&lt;br /&gt;
  A：沉寂&lt;br /&gt;
  Q：这个逗比来自何方？&lt;br /&gt;
  A：用你管啊？&lt;br /&gt;
  Q：这个逗比喜欢吃什么？&lt;br /&gt;
  A：肉丝面！&lt;br /&gt;
  Q：这个逗比的MCBBS号是什么&lt;br /&gt;
  A：和百科账号雷同，不简直是一样！&lt;br /&gt;
  Q：这个逗比有什么爱好？&lt;br /&gt;
  A：在群内灌水，吃面条。&lt;br /&gt;
  Q：这个逗比的MC用户名是啥？&lt;br /&gt;
  A：ChenJi，反正不是正版=A=&lt;br /&gt;
未完待续&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2220</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2220"/>
		<updated>2016-02-12T12:00:34Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Mysql */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  &#039;&#039;&#039;port: &#039;&#039;&#039;数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  &#039;&#039;&#039;database: &#039;&#039;&#039;数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  &#039;&#039;&#039;user：&#039;&#039;&#039;登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  &#039;&#039;&#039;password:&#039;&#039;&#039;登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;其他的一些设置:&#039;&#039;&#039; &lt;br /&gt;
    &#039;&#039;&#039;use:&#039;&#039;&#039;如果你想设置使用数据库，请设置这项为true（这个选项的默认参数是false）&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2219</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2219"/>
		<updated>2016-02-12T11:54:15Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  &#039;&#039;&#039;port: &#039;&#039;&#039;数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  &#039;&#039;&#039;database: &#039;&#039;&#039;数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  &#039;&#039;&#039;user：&#039;&#039;&#039;登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  &#039;&#039;&#039;password:&#039;&#039;&#039;登录数据库所使用的密码（这个选项的默认参数是pass）&lt;br /&gt;
  &#039;&#039;&#039;import:&#039;&#039;&#039; &lt;br /&gt;
    &#039;&#039;&#039;use:&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;source: &#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=AutoMessage&amp;diff=2218</id>
		<title>AutoMessage</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=AutoMessage&amp;diff=2218"/>
		<updated>2016-02-12T10:41:29Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 权限 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:聊天]]&lt;br /&gt;
[[Category:信息]]&lt;br /&gt;
==综述==&lt;br /&gt;
===介绍===&lt;br /&gt;
  AutoMessage是一个易于使用的聊天栏公告插件。&lt;br /&gt;
  这个插件非常适合那些想要将一些设定的信息以广播形式发布的服务器管理员们。&lt;br /&gt;
  这个插件的特性在于，你可以在游戏中使用命令编辑一切可以在配置文件中修改的配置项。&lt;br /&gt;
  这是一个轻量级的插件，并不会影响服务器的性能。&lt;br /&gt;
  AutoMessages会自动检测更新以确保插件处于最新版本。&lt;br /&gt;
&lt;br /&gt;
===特性===&lt;br /&gt;
  完全可自定义的配置系统!&lt;br /&gt;
  游戏中功能多样的配置编辑器!&lt;br /&gt;
  快速无损的重载机制.&lt;br /&gt;
  可选的随机公告.&lt;br /&gt;
  支持颜色代码.&lt;br /&gt;
  在信息中运行命令.&lt;br /&gt;
&lt;br /&gt;
===安装===&lt;br /&gt;
  将jar文件拖入plugins文件夹并重启服务端即可.&lt;br /&gt;
&lt;br /&gt;
==常见问题及解答==&lt;br /&gt;
Q:为什么我使用&amp;quot;/am add 公告&amp;quot;添加了一个叫&amp;quot;公告&amp;quot;的组后，显示的信息十分杂乱？&lt;br /&gt;
&lt;br /&gt;
A:新的分组后会内置一些默认的公告内容，只需连续执行命令&amp;quot;/am remove 公告 0&amp;quot;删除公告组内序号为0的公告内容连续5次即可删除默认信息。&lt;br /&gt;
&lt;br /&gt;
Q：为什么玩家看不见公告？&lt;br /&gt;
&lt;br /&gt;
A：你需要把权限节点：automessage.receive.default添加进玩家组里面，default为默认组，详细请看下面的权限一栏。&lt;br /&gt;
&lt;br /&gt;
==权限==&lt;br /&gt;
AutoMessage 使用权限来允许用户和组来执行特定的指令。你可以使用例如PermissionsEx or bPermissions等权限管理插件来管理这些权限。在下方你将会找到个列表来查看权限。&lt;br /&gt;
&lt;br /&gt;
automessage.commands.reload: &lt;br /&gt;
&lt;br /&gt;
重新载入配置文件的权限&lt;br /&gt;
&lt;br /&gt;
automessage.commands.update: &lt;br /&gt;
&lt;br /&gt;
当插件不是最新版本时，升级插件的权限。&lt;br /&gt;
&lt;br /&gt;
automessage.commands.add: &lt;br /&gt;
&lt;br /&gt;
创建一个公告列表，或者添加消息到现有的公告列表。&lt;br /&gt;
&lt;br /&gt;
automessage.commands.edit: &lt;br /&gt;
&lt;br /&gt;
编辑一条现有的公告 &lt;br /&gt;
&lt;br /&gt;
automessage.commands.remove: &lt;br /&gt;
&lt;br /&gt;
删除一个公告列表，或者从一个现有的公告列表中删除一条公告&lt;br /&gt;
&lt;br /&gt;
automessage.commands.enabled: &lt;br /&gt;
&lt;br /&gt;
切换到一个指定的公告列表，这个公告列表会始终可以编辑，但是在这段期间，这个列表内的公告将不会被播出。&lt;br /&gt;
&lt;br /&gt;
automessage.commands.interval: &lt;br /&gt;
&lt;br /&gt;
设置公告列表内的时间间隔&lt;br /&gt;
&lt;br /&gt;
automessage.commands.random: &lt;br /&gt;
&lt;br /&gt;
设置一个列表的播出顺序，例如:随机播放&lt;br /&gt;
&lt;br /&gt;
automessage.commands.prefix: &lt;br /&gt;
&lt;br /&gt;
设置公告的前缀&lt;br /&gt;
&lt;br /&gt;
automessage.commands.suffix: &lt;br /&gt;
&lt;br /&gt;
设置公告的后缀&lt;br /&gt;
&lt;br /&gt;
automessage.commands.broadcast: &lt;br /&gt;
&lt;br /&gt;
从一个特定的列表中广播一条消息&lt;br /&gt;
&lt;br /&gt;
automessage.commands.list: &lt;br /&gt;
&lt;br /&gt;
列出所有的公告列表或列出指定一个公告列表的所有公告 ；查看所有公告&lt;br /&gt;
&lt;br /&gt;
automessage.receive.message-list: &lt;br /&gt;
&lt;br /&gt;
Receive broadcasts from a list. Replace message-list with the name of the message list in your config. ；接收来自某列表的公告&lt;br /&gt;
&lt;br /&gt;
==命令==&lt;br /&gt;
==配置==&lt;br /&gt;
Config:&lt;br /&gt;
settings:&lt;br /&gt;
  enabled: true                       ；是否启用 true为是，false为否(下面也是这样)&lt;br /&gt;
  min-players: 5                         ；最小听见广播的玩家数量？我的理解应该是当有这个数值的玩家或以上在线时才开始播放这个公告&lt;br /&gt;
  log-to-console: true                     ；是否显示在控制台&lt;br /&gt;
message-lists:                            ；公告列表      &lt;br /&gt;
  regular:                                 ；公告列表的名字&lt;br /&gt;
    enabled: true                          ；是否启用&lt;br /&gt;
    random: false                          ；是否随机&lt;br /&gt;
    interval: 45                           ；间隔时间&lt;br /&gt;
    expiry: -1                                ；到期时间(-1为不会到期&lt;br /&gt;
    messages:                                 ；公告内容&lt;br /&gt;
    - &#039;&amp;amp;1First&amp;amp;r message \nin the default list!&#039;&lt;br /&gt;
    - &#039;&amp;amp;2Second&amp;amp;r message \nin the default list!&#039;&lt;br /&gt;
    - &#039;&amp;amp;3Third&amp;amp;r message \nin the default list!&#039;&lt;br /&gt;
    - &#039;These messages will be displayed to users with \nautomessage.receive.default!&#039;&lt;br /&gt;
  json:                                   ；又是一个公告列表的名字    下面的内容和上面的一样&lt;br /&gt;
    enabled: true&lt;br /&gt;
    random: false&lt;br /&gt;
    interval: 45&lt;br /&gt;
    expiry: -1&lt;br /&gt;
    messages:&lt;br /&gt;
    - &#039;{text:&amp;quot;Hover over me!&amp;quot;,hoverEvent:{action:show_text,value:[{text:&amp;quot;Woah, you just hovered over me!&amp;quot;,color:blue}]}}&#039;&lt;br /&gt;
    - &#039;{text:&amp;quot;Click me to run a command!&amp;quot;,clickEvent:{action:run_command,value:&amp;quot;/say Clicked.&amp;quot;}}&#039;&lt;br /&gt;
    - &#039;{text:&amp;quot;Click me to open Google!&amp;quot;,clickEvent:{action:open_url,value:&amp;quot;http://google.com&amp;quot;}}&#039;&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&#039;&#039;&#039;代码:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
配设文件内可以添加变量，颜色以及指令等. 如果你的信息前面加入 / 系统会默认为是一条指令. 如果你编辑时想换行请输入 \n. 颜色代码可以随时加入. 同时也可以添加变量. 这些设定会美化你的信息/公告。&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量列表&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 变量 !! 列子 !! 效果&lt;br /&gt;
|-&lt;br /&gt;
| {NAME} || Hey {NAME} || Hey ELCHILEN0!&lt;br /&gt;
ELCHILEN0是原作者ID&lt;br /&gt;
|-&lt;br /&gt;
| {DISPLAYNAME} || Hey {DISPLAYNAME}! || Hey ELCHILEN0!&lt;br /&gt;
|-&lt;br /&gt;
| {WORLD} || 你在{WORLD}! || 你在XX世界!&lt;br /&gt;
|-&lt;br /&gt;
| {BIOME} || 你在{BIOME}生物群系! || 你在XX生物群系!&lt;br /&gt;
|-&lt;br /&gt;
| {ONLINE} || 目前有{ONLINE}玩家在线! || 目前有XX玩家在线!&lt;br /&gt;
|-&lt;br /&gt;
| {MAX_ONLINE} || 服务器最大人数{MAX_ONLINE}! || 服务器最大人数XX!&lt;br /&gt;
|-&lt;br /&gt;
| {YEAR} || 今年是{YEAR}年! || 今年是XX年!&lt;br /&gt;
|-&lt;br /&gt;
| {MONTH} || 现在是{MONTH}月! || 现在是XX月!&lt;br /&gt;
|-&lt;br /&gt;
| {WEEK_OF_MONTH} || 本月第{WEEK_OF_MONTH}个星期! || 本月第XX个星期!&lt;br /&gt;
|-&lt;br /&gt;
| {WEEK_OF_YEAR} || 今年第{WEEK_OF_YEAR}个星期! || 今年第XX个星期!&lt;br /&gt;
|-&lt;br /&gt;
| {DAY_OF_WEEK} || 这个星期已经过了{DAY_OF_WEEK}天! || 这个星期已经过了XX天! &lt;br /&gt;
|-&lt;br /&gt;
| {DAY_OF_MONTH} || 这个月已经过了{DAY_OF_MONTH}天! || 这个月已经过了XX天! &lt;br /&gt;
|-&lt;br /&gt;
| {DAY_OF_YEAR} || 今年已经过了{DAY_OF_MONTH}天!  || 今年已经过了XX天!&lt;br /&gt;
|-&lt;br /&gt;
| {HOUR} || 现在是{HOUR}点 || 现在是XX点&lt;br /&gt;
|-&lt;br /&gt;
| {HOUR_OF_DAY} || It is {HOUR_OF_DAY} hundred hours! || It is XX hundred hours!&lt;br /&gt;
|-&lt;br /&gt;
| {MINUTE} || 已经过了{MINUTE}分钟! || 已经过了XX分钟!&lt;br /&gt;
|-&lt;br /&gt;
| {SECOND} || 已经过了{MINUTE}秒! || 已经过了XX秒!&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;颜色代码&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GitHub Repo==&lt;br /&gt;
==Scheduled Messages Ideas==&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=AutoMessage&amp;diff=2217</id>
		<title>AutoMessage</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=AutoMessage&amp;diff=2217"/>
		<updated>2016-02-12T10:34:17Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 权限 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:聊天]]&lt;br /&gt;
[[Category:信息]]&lt;br /&gt;
==综述==&lt;br /&gt;
===介绍===&lt;br /&gt;
  AutoMessage是一个易于使用的聊天栏公告插件。&lt;br /&gt;
  这个插件非常适合那些想要将一些设定的信息以广播形式发布的服务器管理员们。&lt;br /&gt;
  这个插件的特性在于，你可以在游戏中使用命令编辑一切可以在配置文件中修改的配置项。&lt;br /&gt;
  这是一个轻量级的插件，并不会影响服务器的性能。&lt;br /&gt;
  AutoMessages会自动检测更新以确保插件处于最新版本。&lt;br /&gt;
&lt;br /&gt;
===特性===&lt;br /&gt;
  完全可自定义的配置系统!&lt;br /&gt;
  游戏中功能多样的配置编辑器!&lt;br /&gt;
  快速无损的重载机制.&lt;br /&gt;
  可选的随机公告.&lt;br /&gt;
  支持颜色代码.&lt;br /&gt;
  在信息中运行命令.&lt;br /&gt;
&lt;br /&gt;
===安装===&lt;br /&gt;
  将jar文件拖入plugins文件夹并重启服务端即可.&lt;br /&gt;
&lt;br /&gt;
==常见问题及解答==&lt;br /&gt;
Q:为什么我使用&amp;quot;/am add 公告&amp;quot;添加了一个叫&amp;quot;公告&amp;quot;的组后，显示的信息十分杂乱？&lt;br /&gt;
&lt;br /&gt;
A:新的分组后会内置一些默认的公告内容，只需连续执行命令&amp;quot;/am remove 公告 0&amp;quot;删除公告组内序号为0的公告内容连续5次即可删除默认信息。&lt;br /&gt;
&lt;br /&gt;
Q：为什么玩家看不见公告？&lt;br /&gt;
&lt;br /&gt;
A：你需要把权限节点：automessage.receive.default添加进玩家组里面，default为默认组，详细请看下面的权限一栏。&lt;br /&gt;
&lt;br /&gt;
==权限==&lt;br /&gt;
AutoMessage 使用权限来允许用户和组来执行特定的指令。你可以使用例如PermissionsEx or bPermissions等权限管理插件来管理这些权限。在下方你将会找到个列表来查看权限。&lt;br /&gt;
&lt;br /&gt;
automessage.commands.reload: &lt;br /&gt;
&lt;br /&gt;
重新载入配置文件的权限&lt;br /&gt;
&lt;br /&gt;
automessage.commands.update: &lt;br /&gt;
&lt;br /&gt;
当插件不是最新版本时，升级插件的权限。&lt;br /&gt;
&lt;br /&gt;
automessage.commands.add: &lt;br /&gt;
&lt;br /&gt;
创建一个公告列表，或者添加消息到现有的公告列表。&lt;br /&gt;
&lt;br /&gt;
automessage.commands.edit: &lt;br /&gt;
&lt;br /&gt;
编辑一条现有的公告 &lt;br /&gt;
&lt;br /&gt;
automessage.commands.remove: &lt;br /&gt;
&lt;br /&gt;
删除一个公告列表，或者从一个现有的公告列表中删除一条公告&lt;br /&gt;
&lt;br /&gt;
automessage.commands.enabled: &lt;br /&gt;
&lt;br /&gt;
Toggle broadcasting for a specific message list. The message list can still be edited; however, it &lt;br /&gt;
will not broadcast.；开关公告 &lt;br /&gt;
&lt;br /&gt;
automessage.commands.interval: &lt;br /&gt;
&lt;br /&gt;
Set the interval at which messages are broadcasted from the message-list. ；设置公告间隔&lt;br /&gt;
&lt;br /&gt;
automessage.commands.random: &lt;br /&gt;
&lt;br /&gt;
Set a lists broadcast method. Random randomly selects a message on broadcasts whereas non-random &lt;br /&gt;
simply loops through all the messages.；设置公告方式 &lt;br /&gt;
&lt;br /&gt;
automessage.commands.prefix: &lt;br /&gt;
&lt;br /&gt;
Set a message lists prefix for all broadcasts. ；设置公告前缀&lt;br /&gt;
&lt;br /&gt;
automessage.commands.suffix: &lt;br /&gt;
&lt;br /&gt;
Set a message lists suffix for all broadcasts. ；设置公告后缀&lt;br /&gt;
&lt;br /&gt;
automessage.commands.broadcast: &lt;br /&gt;
&lt;br /&gt;
Broadcast a message from a specific list. ；公告列表里的一条消息&lt;br /&gt;
&lt;br /&gt;
automessage.commands.list: &lt;br /&gt;
&lt;br /&gt;
List all message lists or all messages in a specific list. ；查看所有公告&lt;br /&gt;
&lt;br /&gt;
automessage.receive.message-list: &lt;br /&gt;
&lt;br /&gt;
Receive broadcasts from a list. Replace message-list with the name of the message list in your config. ；接收来自某列表的公告&lt;br /&gt;
&lt;br /&gt;
==命令==&lt;br /&gt;
==配置==&lt;br /&gt;
Config:&lt;br /&gt;
settings:&lt;br /&gt;
  enabled: true                       ；是否启用 true为是，false为否(下面也是这样)&lt;br /&gt;
  min-players: 5                         ；最小听见广播的玩家数量？我的理解应该是当有这个数值的玩家或以上在线时才开始播放这个公告&lt;br /&gt;
  log-to-console: true                     ；是否显示在控制台&lt;br /&gt;
message-lists:                            ；公告列表      &lt;br /&gt;
  regular:                                 ；公告列表的名字&lt;br /&gt;
    enabled: true                          ；是否启用&lt;br /&gt;
    random: false                          ；是否随机&lt;br /&gt;
    interval: 45                           ；间隔时间&lt;br /&gt;
    expiry: -1                                ；到期时间(-1为不会到期&lt;br /&gt;
    messages:                                 ；公告内容&lt;br /&gt;
    - &#039;&amp;amp;1First&amp;amp;r message \nin the default list!&#039;&lt;br /&gt;
    - &#039;&amp;amp;2Second&amp;amp;r message \nin the default list!&#039;&lt;br /&gt;
    - &#039;&amp;amp;3Third&amp;amp;r message \nin the default list!&#039;&lt;br /&gt;
    - &#039;These messages will be displayed to users with \nautomessage.receive.default!&#039;&lt;br /&gt;
  json:                                   ；又是一个公告列表的名字    下面的内容和上面的一样&lt;br /&gt;
    enabled: true&lt;br /&gt;
    random: false&lt;br /&gt;
    interval: 45&lt;br /&gt;
    expiry: -1&lt;br /&gt;
    messages:&lt;br /&gt;
    - &#039;{text:&amp;quot;Hover over me!&amp;quot;,hoverEvent:{action:show_text,value:[{text:&amp;quot;Woah, you just hovered over me!&amp;quot;,color:blue}]}}&#039;&lt;br /&gt;
    - &#039;{text:&amp;quot;Click me to run a command!&amp;quot;,clickEvent:{action:run_command,value:&amp;quot;/say Clicked.&amp;quot;}}&#039;&lt;br /&gt;
    - &#039;{text:&amp;quot;Click me to open Google!&amp;quot;,clickEvent:{action:open_url,value:&amp;quot;http://google.com&amp;quot;}}&#039;&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&#039;&#039;&#039;代码:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
配设文件内可以添加变量，颜色以及指令等. 如果你的信息前面加入 / 系统会默认为是一条指令. 如果你编辑时想换行请输入 \n. 颜色代码可以随时加入. 同时也可以添加变量. 这些设定会美化你的信息/公告。&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量列表&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 变量 !! 列子 !! 效果&lt;br /&gt;
|-&lt;br /&gt;
| {NAME} || Hey {NAME} || Hey ELCHILEN0!&lt;br /&gt;
ELCHILEN0是原作者ID&lt;br /&gt;
|-&lt;br /&gt;
| {DISPLAYNAME} || Hey {DISPLAYNAME}! || Hey ELCHILEN0!&lt;br /&gt;
|-&lt;br /&gt;
| {WORLD} || 你在{WORLD}! || 你在XX世界!&lt;br /&gt;
|-&lt;br /&gt;
| {BIOME} || 你在{BIOME}生物群系! || 你在XX生物群系!&lt;br /&gt;
|-&lt;br /&gt;
| {ONLINE} || 目前有{ONLINE}玩家在线! || 目前有XX玩家在线!&lt;br /&gt;
|-&lt;br /&gt;
| {MAX_ONLINE} || 服务器最大人数{MAX_ONLINE}! || 服务器最大人数XX!&lt;br /&gt;
|-&lt;br /&gt;
| {YEAR} || 今年是{YEAR}年! || 今年是XX年!&lt;br /&gt;
|-&lt;br /&gt;
| {MONTH} || 现在是{MONTH}月! || 现在是XX月!&lt;br /&gt;
|-&lt;br /&gt;
| {WEEK_OF_MONTH} || 本月第{WEEK_OF_MONTH}个星期! || 本月第XX个星期!&lt;br /&gt;
|-&lt;br /&gt;
| {WEEK_OF_YEAR} || 今年第{WEEK_OF_YEAR}个星期! || 今年第XX个星期!&lt;br /&gt;
|-&lt;br /&gt;
| {DAY_OF_WEEK} || 这个星期已经过了{DAY_OF_WEEK}天! || 这个星期已经过了XX天! &lt;br /&gt;
|-&lt;br /&gt;
| {DAY_OF_MONTH} || 这个月已经过了{DAY_OF_MONTH}天! || 这个月已经过了XX天! &lt;br /&gt;
|-&lt;br /&gt;
| {DAY_OF_YEAR} || 今年已经过了{DAY_OF_MONTH}天!  || 今年已经过了XX天!&lt;br /&gt;
|-&lt;br /&gt;
| {HOUR} || 现在是{HOUR}点 || 现在是XX点&lt;br /&gt;
|-&lt;br /&gt;
| {HOUR_OF_DAY} || It is {HOUR_OF_DAY} hundred hours! || It is XX hundred hours!&lt;br /&gt;
|-&lt;br /&gt;
| {MINUTE} || 已经过了{MINUTE}分钟! || 已经过了XX分钟!&lt;br /&gt;
|-&lt;br /&gt;
| {SECOND} || 已经过了{MINUTE}秒! || 已经过了XX秒!&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;颜色代码&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GitHub Repo==&lt;br /&gt;
==Scheduled Messages Ideas==&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:Tdiant&amp;diff=2216</id>
		<title>用户:Tdiant</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:Tdiant&amp;diff=2216"/>
		<updated>2016-02-12T10:23:36Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​创建页面，内容为“这个逗比吃了很多的包子”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;这个逗比吃了很多的包子&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2215</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2215"/>
		<updated>2016-02-12T09:24:03Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Mysql */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
    数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  &#039;&#039;&#039;port: &#039;&#039;&#039;&lt;br /&gt;
    数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  &#039;&#039;&#039;database: &#039;&#039;&#039;&lt;br /&gt;
    数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  &#039;&#039;&#039;user：&#039;&#039;&#039;&lt;br /&gt;
    登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2214</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2214"/>
		<updated>2016-02-12T09:22:06Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Mysql */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql ===&lt;br /&gt;
注意这段只有在storage:设置为 MySQL或SQLite的时候才生效&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
    数据库的（ip）地址（这个选项默认参数是localhost）&lt;br /&gt;
  &#039;&#039;&#039; port: &#039;&#039;&#039;&lt;br /&gt;
    数据库的端口（这个选项默认参数是3306）&lt;br /&gt;
  &#039;&#039;&#039; database: &#039;&#039;&#039;&lt;br /&gt;
    数据库名称（这个选项默认参数是minecraft）&lt;br /&gt;
  &#039;&#039;&#039;user：&#039;&#039;&#039;&lt;br /&gt;
    登录数据库所使用的用户名（这个选项的默认参数是root）&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;br /&gt;
  &#039;&#039;&#039;host:&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2213</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2213"/>
		<updated>2016-02-12T09:15:22Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Config（配置文件） */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
=== storage: ===&lt;br /&gt;
  这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
  方式处理（这个选项的默认是YMAL）&lt;br /&gt;
=== vault: ===&lt;br /&gt;
  这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
=== version: ===&lt;br /&gt;
  这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
=== Mysql ===&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2212</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2212"/>
		<updated>2016-02-12T09:14:54Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;br /&gt;
== Config（配置文件） ==&lt;br /&gt;
  &#039;&#039;&#039;以下选项将出现在Config.yml。&#039;&#039;&#039;&lt;br /&gt;
  === storage: ===&lt;br /&gt;
    这个选项将会定义数据的储存类型，储存方式通常有三种：MySQL、SQLite、YAML。注意这里一定要区分大小写。如果给的是一个无效的选项，将会以默认的YAML      &lt;br /&gt;
    方式处理（这个选项的默认是YMAL）&lt;br /&gt;
  === vault: ===&lt;br /&gt;
    这个选项定义了是否与Vault对接，请注意，任何其他的经济插件都会考虑这一个（这个选项默认的是false）&lt;br /&gt;
  === version: ===&lt;br /&gt;
    这个选项用于标注此配置文件的版本，用于更新的时候使用，注意！请不要修改这个选项！！&lt;br /&gt;
  === Mysql ===&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2211</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2211"/>
		<updated>2016-02-12T09:02:48Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
=== 权限 ===&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
=== 视频 ===&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
=== 待办事项 ===&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
=== Maven ===&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2209</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2209"/>
		<updated>2016-02-12T05:51:37Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​A&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *排行榜&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
== 视频 ==&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
== 待办事项 ==&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
== Maven ==&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
  在依赖中加入PlayerPoints。&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.black_ixx&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;PlayerPoints&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
  [https://trello.com/b/Bfy6xx4M/bukkit-plugins Trello开发板]&lt;br /&gt;
  访问 Trello开发板查看所有项目和待办的事项。&lt;br /&gt;
  你可以在这里评论和投票所有的主题。&lt;br /&gt;
  所有的改变都在这里实时呈现。&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2208</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2208"/>
		<updated>2016-02-12T04:41:18Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 视频 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *Leader board&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
== 视频 ==&lt;br /&gt;
  请前去官网进行观看&lt;br /&gt;
&lt;br /&gt;
== 待办事项 ==&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
== Maven ==&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2207</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2207"/>
		<updated>2016-02-12T04:39:32Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Maven */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *Leader board&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
== 视频 ==&lt;br /&gt;
  请前去官网进行查看&lt;br /&gt;
== 待办事项 ==&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
== Maven ==&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2206</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2206"/>
		<updated>2016-02-12T04:38:00Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* Maven */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *Leader board&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
== 视频 ==&lt;br /&gt;
  请前去官网进行查看&lt;br /&gt;
== 待办事项 ==&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
== Maven ==&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;Maven&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2205</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2205"/>
		<updated>2016-02-12T04:37:35Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  *可以将点券给予玩家。&lt;br /&gt;
  *可以从玩家那里拿去点券。&lt;br /&gt;
  *向玩家支付点券。&lt;br /&gt;
  *查看看其他玩家拥有多少点券？&lt;br /&gt;
  *查看你有多少点券？&lt;br /&gt;
  *Leader board&lt;br /&gt;
  *支持设置权限来限制。&lt;br /&gt;
  *可选Vault的支持&lt;br /&gt;
  *用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me                       查看自己的点券数量&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;br /&gt;
== 视频 ==&lt;br /&gt;
  请前去官网进行查看&lt;br /&gt;
== 待办事项 ==&lt;br /&gt;
  得到各国语言的支持。&lt;br /&gt;
== Maven ==&lt;br /&gt;
  我们支持Maven，只需添加我们的存储库。&lt;br /&gt;
  &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;dakani&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Dakani Nexus Repo&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;url&amp;gt;http://repo.dakanilabs.com/content/repositories/public&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2204</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2204"/>
		<updated>2016-02-12T04:26:00Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  可以将点券给予玩家。&lt;br /&gt;
  可以从玩家那里拿去点券。&lt;br /&gt;
  向玩家支付点券。&lt;br /&gt;
  查看看其他玩家拥有多少点券？&lt;br /&gt;
  查看你有多少点券？&lt;br /&gt;
  Leader board&lt;br /&gt;
  支持设置权限来限制。&lt;br /&gt;
  可选Vault的支持&lt;br /&gt;
  用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me    &lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;br /&gt;
== 权限 ==&lt;br /&gt;
  PlayerPoints.pay      这个权限将会允许你使用pay指令。&lt;br /&gt;
  PlayerPoints.give     这个权限将会允许你使用give指令。&lt;br /&gt;
  PlayerPoints.take     这个权限将会允许你使用take指令。&lt;br /&gt;
  PlayerPoints.set      这个权限将会允许你使用set指令。&lt;br /&gt;
  PlayerPoints.reset    这个权限将会允许你使用reset指令。&lt;br /&gt;
  PlayerPoints.look     这个权限将会允许你使用look指令。&lt;br /&gt;
  PlayerPoints.lead     这个权限将会允许你使用lead指令。&lt;br /&gt;
  PlayerPoints.me       这个权限将会允许你使用me指令。&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2203</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2203"/>
		<updated>2016-02-12T04:23:39Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 命令 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  可以将点券给予玩家。&lt;br /&gt;
  可以从玩家那里拿去点券。&lt;br /&gt;
  向玩家支付点券。&lt;br /&gt;
  查看看其他玩家拥有多少点券？&lt;br /&gt;
  查看你有多少点券？&lt;br /&gt;
  Leader board&lt;br /&gt;
  支持设置权限来限制。&lt;br /&gt;
  可选Vault的支持&lt;br /&gt;
  用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    从你的账户内，向某个玩家支付点券。&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   给予某个玩家点券。&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;   强行从某个玩家拿取点券。&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;    设置玩家的点券数量。&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;         将玩家的点券数量设置为默认。&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;          查看某个玩家的点券数量。  &lt;br /&gt;
  /points me    &lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  缩写: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2202</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2202"/>
		<updated>2016-02-12T04:17:21Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 概览 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  http://mineplugin.org/ChestCommandsGUI&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;br /&gt;
== 特点 ==&lt;br /&gt;
  可以将点券给予玩家。&lt;br /&gt;
  可以从玩家那里拿去点券。&lt;br /&gt;
  向玩家支付点券。&lt;br /&gt;
  查看看其他玩家拥有多少点券？&lt;br /&gt;
  查看你有多少点券？&lt;br /&gt;
  Leader board&lt;br /&gt;
  支持设置权限来限制。&lt;br /&gt;
  可选Vault的支持&lt;br /&gt;
  用点券来购买物品 ([http://dev.bukkit.org/bukkit-plugins/pointshop/ PointShop])&lt;br /&gt;
== 命令 ==&lt;br /&gt;
  /points pay &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;&lt;br /&gt;
  /points give &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;&lt;br /&gt;
  /points take &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;&lt;br /&gt;
  /points set &amp;lt;玩家名字&amp;gt; &amp;lt;数量&amp;gt;&lt;br /&gt;
  /points reset &amp;lt;玩家名字&amp;gt;&lt;br /&gt;
  /points look &amp;lt;玩家名字&amp;gt;&lt;br /&gt;
  /points me&lt;br /&gt;
  /points lead [next/prev/#]&lt;br /&gt;
  Shortcut: /p &amp;lt;give/take/look/me/pay/set/reset&amp;gt;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2200</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2200"/>
		<updated>2016-02-12T01:57:20Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​作者捐助&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
== 有用的一些前置插件 ==&lt;br /&gt;
  Player Points - 允许使用另外的一种货币（点券）。&lt;br /&gt;
  Scheduled Commands - 当你需要在一段时间后执行命令。&lt;br /&gt;
  Info Book - 一个管理书籍的插件&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;Sell dirt&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
== Github ==&lt;br /&gt;
  https://github.com/filoghost/ChestCommands&lt;br /&gt;
== 捐助 ==&lt;br /&gt;
如果你有能力，建议给作者一些捐助&lt;br /&gt;
他的paypal链接： [https://www.paypal.com/cgi-bin/webscr?return=http%3A%2F%2Fdev.bukkit.org%2Fbukkit-plugins%2Fchest-commands%2F&amp;amp;cn=Add+special+instructions+to+the+addon+author%28s%29&amp;amp;business=filoghost%40gmail.com&amp;amp;bn=PP-DonationsBF%3Abtn_donateCC_LG.gif%3ANonHosted&amp;amp;cancel_return=http%3A%2F%2Fdev.bukkit.org%2Fbukkit-plugins%2Fchest-commands%2F&amp;amp;lc=US&amp;amp;item_name=Chest+Commands+GUI+%28from+Bukkit.org%29&amp;amp;cmd=_donations&amp;amp;rm=1&amp;amp;no_shipping=1&amp;amp;currency_code=EUR 点击这里]&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2199</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2199"/>
		<updated>2016-02-12T01:12:44Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PlayerPoints&lt;br /&gt;
|版本=v2.1.3&lt;br /&gt;
|前置插件=-&lt;br /&gt;
|兼容服务端版本=1.7.4-RO.1&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/playerpoints/&lt;br /&gt;
}}&lt;br /&gt;
== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2198</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2198"/>
		<updated>2016-02-12T01:07:34Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​概览&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概览 ==&lt;br /&gt;
  这个插件允许玩家有给予/拥有/拿取点券。后来我（作者）会增加一些不同的功能，如果你的点券数量足够，你便可以做这些&lt;br /&gt;
    如果玩家做了一个不错的建筑，管理员便可以给玩家点券以奖励。&lt;br /&gt;
    如果你的点券达到一定的数量，你将会成为管理员。&lt;br /&gt;
  Development builds of this project can be acquired at the provided continuous integration server. （不太明白这句）这些版本没有经过BukkitDev 的批&lt;br /&gt;
  准。需要构建者自己承担风险。&lt;br /&gt;
  在正版服务器，这个插件将会连接到api.mojang.com来获取玩家的UUID。&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2197</id>
		<title>PlayerPoints</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PlayerPoints&amp;diff=2197"/>
		<updated>2016-02-12T00:45:41Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​创建页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2196</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2196"/>
		<updated>2016-02-12T00:43:03Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
== 有用的一些前置插件 ==&lt;br /&gt;
  Player Points - 允许使用另外的一种货币（点券）。&lt;br /&gt;
  Scheduled Commands - 当你需要在一段时间后执行命令。&lt;br /&gt;
  Info Book - 一个管理书籍的插件&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;Sell dirt&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
== Github ==&lt;br /&gt;
  https://github.com/filoghost/ChestCommands&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2195</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2195"/>
		<updated>2016-02-12T00:39:36Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;Sell dirt&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
== Github ==&lt;br /&gt;
  https://github.com/filoghost/ChestCommands&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2194</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2194"/>
		<updated>2016-02-12T00:35:57Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 购买和出售物品教程 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;Sell dirt&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2193</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2193"/>
		<updated>2016-02-12T00:35:01Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 购买和出售物品教程 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
  下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
 &lt;br /&gt;
   &#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;Sell dirt&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2192</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2192"/>
		<updated>2016-02-12T00:34:30Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 购买和出售物品教程 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
   &#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;give: 264&#039;&lt;br /&gt;
    PRICE: 100&lt;br /&gt;
    NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
    ID: 264&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
  下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
   &#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
    COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
    REQUIRED-ITEM: 3, 64&lt;br /&gt;
    NAME: &#039;Sell dirt&#039;&lt;br /&gt;
    ID: 3&lt;br /&gt;
    POSITION-X: 1&lt;br /&gt;
    POSITION-Y: 1&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2191</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2191"/>
		<updated>2016-02-12T00:33:10Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​翻译购买与出售物品的教程=A=&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;br /&gt;
== 购买和出售物品教程 ==&lt;br /&gt;
首先，你必须阅读经济的安装和命令的帮助。&lt;br /&gt;
=== 出售物品 ===&lt;br /&gt;
下面这个例子将会以100元/个钻石的价格卖给点击的玩家。&lt;br /&gt;
&#039;&#039;&#039;例子：&#039;&#039;&#039;&lt;br /&gt;
   COMMAND: &#039;give: 264&#039;&lt;br /&gt;
      PRICE: 100&lt;br /&gt;
      NAME: &#039;Buy a diamond&#039;&lt;br /&gt;
      ID: 264&lt;br /&gt;
      POSITION-X: 1&lt;br /&gt;
      POSITION-Y: 1&lt;br /&gt;
=== 收购物品 ===&lt;br /&gt;
  下面这个例子将会以10元/64个泥土的价格从玩家背包里收购。&lt;br /&gt;
&#039;&#039;&#039;例子&#039;&#039;&#039;&lt;br /&gt;
COMMAND: &#039;givemoney: 10&#039;&lt;br /&gt;
      REQUIRED-ITEM: 3, 64&lt;br /&gt;
      NAME: &#039;Sell dirt&#039;&lt;br /&gt;
      ID: 3&lt;br /&gt;
      POSITION-X: 1&lt;br /&gt;
      POSITION-Y: 1&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2190</id>
		<title>ChestCommandsGUI</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ChestCommandsGUI&amp;diff=2190"/>
		<updated>2016-02-12T00:19:20Z</updated>

		<summary type="html">&lt;p&gt;1582952890：​/* 点击动作教程 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ChestCommandsGui&lt;br /&gt;
|版本=v3.1.2&lt;br /&gt;
|前置插件=vault(可选）、PlayerPoints（可选）、任意一款经济插件（可选）。&lt;br /&gt;
|兼容服务端版本=1.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/chest-commands/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
一个简单而功能强大的插件，可以用来创建GUI界面！&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
  - 支持多个菜单&lt;br /&gt;
  - 打开点击菜单可以实现对应的命令操作&lt;br /&gt;
  - 自定义占位符和符号。&lt;br /&gt;
  - 高质量的代码&lt;br /&gt;
  - 对经济的支持，可以用Vault插件来支持（可选）&lt;br /&gt;
  - 自动更新新的版本和通知新的版本&lt;br /&gt;
&lt;br /&gt;
== 基础教程 ==&lt;br /&gt;
=== 修改一个现有的菜单 ===&lt;br /&gt;
  浏览文件夹/plugins/ChestCommands/menu/ &lt;br /&gt;
  用编辑器打开Menu（在这里推荐Notepad++)&lt;br /&gt;
=== 创建一个新菜单 ===&lt;br /&gt;
  最简单的方法:复制和粘贴现有的菜单,更改设置,添加/删除/编辑项目。&lt;br /&gt;
  推荐使用小写文件名,因为权限对大小写要求是非常严格的！。&lt;br /&gt;
&lt;br /&gt;
=== 菜单设置 ===&lt;br /&gt;
&#039;&#039;&#039; Menu settings： &#039;&#039;&#039;&lt;br /&gt;
  你可以找到这些选项在菜单的顶部，“Menu settings：”部分&lt;br /&gt;
  name: &#039;&amp;amp;1Menu&#039; (必须)&lt;br /&gt;
    这个名称将显示在打开菜单的时候，作为一个自定义标题，他的长度不能超过30个字符，（包括颜色字符），&amp;amp;1是蓝色。&lt;br /&gt;
&lt;br /&gt;
  rows：6（必须）&lt;br /&gt;
    这个设置规定了ChestCommand菜单有多少行，这个值必须在1和6之间，如果过高，客户端将无法显示超出部分&lt;br /&gt;
&lt;br /&gt;
  command: &#039;menu&#039;（可选）&lt;br /&gt;
    这是触发菜单的命令，他将改写现有的指令并且打开菜单，你可以设置多个指令，并用分号隔离，例如：&#039;menu; m; mainmenu&#039;&lt;br /&gt;
&lt;br /&gt;
  auto-refresh: 5 (可选) &lt;br /&gt;
    需要刷新的的菜单将刷新变量。注意金钱和点数在每次交易后都会自动更新。&lt;br /&gt;
&lt;br /&gt;
  open-with-item: (可选) &lt;br /&gt;
    id &#039;wool:1&#039;— 打开一个菜单用一个特定的物品，可以要求特定的数值！&lt;br /&gt;
    right-click: true -若打开这些菜单，必须用右键点击！&lt;br /&gt;
    left-click: false -若打开这些菜单，必须用左键点击！&lt;br /&gt;
&#039;&#039;&#039; Menu items： &#039;&#039;&#039;&lt;br /&gt;
  不要用大写，内部颜色代码和符号的名字（看下面），记住，他必须在于同一个菜单之内的不同图标不同！&lt;br /&gt;
  每一个项目都是由一个内部名称（在任何方式中不可见的玩家）和节点组成，可以分配命令，自定义名称，还有更多的图标。一个单独的项目应该这样写：&lt;br /&gt;
 &lt;br /&gt;
   ➦ 内部名称&lt;br /&gt;
    spawn-item:&lt;br /&gt;
     ID: bed&lt;br /&gt;
     COMMAND: &#039;spawn&#039;&lt;br /&gt;
     NAME: &#039;&amp;amp;aReturn to spawn&#039;&lt;br /&gt;
     LORE:&lt;br /&gt;
        - &#039;This is the lore of the item.&#039;&lt;br /&gt;
        - &#039;These lines appear below the name.&#039;&lt;br /&gt;
     POSITION-X: 1&lt;br /&gt;
     POSITION-Y: 1&lt;br /&gt;
   ➥这些节点&lt;br /&gt;
    NAME, COMMAND, ID, ...被称为节点，每个项目可以有不同的节点来定制它。读取更多的节点（这不是完整的列表）。&lt;br /&gt;
    每个项目至少要有节点：POSITION-X 和 POSITION-Y.&lt;br /&gt;
&lt;br /&gt;
== 节点教程 ==&lt;br /&gt;
  此页包含了一个节点列表，他可以用于所有图标！&lt;br /&gt;
&lt;br /&gt;
  注：这三个节点严格要求每一项 ID position-x position-y.，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ID：&#039;&#039;&#039;&lt;br /&gt;
  图标的项标识。你可以用数字和文字标识，但是我推荐使用文字更好的可读性。文字标识列表：这里（不区分大小写），可以省略下划线。&lt;br /&gt;
  范例：ID: stone、&lt;br /&gt;
  你可以使用数据值，但是必须要把数值放在单引号中！数量是可选的并且用逗号隔开。&lt;br /&gt;
  范例 (10个黑羊毛):&lt;br /&gt;
    ID: &#039;wool:15, 10&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSITION-X 和 POSITION-Y：&#039;&#039;&#039;&lt;br /&gt;
  [[文件:chestcommand.png]]&lt;br /&gt;
  有三个所需的节点。他们设置了图标的位置。你可以很容易地通过这个表找到这个坐标：&lt;br /&gt;
  &lt;br /&gt;
  范例:&lt;br /&gt;
    POSITION-X: 5&lt;br /&gt;
    POSITION-Y: 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NAME：&#039;&#039;&#039;&lt;br /&gt;
  这个节点可以设置图标的显示名称(在第一行，当你徘徊在他的时候)。你可以使用颜色代码和符号。&lt;br /&gt;
  范例:&lt;br /&gt;
    NAME: &#039;&amp;amp;6这是一个有颜色的名字！&#039;&lt;br /&gt;
&#039;&#039;&#039;LORE：&#039;&#039;&#039;&lt;br /&gt;
  该节点显示下方的文字。你可以使用颜色代码和符号。&lt;br /&gt;
  例子：&lt;br /&gt;
    Example:&lt;br /&gt;
     LORE:&lt;br /&gt;
     - &#039;Description of the item&#039;&lt;br /&gt;
     - &#039;Some other details&#039;&lt;br /&gt;
     - &#039;&amp;amp;cImportant note&#039;&lt;br /&gt;
&#039;&#039;&#039;ENCHANTMENT：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置了结界,将出现在一个项目,主要是用于附魔发光的效果。&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;fire aspect, 1&#039;&lt;br /&gt;
  附魔等级是可选的。您可以使用多种附魔,通过用分号分开它们！&lt;br /&gt;
  范例:&lt;br /&gt;
    ENCHANTMENT: &#039;sharpness, 5; durability, 10; silk touch&#039;&lt;br /&gt;
&#039;&#039;&#039;Color：&#039;&#039;&#039;&lt;br /&gt;
  这个节点仅限于修改皮革盔甲。颜色的格式的&amp;lt;red&amp;gt;, &amp;lt;green&amp;gt;, &amp;lt;blue&amp;gt;”。每种颜色必须在0到255之间。&lt;br /&gt;
  范例：&lt;br /&gt;
    COLOR: &#039;255, 0, 0&#039;&lt;br /&gt;
&#039;&#039;&#039;SKULL-OWNER：&#039;&#039;&#039;&lt;br /&gt;
  This node sets the skull owner of an item, only if it&#039;s a player&#039;s head (skull:3). Useful from 1.8 and above, for displaying different head textues.&lt;br /&gt;
  范例:&lt;br /&gt;
     SKULL-OWNER: &#039;filoghost&#039;&lt;br /&gt;
&#039;&#039;&#039;Command：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置可以设置命令。它支持各种各样的命令,这将不会列在这里。正常的命令执行(没有前缀，也就是”/“)当玩家点击图标。命令(这应该称为行动在这种情况下)也可以更多的东西&lt;br /&gt;
  不只是执行命令,看起来这里了解更多信息。&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;PRICE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置一个物品的价格。当玩家没有足够的钱不会执行命令！。&lt;br /&gt;
  范例:&lt;br /&gt;
    PRICE: 100.0&lt;br /&gt;
&#039;&#039;&#039;Leves：&#039;&#039;&#039;&lt;br /&gt;
  这个值设定了点击指定物品所需要的经验值等级。如果玩家点击时没有足够的经验值等级，命令将不会触发。如果触发，对应的经验值等级将被扣除&lt;br /&gt;
  范例：&lt;br /&gt;
    LEVELS: 5&lt;br /&gt;
&#039;&#039;&#039;Points：&#039;&#039;&#039;&lt;br /&gt;
  这个节点是配合点券插件的！他需要一定量的点券来使用物品，点券会被扣除！&lt;br /&gt;
  POINTS: 50&lt;br /&gt;
&#039;&#039;&#039;REQUIRED-ITEM&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置点击所需要的物品,没有该物品的命令将不会被执行。的格式都是相同的ID。&lt;br /&gt;
  范例：（三十个橙色染色玻璃）&lt;br /&gt;
    REQUIRED-ITEM: &#039;stained glass:1, 30&#039;&lt;br /&gt;
&#039;&#039;&#039;KEEP-OPEN&#039;&#039;&#039;&lt;br /&gt;
  该节点规定了如果菜单点击后，是否保持打开（默认不保持）值可以是True或者False。&lt;br /&gt;
  范例：&lt;br /&gt;
    KEEP-OPEN: true&lt;br /&gt;
&#039;&#039;&#039;PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  这个节点设置玩家是否需要一个权限来点击图标，可以选择任意权限，你可以取消他的权限，加一个-在权限之前，那个用户就将没有权限。&lt;br /&gt;
  范例：&lt;br /&gt;
    PERMISSION: &#039;my.custom.permission&#039; &lt;br /&gt;
&#039;&#039;&#039;VIEW-PERMISSION：&#039;&#039;&#039;&lt;br /&gt;
  就想权限节点，但是玩家在没有权限将无法看到这个图标！可以否定他的权限，比如(e.g.: &#039;-my.custom.permission&#039;).&lt;br /&gt;
  范例：&lt;br /&gt;
    VIEW-PERMISSION: &#039;my.custom.permission&#039;&lt;br /&gt;
&#039;&#039;&#039;PERMISSION-MESSAGE：&#039;&#039;&#039;&lt;br /&gt;
  这个节点改变了当玩家点击图标没有权限时候提示的消息(默认config.yml“没有权限”消息是可配置的)。&lt;br /&gt;
  范例：&lt;br /&gt;
     PERMISSION-MESSAGE: &#039;&amp;amp;cYou must be VIP to use this item!&#039;&lt;br /&gt;
== 点击动作教程 ==&lt;br /&gt;
本指南教程了点击某个图标时候所发生的动作，没有其他动作！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;打开其他图形界面的&#039;&#039;&#039;&lt;br /&gt;
  如果一个命令能打开其他插件的图形界面，请设置KEEP-OPEN为True！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;&lt;br /&gt;
  这些变量可以用于点击菜单时候的命令，菜单的叙述列表，菜单的名字。&lt;br /&gt;
    {player} (将会成为点击此菜单玩家的名字).&lt;br /&gt;
    {world} (点击的玩家在哪个世界).&lt;br /&gt;
    {online} (在线玩家数量).&lt;br /&gt;
    {max_players} (所在服务器最大玩家数量).&lt;br /&gt;
    {money} (玩家的钱数，你必须拥有 Vault 插件).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一般命令&#039;&#039;&#039;&lt;br /&gt;
  不需要用“/”在指令的面前，除了创世神插件的命令。&lt;br /&gt;
  这个例子演示了如何在点击的时候将强制执行命令/Spawn。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn&#039;&lt;br /&gt;
&#039;&#039;&#039;以控制台的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用控制台的身份执行命令,请在命令前方加入&amp;quot;console:&amp;quot;&lt;br /&gt;
  范例:&lt;br /&gt;
    COMMAND: &#039;console: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;以OP的身份执行命令&#039;&#039;&#039;&lt;br /&gt;
  要小心使用这个命令!&lt;br /&gt;
  若要用op的身份执行命令,请在命令前方加入&amp;quot;op:&amp;quot;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;op: say Hello world!&#039;&lt;br /&gt;
&#039;&#039;&#039;多个指令&#039;&#039;&#039;&lt;br /&gt;
  用分号分隔多个命令；”。这个例子让玩家执行命令，顺序是先执行 /spawn，然后再执行/me!&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;spawn; me I have been teleported to the spawn!&#039;&lt;br /&gt;
&#039;&#039;&#039;告诉点击的人一些事情&#039;&#039;&#039;&lt;br /&gt;
  像以前的例子，把tell：后面的内容发送给玩家，你可以使用颜色代码和符号！&lt;br /&gt;
  在范例中，信息将是红色的！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;tell: &amp;amp;cHello man!&#039;&lt;br /&gt;
&#039;&#039;&#039;广播事情&#039;&#039;&#039;&lt;br /&gt;
  他像tell，但是每个人都能听到这个消息！&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;broadcast: {player} is awesome!&#039;&lt;br /&gt;
&#039;&#039;&#039;播放音乐&#039;&#039;&#039;&lt;br /&gt;
  一个音乐由3个参数构成 (只有一个是必须的) 这三个参数用逗号分隔。他们的格式是： &#039;sound: &amp;lt;声音的名字&amp;gt;, [范围], [音量]&#039;&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;sound: ghast scream, 2.0, 0.5&#039; &lt;br /&gt;
&#039;&#039;&#039;给予物品&#039;&#039;&#039;&lt;br /&gt;
  这是一个用于给予物品的非常基本的命令，您可以更改给予物品的数量和类型，for more advanced things please use the vanilla command. （翻译无能）&lt;br /&gt;
  下面是给玩家10个黑色羊毛的指令。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give: wool:15, 10&#039;&lt;br /&gt;
&#039;&#039;&#039;给予金钱&#039;&#039;&#039;&lt;br /&gt;
  这个命令将会给点击的玩家金钱。&lt;br /&gt;
  你需要前置插件vault和一个经济插件。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-money: 100.0&#039;&lt;br /&gt;
&#039;&#039;&#039;打开其他的菜单&#039;&#039;&#039;&lt;br /&gt;
  就像在控制台的指令，输入“open：文件名” “文件名”就是菜单的名字。如果这个菜单存在，他将会被打开，否则将会显示一个错误的信息。点击的玩家需要相&lt;br /&gt;
  应打开菜单的权限来打开菜单。&lt;br /&gt;
  范例：&lt;br /&gt;
  COMMAND: &#039;open: example.yml&#039;&lt;br /&gt;
&#039;&#039;&#039;BungeeCord服务器的命令&#039;&#039;&#039;&lt;br /&gt;
  你可以使用“Server：&amp;lt;目标服务器&amp;gt;&lt;br /&gt;
  这个命令将会使点击的玩家尝试连接到目标服务器，如果你不知道什么是BungeeCord，请忽略这条=A=&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;server: hub&#039;&lt;br /&gt;
&#039;&#039;&#039;玩家点券（使用PlayerPoints插件）&#039;&#039;&#039;&lt;br /&gt;
  这部分是为了PlayerPoint插件的节点，你可以使用命令“give-points: &amp;lt;数量&amp;gt;”&lt;br /&gt;
  在范例中，50个点券会给点击这个图标的用户，如果你想实现点击扣除点卷的功能，请看节点 points。&lt;br /&gt;
  范例：&lt;br /&gt;
    COMMAND: &#039;give-points: 50&#039;&lt;br /&gt;
&#039;&#039;&#039;Boss血条消息 (使用BarApi插件)&#039;&#039;&#039;&lt;br /&gt;
 发送一条boss血条消息, 你必须安装BarApi. 格式是： &#039;dragon-bar: &amp;lt;以秒为单位的时间&amp;gt; | &amp;lt;消息&amp;gt;&#039;. &lt;br /&gt;
 在下面的范例中, 一个boss血条将会出现在点击这个图标的人的视野内10秒, 消息会显示他的名字。&lt;br /&gt;
  Example:&lt;br /&gt;
    COMMAND: &#039;dragon-bar: 10 | &amp;amp;aHello, {player}!&#039;&lt;br /&gt;
&lt;br /&gt;
== 经济插件设置教程 ==&lt;br /&gt;
=== 要求 ===&lt;br /&gt;
  Vault (必须更新到最新的版本。)&lt;br /&gt;
  一个经济插件 (就像iConomy, BOSEconomy, etc等插件) &lt;br /&gt;
=== 安装 ===&lt;br /&gt;
  放置Vault和经济插件到plugin的文件夹内（如果你没有安装经济插件）。&lt;br /&gt;
  现在你就可以使用点击的价格和命令：“give-money：”&lt;br /&gt;
== 牌子设置教程 ==&lt;br /&gt;
=== 如何创建一个牌子 ===&lt;br /&gt;
  创建一个牌子&lt;br /&gt;
  在牌子的首行输入[Menu](你需要拥有： &amp;quot;chestcommands.sign&amp;quot;的权限）&lt;br /&gt;
  在第二行输入菜单名字（你需要加入&amp;quot;.yml&amp;quot;)&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
  如果该菜单已经成功创建，则第一行的[Menu]则会变成蓝色，右键即可打开菜单。&lt;br /&gt;
  如果该牌子创建有误，则第一行的[Menu]则会变成红色，并且在聊天框里会返回错误信息。&lt;br /&gt;
=== 范例 ===&lt;br /&gt;
  略=A= &lt;br /&gt;
== 符号教程 ==&lt;br /&gt;
  这些符号可以运用在“tell”命令，和在图标名称，lore中。&lt;br /&gt;
=== 符号 ===&lt;br /&gt;
  &amp;lt;3 = ❤&lt;br /&gt;
  [*] = ★&lt;br /&gt;
  [**] = ✹&lt;br /&gt;
  [p] = ●&lt;br /&gt;
  [v] = ✔&lt;br /&gt;
  [+] = ♦&lt;br /&gt;
  [++] = ✦&lt;br /&gt;
  [x] = █&lt;br /&gt;
  [/] = ▌&lt;br /&gt;
  [cross] = ✠&lt;br /&gt;
  [arrow_right] = →&lt;br /&gt;
  [arrow_left] = ←&lt;br /&gt;
  [arrow_up] = ↑&lt;br /&gt;
  [arrow_down] = ↓&lt;br /&gt;
=== 添加新的符号 ===&lt;br /&gt;
  打开文件placeholders.yml，按照这样的格式添加一行：&lt;br /&gt;
  名称: 内容&lt;br /&gt;
   [special]: \u2726 Special Item \u2726&lt;br /&gt;
  这表示着文中的[special]将会被替换✹ Special Item ✹。你可以使用任何的Unicode符号，使用java语言。网站：&lt;br /&gt;
  http://www.fileformat.info/info/unicode/index.htm&lt;br /&gt;
== 命令与权限的教程 ==&lt;br /&gt;
=== 全部权限与命令 ===&lt;br /&gt;
  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 权限 !! 叙述&lt;br /&gt;
|-&lt;br /&gt;
| /chestcommands 或 /cc || - || 主命令。通过这个命令可以知道版本，开发人员和帮助命令的信息。&lt;br /&gt;
|-&lt;br /&gt;
| /cc help || chestcommands.command.help ||列出所有命令。&lt;br /&gt;
|-&lt;br /&gt;
| /cc reload || chestcommands.command.reload || 重载插件&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; || chestcommands.command.open || 直接打开任何已经加载的菜单。但是你也需要菜单本身的打开权限。&lt;br /&gt;
|-&lt;br /&gt;
| /cc open &amp;lt;路径&amp;gt; [玩家] || chestcommands.command.open.others || 为其他的玩家打开一个菜单，它允许你打开所有的菜单（不需要相应权限）&lt;br /&gt;
|-&lt;br /&gt;
| /cc list || chestcommands.command.list || 列出所有正确加载的菜单。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.update || 在其加入时候，如果有更新，向他显示更新信息。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.open.filename.yml || 打开一个菜单的权限。你需要将filename改成菜单的名称。&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.economy.bypass || 绕过经济消耗（免费）&lt;br /&gt;
|-&lt;br /&gt;
| - || chestcommands.sign || 创建牌子&lt;br /&gt;
|}&lt;br /&gt;
=== 图标权限 ===&lt;br /&gt;
  如需查看图标权限，请上翻去看图标教程。&lt;/div&gt;</summary>
		<author><name>1582952890</name></author>
	</entry>
</feed>