<?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=THS-yuhao</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=THS-yuhao"/>
	<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/THS-yuhao"/>
	<updated>2026-05-10T19:29:56Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://mineplugin.org/index.php?title=Bukkit/BukkitAPI%E6%96%87%E6%A1%A3&amp;diff=14283</id>
		<title>Bukkit/BukkitAPI文档</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Bukkit/BukkitAPI%E6%96%87%E6%A1%A3&amp;diff=14283"/>
		<updated>2021-05-05T04:08:39Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SpigotMc英语版本(Bukkit SNAPSHOT API)&lt;br /&gt;
&lt;br /&gt;
 https://hub.spigotmc.org/javadocs/bukkit/&lt;br /&gt;
&lt;br /&gt;
[https://bukkit.windit.net/javadoc/ 国人汉化版]&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14282</id>
		<title>Plugin.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14282"/>
		<updated>2021-05-05T02:21:16Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DocsInclude}}&lt;br /&gt;
当Bukkit读取一个插件时,它需要知道插件的一些基础属性.它从plugin.yml中读取. 这个文件由一组元素组成,并且没有缩进必需在新行定义. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 属性 &lt;br /&gt;
|-&lt;br /&gt;
! 属性 &lt;br /&gt;
! 必需&lt;br /&gt;
! 描述 &lt;br /&gt;
! 示例 &lt;br /&gt;
! 笔记&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| name &lt;br /&gt;
| 是 &lt;br /&gt;
| 插件的名字. &lt;br /&gt;
| &amp;lt;code&amp;gt;name: MyPlugin&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Must consist of all alphanumeric characters and underscores (a-z,A-Z,0-9, _) &lt;br /&gt;
*Used to determine the name of the plugin&#039;s data folder. Data folders are placed in the ./plugins/ directory by default. &lt;br /&gt;
*It is good practice to name your jar the same as this, for example &#039;MyPlugin.jar&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| version &lt;br /&gt;
| yes &lt;br /&gt;
| The version of this plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;version: 1.4.1&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Version is an arbitrary string, however the most common format is MajorRelease.MinorRelease.Build (eg: 1.4.1). &lt;br /&gt;
*Typically you will increment this every time you release a new feature or bug fix. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A human friendly description of the functionality your plugin provides. &lt;br /&gt;
| &amp;lt;code&amp;gt;description: This plugin is so 31337. You can set yourself on fire.&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The description can have multiple lines. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| load&lt;br /&gt;
| no&lt;br /&gt;
| Explicitly state when the plugin should be loaded. if not supplied will default to postworld&lt;br /&gt;
| &amp;lt;code&amp;gt; load: STARTUP &amp;lt;/code&amp;gt;&lt;br /&gt;
| Has two possible values&lt;br /&gt;
* STARTUP&lt;br /&gt;
* POSTWORLD&lt;br /&gt;
|-&lt;br /&gt;
| author &lt;br /&gt;
| no &lt;br /&gt;
| Uniquely identifies who developed this plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;author: CaptainInflamo&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Gives credit to the developer. &lt;br /&gt;
*Used in some server error messages to provide helpful feedback on who to contact when an error occurs. &lt;br /&gt;
*A bukkit.org forum handle or email address is recommended. &lt;br /&gt;
*Is displayed when a user types /version PluginName&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| authors &lt;br /&gt;
| no &lt;br /&gt;
| Allows you to list multiple authors, if it is a collaborative project. See author. &lt;br /&gt;
| &amp;lt;code&amp;gt;authors: [Cogito, verrier, EvilSeph]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*You can define both author and authors, however they will be merged into one list internally.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| website &lt;br /&gt;
| no &lt;br /&gt;
| The plugin&#039;s or author&#039;s website. &lt;br /&gt;
| &amp;lt;code&amp;gt;website: http://forums.bukkit.org/threads/MyPlugin.31337/&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*If you have no dedicated website, a link to the Bukkit forum post where this plugin is listed is highly recommended. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| main &lt;br /&gt;
| yes &lt;br /&gt;
| Points to the class that extends JavaPlugin &lt;br /&gt;
| &amp;lt;code&amp;gt;main: org.bukkit.plugin.MyPlugin&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Note that this must contain the full namespace including the class file itself. &lt;br /&gt;
*If your namespace is &amp;lt;code&amp;gt;org.bukkit.plugin&amp;lt;/code&amp;gt;, and your class file is called &amp;lt;code&amp;gt;MyPlugin&amp;lt;/code&amp;gt; then this must be &amp;lt;code&amp;gt;org.bukkit.plugin.MyPlugin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| database &lt;br /&gt;
| no &lt;br /&gt;
| Set to true if this plugin uses a database. &lt;br /&gt;
| &amp;lt;code&amp;gt;database: false&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Using a database is non-trivial. See [[Plugin_Databases]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| depend &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins that your plugin requires to load. &lt;br /&gt;
| &amp;lt;code&amp;gt;depend: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; attribute of the required plugin in order to specify the dependency. &lt;br /&gt;
*If any plugin listed here is not found your plugin will fail to load. &lt;br /&gt;
*If multiple plugins list each other as a depend, so that there are no plugins without an unloadable dependency, all will fail to load. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| prefix&lt;br /&gt;
| no&lt;br /&gt;
| The name to use when logging to console instead of the plugin&#039;s name.&lt;br /&gt;
| &amp;lt;code&amp;gt;prefix: ex-why-zee&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| softdepend &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins that are required for your plugin to have full functionality. &lt;br /&gt;
| &amp;lt;code&amp;gt;softdepend: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; atrribute of the desired plugin in order to specify the dependancy. &lt;br /&gt;
*Your plugin will load after any plugins listed here. &lt;br /&gt;
*Circular soft dependencies are loaded arbitrarily. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| loadbefore &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins should be loaded after your plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;loadbefore: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Treated as if the listed plugin soft depends on the specifying plugin. &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; atrribute of the desired plugin in order to specify the target. &lt;br /&gt;
*Your plugin will load before any plugins listed here. &lt;br /&gt;
*Circular soft dependencies are loaded arbitrarily. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| commands &lt;br /&gt;
| no &lt;br /&gt;
| The name of a command the plugin wishes to register, as well as an optional list of command attributes. &lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 commands:&lt;br /&gt;
  flagrate:&lt;br /&gt;
    [optional command attributes]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*The command name should not contain the leading &#039;/&#039; required to issue a command. &lt;br /&gt;
*You can choose any command name you wish, however &#039;common&#039; commands such as &amp;lt;code&amp;gt;/kick&amp;lt;/code&amp;gt; are often already registered. Use the &#039;alias&#039; command attribute to supply alternate names. @TODO: verify we&#039;re happy with this&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permissions &lt;br /&gt;
| no &lt;br /&gt;
| Permissions that the plugin whishes to register. Each node represents a permission to register. Each permission can have additional attributes. &lt;br /&gt;
| &amp;lt;pre&amp;gt;permissions:&lt;br /&gt;
  inferno.*:&lt;br /&gt;
    [optional permission attributes]&lt;br /&gt;
  inferno.flagate:&lt;br /&gt;
    [optional permission attributes]&lt;br /&gt;
  inferno.burningdeaths:&lt;br /&gt;
    [optional permission attributes]&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Permission registration is optional, can also be done from code &lt;br /&gt;
*Permission registration allows you to set descriptions, defaults, and child parent relationships &lt;br /&gt;
*Permission names should be kept in the style of &amp;amp;lt;pluginname&amp;amp;gt;.[category].[category].&amp;amp;lt;permission&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A command block starts with the command&#039;s name, and then has a list of attributes. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A short description of what the command does. &lt;br /&gt;
| &amp;lt;code&amp;gt;description: Set yourself on fire&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Can be used in conjunction with /help&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| aliases &lt;br /&gt;
| no &lt;br /&gt;
| Alternate command names a user may use instead&lt;br /&gt;
| &lt;br /&gt;
 &amp;lt;code&amp;gt;aliases: combust_me&amp;lt;/code&amp;gt; OR &lt;br /&gt;
 &amp;lt;code&amp;gt;aliases: [combust_me, combustMe, cm]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*You can specify any of none, 1 or many aliases. &lt;br /&gt;
*If you specify more than one alias, they must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists )&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permission &lt;br /&gt;
| no &lt;br /&gt;
| The most basic permission node required to use the command &lt;br /&gt;
| &lt;br /&gt;
 &amp;lt;code&amp;gt;permission: inferno.flagrate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*This permissions node can be used to determine if a user should be able to see this command &lt;br /&gt;
*Some plugins will use this node to construct a personalized /help&lt;br /&gt;
|-&lt;br /&gt;
| permission-message&lt;br /&gt;
| no &lt;br /&gt;
| A no-permission message&lt;br /&gt;
| &amp;lt;code&amp;gt;permission-message: You do not have /&amp;amp;lt;permission&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
*Displayed to a player that attempts to use a command but does not have the associated permission&lt;br /&gt;
*&amp;amp;lt;permission&amp;amp;gt; is a macro that is replaced with the permission node that is required to use the command. &lt;br /&gt;
*You may use empty quotes to indicate nothing should be displayed.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| usage &lt;br /&gt;
| no &lt;br /&gt;
| A short description of how to use this command. &lt;br /&gt;
| &amp;lt;code&amp;gt;usage: Syntax error! Perhaps you meant /&amp;amp;lt;command&amp;amp;gt; PlayerName?&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Displayed to whoever issued the command when the plugin&#039;s command handler (onCommand typically) does not return true. &lt;br /&gt;
*&amp;amp;lt;command&amp;amp;gt; is a macro that is replaced with the command issued wherever it occurs. &lt;br /&gt;
*To use the string &amp;quot;Usage:&amp;quot; (i.e. &amp;lt;code&amp;gt;usage: Usage: /god [player]&amp;lt;/code&amp;gt;, surround the text after the usage: label with double-quotes:&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;usage: &amp;quot;Usage: /god [player]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A permission block starts with the permission&#039;s name and is followed by nodes of attributes &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Permission Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A short description of what this permission allows &lt;br /&gt;
| &amp;lt;pre&amp;gt;description: Allows you to set yourself on fire&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Allows programmatic access, and helps server administrators&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| default &lt;br /&gt;
| no &lt;br /&gt;
| Sets the default value of the permission &lt;br /&gt;
| &amp;lt;pre&amp;gt;default: true&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*If node does not exist the permission defaults to op&lt;br /&gt;
*allowed defaults are: true, false, op, not op &lt;br /&gt;
*op default will be true if player is op &lt;br /&gt;
*no op default is the opposite behavior (of op)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| children &lt;br /&gt;
| no &lt;br /&gt;
| allows you to set children for the permission. Child nodes are permission names &lt;br /&gt;
| &amp;lt;pre&amp;gt;children:&lt;br /&gt;
  inferno.flagrate: true&lt;br /&gt;
  inferno.burningdeaths: true&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Each child node must be either set to true or false &lt;br /&gt;
**a child node of true inherits the parent permission &lt;br /&gt;
**a child node of false inherits the inverse parent permission&lt;br /&gt;
* Can also contain other permission nodes [https://github.com/bukkit/bukkit/commit/326f2aca9b98d1d096842d3410000ed9d84611f5 {1}]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot; style=&amp;quot;border: 1px #aaa solid;&amp;quot;&amp;gt;&lt;br /&gt;
 name: Inferno&lt;br /&gt;
 version: 1.4.1&lt;br /&gt;
 description: This plugin is so 31337. You can set yourself on fire.&lt;br /&gt;
 # We could place every author in the authors list, but chose not to for illustrative purposes&lt;br /&gt;
 # Also, having an author distinguishes that person as the project lead, and ensures their &lt;br /&gt;
 # name is displayed first&lt;br /&gt;
 author: CaptainInflamo&lt;br /&gt;
 authors: [Cogito, verrier, EvilSeph] &lt;br /&gt;
 website: http://forums.bukkit.org/threads/MyPlugin.31337/&lt;br /&gt;
 &lt;br /&gt;
 main: com.captaininflamo.bukkit.inferno.Inferno&lt;br /&gt;
 database: false&lt;br /&gt;
 depend: [NewFire, FlameWire]&lt;br /&gt;
 &lt;br /&gt;
 commands:&lt;br /&gt;
   flagrate:&lt;br /&gt;
     description: Set yourself on fire.&lt;br /&gt;
     aliases: [combust_me, combustMe]&lt;br /&gt;
     permission: inferno.flagrate&lt;br /&gt;
     usage: Syntax error! Simply type /&amp;amp;lt;command&amp;amp;gt; to ignite yourself.&lt;br /&gt;
   burningdeaths:&lt;br /&gt;
     description: List how many times you have died by fire.&lt;br /&gt;
     aliases: [burning_deaths, burningDeaths]&lt;br /&gt;
     permission: inferno.burningdeaths&lt;br /&gt;
     usage: |&lt;br /&gt;
       /&amp;amp;lt;command&amp;amp;gt; [player]&lt;br /&gt;
       Example: /&amp;amp;lt;command&amp;amp;gt; - see how many times you have burned to death&lt;br /&gt;
       Example: /&amp;amp;lt;command&amp;amp;gt; CaptainIce - see how many times CaptainIce has burned to death&lt;br /&gt;
 &lt;br /&gt;
 permissions:&lt;br /&gt;
   inferno.*:&lt;br /&gt;
     description: Gives access to all Inferno commands&lt;br /&gt;
     children:&lt;br /&gt;
       inferno.flagrate: true&lt;br /&gt;
       inferno.burningdeaths: true&lt;br /&gt;
       inferno.burningdeaths.others: true&lt;br /&gt;
   inferno.flagrate:&lt;br /&gt;
     description: Allows you to ignite yourself&lt;br /&gt;
     default: true&lt;br /&gt;
   inferno.burningdeaths:&lt;br /&gt;
     description: Allows you to see how many times you have burned to death&lt;br /&gt;
     default: true&lt;br /&gt;
   inferno.burningdeaths.others:&lt;br /&gt;
     description: Allows you to see how many times others have burned to death&lt;br /&gt;
     default: op&lt;br /&gt;
     children:&lt;br /&gt;
       inferno.burningdeaths: true&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Languages|Plugin YAML}}&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14281</id>
		<title>Plugin.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14281"/>
		<updated>2021-05-05T02:19:34Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DocsInclude}}&lt;br /&gt;
当Bukkit读取一个插件时,它需要知道插件的一些基础属性.它从plugin.yml中读取. 这个文件由一组元素组成,并且没有缩进必需在新行定义. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Attributes &lt;br /&gt;
|-&lt;br /&gt;
! Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| name &lt;br /&gt;
| yes &lt;br /&gt;
| The name of your plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;name: MyPlugin&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Must consist of all alphanumeric characters and underscores (a-z,A-Z,0-9, _) &lt;br /&gt;
*Used to determine the name of the plugin&#039;s data folder. Data folders are placed in the ./plugins/ directory by default. &lt;br /&gt;
*It is good practice to name your jar the same as this, for example &#039;MyPlugin.jar&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| version &lt;br /&gt;
| yes &lt;br /&gt;
| The version of this plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;version: 1.4.1&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Version is an arbitrary string, however the most common format is MajorRelease.MinorRelease.Build (eg: 1.4.1). &lt;br /&gt;
*Typically you will increment this every time you release a new feature or bug fix. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A human friendly description of the functionality your plugin provides. &lt;br /&gt;
| &amp;lt;code&amp;gt;description: This plugin is so 31337. You can set yourself on fire.&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The description can have multiple lines. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| load&lt;br /&gt;
| no&lt;br /&gt;
| Explicitly state when the plugin should be loaded. if not supplied will default to postworld&lt;br /&gt;
| &amp;lt;code&amp;gt; load: STARTUP &amp;lt;/code&amp;gt;&lt;br /&gt;
| Has two possible values&lt;br /&gt;
* STARTUP&lt;br /&gt;
* POSTWORLD&lt;br /&gt;
|-&lt;br /&gt;
| author &lt;br /&gt;
| no &lt;br /&gt;
| Uniquely identifies who developed this plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;author: CaptainInflamo&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Gives credit to the developer. &lt;br /&gt;
*Used in some server error messages to provide helpful feedback on who to contact when an error occurs. &lt;br /&gt;
*A bukkit.org forum handle or email address is recommended. &lt;br /&gt;
*Is displayed when a user types /version PluginName&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| authors &lt;br /&gt;
| no &lt;br /&gt;
| Allows you to list multiple authors, if it is a collaborative project. See author. &lt;br /&gt;
| &amp;lt;code&amp;gt;authors: [Cogito, verrier, EvilSeph]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*You can define both author and authors, however they will be merged into one list internally.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| website &lt;br /&gt;
| no &lt;br /&gt;
| The plugin&#039;s or author&#039;s website. &lt;br /&gt;
| &amp;lt;code&amp;gt;website: http://forums.bukkit.org/threads/MyPlugin.31337/&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*If you have no dedicated website, a link to the Bukkit forum post where this plugin is listed is highly recommended. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| main &lt;br /&gt;
| yes &lt;br /&gt;
| Points to the class that extends JavaPlugin &lt;br /&gt;
| &amp;lt;code&amp;gt;main: org.bukkit.plugin.MyPlugin&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Note that this must contain the full namespace including the class file itself. &lt;br /&gt;
*If your namespace is &amp;lt;code&amp;gt;org.bukkit.plugin&amp;lt;/code&amp;gt;, and your class file is called &amp;lt;code&amp;gt;MyPlugin&amp;lt;/code&amp;gt; then this must be &amp;lt;code&amp;gt;org.bukkit.plugin.MyPlugin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| database &lt;br /&gt;
| no &lt;br /&gt;
| Set to true if this plugin uses a database. &lt;br /&gt;
| &amp;lt;code&amp;gt;database: false&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Using a database is non-trivial. See [[Plugin_Databases]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| depend &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins that your plugin requires to load. &lt;br /&gt;
| &amp;lt;code&amp;gt;depend: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; attribute of the required plugin in order to specify the dependency. &lt;br /&gt;
*If any plugin listed here is not found your plugin will fail to load. &lt;br /&gt;
*If multiple plugins list each other as a depend, so that there are no plugins without an unloadable dependency, all will fail to load. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| prefix&lt;br /&gt;
| no&lt;br /&gt;
| The name to use when logging to console instead of the plugin&#039;s name.&lt;br /&gt;
| &amp;lt;code&amp;gt;prefix: ex-why-zee&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| softdepend &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins that are required for your plugin to have full functionality. &lt;br /&gt;
| &amp;lt;code&amp;gt;softdepend: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; atrribute of the desired plugin in order to specify the dependancy. &lt;br /&gt;
*Your plugin will load after any plugins listed here. &lt;br /&gt;
*Circular soft dependencies are loaded arbitrarily. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| loadbefore &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins should be loaded after your plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;loadbefore: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Treated as if the listed plugin soft depends on the specifying plugin. &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; atrribute of the desired plugin in order to specify the target. &lt;br /&gt;
*Your plugin will load before any plugins listed here. &lt;br /&gt;
*Circular soft dependencies are loaded arbitrarily. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| commands &lt;br /&gt;
| no &lt;br /&gt;
| The name of a command the plugin wishes to register, as well as an optional list of command attributes. &lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 commands:&lt;br /&gt;
  flagrate:&lt;br /&gt;
    [optional command attributes]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*The command name should not contain the leading &#039;/&#039; required to issue a command. &lt;br /&gt;
*You can choose any command name you wish, however &#039;common&#039; commands such as &amp;lt;code&amp;gt;/kick&amp;lt;/code&amp;gt; are often already registered. Use the &#039;alias&#039; command attribute to supply alternate names. @TODO: verify we&#039;re happy with this&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permissions &lt;br /&gt;
| no &lt;br /&gt;
| Permissions that the plugin whishes to register. Each node represents a permission to register. Each permission can have additional attributes. &lt;br /&gt;
| &amp;lt;pre&amp;gt;permissions:&lt;br /&gt;
  inferno.*:&lt;br /&gt;
    [optional permission attributes]&lt;br /&gt;
  inferno.flagate:&lt;br /&gt;
    [optional permission attributes]&lt;br /&gt;
  inferno.burningdeaths:&lt;br /&gt;
    [optional permission attributes]&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Permission registration is optional, can also be done from code &lt;br /&gt;
*Permission registration allows you to set descriptions, defaults, and child parent relationships &lt;br /&gt;
*Permission names should be kept in the style of &amp;amp;lt;pluginname&amp;amp;gt;.[category].[category].&amp;amp;lt;permission&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A command block starts with the command&#039;s name, and then has a list of attributes. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A short description of what the command does. &lt;br /&gt;
| &amp;lt;code&amp;gt;description: Set yourself on fire&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Can be used in conjunction with /help&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| aliases &lt;br /&gt;
| no &lt;br /&gt;
| Alternate command names a user may use instead&lt;br /&gt;
| &lt;br /&gt;
 &amp;lt;code&amp;gt;aliases: combust_me&amp;lt;/code&amp;gt; OR &lt;br /&gt;
 &amp;lt;code&amp;gt;aliases: [combust_me, combustMe, cm]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*You can specify any of none, 1 or many aliases. &lt;br /&gt;
*If you specify more than one alias, they must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists )&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permission &lt;br /&gt;
| no &lt;br /&gt;
| The most basic permission node required to use the command &lt;br /&gt;
| &lt;br /&gt;
 &amp;lt;code&amp;gt;permission: inferno.flagrate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*This permissions node can be used to determine if a user should be able to see this command &lt;br /&gt;
*Some plugins will use this node to construct a personalized /help&lt;br /&gt;
|-&lt;br /&gt;
| permission-message&lt;br /&gt;
| no &lt;br /&gt;
| A no-permission message&lt;br /&gt;
| &amp;lt;code&amp;gt;permission-message: You do not have /&amp;amp;lt;permission&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
*Displayed to a player that attempts to use a command but does not have the associated permission&lt;br /&gt;
*&amp;amp;lt;permission&amp;amp;gt; is a macro that is replaced with the permission node that is required to use the command. &lt;br /&gt;
*You may use empty quotes to indicate nothing should be displayed.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| usage &lt;br /&gt;
| no &lt;br /&gt;
| A short description of how to use this command. &lt;br /&gt;
| &amp;lt;code&amp;gt;usage: Syntax error! Perhaps you meant /&amp;amp;lt;command&amp;amp;gt; PlayerName?&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Displayed to whoever issued the command when the plugin&#039;s command handler (onCommand typically) does not return true. &lt;br /&gt;
*&amp;amp;lt;command&amp;amp;gt; is a macro that is replaced with the command issued wherever it occurs. &lt;br /&gt;
*To use the string &amp;quot;Usage:&amp;quot; (i.e. &amp;lt;code&amp;gt;usage: Usage: /god [player]&amp;lt;/code&amp;gt;, surround the text after the usage: label with double-quotes:&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;usage: &amp;quot;Usage: /god [player]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A permission block starts with the permission&#039;s name and is followed by nodes of attributes &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Permission Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A short description of what this permission allows &lt;br /&gt;
| &amp;lt;pre&amp;gt;description: Allows you to set yourself on fire&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Allows programmatic access, and helps server administrators&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| default &lt;br /&gt;
| no &lt;br /&gt;
| Sets the default value of the permission &lt;br /&gt;
| &amp;lt;pre&amp;gt;default: true&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*If node does not exist the permission defaults to op&lt;br /&gt;
*allowed defaults are: true, false, op, not op &lt;br /&gt;
*op default will be true if player is op &lt;br /&gt;
*no op default is the opposite behavior (of op)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| children &lt;br /&gt;
| no &lt;br /&gt;
| allows you to set children for the permission. Child nodes are permission names &lt;br /&gt;
| &amp;lt;pre&amp;gt;children:&lt;br /&gt;
  inferno.flagrate: true&lt;br /&gt;
  inferno.burningdeaths: true&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Each child node must be either set to true or false &lt;br /&gt;
**a child node of true inherits the parent permission &lt;br /&gt;
**a child node of false inherits the inverse parent permission&lt;br /&gt;
* Can also contain other permission nodes [https://github.com/bukkit/bukkit/commit/326f2aca9b98d1d096842d3410000ed9d84611f5 {1}]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot; style=&amp;quot;border: 1px #aaa solid;&amp;quot;&amp;gt;&lt;br /&gt;
 name: Inferno&lt;br /&gt;
 version: 1.4.1&lt;br /&gt;
 description: This plugin is so 31337. You can set yourself on fire.&lt;br /&gt;
 # We could place every author in the authors list, but chose not to for illustrative purposes&lt;br /&gt;
 # Also, having an author distinguishes that person as the project lead, and ensures their &lt;br /&gt;
 # name is displayed first&lt;br /&gt;
 author: CaptainInflamo&lt;br /&gt;
 authors: [Cogito, verrier, EvilSeph] &lt;br /&gt;
 website: http://forums.bukkit.org/threads/MyPlugin.31337/&lt;br /&gt;
 &lt;br /&gt;
 main: com.captaininflamo.bukkit.inferno.Inferno&lt;br /&gt;
 database: false&lt;br /&gt;
 depend: [NewFire, FlameWire]&lt;br /&gt;
 &lt;br /&gt;
 commands:&lt;br /&gt;
   flagrate:&lt;br /&gt;
     description: Set yourself on fire.&lt;br /&gt;
     aliases: [combust_me, combustMe]&lt;br /&gt;
     permission: inferno.flagrate&lt;br /&gt;
     usage: Syntax error! Simply type /&amp;amp;lt;command&amp;amp;gt; to ignite yourself.&lt;br /&gt;
   burningdeaths:&lt;br /&gt;
     description: List how many times you have died by fire.&lt;br /&gt;
     aliases: [burning_deaths, burningDeaths]&lt;br /&gt;
     permission: inferno.burningdeaths&lt;br /&gt;
     usage: |&lt;br /&gt;
       /&amp;amp;lt;command&amp;amp;gt; [player]&lt;br /&gt;
       Example: /&amp;amp;lt;command&amp;amp;gt; - see how many times you have burned to death&lt;br /&gt;
       Example: /&amp;amp;lt;command&amp;amp;gt; CaptainIce - see how many times CaptainIce has burned to death&lt;br /&gt;
 &lt;br /&gt;
 permissions:&lt;br /&gt;
   inferno.*:&lt;br /&gt;
     description: Gives access to all Inferno commands&lt;br /&gt;
     children:&lt;br /&gt;
       inferno.flagrate: true&lt;br /&gt;
       inferno.burningdeaths: true&lt;br /&gt;
       inferno.burningdeaths.others: true&lt;br /&gt;
   inferno.flagrate:&lt;br /&gt;
     description: Allows you to ignite yourself&lt;br /&gt;
     default: true&lt;br /&gt;
   inferno.burningdeaths:&lt;br /&gt;
     description: Allows you to see how many times you have burned to death&lt;br /&gt;
     default: true&lt;br /&gt;
   inferno.burningdeaths.others:&lt;br /&gt;
     description: Allows you to see how many times others have burned to death&lt;br /&gt;
     default: op&lt;br /&gt;
     children:&lt;br /&gt;
       inferno.burningdeaths: true&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Languages|Plugin YAML}}&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14280</id>
		<title>Plugin.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14280"/>
		<updated>2021-05-05T02:16:28Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DocsInclude}}&lt;br /&gt;
When Bukkit loads a plugin, it needs to know some basic information about it. It reads this information from a YAML file, &#039;plugin.yml&#039;. This file consists of a set of attributes, each defined on a new line and with no indentation. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Attributes &lt;br /&gt;
|-&lt;br /&gt;
! Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| name &lt;br /&gt;
| yes &lt;br /&gt;
| The name of your plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;name: MyPlugin&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Must consist of all alphanumeric characters and underscores (a-z,A-Z,0-9, _) &lt;br /&gt;
*Used to determine the name of the plugin&#039;s data folder. Data folders are placed in the ./plugins/ directory by default. &lt;br /&gt;
*It is good practice to name your jar the same as this, for example &#039;MyPlugin.jar&#039;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| version &lt;br /&gt;
| yes &lt;br /&gt;
| The version of this plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;version: 1.4.1&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Version is an arbitrary string, however the most common format is MajorRelease.MinorRelease.Build (eg: 1.4.1). &lt;br /&gt;
*Typically you will increment this every time you release a new feature or bug fix. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A human friendly description of the functionality your plugin provides. &lt;br /&gt;
| &amp;lt;code&amp;gt;description: This plugin is so 31337. You can set yourself on fire.&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The description can have multiple lines. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| load&lt;br /&gt;
| no&lt;br /&gt;
| Explicitly state when the plugin should be loaded. if not supplied will default to postworld&lt;br /&gt;
| &amp;lt;code&amp;gt; load: STARTUP &amp;lt;/code&amp;gt;&lt;br /&gt;
| Has two possible values&lt;br /&gt;
* STARTUP&lt;br /&gt;
* POSTWORLD&lt;br /&gt;
|-&lt;br /&gt;
| author &lt;br /&gt;
| no &lt;br /&gt;
| Uniquely identifies who developed this plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;author: CaptainInflamo&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Gives credit to the developer. &lt;br /&gt;
*Used in some server error messages to provide helpful feedback on who to contact when an error occurs. &lt;br /&gt;
*A bukkit.org forum handle or email address is recommended. &lt;br /&gt;
*Is displayed when a user types /version PluginName&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| authors &lt;br /&gt;
| no &lt;br /&gt;
| Allows you to list multiple authors, if it is a collaborative project. See author. &lt;br /&gt;
| &amp;lt;code&amp;gt;authors: [Cogito, verrier, EvilSeph]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*You can define both author and authors, however they will be merged into one list internally.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| website &lt;br /&gt;
| no &lt;br /&gt;
| The plugin&#039;s or author&#039;s website. &lt;br /&gt;
| &amp;lt;code&amp;gt;website: http://forums.bukkit.org/threads/MyPlugin.31337/&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*If you have no dedicated website, a link to the Bukkit forum post where this plugin is listed is highly recommended. &lt;br /&gt;
*Displayed when a user types &amp;lt;code&amp;gt;/version PluginName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;font-weight: bold;&amp;quot;&lt;br /&gt;
| main &lt;br /&gt;
| yes &lt;br /&gt;
| Points to the class that extends JavaPlugin &lt;br /&gt;
| &amp;lt;code&amp;gt;main: org.bukkit.plugin.MyPlugin&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Note that this must contain the full namespace including the class file itself. &lt;br /&gt;
*If your namespace is &amp;lt;code&amp;gt;org.bukkit.plugin&amp;lt;/code&amp;gt;, and your class file is called &amp;lt;code&amp;gt;MyPlugin&amp;lt;/code&amp;gt; then this must be &amp;lt;code&amp;gt;org.bukkit.plugin.MyPlugin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| database &lt;br /&gt;
| no &lt;br /&gt;
| Set to true if this plugin uses a database. &lt;br /&gt;
| &amp;lt;code&amp;gt;database: false&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Using a database is non-trivial. See [[Plugin_Databases]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| depend &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins that your plugin requires to load. &lt;br /&gt;
| &amp;lt;code&amp;gt;depend: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; attribute of the required plugin in order to specify the dependency. &lt;br /&gt;
*If any plugin listed here is not found your plugin will fail to load. &lt;br /&gt;
*If multiple plugins list each other as a depend, so that there are no plugins without an unloadable dependency, all will fail to load. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| prefix&lt;br /&gt;
| no&lt;br /&gt;
| The name to use when logging to console instead of the plugin&#039;s name.&lt;br /&gt;
| &amp;lt;code&amp;gt;prefix: ex-why-zee&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| softdepend &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins that are required for your plugin to have full functionality. &lt;br /&gt;
| &amp;lt;code&amp;gt;softdepend: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; atrribute of the desired plugin in order to specify the dependancy. &lt;br /&gt;
*Your plugin will load after any plugins listed here. &lt;br /&gt;
*Circular soft dependencies are loaded arbitrarily. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| loadbefore &lt;br /&gt;
| no &lt;br /&gt;
| A list of plugins should be loaded after your plugin. &lt;br /&gt;
| &amp;lt;code&amp;gt;loadbefore: [OnePlugin, AnotherPlugin]&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The value must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists ) &lt;br /&gt;
*Treated as if the listed plugin soft depends on the specifying plugin. &lt;br /&gt;
*Use the &amp;quot;name&amp;quot; atrribute of the desired plugin in order to specify the target. &lt;br /&gt;
*Your plugin will load before any plugins listed here. &lt;br /&gt;
*Circular soft dependencies are loaded arbitrarily. &lt;br /&gt;
*(See: Wiki: Plugin_Dependencies)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| commands &lt;br /&gt;
| no &lt;br /&gt;
| The name of a command the plugin wishes to register, as well as an optional list of command attributes. &lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 commands:&lt;br /&gt;
  flagrate:&lt;br /&gt;
    [optional command attributes]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*The command name should not contain the leading &#039;/&#039; required to issue a command. &lt;br /&gt;
*You can choose any command name you wish, however &#039;common&#039; commands such as &amp;lt;code&amp;gt;/kick&amp;lt;/code&amp;gt; are often already registered. Use the &#039;alias&#039; command attribute to supply alternate names. @TODO: verify we&#039;re happy with this&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permissions &lt;br /&gt;
| no &lt;br /&gt;
| Permissions that the plugin whishes to register. Each node represents a permission to register. Each permission can have additional attributes. &lt;br /&gt;
| &amp;lt;pre&amp;gt;permissions:&lt;br /&gt;
  inferno.*:&lt;br /&gt;
    [optional permission attributes]&lt;br /&gt;
  inferno.flagate:&lt;br /&gt;
    [optional permission attributes]&lt;br /&gt;
  inferno.burningdeaths:&lt;br /&gt;
    [optional permission attributes]&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Permission registration is optional, can also be done from code &lt;br /&gt;
*Permission registration allows you to set descriptions, defaults, and child parent relationships &lt;br /&gt;
*Permission names should be kept in the style of &amp;amp;lt;pluginname&amp;amp;gt;.[category].[category].&amp;amp;lt;permission&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A command block starts with the command&#039;s name, and then has a list of attributes. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A short description of what the command does. &lt;br /&gt;
| &amp;lt;code&amp;gt;description: Set yourself on fire&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Can be used in conjunction with /help&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| aliases &lt;br /&gt;
| no &lt;br /&gt;
| Alternate command names a user may use instead&lt;br /&gt;
| &lt;br /&gt;
 &amp;lt;code&amp;gt;aliases: combust_me&amp;lt;/code&amp;gt; OR &lt;br /&gt;
 &amp;lt;code&amp;gt;aliases: [combust_me, combustMe, cm]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*You can specify any of none, 1 or many aliases. &lt;br /&gt;
*If you specify more than one alias, they must be in YAML list format (See http://en.wikipedia.org/wiki/YAML#Lists )&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permission &lt;br /&gt;
| no &lt;br /&gt;
| The most basic permission node required to use the command &lt;br /&gt;
| &lt;br /&gt;
 &amp;lt;code&amp;gt;permission: inferno.flagrate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
*This permissions node can be used to determine if a user should be able to see this command &lt;br /&gt;
*Some plugins will use this node to construct a personalized /help&lt;br /&gt;
|-&lt;br /&gt;
| permission-message&lt;br /&gt;
| no &lt;br /&gt;
| A no-permission message&lt;br /&gt;
| &amp;lt;code&amp;gt;permission-message: You do not have /&amp;amp;lt;permission&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
*Displayed to a player that attempts to use a command but does not have the associated permission&lt;br /&gt;
*&amp;amp;lt;permission&amp;amp;gt; is a macro that is replaced with the permission node that is required to use the command. &lt;br /&gt;
*You may use empty quotes to indicate nothing should be displayed.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| usage &lt;br /&gt;
| no &lt;br /&gt;
| A short description of how to use this command. &lt;br /&gt;
| &amp;lt;code&amp;gt;usage: Syntax error! Perhaps you meant /&amp;amp;lt;command&amp;amp;gt; PlayerName?&amp;lt;/code&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Displayed to whoever issued the command when the plugin&#039;s command handler (onCommand typically) does not return true. &lt;br /&gt;
*&amp;amp;lt;command&amp;amp;gt; is a macro that is replaced with the command issued wherever it occurs. &lt;br /&gt;
*To use the string &amp;quot;Usage:&amp;quot; (i.e. &amp;lt;code&amp;gt;usage: Usage: /god [player]&amp;lt;/code&amp;gt;, surround the text after the usage: label with double-quotes:&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;usage: &amp;quot;Usage: /god [player]&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A permission block starts with the permission&#039;s name and is followed by nodes of attributes &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Permission Attribute &lt;br /&gt;
! Required &lt;br /&gt;
! Description &lt;br /&gt;
! Example &lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| description &lt;br /&gt;
| no &lt;br /&gt;
| A short description of what this permission allows &lt;br /&gt;
| &amp;lt;pre&amp;gt;description: Allows you to set yourself on fire&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Allows programmatic access, and helps server administrators&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| default &lt;br /&gt;
| no &lt;br /&gt;
| Sets the default value of the permission &lt;br /&gt;
| &amp;lt;pre&amp;gt;default: true&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*If node does not exist the permission defaults to op&lt;br /&gt;
*allowed defaults are: true, false, op, not op &lt;br /&gt;
*op default will be true if player is op &lt;br /&gt;
*no op default is the opposite behavior (of op)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| children &lt;br /&gt;
| no &lt;br /&gt;
| allows you to set children for the permission. Child nodes are permission names &lt;br /&gt;
| &amp;lt;pre&amp;gt;children:&lt;br /&gt;
  inferno.flagrate: true&lt;br /&gt;
  inferno.burningdeaths: true&amp;lt;/pre&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Each child node must be either set to true or false &lt;br /&gt;
**a child node of true inherits the parent permission &lt;br /&gt;
**a child node of false inherits the inverse parent permission&lt;br /&gt;
* Can also contain other permission nodes [https://github.com/bukkit/bukkit/commit/326f2aca9b98d1d096842d3410000ed9d84611f5 {1}]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot; style=&amp;quot;border: 1px #aaa solid;&amp;quot;&amp;gt;&lt;br /&gt;
 name: Inferno&lt;br /&gt;
 version: 1.4.1&lt;br /&gt;
 description: This plugin is so 31337. You can set yourself on fire.&lt;br /&gt;
 # We could place every author in the authors list, but chose not to for illustrative purposes&lt;br /&gt;
 # Also, having an author distinguishes that person as the project lead, and ensures their &lt;br /&gt;
 # name is displayed first&lt;br /&gt;
 author: CaptainInflamo&lt;br /&gt;
 authors: [Cogito, verrier, EvilSeph] &lt;br /&gt;
 website: http://forums.bukkit.org/threads/MyPlugin.31337/&lt;br /&gt;
 &lt;br /&gt;
 main: com.captaininflamo.bukkit.inferno.Inferno&lt;br /&gt;
 database: false&lt;br /&gt;
 depend: [NewFire, FlameWire]&lt;br /&gt;
 &lt;br /&gt;
 commands:&lt;br /&gt;
   flagrate:&lt;br /&gt;
     description: Set yourself on fire.&lt;br /&gt;
     aliases: [combust_me, combustMe]&lt;br /&gt;
     permission: inferno.flagrate&lt;br /&gt;
     usage: Syntax error! Simply type /&amp;amp;lt;command&amp;amp;gt; to ignite yourself.&lt;br /&gt;
   burningdeaths:&lt;br /&gt;
     description: List how many times you have died by fire.&lt;br /&gt;
     aliases: [burning_deaths, burningDeaths]&lt;br /&gt;
     permission: inferno.burningdeaths&lt;br /&gt;
     usage: |&lt;br /&gt;
       /&amp;amp;lt;command&amp;amp;gt; [player]&lt;br /&gt;
       Example: /&amp;amp;lt;command&amp;amp;gt; - see how many times you have burned to death&lt;br /&gt;
       Example: /&amp;amp;lt;command&amp;amp;gt; CaptainIce - see how many times CaptainIce has burned to death&lt;br /&gt;
 &lt;br /&gt;
 permissions:&lt;br /&gt;
   inferno.*:&lt;br /&gt;
     description: Gives access to all Inferno commands&lt;br /&gt;
     children:&lt;br /&gt;
       inferno.flagrate: true&lt;br /&gt;
       inferno.burningdeaths: true&lt;br /&gt;
       inferno.burningdeaths.others: true&lt;br /&gt;
   inferno.flagrate:&lt;br /&gt;
     description: Allows you to ignite yourself&lt;br /&gt;
     default: true&lt;br /&gt;
   inferno.burningdeaths:&lt;br /&gt;
     description: Allows you to see how many times you have burned to death&lt;br /&gt;
     default: true&lt;br /&gt;
   inferno.burningdeaths.others:&lt;br /&gt;
     description: Allows you to see how many times others have burned to death&lt;br /&gt;
     default: op&lt;br /&gt;
     children:&lt;br /&gt;
       inferno.burningdeaths: true&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Languages|Plugin YAML}}&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Config.yml&amp;diff=14279</id>
		<title>Config.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Config.yml&amp;diff=14279"/>
		<updated>2021-05-04T23:58:19Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​创建页面，内容为“{{DocsInclude}} The Configuration API is a set of tools to help developers quickly parse and emit configuration files that are human readable and editable. Despite t…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DocsInclude}}&lt;br /&gt;
The Configuration API is a set of tools to help developers quickly parse and emit configuration files that are human readable and editable. Despite the name, the API can easily be used to store plugin data in addition to plugin configuration. Presently only [http://en.wikipedia.org/wiki/YAML YAML] configurations can be used. The API however was designed to be extensible and allow for other implementations.&lt;br /&gt;
&lt;br /&gt;
The Configuration API can be found in the org.bukkit.configuration and org.bukkit.configuration.file packages. Plugins that were created before version 1.1-R5 may have used an older and different implementation that resided in org.bukkit.util.configuration. These implementations are not compatible and the old package has since been removed.&lt;br /&gt;
&lt;br /&gt;
This introduction assumes that you have some knowledge about proper object oriented design, Java, and the core design of Bukkit plugins. This page is not a substitute for the JavaDocs for the [http://jd.bukkit.org/apidocs/index.html?org/bukkit/configuration/file/FileConfiguration.html FileConfiguration Class]&lt;br /&gt;
&lt;br /&gt;
== Basic Topics  ==&lt;br /&gt;
&lt;br /&gt;
=== The Configuration Object  ===&lt;br /&gt;
&lt;br /&gt;
Your plugin extends [http://jd.bukkit.org/doxygen/d7/deb/classorg_1_1bukkit_1_1plugin_1_1java_1_1JavaPlugin.html JavaPlugin], and in doing so, you inherited methods and fields from JavaPlugin. The inherited method, &#039;&#039;[http://jd.bukkit.org/doxygen/d7/deb/classorg_1_1bukkit_1_1plugin_1_1java_1_1JavaPlugin.html#a79493f3bc9db2acbf9405c3a33e0acfd getConfig()]&#039;&#039; returns an object of type [http://jd.bukkit.org/doxygen/dd/d7c/classorg_1_1bukkit_1_1configuration_1_1file_1_1FileConfiguration.html FileConfiguration]. This is the object that represents &#039;&#039;config.yml&#039;&#039; inside your plugin&#039;s data folder.&lt;br /&gt;
&lt;br /&gt;
The first time &#039;&#039;getConfig()&#039;&#039; is invoked on your plugin, &#039;&#039;config.yml&#039;&#039; is loaded from disk, and default values are loaded from the jar. Subsequent invocations of &#039;&#039;getConfig()&#039;&#039; will return the existing &#039;&#039;FileConfiguration&#039;&#039; object that is in memory. Operations performed on this object will not be written to disk unless explicitly saved. Likewise, any modifications done after the file has been loaded will not be reflected in the object. If &#039;&#039;config.yml&#039;&#039; does not exist in your data folder, it is equivalent to an empty &#039;&#039;config.yml&#039;&#039;, and will load an empty &#039;&#039;FileConfiguration&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
{{warning}} if you assign the returned object from &#039;&#039;getConfig()&#039;&#039; DO NOT assign it to a static field&amp;lt;br&amp;gt; {{warning}} if you do the above, assign &#039;&#039;getConfig()&#039;&#039; to the variable AGAIN after a reloadConfig &lt;br /&gt;
{{note|it is better to just use &#039;&#039;getConfig()&#039;&#039; instead of assigning it to an instance variable}}&lt;br /&gt;
&lt;br /&gt;
=== Keys  ===&lt;br /&gt;
&lt;br /&gt;
A configuration file is organized into key value pairs where all keys are Strings. The value for the other keys may be a ConfigurationSection or a single piece of data. The &#039;&#039;getKeys(boolean)&#039;&#039; method returns the set of keys for the current &#039;&#039;FileConfigurationSection&#039;&#039;. The boolean value determines if the returned set is recursive, if true it will return the keys of the given section and their children keys, if false will only return keys of the given section. To get the keys of a particular section, the &#039;&#039;getKeys(boolean)&#039;&#039; method must be invoked on that particular section. To get the section you will have to invoke &#039;&#039;getConfigurationSection(String)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{note|The getKeys method returns a [http://download.oracle.com/javase/1,5.0/docs/api/java/util/Set.html Set] of Strings}} &lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
&lt;br /&gt;
The Configuration API uses Paths to form a unique key to value pairs. A path is the set of keys used to associate a value. Each level is separated by the path separator, which is by default the &#039;.&#039; (period). For example the following YAML file has the following set of paths.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;key: value&lt;br /&gt;
one:&lt;br /&gt;
  two: value&lt;br /&gt;
  three:&lt;br /&gt;
    - values&lt;br /&gt;
    - values&lt;br /&gt;
    - values&lt;br /&gt;
  four: &lt;br /&gt;
    five: value&lt;br /&gt;
  *:&lt;br /&gt;
    six: value&lt;br /&gt;
    seven: value&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*key&lt;br /&gt;
*one&lt;br /&gt;
*one.two&lt;br /&gt;
*one.three&lt;br /&gt;
*one.four&lt;br /&gt;
*one.four.five&lt;br /&gt;
*one.*&lt;br /&gt;
*one.*.six&lt;br /&gt;
*one.*.seven&lt;br /&gt;
&lt;br /&gt;
=== Default Values ===&lt;br /&gt;
&lt;br /&gt;
A default &#039;&#039;config.yml&#039;&#039; should be provided in your jar for users. In the case that a config.yml is missing or incomplete, values will be loaded from included &#039;&#039;config.yml&#039;&#039;. The provided file must be named &#039;&#039;config.yml&#039;&#039; and be placed in the same directory as your [[Plugin YAML|plugin.yml]]. The file should have the intended structure of your &#039;&#039;config.yml&#039;&#039;. This file can be copied as is into the datafolder by invoking saveDefaultConfig() on the Appropriate instance of JavaPlugin.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;this.saveDefaultConfig()&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dynamic key-value pairs are required as default values, they can added as defaults to the configuration with invocations of &#039;&#039;addDefault(String, Object)&#039;&#039; and &#039;&#039;addDefaults(Map&amp;amp;lt;String,Object&amp;amp;gt;)&#039;&#039; methods. &lt;br /&gt;
&lt;br /&gt;
In certain cases if you wish to append new key-value pairs to an existing config.yml you can set the copyDefaults to true for the ConfigurationOptions object. &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;this.getConfig().options().copyDefaults(true)&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Creating a copy of config.yml ====&lt;br /&gt;
You can create a copy of config.yml from the jar into the plugin&#039;s data folder by invoking JavaPlugin&#039;s saveDefaultConfig() method. saveDefaultConfig() will not overwrite an existing file.&lt;br /&gt;
&lt;br /&gt;
=== Getting Values ===&lt;br /&gt;
&lt;br /&gt;
Reading values from the configuration involves invoking one of the many getter methods. A complete list of getters can be found [http://jd.bukkit.org/doxygen/dd/d7c/classorg_1_1bukkit_1_1configuration_1_1file_1_1FileConfiguration.html here]. Every getter method takes a configuration path detailed above. Some of the commonly used getter methods are as follows &lt;br /&gt;
&lt;br /&gt;
*getBoolean(String) &lt;br /&gt;
*getInt(String) &lt;br /&gt;
*getString(String) &lt;br /&gt;
*getList(String) &lt;br /&gt;
*getStringList(String)&lt;br /&gt;
&lt;br /&gt;
==== HashMaps  ====&lt;br /&gt;
&lt;br /&gt;
In the case of HashMaps as a value, they are treated differently than other forms of data. There is a restriction for Map types. It must use a String as a key, and the value but be either a boxed primitive, String, List, Map, or a ConfigurationSerializable type. They will lose their type.&lt;br /&gt;
&lt;br /&gt;
To get a &#039;&#039;HashMap&#039;&#039;, a &#039;&#039;ConfigurationSection&#039;&#039; must must first be retrieved. You can return the configuration with  getConfigurationSection method. The getValues method will return the values in the ConfigurationSection as a map, it takes a boolean which controls if the nested maps will be returned in the map. You can obtain the original map by invoking getValues(false) on the returned ConfigurationSection. Due to the way Java handles generic classes, type information will be lost, thus a cast will need to be performed to set the original type information. The API makes no guarantees that the cast you perform will be safe.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;this.getConfig().getConfigurationSection(&amp;quot;path.to.map&amp;quot;).getValues(false)&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting Values  ===&lt;br /&gt;
&lt;br /&gt;
Writing values involves invoking the &#039;&#039;set(String, Object)&#039;&#039; method on an instance of Configuration. Unlike the different get methods that &#039;&#039;FileConfiguration&#039;&#039; has, there is only one set method. Not all objects can be set, only primitive types, &#039;&#039;String&#039;&#039;, &#039;&#039;Lists&#039;&#039;, and types that implement &#039;&#039;ConfigurationSerializable&#039;&#039;, such as &#039;&#039;Vector&#039;&#039; and &#039;&#039;ItemStack&#039;&#039;, can be set. To erase a value supply null as a parameter. All changes made by set will only affect the copy of the configuration in memory, and will not persist beyond restarting the server until the configuration is saved. Following are some example uses: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;// setting a boolean value&lt;br /&gt;
this.getConfig().set(&amp;quot;path.to.boolean&amp;quot;, true);&lt;br /&gt;
&lt;br /&gt;
// setting a String&lt;br /&gt;
String stringValue = &amp;quot;Hello World!&amp;quot;;&lt;br /&gt;
this.getConfig().set(&amp;quot;path.to.string&amp;quot;, stringValue);&lt;br /&gt;
&lt;br /&gt;
// setting an int value&lt;br /&gt;
int integerValue = 8;&lt;br /&gt;
this.getConfig().set(&amp;quot;path.to.integer&amp;quot;, integerValue);&lt;br /&gt;
&lt;br /&gt;
// Setting a List of Strings&lt;br /&gt;
// The List of Strings is first defined in this array&lt;br /&gt;
List&amp;lt;String&amp;gt; listOfStrings = Arrays.asList(&amp;quot;Hello World&amp;quot;, &amp;quot;Welcome to Bukkit&amp;quot;, &amp;quot;Have a Good Day!&amp;quot;);&lt;br /&gt;
this.getConfig().set(&amp;quot;path.to.list&amp;quot;, listOfStrings);&lt;br /&gt;
&lt;br /&gt;
// Setting a vector&lt;br /&gt;
// event is assumed to be an existing event inside an &amp;quot;onEvent&amp;quot; method.&lt;br /&gt;
Vector vector = event.getPlayer().getLocation().toVector();&lt;br /&gt;
this.getConfig().set(&amp;quot;path.to.vector&amp;quot;, vector);&lt;br /&gt;
&lt;br /&gt;
// Erasing a value&lt;br /&gt;
this.getConfig().set(&amp;quot;path.to.value&amp;quot;, null);&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== HashMaps  ====&lt;br /&gt;
&lt;br /&gt;
When HashMaps are used as a value, they are treated slightly differently. The Map must parameterized with a String type for the key, and the value must be parameterized as a boxed primitive, String, List, Map, or a ConfigurationSerializable.&lt;br /&gt;
&lt;br /&gt;
While you can use the set method to directly set a HashMap to a key, you cannot directly retrieve the Map back with the get method after reading directly from disk. The [[#HashMaps|context above]] is to minimize unpredictability.&lt;br /&gt;
&lt;br /&gt;
To set a &#039;&#039;HashMap&#039;&#039;, a &#039;&#039;ConfigurationSection&#039;&#039; must be created for that HashMap. You can only set HashMap where the key is a string the the value is something that is ConfigurationSerializable. The createSectionMethod &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;this.getConfig().createSection(String path, Map&amp;lt; String, Object &amp;gt; map)&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Saving the File  ===&lt;br /&gt;
If any changes are made to the &#039;&#039;FileConfiguration&#039;&#039; with the set methods, or any &#039;&#039;Lists&#039;&#039; are mutated, you will need to save the changes to disk if you wish to keep these changes after the plugin is disabled. To save the file to disk, invoke the saveConfig method for your plugin, it will overwrite the file already there.&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;this.saveConfig();&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reloading from Disk  ===&lt;br /&gt;
&lt;br /&gt;
If you suspect that users have made changes to the &#039;&#039;config.yml&#039;&#039; in the data folder, those changes are not reflected in memory. Invoke the &#039;&#039;reloadConfig()&#039;&#039; method of your plugin to load from the disk again. It will destroy all changes in memory. &amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;this.reloadConfig();&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an alternate configuration file ===&lt;br /&gt;
&lt;br /&gt;
If for whatever reason you need another configuration file, you can use YamlConfiguration to make a new one.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;FileConfiguration data = YamlConfiguration.loadConfiguration(new File(getDataFolder(), &amp;quot;data.yml&amp;quot;));&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
This reads the file data.yml from your data folder, and returns a FileConfiguration. If the file does not exist, the FileConfiguration is empty. If you need a pre-made FileConfiguration to be used, you can instead use an InputStream.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;FileConfiguration data = YamlConfiguration.loadConfiguration(getResource(&amp;quot;data.yml&amp;quot;));&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
This takes the InputStream from getResource, which gets a file embedded in the jar, and retreives a FileConfiguration from that.&lt;br /&gt;
&lt;br /&gt;
== Advanced Topics  ==&lt;br /&gt;
&lt;br /&gt;
The following are some more advanced topics, meant for more advanced plugins. If you only require the default &#039;&#039;config.yml&#039;&#039;, creating custom methods for reading, and saving, you will not need to go this far. &lt;br /&gt;
&lt;br /&gt;
=== Options  ===&lt;br /&gt;
&lt;br /&gt;
Every &#039;&#039;FileConfiguration&#039;&#039; instance is associated with a [http://jd.bukkit.org/apidocs/index.html?org/bukkit/configuration/file/FileConfigurationOptions.html FileConfigurationOptions] object. The &#039;&#039;FileConfigurationOptions&#039;&#039; object controls the behavior of the &#039;&#039;FileConfiguration&#039;&#039; it is associated with. &#039;&#039;FileConfiguration&#039;&#039;&#039;s &#039;&#039;options()&#039;&#039; method returns the &#039;&#039;FileConfigurationOption&#039;s&#039;&#039; responsible for it. With it you can check and set each option. There are currently four options. Be aware that the methods are overloaded, for example &#039;&#039;copyDefaults()&#039;&#039; which returns a boolean and &#039;&#039;copyDefaults(boolean)&#039;&#039; which returns it self, but has a side effect which changes the state. &lt;br /&gt;
&lt;br /&gt;
==== CopyDefaults  ====&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;copyDefaults&#039;&#039; option changes the behavior of Configuration&#039;s save method. By default, the defaults of the configuration will not be written to the target save file. If set to true, it will write out the default values, to the target file. However, once written, you will not be able to tell the difference between a default and a value from the configuration. &lt;br /&gt;
&lt;br /&gt;
==== PathSeperator  ====&lt;br /&gt;
&lt;br /&gt;
PathSeperator changes the character that is used to separate the different levels of the configuration. By default it is the &amp;quot;.&amp;quot; (period) but it can be changed to any char. &lt;br /&gt;
&lt;br /&gt;
==== Header  ====&lt;br /&gt;
&lt;br /&gt;
Header is the comment block at the top of a YAML file, it is applied to the save output. The header is the only comment that Configuration API knows how to copy. &lt;br /&gt;
&lt;br /&gt;
==== copyHeader  ====&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;copyHeader()&#039;&#039; returns true then the header will be copied on save, from the default source. &lt;br /&gt;
&lt;br /&gt;
=== Arbitrary Configurations  ===&lt;br /&gt;
&lt;br /&gt;
If you require additional YAML files, for storing configuration information or persisting additional game information you will need to write your own methods for accessing the additional configuration files. Modeled after JavaPlugin getConfig, reloadConfig, saveConfig methods, the following is an example how to write your own methods to read and save to custom configuration files. Since these config files belong to your plugin, you can put this method in your main class so that you can have the same access as you have with config.yml. You will have to write a set of these methods for each YAML file. The advantage here, is that you can use each set in the same manner as the provided methods for the default config.yml. Alternately, adding additional methods can keep the method count lower and allow access to multiple files.&lt;br /&gt;
&lt;br /&gt;
==== Mirroring the JavaPlugin implementation ====&lt;br /&gt;
JavaPlugin implements methods for config.yml. A plugin needs to implement its own methods to access configuration files unique to the plugin. After implementing the methods for the plugin, they can be invoked in the same context as the inherited &#039;&#039;getConfig()&#039;&#039;, &#039;&#039;reloadConfig()&#039;&#039;, &#039;&#039;saveConfig()&#039;&#039;, and &#039;&#039;saveDefaultConfig()&#039;&#039; methods from JavaPlugin. The following can be made into a single class which allows access to any yaml file. Such a class can be found [https://gist.github.com/3174347 here]&lt;br /&gt;
&lt;br /&gt;
First you will need to declare two fields and initialize them to null for each of the custom configuration files. One to hold the &#039;&#039;FileConfiguration&#039;&#039; object and one to hold the &#039;&#039;File&#039;&#039; object. The File object represents the file on the disk, and the FileConfiguration represents the contents of the configuration. &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;private FileConfiguration customConfig = null;&lt;br /&gt;
private File customConfigFile = null;&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Implementation for Reloading =====&lt;br /&gt;
Then, write the method that is responsible for loading the config from disk. It will load the file, and search the jar for a default customConfig.yml. &amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void reloadCustomConfig() {&lt;br /&gt;
    if (customConfigFile == null) {&lt;br /&gt;
    customConfigFile = new File(getDataFolder(), &amp;quot;customConfig.yml&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    customConfig = YamlConfiguration.loadConfiguration(customConfigFile);&lt;br /&gt;
&lt;br /&gt;
    // Look for defaults in the jar&lt;br /&gt;
    Reader defConfigStream = new InputStreamReader(this.getResource(&amp;quot;customConfig.yml&amp;quot;), &amp;quot;UTF8&amp;quot;);&lt;br /&gt;
    if (defConfigStream != null) {&lt;br /&gt;
        YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);&lt;br /&gt;
        customConfig.setDefaults(defConfig);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Implementation for Getting =====&lt;br /&gt;
Next, you need to write the getter method. Check if &#039;&#039;customConfig&#039;&#039; is null, if it is load from disk. &amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public FileConfiguration getCustomConfig() {&lt;br /&gt;
    if (customConfig == null) {&lt;br /&gt;
        reloadCustomConfig();&lt;br /&gt;
    }&lt;br /&gt;
    return customConfig;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Implementation for Saving =====&lt;br /&gt;
Finally, write the save method, which saves changes and overwrites the file on disk. &amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public void saveCustomConfig() {&lt;br /&gt;
    if (customConfig == null || customConfigFile == null) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
        getCustomConfig().save(customConfigFile);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        getLogger().log(Level.SEVERE, &amp;quot;Could not save config to &amp;quot; + customConfigFile, ex);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Implementation for Defaults =====&lt;br /&gt;
Optionally, you may want to write a method that mimics JavaPlugin&#039;s saveDefaultConfig() method.  &amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public void saveDefaultConfig() {&lt;br /&gt;
    if (customConfigFile == null) {&lt;br /&gt;
        customConfigFile = new File(getDataFolder(), &amp;quot;customConfig.yml&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (!customConfigFile.exists()) {            &lt;br /&gt;
         plugin.saveResource(&amp;quot;customConfig.yml&amp;quot;, false);&lt;br /&gt;
     }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serializing and Deserializing Objects  ===&lt;br /&gt;
&lt;br /&gt;
The Configuration API, as mentioned above can store Java objects that implement the &#039;&#039;ConfigurationSerializable&#039;&#039; Interface.  Object serialization facilitates easy saving and loading so plugin authors can focus on other parts of their plugin. It greatly simplifies tasks such as storing a &#039;&#039;[http://jd.bukkit.org/doxygen/da/dac/classorg_1_1bukkit_1_1Location.html Location]&#039;&#039; in YAML, a developer can serialize a wrapper class, which provide methods to retrieve a &#039;&#039;Location&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Classes, in addition to implementing the &#039;&#039;ConfigurationSerializable&#039;&#039; interface must also implment one of the following as noted in the Javadoc, so that they can be serialized by the API: &lt;br /&gt;
&lt;br /&gt;
*A constructor that accepts a single &#039;&#039;Map&#039;&#039;. &lt;br /&gt;
*A static method &amp;quot;deserialize&amp;quot; that accepts a single &#039;&#039;Map&#039;&#039; and returns the class. &lt;br /&gt;
*A static method &amp;quot;valueOf&amp;quot; that accepts a single Map and returns the class.&lt;br /&gt;
&lt;br /&gt;
In order for a serialized object to be deserialized, it must also be registered with ConfigurationSerialization. The static registerClass method must be invoked once per class that has been serialized.&lt;br /&gt;
&lt;br /&gt;
This statement must be placed in your onEnable method or some other location that gets called every time your plugin is initialized:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;ConfigurationSerialization.registerClass(Class&amp;lt;? extends ConfigurationSerializable&amp;gt;)&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
{{warning}}Do not use a static block to execute the above; if you do so, it will not be called a second time when &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; is used and you will encounter errors due to it not being registered!&lt;br /&gt;
&lt;br /&gt;
==== Aliases  ====&lt;br /&gt;
&lt;br /&gt;
When classes are serialized they are marked with their fully qualified name.&lt;br /&gt;
You can provide an alias to your class so that it does not serialize with the fully qualified name of your class, but the alias instead. You provide the alias with the &#039;&#039;SerializableAs&#039;&#039; annotation to the class implementing &#039;&#039;ConfigurationSerializable&#039;&#039;. &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;@SerializableAs(String)&amp;lt;/source&amp;gt; When registering a class with an alias, the alias must be provided on registration. &amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;ConfigurationSerialization.registerClass(Class&amp;lt;? extends ConfigurationSerializable&amp;gt;, String)&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example Use  ==&lt;br /&gt;
&lt;br /&gt;
Below is the an example plugin that uses the new Configuration API to be display messages as an MOTD as players join, and for the player to retrieve the rules on command. It does not follow proper style and plugin layout to keep the number of lines to a minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import java.util.*;&lt;br /&gt;
import org.bukkit.command.*;&lt;br /&gt;
import org.bukkit.event.*;&lt;br /&gt;
import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
import org.bukkit.configuration.file.FileConfiguration;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class SimpleMOTD extends JavaPlugin {&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onEnable() {&lt;br /&gt;
        // Save a copy of the default config.yml if one is not there&lt;br /&gt;
        this.saveDefaultConfig();&lt;br /&gt;
        &lt;br /&gt;
        // Register a new listener&lt;br /&gt;
        getServer().getPluginManager().registerEvents(new Listener() {&lt;br /&gt;
            &lt;br /&gt;
            @EventHandler&lt;br /&gt;
            public void playerJoin(PlayerJoinEvent event) {&lt;br /&gt;
                // On player join send them the message from config.yml&lt;br /&gt;
                event.getPlayer().sendMessage(this.getConfig().getString(&amp;quot;message&amp;quot;));&lt;br /&gt;
            }&lt;br /&gt;
        }, this);&lt;br /&gt;
&lt;br /&gt;
        // Set the command executor for the rules command&lt;br /&gt;
        this.getCommand(&amp;quot;rules&amp;quot;).setExecutor(new CommandExecutor() {&lt;br /&gt;
            &lt;br /&gt;
            public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {&lt;br /&gt;
                // On command send the rules from config.yml to the sender of the command&lt;br /&gt;
                List&amp;lt;String&amp;gt; rules = this.getConfig().getStringList(&amp;quot;rules&amp;quot;);&lt;br /&gt;
                for (String s : rules){&lt;br /&gt;
                    sender.sendMessage(s);&lt;br /&gt;
                }&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt; The default config.yml that is in the plugin&#039;s jar&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;# default config.yml&lt;br /&gt;
message: Hello World and Welcome! :)&lt;br /&gt;
rules:&lt;br /&gt;
  - Play Nice&lt;br /&gt;
  - Respect others&lt;br /&gt;
  - Have Fun&lt;br /&gt;
  - Dont swear&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Languages|Introduction_to_the_New_Configuration}}&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Citizens/%E8%A7%92%E8%89%B2/DtlTraders&amp;diff=14278</id>
		<title>Citizens/角色/DtlTraders</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Citizens/%E8%A7%92%E8%89%B2/DtlTraders&amp;diff=14278"/>
		<updated>2021-05-04T16:22:40Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​/* 如何用: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 295; font-size: 12px; background: #FFFFFF; float: right; border: 1px solid #CCCCCC; margin-left:2.5em; padding: 9px;&amp;quot;&amp;gt;&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #ccc|&lt;br /&gt;
BACKGROUND = #aaa|&lt;br /&gt;
WIDTH = 275|&lt;br /&gt;
ALIGN = RIGHT|&lt;br /&gt;
ICON = |&lt;br /&gt;
HEADING = &#039;&#039;&#039; dtlTraders &#039;&#039;&#039; |&lt;br /&gt;
CONTENT = &lt;br /&gt;
&amp;lt;div class=&amp;quot;padded&amp;quot; style=&amp;quot;padding: 19px; font-family:camingodos-web, Helvetica; font-size:110%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; dtlTraders &#039;&#039;&#039; 是Citizens2的一个特性 可以创建一个简单的商店或者高级商店系统.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 状态: &#039;&#039;&#039; 已发布&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 版本: &#039;&#039;&#039; 3.5.2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 作者: &#039;&#039;&#039; 4Creation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 前作者: &#039;&#039;&#039; Dandielo&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; License: &#039;&#039;&#039; [http://opensource.org/licenses/MIT MIT License]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 源码: &#039;&#039;&#039; 源码可以在GitHub [https://github.com/Dandielo/dtlTraders GitHub] 上找到&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Issues and tickets: &#039;&#039;&#039; Any tickets should be created on this page [https://dev.bukkit.org/projects/dtltraders/issues Bukkit Issues]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; C联系: &#039;&#039;&#039; 你可以发送到我邮箱: support@4Creation.pro&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 网页: &#039;&#039;&#039; [http://www.4Creation.pro/ 4Creation Portal]dtlTraders 将在以后发布 ;) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}} &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 关于 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dtlTraders&#039;&#039;&#039; is trait for Citizens2 allowing to use NPCs as merchants. &lt;br /&gt;
&lt;br /&gt;
Creating a basic trader and managing his stock is really easy, you need to know only one simple command (/trait trader) and all other things are achieved by using the provided &#039;&#039;&#039;GUI&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
However you are not forced to use the trader interface if you don&#039;t want to, this plugin comes along with a bunch of commands, and a templating feature called &#039;&#039;&#039;patterns&#039;&#039;&#039;, this allows you to create, change, extend, merge shops in any way you want! &lt;br /&gt;
You can also manage items and prices in shops using permissions, allowing you to change the shop content depending when a player has the required permission!&lt;br /&gt;
&lt;br /&gt;
Also if you want you can translate each end-user part of the plugin into your language, as a result, this plugin also comes along with ready and built in translations into some languages. &lt;br /&gt;
If you want to contribute a translation send US a mail to support@4Creation.pro . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 功能 ==&lt;br /&gt;
&lt;br /&gt;
All working features, you can use with version &#039;&#039;&#039;3.0.8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Selling&#039;&#039;&#039; items to players&lt;br /&gt;
* &#039;&#039;&#039;Buying&#039;&#039;&#039; items from players&lt;br /&gt;
* Easy adding, editing and removing items from a trader stock&lt;br /&gt;
* Easy price setting mechanism&lt;br /&gt;
* Allowing to open and set a &#039;&#039;&#039;sub-inventory&#039;&#039;&#039; with more specific amount choices for items&lt;br /&gt;
* Prices set can apply to a unit or to the whole stack&lt;br /&gt;
* Prices are calculated always for each added amount &#039;&#039;(in the sub-inventory)&#039;&#039; automatically and on the fly&lt;br /&gt;
* Supporting &#039;&#039;&#039;ALL custom items&#039;&#039;&#039; the bukkit API provides!&lt;br /&gt;
* Supporting &#039;&#039;&#039;4 attribute modifiers&#039;&#039;&#039; described [http://minecraft.gamepedia.com/Attribute here]!&lt;br /&gt;
* A lot of &#039;&#039;&#039;settings&#039;&#039;&#039;, you can change to fit your needs&lt;br /&gt;
* A &#039;&#039;&#039;advanced translation system&#039;&#039;&#039; allowing almost everything to translate! &lt;br /&gt;
* Patterns allowing to &#039;&#039;&#039;setup traders even faster and permissions specific&#039;&#039;&#039;!&lt;br /&gt;
* Pattern system along with the &#039;&#039;&#039;default-pattern&#039;&#039;&#039; allows to create shops using &#039;&#039;&#039;just one command&#039;&#039;&#039;!!!&lt;br /&gt;
* The plugin has it&#039;s own API allowing to create custom Trader types and item attributes!&lt;br /&gt;
* Much more incoming!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 使用前 ==&lt;br /&gt;
&lt;br /&gt;
To get this plugin working you will need to get the following plugins:&lt;br /&gt;
* &#039;&#039;&#039;Citizens2&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Vault&#039;&#039;&#039;&lt;br /&gt;
* Vault supported economy plugin, like &#039;&#039;&#039;&#039;&#039;BOSEconomy, Fe&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Vault supported permission plugin, like &#039;&#039;&#039;&#039;&#039;PermissionEx, Groupmanager&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After you got all of them you can just simply put the &#039;&#039;&#039;dtlTradersx.x.x.jar&#039;&#039;&#039; into the plugin directory and start using this plugin.&lt;br /&gt;
&lt;br /&gt;
For the most basic setup you need only to know one command, &#039;&#039;&#039;/trader create &amp;lt;name&amp;gt;&#039;&#039;&#039; that creates a trader or simply create an NPC and add the &#039;&#039;&#039;/trait trader&#039;&#039;&#039; to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 如何用: ==&lt;br /&gt;
&lt;br /&gt;
这里有一堆有用的教程和链接，可以帮助你建立一个交易员。你也可以在这里找到关于这个插件的高级设置的信息。&lt;br /&gt;
&lt;br /&gt;
如果缺少一些信息你可以发送邮件 support@4Creation.pro&lt;br /&gt;
&lt;br /&gt;
=== 基本设置 ===&lt;br /&gt;
&lt;br /&gt;
This [http://wiki.citizensnpcs.co/DtlTraders/basics tutorial] shows how to create a trader from scratch, how to add, edit and remove items. &lt;br /&gt;
It shows you how to set prices, manage stock item flags and how to use the &#039;&#039;&#039;multiple amounts&#039;&#039;&#039; feature. &lt;br /&gt;
&lt;br /&gt;
I will also describe some config values, how they affect the game and &#039;&#039;&#039;in-game management&#039;&#039;&#039; of a trader and also which of them are trader specific.&lt;br /&gt;
&lt;br /&gt;
=== 配置 ===&lt;br /&gt;
&lt;br /&gt;
http://wiki.citizensnpcs.co/DtlTraders/config&lt;br /&gt;
&lt;br /&gt;
=== 命令和权限 ===&lt;br /&gt;
&lt;br /&gt;
http://wiki.citizensnpcs.co/DtlTraders/Commands&lt;br /&gt;
&lt;br /&gt;
http://wiki.citizensnpcs.co/DtlTraders/permissions&lt;br /&gt;
&lt;br /&gt;
=== 语言和翻译 ===&lt;br /&gt;
&lt;br /&gt;
=== 高级设置 ===&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
=== Extending ===&lt;br /&gt;
&lt;br /&gt;
== Credits and thanks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 500px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 100%; background-color:#ADD8E6&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DtlTraders&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Configuration || | [http://wiki.citizensnpcs.co/DtlTraders/config Configuration] | [http://wiki.citizensnpcs.co/DtlTraders/Commands Commands] | [http://wiki.citizensnpcs.co/DtlTraders/permissions Permissions] | [http://wiki.citizensnpcs.co/DtlTraders/locale Locale] &lt;br /&gt;
|-&lt;br /&gt;
| Usage ||| [http://wiki.citizensnpcs.co/DtlTraders/managing Managing] | [http://wiki.citizensnpcs.co/DtlTraders/trading Trading] | [http://wiki.citizensnpcs.co/DtlTraders/banking Banking] |[http://wiki.citizensnpcs.co/DtlTraders/patterns Patterns]&lt;br /&gt;
|-&lt;br /&gt;
| Types || | [http://wiki.citizensnpcs.co/DtlTraders/traders Traders] | [http://wiki.citizensnpcs.co/DtlTraders/bankers Bankers] &amp;lt;!--| [http://wiki.citizensnpcs.co/DtlTraders/auctionhouse Auction House] | [http://wiki.citizensnpcs.co/DtlTraders/wallets Wallets]&lt;br /&gt;
|-&lt;br /&gt;
| Denizen Support || | [http://wiki.citizensnpcs.co/DtlTraders/denizen/commands Commands] &amp;lt;!--| [http://wiki.citizensnpcs.co/DtlTraders/denizen/triggers Triggers] &lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Citizens/%E8%A7%92%E8%89%B2/DtlTraders&amp;diff=14277</id>
		<title>Citizens/角色/DtlTraders</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Citizens/%E8%A7%92%E8%89%B2/DtlTraders&amp;diff=14277"/>
		<updated>2021-05-04T16:19:33Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot; style=&amp;quot;width: 295; font-size: 12px; background: #FFFFFF; float: right; border: 1px solid #CCCCCC; margin-left:2.5em; padding: 9px;&amp;quot;&amp;gt;&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #ccc|&lt;br /&gt;
BACKGROUND = #aaa|&lt;br /&gt;
WIDTH = 275|&lt;br /&gt;
ALIGN = RIGHT|&lt;br /&gt;
ICON = |&lt;br /&gt;
HEADING = &#039;&#039;&#039; dtlTraders &#039;&#039;&#039; |&lt;br /&gt;
CONTENT = &lt;br /&gt;
&amp;lt;div class=&amp;quot;padded&amp;quot; style=&amp;quot;padding: 19px; font-family:camingodos-web, Helvetica; font-size:110%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; dtlTraders &#039;&#039;&#039; 是Citizens2的一个特性 可以创建一个简单的商店或者高级商店系统.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 状态: &#039;&#039;&#039; 已发布&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 版本: &#039;&#039;&#039; 3.5.2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 作者: &#039;&#039;&#039; 4Creation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 前作者: &#039;&#039;&#039; Dandielo&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; License: &#039;&#039;&#039; [http://opensource.org/licenses/MIT MIT License]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 源码: &#039;&#039;&#039; 源码可以在GitHub [https://github.com/Dandielo/dtlTraders GitHub] 上找到&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Issues and tickets: &#039;&#039;&#039; Any tickets should be created on this page [https://dev.bukkit.org/projects/dtltraders/issues Bukkit Issues]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; C联系: &#039;&#039;&#039; 你可以发送到我邮箱: support@4Creation.pro&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 网页: &#039;&#039;&#039; [http://www.4Creation.pro/ 4Creation Portal]dtlTraders 将在以后发布 ;) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}} &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 关于 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dtlTraders&#039;&#039;&#039; is trait for Citizens2 allowing to use NPCs as merchants. &lt;br /&gt;
&lt;br /&gt;
Creating a basic trader and managing his stock is really easy, you need to know only one simple command (/trait trader) and all other things are achieved by using the provided &#039;&#039;&#039;GUI&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
However you are not forced to use the trader interface if you don&#039;t want to, this plugin comes along with a bunch of commands, and a templating feature called &#039;&#039;&#039;patterns&#039;&#039;&#039;, this allows you to create, change, extend, merge shops in any way you want! &lt;br /&gt;
You can also manage items and prices in shops using permissions, allowing you to change the shop content depending when a player has the required permission!&lt;br /&gt;
&lt;br /&gt;
Also if you want you can translate each end-user part of the plugin into your language, as a result, this plugin also comes along with ready and built in translations into some languages. &lt;br /&gt;
If you want to contribute a translation send US a mail to support@4Creation.pro . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 功能 ==&lt;br /&gt;
&lt;br /&gt;
All working features, you can use with version &#039;&#039;&#039;3.0.8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Selling&#039;&#039;&#039; items to players&lt;br /&gt;
* &#039;&#039;&#039;Buying&#039;&#039;&#039; items from players&lt;br /&gt;
* Easy adding, editing and removing items from a trader stock&lt;br /&gt;
* Easy price setting mechanism&lt;br /&gt;
* Allowing to open and set a &#039;&#039;&#039;sub-inventory&#039;&#039;&#039; with more specific amount choices for items&lt;br /&gt;
* Prices set can apply to a unit or to the whole stack&lt;br /&gt;
* Prices are calculated always for each added amount &#039;&#039;(in the sub-inventory)&#039;&#039; automatically and on the fly&lt;br /&gt;
* Supporting &#039;&#039;&#039;ALL custom items&#039;&#039;&#039; the bukkit API provides!&lt;br /&gt;
* Supporting &#039;&#039;&#039;4 attribute modifiers&#039;&#039;&#039; described [http://minecraft.gamepedia.com/Attribute here]!&lt;br /&gt;
* A lot of &#039;&#039;&#039;settings&#039;&#039;&#039;, you can change to fit your needs&lt;br /&gt;
* A &#039;&#039;&#039;advanced translation system&#039;&#039;&#039; allowing almost everything to translate! &lt;br /&gt;
* Patterns allowing to &#039;&#039;&#039;setup traders even faster and permissions specific&#039;&#039;&#039;!&lt;br /&gt;
* Pattern system along with the &#039;&#039;&#039;default-pattern&#039;&#039;&#039; allows to create shops using &#039;&#039;&#039;just one command&#039;&#039;&#039;!!!&lt;br /&gt;
* The plugin has it&#039;s own API allowing to create custom Trader types and item attributes!&lt;br /&gt;
* Much more incoming!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 使用前 ==&lt;br /&gt;
&lt;br /&gt;
To get this plugin working you will need to get the following plugins:&lt;br /&gt;
* &#039;&#039;&#039;Citizens2&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;Vault&#039;&#039;&#039;&lt;br /&gt;
* Vault supported economy plugin, like &#039;&#039;&#039;&#039;&#039;BOSEconomy, Fe&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Vault supported permission plugin, like &#039;&#039;&#039;&#039;&#039;PermissionEx, Groupmanager&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After you got all of them you can just simply put the &#039;&#039;&#039;dtlTradersx.x.x.jar&#039;&#039;&#039; into the plugin directory and start using this plugin.&lt;br /&gt;
&lt;br /&gt;
For the most basic setup you need only to know one command, &#039;&#039;&#039;/trader create &amp;lt;name&amp;gt;&#039;&#039;&#039; that creates a trader or simply create an NPC and add the &#039;&#039;&#039;/trait trader&#039;&#039;&#039; to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 如何用: ==&lt;br /&gt;
&lt;br /&gt;
Here are a bunch of helpful tutorials and links that can you help setting up a trader. You can also find here information about the advanced setup of this plugin. &lt;br /&gt;
&lt;br /&gt;
If you lack some information you can always send US a mail to support@4Creation.pro&lt;br /&gt;
&lt;br /&gt;
=== 基本设置 ===&lt;br /&gt;
&lt;br /&gt;
This [http://wiki.citizensnpcs.co/DtlTraders/basics tutorial] shows how to create a trader from scratch, how to add, edit and remove items. &lt;br /&gt;
It shows you how to set prices, manage stock item flags and how to use the &#039;&#039;&#039;multiple amounts&#039;&#039;&#039; feature. &lt;br /&gt;
&lt;br /&gt;
I will also describe some config values, how they affect the game and &#039;&#039;&#039;in-game management&#039;&#039;&#039; of a trader and also which of them are trader specific.&lt;br /&gt;
&lt;br /&gt;
=== 配置 ===&lt;br /&gt;
&lt;br /&gt;
http://wiki.citizensnpcs.co/DtlTraders/config&lt;br /&gt;
&lt;br /&gt;
=== 命令和权限 ===&lt;br /&gt;
&lt;br /&gt;
http://wiki.citizensnpcs.co/DtlTraders/Commands&lt;br /&gt;
&lt;br /&gt;
http://wiki.citizensnpcs.co/DtlTraders/permissions&lt;br /&gt;
&lt;br /&gt;
=== 语言和翻译 ===&lt;br /&gt;
&lt;br /&gt;
=== 高级设置 ===&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
=== Extending === &lt;br /&gt;
&lt;br /&gt;
== Credits and thanks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 500px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 100%; background-color:#ADD8E6&amp;quot; colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;DtlTraders&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Configuration || | [http://wiki.citizensnpcs.co/DtlTraders/config Configuration] | [http://wiki.citizensnpcs.co/DtlTraders/Commands Commands] | [http://wiki.citizensnpcs.co/DtlTraders/permissions Permissions] | [http://wiki.citizensnpcs.co/DtlTraders/locale Locale] &lt;br /&gt;
|-&lt;br /&gt;
| Usage ||| [http://wiki.citizensnpcs.co/DtlTraders/managing Managing] | [http://wiki.citizensnpcs.co/DtlTraders/trading Trading] | [http://wiki.citizensnpcs.co/DtlTraders/banking Banking] |[http://wiki.citizensnpcs.co/DtlTraders/patterns Patterns]&lt;br /&gt;
|-&lt;br /&gt;
| Types || | [http://wiki.citizensnpcs.co/DtlTraders/traders Traders] | [http://wiki.citizensnpcs.co/DtlTraders/bankers Bankers] &amp;lt;!--| [http://wiki.citizensnpcs.co/DtlTraders/auctionhouse Auction House] | [http://wiki.citizensnpcs.co/DtlTraders/wallets Wallets]&lt;br /&gt;
|-&lt;br /&gt;
| Denizen Support || | [http://wiki.citizensnpcs.co/DtlTraders/denizen/commands Commands] &amp;lt;!--| [http://wiki.citizensnpcs.co/DtlTraders/denizen/triggers Triggers] &lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14276</id>
		<title>ImageOnMap</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14276"/>
		<updated>2021-05-04T15:47:23Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ImageOnMap&lt;br /&gt;
|图标=[[File:ImageOnMap.png]]&lt;br /&gt;
|版本=3.0&lt;br /&gt;
|兼容服务端版本=1.6.4-1.8.3&lt;br /&gt;
|作者=[https://dev.bukkit.org/members/ProkopyL Prokopy]&lt;br /&gt;
|網址=[https://dev.bukkit.org/projects/imageonmap BukkitDev]&lt;br /&gt;
}}&lt;br /&gt;
{{待完善}}&lt;br /&gt;
&lt;br /&gt;
你是否想要在游戏里的地图上浏览图片？ImageOnMap可以让你这样做！(由ImgMap制作)&lt;br /&gt;
&lt;br /&gt;
==特点==&lt;br /&gt;
&lt;br /&gt;
 * ImageOnMap允许你在MC地图中加载网络图片&lt;br /&gt;
&lt;br /&gt;
 * 将网站上的图片载入到地图里.支持的格式 PNG JPEG  GIF &lt;br /&gt;
&lt;br /&gt;
 * 这些图片将会保存在你的服务器里并在重载时重新加载 （意思是加载图片后需要重载插件）&lt;br /&gt;
&lt;br /&gt;
 * 大图片会被分成好几份! 例如一个 1024x1024 大的图片将会被分成16个地图.&lt;br /&gt;
&lt;br /&gt;
 * 你的图片将会居中.&lt;br /&gt;
&lt;br /&gt;
 * 你可以将地图放在物品展示框里.&lt;br /&gt;
&lt;br /&gt;
==快速指南==&lt;br /&gt;
&lt;br /&gt;
 * 请确保你的背包有足够的空位! ImageOnMap 将会把你的图片分成几个部分 (取决于图片的大小) 然后放到你的背包里.&lt;br /&gt;
&lt;br /&gt;
 * Type /tomap URL, URL是你想要呈现的图片的链接地址 (见下文).&lt;br /&gt;
&lt;br /&gt;
 * 欣赏你的图片! 如果你想的话你可以将它放在物品展示框里制作一个漂亮的海报.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==命令和权限==&lt;br /&gt;
&lt;br /&gt;
===/tomap===&lt;br /&gt;
&lt;br /&gt;
/tomap [url]&lt;br /&gt;
&lt;br /&gt;
[url]:&lt;br /&gt;
&lt;br /&gt;
 * 链接必需完整, 不要忘记聊天字符限制是240个哦.&lt;br /&gt;
&lt;br /&gt;
 * 你可以使用像 tinyURL 类似的短网址生成器.&lt;br /&gt;
&lt;br /&gt;
 * 如果你想在一张地图里显示图片, 在链接后面输入 resize .&lt;br /&gt;
&lt;br /&gt;
 * 权限节点: imageonmap.userender&lt;br /&gt;
&lt;br /&gt;
实例:&lt;br /&gt;
&lt;br /&gt;
/tomap http://www.kde.org/stuff/clipart/klogo-official-lineart_detailed-128x128.png&lt;br /&gt;
&lt;br /&gt;
===/maptool===&lt;br /&gt;
&lt;br /&gt;
 * /maptool  &lt;br /&gt;
&lt;br /&gt;
 * /maptool delete [id]: 删除一个地图 (id为 [id] 的地图).&lt;br /&gt;
&lt;br /&gt;
 * /maptool list: 展示你拥有的所有地图&lt;br /&gt;
&lt;br /&gt;
 * /maptool get [id]: 获取一个地图的id&lt;br /&gt;
&lt;br /&gt;
==配置==&lt;br /&gt;
&lt;br /&gt;
 * Limit-map-by-server =&amp;gt; 设置服务器的ImageOnMap总量. 0为无限制.（直译不太好于是用插件名来代替咯）&lt;br /&gt;
&lt;br /&gt;
 * Limit-map-by-player =&amp;gt; 设置玩家拥有的ImageOnMap总量. 0为无限制.&lt;br /&gt;
&lt;br /&gt;
==数据采集==&lt;br /&gt;
&lt;br /&gt;
 * ImageOnMap 使用 metrics 收集有关插件使用的基本信息.&lt;br /&gt;
 * 你可以在config.yml中将 &amp;quot;collect-data:&amp;quot;设置为 false 禁用（默认为true） &lt;br /&gt;
 * 了解收集到的全部内容 http://mcstats.org/plugin/ImageOnMap &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;
==已知BUG==&lt;br /&gt;
&lt;br /&gt;
 * 有时重定向URL会无法加载图像;&lt;br /&gt;
&lt;br /&gt;
 * 也许还有!&lt;br /&gt;
&lt;br /&gt;
非常感谢您的反馈. :) GitHub repo: [https://github.com/Coutume/ImageOnMap http://jenkins.carrade.eu/job/ImageOnMap/]&lt;br /&gt;
&lt;br /&gt;
Jenkins 开发构建地址 : [http://jenkins.carrade.eu/job/ImageOnMap/ http://jenkins.carrade.eu/job/ImageOnMap/]&lt;br /&gt;
&lt;br /&gt;
汉化完发现插件大更新了 凸(艹皿艹 ) 现插件Bukkit地址[https://dev.bukkit.org/projects/imageonmap]&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14275</id>
		<title>ImageOnMap</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14275"/>
		<updated>2021-05-04T15:34:29Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ImageOnMap&lt;br /&gt;
|图标=[[File:ImageOnMap.png]]&lt;br /&gt;
|版本=3.0&lt;br /&gt;
|兼容服务端版本=1.6.4-1.8.3&lt;br /&gt;
|作者=[https://dev.bukkit.org/members/ProkopyL Prokopy]&lt;br /&gt;
|網址=[https://dev.bukkit.org/projects/imageonmap BukkitDev]&lt;br /&gt;
}}&lt;br /&gt;
{{待完善}}&lt;br /&gt;
&lt;br /&gt;
你是否想要在游戏里的地图上浏览图片？ImageOnMap可以让你这样做！(由ImgMap制作)&lt;br /&gt;
&lt;br /&gt;
==特点==&lt;br /&gt;
&lt;br /&gt;
 * ImageOnMap允许你在MC地图中加载网络图片&lt;br /&gt;
&lt;br /&gt;
 * 将网站上的图片载入到地图里.支持的格式 PNG JPEG  GIF &lt;br /&gt;
&lt;br /&gt;
 * 这些图片将会保存在你的服务器里并在重载时重新加载 （意思是加载图片后需要重载插件）&lt;br /&gt;
&lt;br /&gt;
 * 大图片会被分成好几份! 例如一个 1024x1024 大的图片将会被分成16个地图.&lt;br /&gt;
&lt;br /&gt;
 * 你的图片将会居中.&lt;br /&gt;
&lt;br /&gt;
 * 你可以将地图放在物品展示框里.&lt;br /&gt;
&lt;br /&gt;
==快速指南==&lt;br /&gt;
&lt;br /&gt;
 * 请确保你的背包有足够的空位! ImageOnMap 将会把你的图片分成几个部分 (取决于图片的大小) 然后放到你的背包里.&lt;br /&gt;
&lt;br /&gt;
 * Type /tomap URL, URL是你想要呈现的图片的链接地址 (见下文).&lt;br /&gt;
&lt;br /&gt;
 * 欣赏你的图片! 如果你想的话你可以将它放在物品展示框里制作一个漂亮的海报.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==命令和权限==&lt;br /&gt;
&lt;br /&gt;
===/tomap===&lt;br /&gt;
&lt;br /&gt;
/tomap [url]&lt;br /&gt;
&lt;br /&gt;
[url]:&lt;br /&gt;
&lt;br /&gt;
 * 链接必需完整, 不要忘记聊天字符限制是240个哦.&lt;br /&gt;
&lt;br /&gt;
 * 你可以使用像 tinyURL 类似的短网址生成器.&lt;br /&gt;
&lt;br /&gt;
 * 如果你想在一张地图里显示图片, 在链接后面输入 resize .&lt;br /&gt;
&lt;br /&gt;
 * 权限节点: imageonmap.userender&lt;br /&gt;
&lt;br /&gt;
实例:&lt;br /&gt;
&lt;br /&gt;
/tomap http://www.kde.org/stuff/clipart/klogo-official-lineart_detailed-128x128.png&lt;br /&gt;
&lt;br /&gt;
===/maptool===&lt;br /&gt;
&lt;br /&gt;
 * /maptool  &lt;br /&gt;
&lt;br /&gt;
 * /maptool delete [id]: 删除一个地图 (id为 [id] 的地图).&lt;br /&gt;
&lt;br /&gt;
 * /maptool list: 展示你拥有的所有地图&lt;br /&gt;
&lt;br /&gt;
 * /maptool get [id]: 获取一个地图的id&lt;br /&gt;
&lt;br /&gt;
==配置==&lt;br /&gt;
&lt;br /&gt;
 * Limit-map-by-server =&amp;gt; 设置服务器的ImageOnMap总量. 0为无限制.（直译不太好于是用插件名来代替咯）&lt;br /&gt;
&lt;br /&gt;
 * Limit-map-by-player =&amp;gt; 设置玩家拥有的ImageOnMap总量. 0为无限制.&lt;br /&gt;
&lt;br /&gt;
==数据采集==&lt;br /&gt;
&lt;br /&gt;
 * ImageOnMap 使用 metrics 收集有关插件使用的基本信息.&lt;br /&gt;
 * 你可以在config.yml中将 &amp;quot;collect-data:&amp;quot;设置为 false 禁用（默认为true） &lt;br /&gt;
 * 了解收集到的全部内容 http://mcstats.org/plugin/ImageOnMap &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;
==已知BUG==&lt;br /&gt;
&lt;br /&gt;
 * 有时重定向URL会无法加载图像;&lt;br /&gt;
&lt;br /&gt;
 * 也许还有!&lt;br /&gt;
&lt;br /&gt;
非常感谢您的反馈. :) GitHub repo: [https://github.com/Coutume/ImageOnMap http://jenkins.carrade.eu/job/ImageOnMap/]&lt;br /&gt;
&lt;br /&gt;
Jenkins 开发构建地址 : [http://jenkins.carrade.eu/job/ImageOnMap/ http://jenkins.carrade.eu/job/ImageOnMap/]&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14274</id>
		<title>ImageOnMap</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14274"/>
		<updated>2021-05-04T15:29:29Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ImageOnMap&lt;br /&gt;
|图标=[[File:ImageOnMap.png]]&lt;br /&gt;
|版本=3.0&lt;br /&gt;
|兼容服务端版本=1.6.4-1.8.3&lt;br /&gt;
|作者=[https://dev.bukkit.org/members/ProkopyL Prokopy]&lt;br /&gt;
|網址=[https://dev.bukkit.org/projects/imageonmap BukkitDev]&lt;br /&gt;
}}&lt;br /&gt;
{{待完善}}&lt;br /&gt;
&lt;br /&gt;
你是否想要在游戏里的地图上浏览图片？ImageOnMap可以让你这样做！(由ImgMap制作)&lt;br /&gt;
&lt;br /&gt;
==特点==&lt;br /&gt;
&lt;br /&gt;
ImageOnMap允许你在MC地图中加载网络图片&lt;br /&gt;
&lt;br /&gt;
将网站上的图片载入到地图里.支持的格式 PNG JPEG  GIF &lt;br /&gt;
&lt;br /&gt;
这些图片将会保存在你的服务器里并在重载时重新加载 （意思是加载图片后需要重载插件）&lt;br /&gt;
&lt;br /&gt;
大图片会被分成好几份! 例如一个 1024x1024 大的图片将会被分成16个地图.&lt;br /&gt;
&lt;br /&gt;
你的图片将会居中.&lt;br /&gt;
&lt;br /&gt;
你可以将地图放在物品展示框里.&lt;br /&gt;
&lt;br /&gt;
==快速指南==&lt;br /&gt;
&lt;br /&gt;
请确保你的背包有足够的空位! ImageOnMap 将会把你的图片分成几个部分 (取决于图片的大小) 然后放到你的背包里.&lt;br /&gt;
&lt;br /&gt;
Type /tomap URL, URL是你想要呈现的图片的链接地址 (见下文).&lt;br /&gt;
&lt;br /&gt;
欣赏你的图片! 如果你想的话你可以将它放在物品展示框里制作一个漂亮的海报.&lt;br /&gt;
&lt;br /&gt;
German speakers, you can watch this video (thanks to StarlessMiner) English speakers? Watch this one ! (thanks to bebosny) Another tutorial in english (thanks to ltjim007)没有翻译必要&lt;br /&gt;
&lt;br /&gt;
==命令和权限==&lt;br /&gt;
&lt;br /&gt;
===/tomap===&lt;br /&gt;
&lt;br /&gt;
/tomap [url]&lt;br /&gt;
&lt;br /&gt;
[url]:&lt;br /&gt;
&lt;br /&gt;
链接必需完整, 不要忘记聊天字符限制是240个哦.&lt;br /&gt;
&lt;br /&gt;
你可以使用像 tinyURL 类似的短网址生成器.&lt;br /&gt;
&lt;br /&gt;
如果你想在一张地图里显示图片, 在链接后面输入 resize .&lt;br /&gt;
&lt;br /&gt;
权限节点: imageonmap.userender&lt;br /&gt;
&lt;br /&gt;
实例:&lt;br /&gt;
&lt;br /&gt;
/tomap http://www.kde.org/stuff/clipart/klogo-official-lineart_detailed-128x128.png&lt;br /&gt;
&lt;br /&gt;
===/maptool===&lt;br /&gt;
&lt;br /&gt;
/maptool  &lt;br /&gt;
&lt;br /&gt;
/maptool delete [id]: 删除一个地图 ((id是 [id] 的地图).&lt;br /&gt;
&lt;br /&gt;
/maptool list: 展示你拥有的所有地图&lt;br /&gt;
&lt;br /&gt;
/maptool get [id]: 获取一个地图的id&lt;br /&gt;
&lt;br /&gt;
==配置==&lt;br /&gt;
&lt;br /&gt;
Limit-map-by-server =&amp;gt; 设置服务器的ImageOnMap总量. 0为无限制.（直译不太好于是用插件名来代替咯）&lt;br /&gt;
&lt;br /&gt;
Limit-map-by-player =&amp;gt; 设置玩家拥有的ImageOnMap总量. 0为无限制.&lt;br /&gt;
&lt;br /&gt;
==数据采集==&lt;br /&gt;
&lt;br /&gt;
ImageOnMap 使用 metrics 收集有关插件使用的基本信息.你可以在config.yml中将 &amp;quot;collect-data:&amp;quot;设置为 false 禁用（默认为true） * 了解收集到的全部内容 http://mcstats.org/plugin/ImageOnMap &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;
==已知BUG==&lt;br /&gt;
&lt;br /&gt;
有时重定向URL会无法加载图像;&lt;br /&gt;
&lt;br /&gt;
也许还有!&lt;br /&gt;
&lt;br /&gt;
非常感谢您的反馈. :) GitHub repo: [https://github.com/Coutume/ImageOnMap http://jenkins.carrade.eu/job/ImageOnMap/]&lt;br /&gt;
&lt;br /&gt;
Jenkins 开发构建 : [http://jenkins.carrade.eu/job/ImageOnMap/ http://jenkins.carrade.eu/job/ImageOnMap/]&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14273</id>
		<title>ImageOnMap</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14273"/>
		<updated>2021-05-04T15:28:18Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​/* 快速指南 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ImageOnMap&lt;br /&gt;
|图标=[[File:ImageOnMap.png]]&lt;br /&gt;
|版本=3.0&lt;br /&gt;
|兼容服务端版本=1.6.4-1.8.3&lt;br /&gt;
|作者=[https://dev.bukkit.org/members/ProkopyL Prokopy]&lt;br /&gt;
|網址=[https://dev.bukkit.org/projects/imageonmap BukkitDev]&lt;br /&gt;
}}&lt;br /&gt;
{{待翻译}}&lt;br /&gt;
{{待完善}}&lt;br /&gt;
&lt;br /&gt;
你是否想要在游戏里的地图上浏览图片？ImageOnMap可以让你这样做！(由ImgMap制作)&lt;br /&gt;
&lt;br /&gt;
==特点==&lt;br /&gt;
&lt;br /&gt;
ImageOnMap允许你在MC地图中加载网络图片&lt;br /&gt;
&lt;br /&gt;
将网站上的图片载入到地图里.支持的格式 PNG JPEG  GIF &lt;br /&gt;
&lt;br /&gt;
这些图片将会保存在你的服务器里并在重载时重新加载 （意思是加载图片后需要重载插件）&lt;br /&gt;
&lt;br /&gt;
大图片会被分成好几份! 例如一个 1024x1024 大的图片将会被分成16个地图.&lt;br /&gt;
&lt;br /&gt;
你的图片将会居中.&lt;br /&gt;
&lt;br /&gt;
你可以将地图放在物品展示框里.&lt;br /&gt;
&lt;br /&gt;
==快速指南==&lt;br /&gt;
&lt;br /&gt;
请确保你的背包有足够的空位! ImageOnMap 将会把你的图片分成几个部分 (取决于图片的大小) 然后放到你的背包里.&lt;br /&gt;
&lt;br /&gt;
Type /tomap URL, URL是你想要呈现的图片的链接地址 (见下文).&lt;br /&gt;
&lt;br /&gt;
欣赏你的图片! 如果你想的话你可以将它放在物品展示框里制作一个漂亮的海报.&lt;br /&gt;
&lt;br /&gt;
German speakers, you can watch this video (thanks to StarlessMiner) English speakers? Watch this one ! (thanks to bebosny) Another tutorial in english (thanks to ltjim007)没有翻译必要&lt;br /&gt;
&lt;br /&gt;
==命令和权限==&lt;br /&gt;
&lt;br /&gt;
===/tomap===&lt;br /&gt;
&lt;br /&gt;
/tomap [url]&lt;br /&gt;
&lt;br /&gt;
[url]:&lt;br /&gt;
&lt;br /&gt;
链接必需完整, 不要忘记聊天字符限制是240个哦.&lt;br /&gt;
&lt;br /&gt;
你可以使用像 tinyURL 类似的短网址生成器.&lt;br /&gt;
&lt;br /&gt;
如果你想在一张地图里显示图片, 在链接后面输入 resize .&lt;br /&gt;
&lt;br /&gt;
权限节点: imageonmap.userender&lt;br /&gt;
&lt;br /&gt;
实例:&lt;br /&gt;
&lt;br /&gt;
/tomap http://www.kde.org/stuff/clipart/klogo-official-lineart_detailed-128x128.png&lt;br /&gt;
&lt;br /&gt;
===/maptool===&lt;br /&gt;
&lt;br /&gt;
/maptool  &lt;br /&gt;
&lt;br /&gt;
/maptool delete [id]: 删除一个地图 ((id是 [id] 的地图).&lt;br /&gt;
&lt;br /&gt;
/maptool list: 展示你拥有的所有地图&lt;br /&gt;
&lt;br /&gt;
/maptool get [id]: 获取一个地图的id&lt;br /&gt;
&lt;br /&gt;
==配置==&lt;br /&gt;
&lt;br /&gt;
Limit-map-by-server =&amp;gt; 设置服务器的ImageOnMap总量. 0为无限制.（直译不太好于是用插件名来代替咯）&lt;br /&gt;
&lt;br /&gt;
Limit-map-by-player =&amp;gt; 设置玩家拥有的ImageOnMap总量. 0为无限制.&lt;br /&gt;
&lt;br /&gt;
==数据采集==&lt;br /&gt;
&lt;br /&gt;
ImageOnMap 使用 metrics 收集有关插件使用的基本信息.你可以在config.yml中将 &amp;quot;collect-data:&amp;quot;设置为 false 禁用（默认为true） * 了解收集到的全部内容 http://mcstats.org/plugin/ImageOnMap &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;
==已知BUG==&lt;br /&gt;
&lt;br /&gt;
有时重定向URL会无法加载图像;&lt;br /&gt;
&lt;br /&gt;
也许还有!&lt;br /&gt;
&lt;br /&gt;
非常感谢您的反馈. :) GitHub repo: [https://github.com/Coutume/ImageOnMap http://jenkins.carrade.eu/job/ImageOnMap/]&lt;br /&gt;
&lt;br /&gt;
Jenkins 开发构建 : [http://jenkins.carrade.eu/job/ImageOnMap/ http://jenkins.carrade.eu/job/ImageOnMap/]&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14272</id>
		<title>ImageOnMap</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ImageOnMap&amp;diff=14272"/>
		<updated>2021-05-04T15:27:21Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=ImageOnMap&lt;br /&gt;
|图标=[[File:ImageOnMap.png]]&lt;br /&gt;
|版本=3.0&lt;br /&gt;
|兼容服务端版本=1.6.4-1.8.3&lt;br /&gt;
|作者=[https://dev.bukkit.org/members/ProkopyL Prokopy]&lt;br /&gt;
|網址=[https://dev.bukkit.org/projects/imageonmap BukkitDev]&lt;br /&gt;
}}&lt;br /&gt;
{{待翻译}}&lt;br /&gt;
{{待完善}}&lt;br /&gt;
&lt;br /&gt;
你是否想要在游戏里的地图上浏览图片？ImageOnMap可以让你这样做！(由ImgMap制作)&lt;br /&gt;
&lt;br /&gt;
==特点==&lt;br /&gt;
&lt;br /&gt;
ImageOnMap允许你在MC地图中加载网络图片&lt;br /&gt;
&lt;br /&gt;
将网站上的图片载入到地图里.支持的格式 PNG JPEG  GIF &lt;br /&gt;
&lt;br /&gt;
这些图片将会保存在你的服务器里并在重载时重新加载 （意思是加载图片后需要重载插件）&lt;br /&gt;
&lt;br /&gt;
大图片会被分成好几份! 例如一个 1024x1024 大的图片将会被分成16个地图.&lt;br /&gt;
&lt;br /&gt;
你的图片将会居中.&lt;br /&gt;
&lt;br /&gt;
你可以将地图放在物品展示框里.&lt;br /&gt;
&lt;br /&gt;
==快速指南==&lt;br /&gt;
&lt;br /&gt;
请确保你的背包有足够的空位! ImageOnMap 将会把你的图片分成几个部分 (取决于图片的大小) 然后放到你的背包里.&lt;br /&gt;
&lt;br /&gt;
Type /tomap URL, URL是你想要呈现的图片的链接地址 (see the section below).&lt;br /&gt;
&lt;br /&gt;
欣赏你的图片! 如果你想的话你可以将它放在物品展示框里制作一个漂亮的海报.&lt;br /&gt;
&lt;br /&gt;
German speakers, you can watch this video (thanks to StarlessMiner) English speakers? Watch this one ! (thanks to bebosny) Another tutorial in english (thanks to ltjim007)&lt;br /&gt;
&lt;br /&gt;
==命令和权限==&lt;br /&gt;
&lt;br /&gt;
===/tomap===&lt;br /&gt;
&lt;br /&gt;
/tomap [url]&lt;br /&gt;
&lt;br /&gt;
[url]:&lt;br /&gt;
&lt;br /&gt;
链接必需完整, 不要忘记聊天字符限制是240个哦.&lt;br /&gt;
&lt;br /&gt;
你可以使用像 tinyURL 类似的短网址生成器.&lt;br /&gt;
&lt;br /&gt;
如果你想在一张地图里显示图片, 在链接后面输入 resize .&lt;br /&gt;
&lt;br /&gt;
权限节点: imageonmap.userender&lt;br /&gt;
&lt;br /&gt;
实例:&lt;br /&gt;
&lt;br /&gt;
/tomap http://www.kde.org/stuff/clipart/klogo-official-lineart_detailed-128x128.png&lt;br /&gt;
&lt;br /&gt;
===/maptool===&lt;br /&gt;
&lt;br /&gt;
/maptool  &lt;br /&gt;
&lt;br /&gt;
/maptool delete [id]: 删除一个地图 ((id是 [id] 的地图).&lt;br /&gt;
&lt;br /&gt;
/maptool list: 展示你拥有的所有地图&lt;br /&gt;
&lt;br /&gt;
/maptool get [id]: 获取一个地图的id&lt;br /&gt;
&lt;br /&gt;
==配置==&lt;br /&gt;
&lt;br /&gt;
Limit-map-by-server =&amp;gt; 设置服务器的ImageOnMap总量. 0为无限制.（直译不太好于是用插件名来代替咯）&lt;br /&gt;
&lt;br /&gt;
Limit-map-by-player =&amp;gt; 设置玩家拥有的ImageOnMap总量. 0为无限制.&lt;br /&gt;
&lt;br /&gt;
==数据采集==&lt;br /&gt;
&lt;br /&gt;
ImageOnMap 使用 metrics 收集有关插件使用的基本信息.你可以在config.yml中将 &amp;quot;collect-data:&amp;quot;设置为 false 禁用（默认为true） * 了解收集到的全部内容 http://mcstats.org/plugin/ImageOnMap &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;
==已知BUG==&lt;br /&gt;
&lt;br /&gt;
有时重定向URL会无法加载图像;&lt;br /&gt;
&lt;br /&gt;
也许还有!&lt;br /&gt;
&lt;br /&gt;
非常感谢您的反馈. :) GitHub repo: [https://github.com/Coutume/ImageOnMap http://jenkins.carrade.eu/job/ImageOnMap/]&lt;br /&gt;
&lt;br /&gt;
Jenkins 开发构建 : [http://jenkins.carrade.eu/job/ImageOnMap/ http://jenkins.carrade.eu/job/ImageOnMap/]&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Studio%E8%AE%A8%E8%AE%BA:%E4%BA%92%E5%8A%A9%E5%AE%A2%E6%A0%88&amp;diff=14271</id>
		<title>Studio讨论:互助客栈</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Studio%E8%AE%A8%E8%AE%BA:%E4%BA%92%E5%8A%A9%E5%AE%A2%E6%A0%88&amp;diff=14271"/>
		<updated>2021-05-04T14:47:13Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​/* 在下面留名 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{模板:互助客栈提示}}&lt;br /&gt;
&lt;br /&gt;
{{Comment Title}}&lt;br /&gt;
&lt;br /&gt;
== 插件百科新图标设计意见征求 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;百科图标许久未变，初始是为kaho同学所协助编辑，但时至今日，此图标显得并不正式，且未显示出插件百科值特色与理念。&lt;br /&gt;
&lt;br /&gt;
故在此征求大家对新图标的意见。&lt;br /&gt;
&lt;br /&gt;
意见初步统一之后将创建投票，最终全部通过后由指定成员（小组）进行创作。&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
[[用户:Iwar|Re_]]（[[用户讨论:Iwar|讨论]]） 2015年9月2日 (三) 14:19 (HKT)&lt;br /&gt;
&lt;br /&gt;
图标早就有啦 =A=&lt;br /&gt;
&lt;br /&gt;
[[用户:LocusAzzurro|LocusAzzurro]]（[[用户讨论:LocusAzzurro|讨论]]） 2016年9月26日 (一) 02:51 (CST)&lt;br /&gt;
== 成员名单贴 ==&lt;br /&gt;
&lt;br /&gt;
因为不知道有多少人在这里...&lt;br /&gt;
&lt;br /&gt;
所以在此留下你的ID...&lt;br /&gt;
&lt;br /&gt;
......&lt;br /&gt;
&lt;br /&gt;
正经点吧&lt;br /&gt;
&lt;br /&gt;
用5级标题写自己的名字&lt;br /&gt;
&lt;br /&gt;
除管理员外请不要删除别人的名字&lt;br /&gt;
&lt;br /&gt;
本人为例&lt;br /&gt;
&lt;br /&gt;
作者seesaw_233 2015-10-16&lt;br /&gt;
::可以在[[特殊:贡献得分|这里]]了解下最近活跃的成员  [[用户:Iwar|Re_]]（[[用户讨论:Iwar|讨论]]） 2015年10月25日 (日) 11:10 (HKT)&lt;br /&gt;
=== 在下面留名 ===&lt;br /&gt;
===== Stydxm =====&lt;br /&gt;
===== seesaw_233 =====&lt;br /&gt;
===== LocusAzzurro =====&lt;br /&gt;
===== Lzs =====&lt;br /&gt;
===== Lichi2050 路过看看 =====&lt;br /&gt;
===== SYS_TEM =====&lt;br /&gt;
===== Leo =====&lt;br /&gt;
===== Mecho =====&lt;br /&gt;
===== Salt_lovely =====&lt;br /&gt;
===== D0048 =====&lt;br /&gt;
===== MiaoDaze =====&lt;br /&gt;
=====Jeason_Lan=====&lt;br /&gt;
===== zythonc =====&lt;br /&gt;
===== THS-yuhao =====&lt;br /&gt;
[[用户:SYS TEM|SYS TEM]]（[[用户讨论:SYS TEM|讨论]]） 2016年3月25日 (五) 23:09 (CST)&lt;br /&gt;
&lt;br /&gt;
== 凉了？留名！ ==&lt;br /&gt;
&lt;br /&gt;
大哥大姐们别吓唬我啊，这站凉了？&lt;br /&gt;
&lt;br /&gt;
没凉的话来下面留个签名戳呗&lt;br /&gt;
----&lt;br /&gt;
[[用户:MiaoDaze|MiaoDaze]]（[[用户讨论:MiaoDaze|讨论]]） 2018年9月24日 (一) 18:11 (CST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
: 本页面用于成员间沟通正式的百科事务，在此处讨论之意义便是公开与存档，谢绝闲聊。&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;box-shadow:0px 0px 30px #0FA;font: 12px 微软雅黑&amp;quot;&amp;gt;[[用户:iwar|&amp;lt;span style=&amp;quot;background:#0FA;padding:0 19px;color:#fff&amp;quot;&amp;gt;iwar&amp;lt;/span&amp;gt;]][[用户讨论:iwar|&amp;lt;span style=&amp;quot;padding:0 19px;color:#0FA&amp;quot;&amp;gt;讨论&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;  2018年9月25日 (二) 08:41 (CST)&lt;br /&gt;
&lt;br /&gt;
:: Ironically, LK-chan has just left her name here :D --[[用户:Henry5041|Henry5041]]（[[用户讨论:Henry5041|讨论]]） 2018年9月29日 (六) 14:57 (CST)&lt;br /&gt;
&lt;br /&gt;
== 建议 ==&lt;br /&gt;
&lt;br /&gt;
各位插件wiki管理员：&lt;br /&gt;
&lt;br /&gt;
各位好！&lt;br /&gt;
&lt;br /&gt;
我是来自中文wiki的电量233，我有对贵wiki的几个建议要提：&lt;br /&gt;
&lt;br /&gt;
1.主页&lt;br /&gt;
&lt;br /&gt;
拜托各位建立主页的/editcopy，让每位用户都可以编辑主页。&lt;br /&gt;
&lt;br /&gt;
2.模板&lt;br /&gt;
&lt;br /&gt;
关于模板，在插件wiki也是这缺那缺，所以各位可以建立一个页面，专门放从其他wiki盗窃（划掉）借鉴的template。&lt;br /&gt;
&lt;br /&gt;
3.制度&lt;br /&gt;
&lt;br /&gt;
我观察到贵wiki仍没有一个详细、明确的管理制度，希望各位可以盗窃（划掉）借鉴一个管理制度，这样可以免一些杂事。&lt;br /&gt;
&lt;br /&gt;
[[User:电量233|&amp;lt;span style=&amp;quot;font:83% Times;line-height:1.1em;border-radius:9em;padding:0 4em;box-shadow:0 2px 9px #ace;background:linear-gradient(40deg,#396cdb,#2c58cc 60%,#39f 60%,#4dbeff 75%,#3df 75%,#3cf);color:#fff&amp;quot;&amp;gt;电量233&amp;lt;/span&amp;gt;]]  &amp;lt;sup&amp;gt;[[User talk:电量233|讨论]]&amp;lt;/sup&amp;gt;•&amp;lt;sub&amp;gt;[[Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/电量233|贡献]]&amp;lt;/sub&amp;gt; 2019年3月10日 (日) 07:52 (CST)&lt;br /&gt;
&lt;br /&gt;
: 你好，感谢你的建议，也可以加主群278733923进行讨论。&lt;br /&gt;
&amp;lt;span style=&amp;quot;box-shadow:0px 0px 30px #0FA;font: 12px 微软雅黑&amp;quot;&amp;gt;[[用户:iwar|&amp;lt;span style=&amp;quot;background:#0FA;padding:0 19px;color:#fff&amp;quot;&amp;gt;iwar&amp;lt;/span&amp;gt;]][[用户讨论:iwar|&amp;lt;span style=&amp;quot;padding:0 19px;color:#0FA&amp;quot;&amp;gt;讨论&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;  2019年3月16日 (六) 19:48 (CST)&lt;br /&gt;
&lt;br /&gt;
: 值得注意的是，Minecraft Wiki采用CC_BY-NC-SA协议，而本wiki采用CC_BY-SA协议，无法从Minecraft Wiki直接复制粘贴模板。--[[用户:Jingkaimori|Jingkaimori]]（[[用户讨论:Jingkaimori|讨论]]） 2020年4月17日 (五) 08:51 (CST)&lt;br /&gt;
&lt;br /&gt;
== 收不到确认电子邮件 ==&lt;br /&gt;
&lt;br /&gt;
试过好几次了，收不到确认电子邮件，导致电子邮件无法确认。--[[用户:SolidBlock|SolidBlock]]（[[用户讨论:SolidBlock|讨论]]） 2020年1月31日 (五) 12:38 (CST)&lt;br /&gt;
&lt;br /&gt;
== 收不到邮件+1 ==&lt;br /&gt;
&lt;br /&gt;
注册以来已经一个多星期了，试了好几次，换了好几个邮箱都不能收到邮件，能否解决一下？&lt;br /&gt;
:[[User:XinuGod|XinuGod]]，请留言时不要忘记签名。--[[用户:SolidBlock|SolidBlock]]（[[用户讨论:SolidBlock|讨论]]） 2020年9月16日 (三) 17:59 (CST)&lt;br /&gt;
&lt;br /&gt;
== 强烈建议启用Scribunto ==&lt;br /&gt;
&lt;br /&gt;
Scribunto是用于实现用Lua编写模板的扩展程序。这将简化一些复杂代码，同时实现一些复杂功能。建议启用Scribunto扩展。--[[用户:SolidBlock|SolidBlock]]（[[用户讨论:SolidBlock|讨论]]） 2020年9月16日 (三) 17:57 (CST)&lt;br /&gt;
&lt;br /&gt;
== 首页“百科有话说”栏目缺少更新 ==&lt;br /&gt;
&lt;br /&gt;
首页“百科有话说”栏目最新还是2017年的，需要更新。——[[用户:SolidBlock|SolidBlock]]（[[用户讨论:SolidBlock|讨论]]） 2020年9月18日 (五) 18:47 (CST)&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14270</id>
		<title>Plugin.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14270"/>
		<updated>2021-05-04T14:39:26Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​/* Plugin.yml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
=== 创建plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
你已经创建了项目和主类，如果你想要Bukkit能够加载你的插件，你还必须创建 &#039;&#039;&#039;[[Plugin YAML|plugin.yml]]&#039;&#039;&#039; 文件. 这个文件包含有基础的插件信息，如果缺失这个文件，你的插件也将会失效. 此时你需要右键&#039;&#039;src/main/resources&#039;&#039;. 选择&#039;&#039;New &amp;amp;gt; File&#039;&#039;. 命名为&amp;quot;&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;&amp;quot; 并右键完成新文件的创建.Eclipse会打开默认的文本编辑窗口来显示&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;文件中空白的内容并提供编辑. &#039;&#039;(Hint:&amp;amp;nbsp;如果你想要使得你的工作空间更加规整，关闭文本编辑器并将&#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件拖到主工作空间(拖到文件目录的右边) 之后你就可以在eclipse中编辑文件了.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
有三个基础的内容需要在plugin.yml写明. &lt;br /&gt;
: name:  插件名称. &lt;br /&gt;
: main: [http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.7 插件主类的完整，合法名称] . &lt;br /&gt;
: version: 插件当前版本号. &lt;br /&gt;
&lt;br /&gt;
最简单的 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件内就像这样&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 name: {插件名称}&lt;br /&gt;
 main: {包名}.{主类}&lt;br /&gt;
 version: {版本号}&lt;br /&gt;
&lt;br /&gt;
 PS:插件的包名经常会包括插件的名称，所以看到这个的时候不要感到惊讶。&lt;br /&gt;
    你的主类是否是你的插件名取决于你之前的命名方式，时刻记住这一点很重要。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;更多例子&#039;&#039;&#039;, 请看[[#Example_Files_and_Templates]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
此时你的插件已经可以被Bukkit加载了,同时服务端日志也会开始记录你的插件. 不过它现在什么用都没有!&lt;br /&gt;
&lt;br /&gt;
*以上内容来自 [[Bukkit/插件开发教程]] 4.6 创建plugin.yml&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Plugin.yml 文件包含了你的插件信息，没有这个文件，你的插件将&#039;&#039;&#039;不会正常工作&#039;&#039;&#039;，它由一组属性组成，&#039;&#039;&#039;注意！！！&#039;&#039;&#039; 这些属性是严格区分大小写的。接下来粗体是必需属性（缺了就会有问题），斜体是可选属性(但有一些在一些特定的情况下必须要有)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&lt;br /&gt;
目录：&lt;br /&gt;
&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[#Required|必需属性]]&lt;br /&gt;
* [[#Optional|可选属性]]&lt;br /&gt;
* 命令&lt;br /&gt;
* 权限&lt;br /&gt;
* 实例&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4 id=&amp;quot;Required&amp;quot;&amp;gt;&lt;br /&gt;
必需属性&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
要想 plugin.yml 有效 则有三个属性 必须存在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;main：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 指插件的主类名&lt;br /&gt;
* 在插件中主类名有且仅有一个，而且需要继承&amp;lt;code&amp;gt;JavaPlugin&amp;lt;/code&amp;gt;类&lt;br /&gt;
* 主类名是插件的“入口” 反正这玩意在插件启动时执行&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;main: org.mineplugin.testplugin.Test &lt;br /&gt;
# 格式是包名加上主类名   你可别说你不知道什么是包和主类&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;name：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 插件的名称&lt;br /&gt;
* 必须由(a-z,A-Z,0-9, _)组成 这里建议写“&#039;&#039;一个特殊&#039;&#039;”一点名字避免和其它插件重名&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;name: MinePlugin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;version&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 这是你插件的版本&lt;br /&gt;
* 理论上可以填写任何String类型 [https://semver.org/lang/zh-CN/ 参考文献]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;version: 1.0.0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;Optional&amp;quot;&amp;gt;&lt;br /&gt;
可选属性&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14269</id>
		<title>Plugin.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14269"/>
		<updated>2021-05-04T14:37:16Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​/* Plugin.yml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
=== 创建plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
你已经创建了项目和主类，如果你想要Bukkit能够加载你的插件，你还必须创建 &#039;&#039;&#039;[[Plugin YAML|plugin.yml]]&#039;&#039;&#039; 文件. 这个文件包含有基础的插件信息，如果缺失这个文件，你的插件也将会失效. 此时你需要右键&#039;&#039;src/main/resources&#039;&#039;. 选择&#039;&#039;New &amp;amp;gt; File&#039;&#039;. 命名为&amp;quot;&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;&amp;quot; 并右键完成新文件的创建.Eclipse会打开默认的文本编辑窗口来显示&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;文件中空白的内容并提供编辑. &#039;&#039;(Hint:&amp;amp;nbsp;如果你想要使得你的工作空间更加规整，关闭文本编辑器并将&#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件拖到主工作空间(拖到文件目录的右边) 之后你就可以在eclipse中编辑文件了.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
有三个基础的内容需要在plugin.yml写明. &lt;br /&gt;
: name:  插件名称. &lt;br /&gt;
: main: [http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.7 插件主类的完整，合法名称] . &lt;br /&gt;
: version: 插件当前版本号. &lt;br /&gt;
&lt;br /&gt;
最简单的 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件内就像这样&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 name: {插件名称}&lt;br /&gt;
 main: {包名}.{主类}&lt;br /&gt;
 version: {版本号}&lt;br /&gt;
&lt;br /&gt;
 PS:插件的包名经常会包括插件的名称，所以看到这个的时候不要感到惊讶。&lt;br /&gt;
    你的主类是否是你的插件名取决于你之前的命名方式，时刻记住这一点很重要。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;更多例子&#039;&#039;&#039;, 请看[[#Example_Files_and_Templates]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
此时你的插件已经可以被Bukkit加载了,同时服务端日志也会开始记录你的插件. 不过它现在什么用都没有!&lt;br /&gt;
&lt;br /&gt;
*以上内容来自 [[Bukkit/插件开发教程]] 4.6 创建plugin.yml&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Plugin.yml 文件包含了你的插件信息，没有这个文件，你的插件将&#039;&#039;&#039;不会正常工作&#039;&#039;&#039;，它由一组属性组成，&#039;&#039;&#039;注意！！！&#039;&#039;&#039; 这些属性是严格区分大小写的。接下来粗体是必需属性（缺了就会有问题），斜体是可选属性(但有一些在一些特定的情况下必须要有)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&lt;br /&gt;
目录：&lt;br /&gt;
&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[#Required|必需属性]]&lt;br /&gt;
* [[#Optional|可选属性]]&lt;br /&gt;
* 命令&lt;br /&gt;
* 权限&lt;br /&gt;
* 实例&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4 id=&amp;quot;Required&amp;quot;&amp;gt;&lt;br /&gt;
必需属性&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
要想 plugin.yml 有效 则有三个属性 必须存在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;main：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 指插件的主类名&lt;br /&gt;
* 在插件中主类名有且仅有一个，而且需要继承&amp;lt;code&amp;gt;JavaPlugin&amp;lt;/code&amp;gt;类&lt;br /&gt;
* 主类名是插件的“入口” 反正这玩意在插件启动时执行&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;main: org.mineplugin.testplugin.Test &lt;br /&gt;
# 格式是包名加上主类名   你可别说你不知道什么是包和主类&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;name：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 插件的名称&lt;br /&gt;
* 必须由(a-z,A-Z,0-9, _)组成 这里建议写“&#039;&#039;一个特殊&#039;&#039;”一点名字避免和其它插件重名&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;name: MinePlugin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;version&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 这是你插件的版本&lt;br /&gt;
* 理论上可以填写任何String类型 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;version: 1.0.0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;Optional&amp;quot;&amp;gt;&lt;br /&gt;
可选属性&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14268</id>
		<title>Plugin.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14268"/>
		<updated>2021-05-04T14:36:16Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​/* Plugin.yml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
=== 创建plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
你已经创建了项目和主类，如果你想要Bukkit能够加载你的插件，你还必须创建 &#039;&#039;&#039;[[Plugin YAML|plugin.yml]]&#039;&#039;&#039; 文件. 这个文件包含有基础的插件信息，如果缺失这个文件，你的插件也将会失效. 此时你需要右键&#039;&#039;src/main/resources&#039;&#039;. 选择&#039;&#039;New &amp;amp;gt; File&#039;&#039;. 命名为&amp;quot;&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;&amp;quot; 并右键完成新文件的创建.Eclipse会打开默认的文本编辑窗口来显示&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;文件中空白的内容并提供编辑. &#039;&#039;(Hint:&amp;amp;nbsp;如果你想要使得你的工作空间更加规整，关闭文本编辑器并将&#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件拖到主工作空间(拖到文件目录的右边) 之后你就可以在eclipse中编辑文件了.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
有三个基础的内容需要在plugin.yml写明. &lt;br /&gt;
: name:  插件名称. &lt;br /&gt;
: main: [http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.7 插件主类的完整，合法名称] . &lt;br /&gt;
: version: 插件当前版本号. &lt;br /&gt;
&lt;br /&gt;
最简单的 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件内就像这样&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 name: {插件名称}&lt;br /&gt;
 main: {包名}.{主类}&lt;br /&gt;
 version: {版本号}&lt;br /&gt;
&lt;br /&gt;
 PS:插件的包名经常会包括插件的名称，所以看到这个的时候不要感到惊讶。&lt;br /&gt;
    你的主类是否是你的插件名取决于你之前的命名方式，时刻记住这一点很重要。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;更多例子&#039;&#039;&#039;, 请看[[#Example_Files_and_Templates]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
此时你的插件已经可以被Bukkit加载了,同时服务端日志也会开始记录你的插件. 不过它现在什么用都没有!&lt;br /&gt;
&lt;br /&gt;
*以上内容来自 [[Bukkit/插件开发教程]] 4.6 创建plugin.yml&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Plugin.yml 文件包含了你的插件信息，没有这个文件，你的插件将&#039;&#039;&#039;不会正常工作&#039;&#039;&#039;，它由一组属性组成，&#039;&#039;&#039;注意！！！&#039;&#039;&#039; 这些属性是严格区分大小写的。接下来粗体是必需属性（缺了就会有问题），斜体是可选属性(但有一些在一些特定的情况下必须要有)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&lt;br /&gt;
目录：&lt;br /&gt;
&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[#Required|必需属性]]&lt;br /&gt;
* [[#Optional|可选属性]]&lt;br /&gt;
* 命令&lt;br /&gt;
* 权限&lt;br /&gt;
* 实例&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4 id=&amp;quot;Required&amp;quot;&amp;gt;&lt;br /&gt;
必需属性&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
要想 plugin.yml 有效 则有三个属性 必须存在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;main：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 指插件的主类名&lt;br /&gt;
* 在插件中主类名有且仅有一个，而且需要继承&amp;lt;code&amp;gt;JavaPlugin&amp;lt;/code&amp;gt;类&lt;br /&gt;
* 主类名是插件的“入口” 反正这玩意在插件启动时执行&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;main: org.mineplugin.testplugin.Test &lt;br /&gt;
# 格式是包名加上主类名   你可别说你不知道什么是包和主类&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;name：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 插件的名称&lt;br /&gt;
* 必须由(a-z,A-Z,0-9, _)组成 这里建议写“&#039;&#039;一个特殊&#039;&#039;”一点名字避免和其它插件重名&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;name: MinePlugin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;version&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 这是你插件的版本&lt;br /&gt;
* 理论上可以填写任何String类型 [[https://semver.org/lang/zh-CN/|参考]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;version: 1.0.0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;Optional&amp;quot;&amp;gt;&lt;br /&gt;
可选属性&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14267</id>
		<title>Plugin.yml</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Plugin.yml&amp;diff=14267"/>
		<updated>2021-05-04T14:34:37Z</updated>

		<summary type="html">&lt;p&gt;THS-yuhao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
=== 创建plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
你已经创建了项目和主类，如果你想要Bukkit能够加载你的插件，你还必须创建 &#039;&#039;&#039;[[Plugin YAML|plugin.yml]]&#039;&#039;&#039; 文件. 这个文件包含有基础的插件信息，如果缺失这个文件，你的插件也将会失效. 此时你需要右键&#039;&#039;src/main/resources&#039;&#039;. 选择&#039;&#039;New &amp;amp;gt; File&#039;&#039;. 命名为&amp;quot;&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;&amp;quot; 并右键完成新文件的创建.Eclipse会打开默认的文本编辑窗口来显示&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;文件中空白的内容并提供编辑. &#039;&#039;(Hint:&amp;amp;nbsp;如果你想要使得你的工作空间更加规整，关闭文本编辑器并将&#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件拖到主工作空间(拖到文件目录的右边) 之后你就可以在eclipse中编辑文件了.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
有三个基础的内容需要在plugin.yml写明. &lt;br /&gt;
: name:  插件名称. &lt;br /&gt;
: main: [http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.7 插件主类的完整，合法名称] . &lt;br /&gt;
: version: 插件当前版本号. &lt;br /&gt;
&lt;br /&gt;
最简单的 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件内就像这样&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 name: {插件名称}&lt;br /&gt;
 main: {包名}.{主类}&lt;br /&gt;
 version: {版本号}&lt;br /&gt;
&lt;br /&gt;
 PS:插件的包名经常会包括插件的名称，所以看到这个的时候不要感到惊讶。&lt;br /&gt;
    你的主类是否是你的插件名取决于你之前的命名方式，时刻记住这一点很重要。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;更多例子&#039;&#039;&#039;, 请看[[#Example_Files_and_Templates]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
此时你的插件已经可以被Bukkit加载了,同时服务端日志也会开始记录你的插件. 不过它现在什么用都没有!&lt;br /&gt;
&lt;br /&gt;
*以上内容来自 [[Bukkit/插件开发教程]] 4.6 创建plugin.yml&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Plugin.yml 文件包含了你的插件信息，没有这个文件，你的插件将&#039;&#039;&#039;不会正常工作&#039;&#039;&#039;，它由一组属性组成，&#039;&#039;&#039;注意！！！&#039;&#039;&#039; 这些属性是严格区分大小写的。接下来粗体是必需属性（缺了就会有问题），斜体是可选属性(但有一些在一些特定的情况下必须要有)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;&lt;br /&gt;
目录：&lt;br /&gt;
&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[#Required|必需属性]]&lt;br /&gt;
* [[#Optional|可选属性]]&lt;br /&gt;
* 命令&lt;br /&gt;
* 权限&lt;br /&gt;
* 实例&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4 id=&amp;quot;Required&amp;quot;&amp;gt;&lt;br /&gt;
必需属性&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
要想 plugin.yml 有效 则有三个属性 必须存在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;main：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 指插件的主类名&lt;br /&gt;
* 在插件中主类名有且仅有一个，而且需要继承&amp;lt;code&amp;gt;JavaPlugin&amp;lt;/code&amp;gt;类&lt;br /&gt;
* 主类名是插件的“入口” 反正这玩意在插件启动时执行&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;main: org.mineplugin.testplugin.Test &lt;br /&gt;
# 格式是包名加上主类名   你可别说你不知道什么是包和主类&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;name：&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 插件的名称&lt;br /&gt;
* 必须由(a-z,A-Z,0-9, _)组成 这里建议写“&#039;&#039;一个特殊&#039;&#039;”一点名字避免和其它插件重名&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例：&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;name: MinePlugin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;version&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 这是你插件的版本&lt;br /&gt;
* 理论上可以填写任何String类型 &amp;lt;a href=&amp;quot;https://semver.org/lang/zh-CN/&amp;quot; target=&amp;quot;iframe&amp;quot;&amp;gt;参考&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;version: 1.0.0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;Optional&amp;quot;&amp;gt;&lt;br /&gt;
可选属性&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;/div&gt;</summary>
		<author><name>THS-yuhao</name></author>
	</entry>
</feed>