您尚未登录,请登录后浏览更多内容! 登录 | 加入最MC

QQ登录

只需一步,快速开始

 找回密码
 加入最MC

QQ登录

只需一步,快速开始

查看: 8048|回复: 7
打印 上一主题 下一主题

[转载插件] [管理|聊天|信息]MyCommand——不只是自定义指令[1.2.3-1.10]

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
发表于 2017-3-23 22:54:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
服务端插件
中文名称: 自定义指令
英文名称: MyCommand
来源: 转载
类型: |Bukkit/Spigot插件| 
前置插件: Vault(可选),PlaceholderAPI(可选)
原帖地址: https://dev.bukkit.org/projects/mycommand
下载地址: https://dev.bukkit.org/projects/mycommand/files
更新时间: 2017-03-23
语言支持: English 
本帖最后由 GiNYAi 于 2017-3-24 17:17 编辑


目录:
  • 特性
  • 指令和权限
  • 命令类型与参数(变量)
  • 配置和例子
  • 脚本配置和例子-未完成
  • 自带的一些命令(你也可以把他们当作更多栗子)


特性:
  • 创建新的命令(同时注册命令)
  • 用新创建的命令运行其它的命令
  • 一条命令可以同时执行多个命令
  • 自定义暂停 读条时间 冷却时间
  • 为插件创建简写/假名
  • 使用任何物品,方块,牌子,书和村民NPC来运行命令
  • 有很多方式来自定义命令,例如占位符和脚本
  • 支持控制台?
  • 支持经济系统(需要Vault插件)
  • 定时执行命令
  • 蹦极传送指令
  • 所有的特效都是可以高度自定义的
  • 没有命令限制
  • 可以自定义图标菜单(类似BossShop),行动条?.boss血条,悬浮显示信息的文字,可以点击的文字,标题,计分板 命令
  • 以及更多



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

该用户从未签到

沙发
 楼主| 发表于 2017-3-23 22:55:28 | 只看该作者
本帖最后由 GiNYAi 于 2017-3-24 15:52 编辑

命令和权限:
MyCommand 自带命令:
命令描述权限
/mycmd在游戏中显示这个表mycommand.mycmd
/mycmd list显示所有的自定义命令//
/mycmd check显示自定义命令的信息//
/mycmd-reload重载配置文件mycommand.reload
/mycmd-edit游戏内配置管理器mycommand.edit
/mycmd-blockset把一个命令绑定到方块上mycommand.block.set
/mycmd-itemset把一个命令绑定到物品上mycommand.item.set
/mycmd-runas让别人或者控制台执行某条命令mycommand.runas
/mycmd-scheduler计划命令mycommand.scheduler
/mycmd-variables创建自定义变量mycommand.variables
/mycmd-playerdata管理 playerdata.ymlmycommand.playerdata
/mycmd-book把命令绑定到书上mycommand.book
/mycmd-signs绑定到牌子上mycommand.sign.set
/mycmd tell给自己发送一个信息(用于测试)//
/mycmd btell向所有玩家广播一个信息//
/mycommandCreditsmycommand.mycommand
/emptycommandNonemycommand.emptycommand


以及你的命令:如果USE_NAME_INSTEAD_OF_ID_IN_THE_PERMISSION_NAME 的值是 true (新一些版本的默认设置)
  1. 'first_command':
  2.          command: /command_name
  3. //mycommand.cmd.first_command
  4. 'second_command':
  5.          command: /myhelp2
  6. //mycommand.cmd.second_command

  7. ...
  8. 'command_name':
  9.          command : /XX
  10. //mycommand.cmd.COMMAND_NAME
复制代码

如果USE_NAME_INSTEAD_OF_ID_IN_THE_PERMISSION_NAME 的值是 false(旧版本的默认设置)
  1. 'first_command':
  2.          command: /command_name
  3. //mycommand.cmd.1
  4. 'second_command':
  5.          command: /myhelp2
  6. //mycommand.cmd.2
  7. ...
  8. 'command_position':
  9.          command : /XX
  10. //mycommand.cmd.POSITION
复制代码

让玩家可以使用所有自定义命令的权限是:mycommand.cmd.all你可以使用自定义的权限节点,只要在命令的配置中加一行 permission-node.或者如果你想要某个指令不检查权限 你可以使用permission-required或者.如果你没有权限管理插件.把DISABLE_PERMISSIONS : true(在 config.yml文件中)来跳过mycommand 命令权限检查(只对自定义命令有效)
方块(/mycmd-blockset) :
命令描述权限
/mycmd-blockset check获取目标方块的信息mycommand.block.set
/mycmd-blockset create在目标方块上创建新的mycmd方块//
/mycmd-blockset delete删掉目标方块上的全部mycmd信息//
/mycmd-blockset add <data>给目标方块添加命令//
/mycmd-blockset remove <data>从目标方块上移除命令//
/mycmd-blockset switch在玩家/控制台之间切换//
/mycmd-blockset blocklist列出所有可用的方块//

4.1之后版本的插件
  mycommand.block.方块对应物品的名字.use举个粒子->mycommand.block.STONE_PLATE.use(大概是石压力板)  mycommand.block.LEVER.use等等...或者就 mycommand.block.all.use 允许使用全部方块
4.1版本之前的插件
按钮mycommand.block.button.us
压力板mycommand.block.button.use
拉杆mycommand.block.lever.use
探测铁轨mycommand.block.detectorrail.use

允许玩家破mycmd的方块
  mycommand.block.break
牌子(/mycmd-signset) :
CommandsDescriptionPermissions
/mycmd-blockset create <listname>创建一个新列表mycommand.sign.set
/mycmd-blockset edit <listname> <create/add/remove> <value>管理一个已经创建好的列表//
/mycmd-blockset check <listname>获得一个列表的信息//
/mycmd-blockset list列出所有的列表//
使用:mycommand.sign.use创建:mycommand.sign.create破坏:mycommand.sign.break
计划表(/mycmd-scheduler) :
CommandsDescriptionPermissions
/mycmd-scheduler run运行计划mycommand.scheduler
/mycmd-scheduler create <name>创建一个新的计划//
/mycmd-scheduler add/remove <name> command/date <value>添加/移除命令/日期//
/mycmd-scheduler check <name>获得列表的信息//
/mycmd-scheduler delete <name>删除列表//
/mycmd-scheduler list列出所有列表//

书(/mycmd-book) :
/mycmd-book列出 书相关的命令mycommand.book
/mycmd-book help显示帮助//
/mycmd-book make <n> <text/runcmd>制作一个有自定义命令数据的书mycommand.book.make

变量 (/mycmd-variables) :
/mycmd-variables create <name>Create new variable
创建新的变量
mycommand.variables
/mycmd-variables set <name> <data>Edit a variable
修改一个变量
//
/mycmd-variables delete <name>Delete variable
删除变量
//
/mycmd-variables check <name>Show a variable content
显示一个变量的值
//
/mycmd-variables list <name>Show all variables created
显示所有的变量
//

(/lmcmd) :
CommandsDescriptionPermissions
/lmcmd显示帮助mycommand.lmcmd
/lmcmd run <name>运行一个表中的列表//
/lmcmd list显示所有的命令列表//
/lmcmd check <name>检查一个命令列表//
/lmcmd create <name>创建一个新的命令列表//
/lmcmd delete <name>删除一个命令列表//
/lmcmd add <name>把一个命令添加到一个列表里//
/lmcmd remove <name>从一个列表里移除一个命令//

NPCs :
CommandsDescriptionPermissions
/mycmd-npcs显示帮助mycommand.npcs
与NPC村民交互:mycommand.interact.villager
玩家数据 :
CommandsDescriptionPermissions
/mycmd-playerdata显示帮助mycommand.playerdata

物品权限 :使用:mycommand.item.use
其它 :
mycommand.cost.bypass.commandname
(commandname改成你命令的名字) 无视费用
mycommand.bypass.warmup
无视引导时间
mycommand.bypass.cooldown
无视冷却时间
mycommand.bypass.ignoredworld
无视世界错误
mycommand.see.permbroadcast
可以看见权限控制的广播内容
mycommand.bypass.timer
无视addtimer命令的延迟

命令类型与参数(变量):
  "Type" 命令类型:
Type版本信息
TEXT1.0
BROADCAST-TEXT or BROADCAST_TEXT1.4
PERM-BROADCAST-TEXT or PERM_BROADCAST_TEXT 5.3.0移除
RUNCOMMAND or RUN_COMMAND1.3
RUNCOMMAND-TEXT or RUN_COMMAND_TEXT1.4
RUNCOMMAND-BROADCAST-TEXT or RUN_COMMAND_BROADCAST_TEXT1.4
RUNCOMMAND-PERM-BROADCAST-TEXT or RUN_COMMAND_PERM_BROADCAST_TEXT3.05.3.0移除
RUNCOMMAND-RANDOM or RUNCOMMAND_RANDOM3.6
RUN_COMMAND_TASK5.2.4
SPOUT-TEXT or SPOUT_TEXT2.3需要SpoutPlugin插件
SPOUT-NOTIFICATION or SPOUT_NOTIFICATION3.7需要SpoutPlugin插件
ADDPERMISSION or ADD_PERMISSION2.3.1
RUNCONSOLE or RUN_CONSOLE2.4
WARMUP2.6早期版本叫做ADDTIMER
COOLDOWN5.0
WARMUP_AND_COOLDOWN5.3.2
RUNASOPERATOR or RUN_AS_OPERATOR3.7
ICONMENU3.9.3
SCOREBOARD4.0.0
ALIAS4.1
BUNGEE_TP4.1只有在你使用BC时工作
BAR_API_TEXT5.0.1旧版本需要BarAPI
BAR_API_BROADCAST_TEXT5.0.1旧版本需要BarAPI
CALL_URL5.1.2
RUN_CONSOLE_RANDOM5.1.2
TITLE5.1.7
BROADCAST_TITLE5.1.7
ACTION_BAR5.2.5
BROADCAST_ACTION_BAR5.2.5
RAW_TEXT5.1.8
BROADCAST_RAW_TEXT5.2.5
EXP_BAR5.3.4
ADD_COST5.3.4


文本"text"占位符 : 几乎可以在插件的任意地方使用. text,runcmd 等等..
变量描述   
$space替换为空格" ".
$player显示发送命令玩家的名字
$uuid显示发送命令玩家的UUID
$health显示发送命令玩家的血量(0 to 20)
$food显示发送命令玩家的饥饿度(0 to 20)
$world显示发生命令玩家当前所在世界名
$biome显示发送命令玩家当前所在位置的生物群系名
$exp显示发送命令玩家当前经验值
$level显示发送命令玩家当前等级
$gamemode显示发送命令玩家当期游戏模式
$lastdamage显示上次受到伤害的数值
$locX , $locY , $locZ各自显示X,Y,Z坐标
$loc_highestYShow the highest block in the Y coordinate
显示最高方块的Y坐标?
$loc_pitch, $loc_yawShow coordinate pitch and yaw
显示坐标方向和角度?
$getaddress显示玩家当前IP
$getdisplayname获取玩家在聊天框中显示的名字
$getplayerlistname获取玩家在Tab列表里显示的名字
$canpickupitems获取是否可以拾取物品 true or false
$getmaxhealth获取生命值上限 (默认 20)
$getallowflight获取是否允许飞行 true or false
$gettotalexperience获取经验值总数
$getexptolevel获取升级还需要多少经验
$rnd6 , $rnd64 ,$rnd100  生成一个随机数. rnd6 (1-6),rnd64 (1-64),rnd100 (1-100)
$randomnumber%n%自定义的随机数生成器.
例 : $randomnumber%100%  (1 to 100)
$online显示在线玩家数量(number)
$ponline显示在家玩家列表(name1, name2 ecc)
$server-name显示服务器名
$server-motd显示服务器motd
$oplist显示在线OP玩家列表
$randomplayer           从在线玩家中获取一个随机玩家
$todaydate显示当前时间.可以在 scheduler 设置中修改格式
$wgregionname(需要WorldGuard) 获取发送命令玩家当前所在区域名
$chatprefix , $chatsuffix , $primarygroup(需要一个聊天插件以及Vault) 获得前缀, 后缀以及权限组
$NoReplace  如果一串文字使用这个变量开头,那么什么都不会被替换。例, 如果文本中有$player最终你会得到$player而不是命令发送者的名字
$iditeminhand显示你手中物品的ID. 比如: STONE = 1
$iteminhand显示你手中物品的物品名
$amount_iteminhand显示你手中物品的数量(number)
$name_iteminhand显示你手中物品自定义的名字
$iteminoffhand显示你副手中物品的名字
$BCPlayerCount%servername%获取指定服务在线玩家数量。需要BungeeCore
$BCPlayerList%servername%获取指定服务在线玩家列表。需要BungeeCore
$GetPlayerByName%playername%使用另一个玩家名字替换之后所有变量。大概是指使用指定玩家替代命令发送者
$GetRandomStringFromList%string1;string2;...3%随机的从列表中获取一串文字. 使用";"分隔。预置命令中有示例
$PlayerData%Variable%从playerdata.yml获取一个变量, 作为text返回
$PlayerDataFor%PlayerName%VarName%和上面相同但是获取的是另一个玩家的变量
$arg1 , $arg2 ... $arg9 , $multiargs命令中输入的变量/yourcomand $arg1 ecc

&1 - &2 &3..&f 彩色文字.
$random_color (随机颜色)
&l = bold
&m = Stike
&n = Underline
&o = Italic
&r = Reset text format/color
你也可以使用 § 替代 &
或者使用
$darkblue,$darkgreen,$darkteal,$darkred,$purple,$gold,$gray,$darkgray,$blue,$black,$brightgreen,$teal,$red,$pink,$yellow,$white,$bold,$strike,$underline,$italic,$reset
"runcmd" 占位符
$delay$(在命令前)在执行下一条命令前等待一段时间
$text$(在命令前)直接发送一段文字而不使用"text"
$broadcasttext$(在命令前)类似$text$但是是向全服玩家发送信息
$log$与$text$但是, 发送只有后台可见的log记录
$text_to_specific_player%playername%(在命令前)向指定玩家发送信息
$arg1 , $arg2 , $arg3 , $arg4 ... $arg9 ... $arg100每个输入的参数都可以被替换
$multiargs一口气获取所有输入的参数
$Script$脚本的前缀
$Script$%if%, $Script$%else%If与Else (在下一页查看示例)
$Script$%PlayerData%(see more in Script page example)
%PlayerOptions%管理一些玩家变量
$Script$%while%只在RUN_COMMAND_TASK命令类型中有效
以及所有"text"占位符

mycmd-itemset 占位符 :
$targetentity(旧版本$playertarget) 如果是玩家返回目标玩家名,如果是实体比如怪物返回实体名
以及所有"text"占位符
Blocks, signs , npcs, lmcmd... ecc 占位符 :
所有"text"占位符
Events 占位符(playerevents.yml)
$text$(在命令前)直接发送一段文字而不使用"text"
$broadcasttext$(在命令前)类似$text$但是是向全服玩家发送信息
$killer显示击杀的玩家名
$killed_player显示被杀的玩家名
$death_cause显示死亡玩家的死亡原因

PlaceholderAPI 支持:
从5.2.3MyCmd可以使用PlaceholderAPI来获得更多的占位符.
PlaceholderAPI Spigot Page


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

该用户从未签到

板凳
 楼主| 发表于 2017-3-23 22:55:43 | 只看该作者
本帖最后由 GiNYAi 于 2017-3-24 16:34 编辑

配置和栗子:
注意:过时的命令
从5.0.0版本之后,不毕用升序数字来命名命令,这个提示只是给那些仍在使用旧版本插件的人。如果你是其中之一,请按照升序用数字命名你command.yml文件中每个命令
比如 :
  1. '1':
  2.   command: /welcome
  3.   type: TEXT
  4. '2': ecc..
复制代码

如何创建"TEXT"(文本)类型的命令:
  1. 'command_name':
  2.   command: /welcome
  3.   type: TEXT
  4.   text:
  5.   - '&6 Hello &a$player!'
  6.   - '&6 Welcome to &a$server-name &6Server!'
  7.   - '&6 $server-motd.'
复制代码

- 建议把commands.yml里所有的文本都放在单引号或双引号之中来预防错误.比如
  1. "command_name":
  2.   type: "TEXT"
  3.   text:
  4.   - "My Text"
复制代码


广播文字:

与上面的示例相近,但是命令类型不同。这里使用的是BROADCAST_TEXT。
  1. 'broadcast_example':
  2.   command: /brexample
  3.   type: BROADCAST_TEXT
  4.   text:  - '&6 Hello online players!'
复制代码

从5.3.0版本开始,你可以使用broadcast_message_permission_node来只对特定的人发送广播(有那条权限的)
只需要在你的命令里添加
  broadcast_message_permission_node: permission.for.see.this.message

别名/简写命令:

有两种可行的方法来给一个现有的命令添加一个别名。第一种是使用ALIAS命令类型,另一种是使用RUN_COMMAND命令类型。
栗子:
  1. 'my_alias':
  2.   command: /l
  3.   type: ALIAS
  4.   alias: /list
复制代码

或者:
  1. 'my_alias':
  2.   command: /l
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - /list
复制代码

这是上面两条指令返回的/list命令结果:
图挂了

在一个简写命令中使用参数:

你只能使用RUN_COMMAND命令类型,建立一个新的命令然后把$arg1放到需要输入参数的地方。
举例,如果你输入/vip Name1(使用下面的例子定义的),插件会把$arg1替换为Name1。所以最终的输出是/pex user Name1 group set Vip。你可以使用多个参数$arg1..$arg2..3..等等。
  1. 'vip_shortcut':
  2.   command: /vip
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - /pex user $arg1 group set Vip
复制代码

P.S:非常古老的图片:D
但是它挂了

使用多个参数的多重命令:

和上面的例子相似,不过使用了多个参数
  1. 'define_an_region':
  2.   command: /wgdef
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - //expand vert
  6.   - /region define $arg1 $arg2
复制代码

这个似乎是WorldGuard的命令,不过国内似乎使用WorldGuard的也不多.
另一个例子 :
  1. 'lb_rollback':
  2.   command: /rollback
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - /lb rollback player $arg1 time $arg2
  6.   - /ban $arg1
复制代码

似乎是logblock的回滚顺便ban人,不过国内现在似乎用coreprotect的多一些.早些年玩的一个服用的是logblock有点怀念

使用$multiargs(多个参数)来制作一个简写命令 :

$multiargs会获取所有输入的参数。在某些场合下如果你不需要使用$arg1等,可以使用它。
  1. 'your_command':
  2.   command: /s
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - /say $multiargs
复制代码


而且你可以把$multiargs放在$arg们的后面。例
  1.   runcmd:
  2.   - /myban name:$arg1 reason:$multiargs
复制代码


需要全部的参数?

你可以选择你的命令是否需要输入你配置里使用的所有的参数:
  1. 'your_command':
  2.   ...
  3.   require_all_arguments: true
复制代码


例:如果你的命令含有 "$arg1..$arg2 and 3" 然后你输入/command one two, 插件会阻止你使用这个命令。因为它需要所有三个参数,需要输入/command one two three。
需要指定数量的参数? 使用required_args.
与require_all_arguments不同,这个允许你给任意一种命令类型添加一个检查,可以让你可以做的更具体。runcmd的自动系统对每行都有效,所以他可能不是那么精确,这个是个不错的替代。
  1. 'your_command':
  2. ...
  3. required_args: 2
复制代码


这样的话,命令只有在玩家输入至少两个参数的时候才会执行。例/command do something。

自定义错误提示与权限:

你可以使用下列管理错误信息(不正确的参数)以及权限(错误提示和权限节点)
错误信息:error-message:
权限节点:permission-node:
权限错误:permission-error:
例子:
  1. 'time_shortcut':
  2.   command: /t
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - /time $arg1 world
  6.   error-message: '&cType /t day'
  7.   permission-node: custom.custom
  8.   permission-error: 'My custom message'
复制代码


默认所有的命令都需要权限

你可以使用permission-node和permission-error。但是你也可以使用permission-required来控制是否需要权限。如果把它设置为false,这个命令就需要权限。
以及例子
  1. 'no_permission_example':
  2.   command: /freecommand
  3.   type: TEXT
  4.   permission-required: false
复制代码

默认情况下,如果你没有指定一个权限,插件会自动给他设定一个权限节点。默认的权限节点取决于你配置文件中的设置。
在新一些的版本中,默认的权限节点是mycommand.cmd.命令名,命令名是命令第一部分的内容。比如上面例子的命令名是no_permission_example,所以最终的权限节点就是mycommand.cmd.no_permission_example。
而在旧版本的插件中(<5.2.7),默认权限是根据插件的配置来的。从1开始数你的命令是第几个,然后权限节点就是mycommand.cmd.次序。如果你想在新版本也用这种方法(并不建议),你可以在配置文件config.yml中修改。
你也可以通过在游戏或者控制台中输入/mycmd list或者/mycmd check <命令名>来知道一个命令的次序。

消耗物品的方法:

使用的例子:
注意:在新版本的插件(>4.0.0)中,你必须使用物品名而不是物品ID。在旧版本的插件中itemcost一行填4:5,而新版本中填COBBLESTONE:5。
  1. 'ic_example':
  2.   command: /itemcostexample
  3.   type: TEXT
  4.   text:
  5.   - 'This command cost 5 cobblestone. ITEM_NAME:AMOUNT'
  6.   itemcost: 'COBBLESTONE:5'
复制代码

如果你需要,你还可以修改默认的使用成功信息和错误提示信息。
例子:
  1. cost_example:
  2.   command: /costexample
  3.   cost: 5
  4.   success-message: "&aPaid &7%s [        DISCUZ_CODE_15        ]quot;
  5.   error-message: "You need %s $ for perform this command!"
  6. itemcost_example:
  7.   command: /itemcostexample
  8.   itemcost: "COBBLESTONE:5"
  9.   success-message: "&aSpent &7%s %s &aon this command"
  10.   error-message: "You need %s %s for run this command!"
复制代码


注册真实的命令和Tab自动补全

为什么要注册一个命令?
注册一个命令,会给你一些便利,比如可以让其它的插件使用这个新创建的指令。
Tab自动补全只有在这个指令注册之后才能工作。
那么该如何注册一个指令呢
只需要在你想要注册的命令后面添加registered: true或者register: true
例:
  1. 'registered_command':
  2.   command: /buycraft-pack1
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - "/say The player $arg1, have just buyed the Pack1 from the store!"
  6.   register: true
复制代码

或者(使用Tab补全)
  1. 'gm_alias':
  2.   command: /gm
  3.   type: ALIAS
  4.   alias: /gamemode
  5.   register: true
  6.   tab_completer:
  7.   - survival
  8.   - creative
  9.   - adventure
复制代码

在这个例子中你可以看到Tab补全。这部分功能只有在命令注册之后才能工作。在这个例子中,如果你在游戏聊天框中输入/gamemode,
在默认情况下,如果你不设置Tab补全器,当你按TAB键 会返回已经连接的玩家
另外:你不能注册名字中有空格的名字
command: /test example (错) -> command: /testexample (正确)
使用权限禁用命令(原版的命令也是可以的)
使用ADD_PERMISSION或者ADDPERMISSION 命令类型
  1. 'block_pl':
  2.   command: /pl
  3.   type: ADD_PERMISSION
  4.   permission-node: blocked_commands.pl
  5.   permission-error: '&cNope'
复制代码


如何制作延迟命令

你可以使用$delay$前缀 只 在RUN_COMMAND命令类型中
要使用这个特性,只需要把$delay$作为一个前缀放在命令前面
例子
  1. '1':
  2.   command: /delayexample
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - $delay$/time day
  6.   - /say oh, the light, finally!
  7.   - $delay$/time night
  8.   - /say just joking! It's night again!
  9.   delaytimer: 5
复制代码

另一个例子:
  1. '2':
  2.   command: /delayexample2
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - $delay$/broadcast 5..
  6.   - $delay$/broadcast 4..
  7.   - $delay$/broadcast 3..
  8.   - $delay$/broadcast 2..
  9.   - $delay$/broadcast 1..
  10.   - /broadcast Welcome in $player Event at X-$locX Y-$locY Z-$locZ!
  11.   - /tpall $player
  12.   delaytimer: 1
复制代码

正如你所见,命令中有一条delaytimer。它被用来设置 $delay$等待多长时间。默认单位是秒。
如果需要更精确,也可以设置单位为刻。在命令中添加delaytimer_format,便可以在秒和刻之间切换(20 server Ticks = 1 second)
例:
  1.   delaytimer: 20
  2.   delaytimer_format: TICKS
复制代码

从5.3.3版本往后,你可以给每个$delay$前缀设置自己的延迟。
这个值的单位必须是刻。
例:$delay$<60>或 .... $delay$<$randomnumber%60%>
  1. 'custom_timings':
  2.   command: /customtiming
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - "$text$The command will be executed in 3 seconds..."
  6.   - "$delay[        DISCUZ_CODE_25        ]lt;60>"
  7.   - "/command"
复制代码

或者
  1.   runcmd:
  2.   - "$text$If you are lucky, this command takes only 10 seconds for be executed... or just wait 1 minute"
  3.   - "$delay[        DISCUZ_CODE_26        ]lt;200>"
  4.   - "$delay[        DISCUZ_CODE_26        ]lt;$randomnumber%1000%>"
  5.   - "/command"
复制代码


如何设置冷却

冷却或引导只对MyCmd创建的命令有效
  1. cooldownhere:
  2.   command: /command
  3.   type: TEXT
  4.   ...
  5.   cooldown: 5
复制代码


  1. cooldownhere:
  2.   ...
  3.   warmup: 5
复制代码

如果你想给其它插件的命令添加冷却或引导时间,
设置在命令类型为WARMUP,COOLDOWN或WARMUP_AND_COOLDOWN
然后在delaytimer一栏中设置时间(单位秒)
例子:
  1. 'warmup_example':
  2.   command: /spawn
  3.   type: WARMUP
  4.   delaytimer: 5
复制代码

冷却的例子:(如果需要,你也可以在COLLDOWN类型中使用success-message)
  1. 'cooldown_example':
  2.   command: /warp
  3.   type: COOLDOWN
  4.   delaytimer: 60
  5.   success-message: "Teleported!"
复制代码

读条可以在玩家移动时取消。把主设置里的MOVE_LISTENER设置成ture才会生效(默认是关闭的false)
WARMUP_AND_COOLDOWN可以给一个命令同时添加两种效果
(在5.0.0之前版本的插件中,只支持前摇的实现,并且叫做addtimer)

经济功能

你需要一个经济插件以及Vault插件来使用经济功能。
使用方法很简单,只需要修改某个命令cost行即可。
这个例子会从输入命令的玩家账户里抽取5¥。
  1. 'economy_ex':
  2.   command: /takemymoney
  3.   type: TEXT
  4.   text:
  5.   - "&2Thanks!"
  6.   cost: 5
复制代码

想要使用小数?使用.就可以了。
例:
  1.   cost: 5.1
复制代码

在主设置config.yml里设置allowdebit:为true的话,可以允许玩家在钱不够的情况下使用命令。(大概)
可以给其它插件的命令添加经济设置么?当然可以,创建一个命令类型为ADD_COST的新命令就可以。例:
  1. 'mykit_command':
  2.   command: /kit
  3.   type: ADD_COST
  4.   cost: 500
复制代码


控制台身份执行的命令

与RUN_COMMAND类型相同,但是所有命令会以控制台的身份执行。当然如果是控制台命令,你就不需要给玩家你想运行的命令的权限,当然如果你放/op $player进去它也会有效,所以小心使用。例:
  1. 'run_by_console':
  2.   command: /goto
  3.   type: RUN_CONSOLE
  4.   runcmd:
  5.   - /tp $player $arg1
  6.   - /money take $player 500
复制代码


使用RAW_TEXT实现提示框消息/与建议命令

你可以使用RAW_TEXT命令类型来实现点击命令或者鼠标指上去会显示信息。这种命令类型只在Spigot服务器上有效。(CraftBukkit上不行)
首先创建普通的TEXT命令一样,然后使用";"把聊天框里显示的文字与提示框消息以及建议的命令分离。
  1. rawmessage_example:
  2.   command: /raw1
  3.   type: RAW_TEXT
  4.   text:
  5.   - '&aHello &b$player! &aHover your mouse over me!; &dMAGIC'
  6.   - '&0[&d*&0]&e Click me; &eClick Here for suggest the command &d/mycmd;/mycmd'
  7.   - '$RUN_COMMAND[        DISCUZ_CODE_35        ]amp;0[&e*&0]&c Set the time to day; &eClick for Execute;/time set day'
  8.   - '$OPEN_URL[        DISCUZ_CODE_35        ]amp;0[&e*&0]$random_color Open Google.com; &eClick for open;[url]http://www.google.com[/url]
复制代码

  1. 消息;悬浮消息;点击执行的命令
复制代码

当然,不要最后一部分也是可以的。例如
  1. 消息; 悬浮消息.
复制代码


你可以更改鼠标点击之后是$RUN_COMMAND$运行命令还是$OPEN_URL$打开链接,把这两个放到你命令前就好,就像上面例子中那样。
把命令类型改成BROADCAST_RAW_TEXT就可以广播消息。

那怎么在一行中添加多个不同的 悬浮/点击 的部分呢?
你可以使用<and>占位符 把多个部分分隔开
例:
  1. '&aTEXT_1 ;HOVER OF TEXT 1<and>$OPEN_URL[        DISCUZ_CODE_36        ]amp;bTEXT_2;HOVER OF TEXT 2;[url]http://www.example.com[/url]'
复制代码


那我可以在悬浮显示的部分显示多行信息么?
当然,你可以使用<newline>占位符把悬浮显示部分分成多行
例: 'TEXT;Line 1<newline>Line2'
而且在悬浮显示部分,你可以使用$SHOW_ITEM$与$SHOW_ENTITY$这两个占位符来显示一个物品或者一个实体。
例 "Hover on me:$SHOW_ITEM$STONE"(例子没问题么)

像op一样执行命令

这种命令会发送命令的玩家临时op状态。(风险你自己负责)
  1. 'give_stones':
  2.   command: /stonepls
  3.   type: RUN_AS_OPERATOR
  4.   runcmd:
  5.   - /give $player 1 64
复制代码

每次MyCmd给玩家op状态的时候,会在后台生成一条记录。出于额外的安全考虑,还会触发一个计划任务,在几秒之后移除op状态(只是防止你错误的使用这种命令,给了玩家永久op状态)
设置MyCmd 按钮,压力板,拉杆,门,探测铁轨或者你自己定义方块
在游戏中输入/mycmd-blockset来查看帮助
1.放置你的按钮,压力板或任何一个你在config.yml里开启的方块
2.看着目标方块然后输入/mycmd-blockset create
3.现在使用/mycmd-blockset add <命令>来添加一条命令
4.完成 w
其它的命令:
- 显示方块信息:/mycmd-blockset check
- 移除指定方块上全部命令:/mycmd-blockset delete
- 移除指定方块上单个命令:/mycmd-blockset remove
- 切换命令执行者 玩家/控制台;/mycmd-blockset switch

使用MyCommand 3.9.0 你可以管理方块的ID?。详情查看config.yml。

如何使用allowed_worlds
你可以使用error-message行来设置一个自定义的错误提示。
  1. 'onlyinthenether':
  2.   command: /onlynether
  3.   type: TEXT
  4.   text:
  5.   - "&cYea,The Nether!"
  6.   allowed_worlds:
  7.   - world_nether
  8.   error-message: "This command is not accessible from this world"
复制代码


重复多次文本或者命令
在命令/文本前添加%Repeat%n%
  1. clearchat:
  2.   command: /mycmd-clearchat
  3.   type: BROADCAST-TEXT
  4.   text:
  5.   - '%Repeat%30% '
复制代码


  1.   runcmd:
  2.   - '%Repeat%30%/dosomething'
复制代码

如何在RUN_COMMAND类型中使用$world=%world_name%
  1. 'per_world_commands':
  2.   command: /perworldcommand
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - "$world=%world%/me This command will be performed only if you are in the world"
  6.   - "$world=%world_nether%/me And this only if you are in the nether"
  7.   permission-required: false
复制代码

如何使用execute_mode(解析模式)
如果你创建了一个只需要从特定来源使用的命令,你可以使用这个特性。
这是三种类型(不是四种么)
  1. NORMAL
  2. BLOCK_ONLY
  3. FROM_ANOTHER_COMMAND
  4. NPC_ONLY
  5. CONSOLE_ONLY
复制代码

  1. 'only_from_block':
  2.   command: /onlyblock
  3.   execute_mode: BLOCK_ONLY
  4.   type: TEXT
  5.   text:
  6.   - "This command can be called only from /mycmd-blockset"
复制代码
  1. 'only_from_command':
  2.   command: /onlybycommand
  3.   execute_mode: FROM_ANOTHER_COMMAND
  4.   type: TEXT
  5.   text:
  6.   - "This command can be called only from another mycmd command"
复制代码

可能的 CONSOLE_ONLY 例子:
创建一个给全服玩家奖励的命令,由BuyCraft触发。经济命令需要从控制台解析(权限原因)
  1. console_executefor_test:
  2.   command: /extest1
  3.   executefor: ONLINE_PLAYERS
  4.   type: RUN_CONSOLE
  5.   runcmd:
  6.   - /eco give $player 5000
  7.   permission-required: false
  8.   execute_mode: CONSOLE_ONLY
  9.   register: true
复制代码

如何使用executefor(为谁解析?)
支持的类型:
  1. SENDER(只为发送命令的 )
  2. ONLINE_PLAYERS(所有在线玩家)
  3. WORLD_PLAYERS(同一个世界的所有玩家)
复制代码

  1. 'executefortest':
  2.   command: /executeforall
  3.   type: RUN_CONSOLE
  4.   executefor: ONLINE_PLAYERS
  5.   runcmd
  6.   - "/tp $player 0 64 0"
  7.   permission-required: false
复制代码

可以使用在ADD_PERMISSION以外的所有命令类型中。(默认每个命令都是SENDER类型)(也许错误的用法会造成循环)

游戏内物品(Itemset)

如何使用(5.1.4+)
首先,使用/mycmd-itemset on开启物品事件
然后,拿着需要的物品输入/mycmd-itemset add把物品添加到有效的物品列表
现在如果你左键或者右键,你会受到还没有命令绑定到这个物品上的提示(如果你不想要这个提示在itemset.yml里设置empty_message为false)
把命令添加到一个有效的物品上,输入比如/mycmd-itemset right /list。这样你使用右键时,就会运行/list
同样你可以使用/mycmd-itemset left /your command,把命令绑定到左键物品上
你可以在一行中添加使用;分割多个命令,例如: /command1;/command2
现在如果需要命令只有在有特定名字物品上才有效,你可以使用/mycmd-itemset name NewName给你的物品设置一个名字
至于更多的命令 在游戏输入/mycmd-itemset查看

5.1.4之前的版本
首先,使用/mycmd-itemset on开启监听物品事件
然后手持物品输入/mycmd-itemset
现在输入/mycmd-itemset /yourcmd把命令绑定到物品上
使用;分隔多个命令,例如:
/mycmd-itemset //expand 10 up;//expand 10 down

你也可以在命令中使用参数,例如:
- $targetentity (5.0之前的版本是$targetplayer) (获取右键点击玩家的名字)
可行的用法:/mycmd-itemset /jail $targetentity

如果想要,设定可以在你想要的时候保存或者读取。插件载入的时候也是可以的。详情itemset.yml。


创建MyCmd牌子

你可以使用牌子:
右键牌子的时候执行命令
在聊天框里显示你在牌里输入的信息

如何使用:
在第一行输入[MYCMD]
在2,3,4行输入你的命令(/command)或者文字

你可以在配置文件中修改牌子的抬头:(默认是) signheader: [MYCMD]

从5.0.0版本之后,你可以使用/mycmd-signset命令设置命令列表,创建一个新的命令列表,把需要的命令放到列表中,然后创建牌子的时候在2,3,4行输入列表名。

图形化菜单命令

图形化菜单的配置项目:
iconmenu_title: 允许你修改打开的容器顶部的名字,最多32个字母。
iconmenu_size: 更改打开容器的大小,必须是9的倍数(9, 18, 27, 36, 45 和 56)。
iconmenu_commands: 这是图形菜单命令的主要部分'位置:物品名:物品Data值:命令/信息:名字:描述;多行描述'
iconmenu_type: 自MyCmd5.3.4引入,这个配置允许你更改打开容器默认类型。例如你可以设置成DISPENSER,打开的GUI就是3x3的。
支持的类型 : CHEST (默认), BREWING, DISPENSER, DROPPER, ENDER_CHEST, FURNACE, HOPPER, PLAYER, WORKBENCH
不支持或者存在故障的类型:ANVIL (一些故障) ,BEACON (不工作) ,ENCHANTING (一些故障), MERCHANT (不工作) , CRAFTING (不工作), CREATIVE (不工作)
从一个图形菜单打开另一个图形菜单:
使用"%openiconmenu%作为打开其它菜单命令的前缀
例:
  1.   iconmenu_commands:
  2.   - '0:WORKBENCH:0:%openiconmenu%/iconmenupage2:&2Next Page:&aChange page'
复制代码

给菜单物品附魔:
使用;分隔物品名和附魔名:
  1.   - 0:物品名;附魔名;附魔等级:Data值:/command:名字:描述
  2. //例:
  3.   - 0:STONE_SWORD;DAMAGE_ALL;1:0: ...ecc ecc.
  4. //或者多个附魔:
  5.   - 0:STONE_SWORD;DAMAGE_ALL;1;FIRE_ASPECT;1;DURABILITY;3:0:/command:Text:Text
复制代码

Enchantment Bukkit API Names附魔名
修改物品数量:
  1. 数量,物品名...
  2. //例:
  3. 0:32,GOLDEN_APPLE:0:/command:Title:Description
复制代码

Make an Item unclickable :

制作一个不能点击的物品:

在命令处填写%stayopen%。例子:
  1. 0:32,GOLDEN_APPLE:0:%stayopen%:Title:Description
复制代码

如果你想运行一个命令,但是不关闭GUI,也可以在命令前添加%stayopen%。
例:
  1. "1:STONE:0:%stayopen%/command:Title:Description"
复制代码


头颅设置玩家材质:

你可以给SKULL_ITEM头颅设置一个玩家的材质。
使用示例:
  1. "1:SKULL_ITEM%Notch:0:/command:Title:Description"
复制代码

命令示例 :
  1. 'example':
  2.   command: /iconmenu
  3.   type: ICON_MENU
  4.   text:
  5.   - 'POSITION:ITEM_NAME:ITEMDATA:COMMAND/MESSAGE:TITLE:DESCRIPTION;MULTILINES'
  6.   iconmenu_title: '&cMyCommand &4ItemMenu'
  7.   iconmenu_size: 27
  8.   iconmenu_commands:
  9.   - '0:GOLDEN_APPLE:0:/help:&2Help:&aOpen the help menu'
  10.   - '1:COMPASS:0:/mycmd:Menu:MyCommand menu'
  11.   - '9:EMERALD:0:/list:Player List:&bShow online players'
  12.   - '10:WATCH:0:/time set 0:Day:Turn day'
  13.   - '26:WOOL:11:%openiconmenu%/iconmenu2:Next Page:&cChange IconMenu Page;&a--------->'
复制代码


计分板命令

注意:
在5.3.3之前的版本中,使用的分隔符不同。
在新的版本中,正确的代码是"$health;Health level:"
而在旧版本中,正确的代码是"$health:Health level",
什么改变了?在新的版本中分隔符是;而不是:

计分板会在DelayTimer(秒)之后移除,设置为0降不会移除
使用$marquee$作为计分板名字前缀使文字滚动。
使用scoreboard_refresh_ticks行来定义插件多长时间(刻)更新一次计分板。
例子:

动态计分板 :
  1. scoreboard_example:
  2.   command: /sbexample
  3.   type: SCOREBOARD
  4.   scoreboard_name: "$marquee[        DISCUZ_CODE_55        ]amp;1M&2y&3C&4o&5m&6m&7a&8n&9d &aS&bc&co&dr&ee&fb&0o&1a&2r&3d &nExample&r "
  5.   scoreboard_text:
  6.   - "4;&c&lCoordinates:"
  7.   - "3;&6X:&e $locX &6Y:&e $locY &6Z:&e $locZ "
  8.   - "2;&c&lPlayer Info:"
  9.   - "1;&6Health: &e$health"
  10.   - "0;&6Food: &e$food"
  11.   scoreboard_refresh_ticks: 5
  12.   delaytimer: 10
复制代码


静态计分板:
只要不用scoreboard_refresh_ticks就是静态了
  1. '1':
  2.   command: /sbtest
  3.   type: scoreboard
  4.   text:
  5.   - 'Remove scoreboard after DelayTimer(sec) - 0 = never'
  6.   scoreboard_name: '&bTest'
  7.   scoreboard_text:
  8.   - '$randomnumber%1000%;Lucky'
  9.   - '$exp;Exp'
  10.   - '$level;Level'
  11.   - '123;Text with max 40 chars'
  12.   cost: 0
  13.   delaytimer: 5
复制代码

注意你可以在不使用scoreboard_refresh_ticks的情况下 使用$marquee$

Http Get 请求(CALL_URL)

使用这个特性来向网页发送一个Get请求
例子
  1. 'call_url':
  2.   command: /call-url
  3.   type: CALL_URL
  4.   url: http://localhost/yourscript.php?user=$player  
  5.   get_output : true
  6.   show_output_ingame : true
  7.   save_output_as : httpResponse
复制代码

变量:
  1. url : <链接文本> 把你的链接放在这,可以使用任意MyCmd变量,比如$player $arg1,2
复制代码

可选:
  1. get_output : <true/false> #获取网页输出 (默认false)
  2. show_output_ingame : <true/false> #在游戏聊天框中显示网页输出(默认 false)
  3. save_output_as : <name> #在playerdata.yml储存输出 (可以稍后在其它指令中使用) (默认 empty = 不储存)
  4. user_agent: Mozilla/5.0 #更改用户标签
复制代码


BungeeCore传送

如果你使用BC,可以使用这个特性来制作服务器之间传送的命令。
命令类型: BUNGEE_TP
变量:
  1. server_name: <name> //输入你的服务器名 (可以在BC配置文件中找到,或者输入/glist)
复制代码

示例命令:
  1. bungeecord_example:
  2.   command: /hub
  3.   type: BUNGEE_TP
  4.   server_name: hub
复制代码


使用/lmcmd命令(这个命令已经被废弃了,但是你仍可以使用)

1.创建一个新指令列表:/lmcmd create <name>
2.向你的指令列表里添加指令: /lmcmd add <name> </command> (with slash if you want to use this in-game)
3.执行指令列表: /lmcmd run <name>

其它的命令:
- 显示所有的指令列表 : /lmcmd list        
- 移除一个指令列表 : /lmcmd delete <name>
- 显示一个指令列表的信息 : /lmcmd check <name>
- 移除一个列表中的单个指令: /lmcmd remove <name>

自定义变量

/mycmd-variables (mycommand.variables)
创建可以在这个插件的每个部分替换的自定义变量
输入"/mycmd-variables create <var_name>" 创建一个新变量.
输入"/mycmd-variables set <var_name> <data>" 来为变量设置一个值.
如果变量是个数字(整形或双倍浮点)可以使用"/mycmd-variables add/remove <var_name> 123" 来加/减.
查看脚本教程部分来寻找更多用法.

玩家数据

与自定义变量相似, 但是这里的信息可以为特定的玩家储存.
输入"/mycmd-playerdata"查看所有命令. And check the Script page for some examples and useful scripts.
For both, variables and playerdata you can store them also creating an section in the config file. Just split the variabile with an dot ".". Example : /mycmd-playerdata set Ivanpro home.loc_x 10
  1. home:
  2.   loc_x: 10
复制代码


WorldGuard区域支持

在你的命令里添加allowed_wg_regions或blocked_wg_regions来允许或阻止在区域中使用.
  1. allowed_wg_regions:
  2.   - test2
  3.   - test3
复制代码

或者:
  1. blocked_wg_regions:
  2.   - test4
复制代码

BarAPI / BOSS BAR 特性

在5.1.8以上的版本,这部分特性不再需要额外的插件支持。如果你使用旧版本插件, 你需要下载 BarAPI plugin.

有两种命令类型BAR_API_TEXT和BAR_API_BROADCAST_TEXT. 第一种指向发送命令的玩家发送信息,另一种向所有玩家。
例子 :
你可以使用"bar_seconds" 或"bar_percentage"来管理bar,在旧版本的MyCmd上
新版本中你还可以使用:bar_color, bar_style, bar_flag.

+ BossBar 支持的颜色 : BLUE,RED,GREEN,PINK,PURPLE,WHITE,YELLOW
+ BossBar 样式 : SEGMENTED_6,SEGMENTED_10,SEGMENTED_12,SEGMENTED_20
+ BossBar 标准 : PLAY_BOSS_MUSIC, DARKEN_SKY, CREATE_FOG
  1. bar_text:
  2.   command: /bar_example
  3.   type: BAR_API_TEXT
  4.   text:
  5.   - '&aHello $player'
  6.   bar_seconds: 5
  7.   bar_percentage: 8
  8.   bar_style: SEGMENTED_20
  9.   bar_flag: DARKEN_SKY
  10.   bar_color: PINK
复制代码

or
  1. 'bar_btext':
  2.   command: /bar2
  3.   type: BAR_API_BROADCAST_TEXT
  4.   text:
  5.   - "Hello everyone!"
  6.   - "%remove%"
  7.   bar_percentage: 9
复制代码

如果你把bar_second设置为0, bar将永远不会消失.在另一个独立的命令里使用%remove%来移除它,或者使用一个新的bar来替代他.
默认移除时间是3s。

设置计划表(计划表已经不再被支持并且可能已经过时了).

首先: 在配置文件里开启计划表:
  1. SCHEDULER:
  2.   ENABLED: true
复制代码

现在你可以设置你的日期格式(optional):
  1.   DATE_FORMAT: d M yyyy
复制代码

d = day , M = month , y = year. For example d M yyyy = 1 12 2012.
设置用于第一次检测的最初的计时器(单位秒) :
  1.   FIRST_CHECK_AFTER_SEC: 60
复制代码

最后,设置计划任务的计时器(单位分钟):
  1.   LAUNCH_CHECK_ON_EVERY_N_MIN: 60
复制代码


配置已经准备好,现在在游戏中使用 /mycmd-scheduler.
创建一个新的计划表 /mycmd-scheduler create test
添加一个日期或者"always"作为启动日期,例: /mycmd-scheduler add test date 5 12 2012 (5 december 2012)
现在设置命令/mycmd-scheduler add test command /pex user User group set Member
完成.
在命令也查看更多命令.

Spout 插件特性

需要Spout插件 Spout似乎是个弃坑 这部分就暂且不翻译了

NPCs 特性

在使用这部分特效之前你需要在配置文件里开启NPC监听器。

创建一个NPC/mycmd-npcs create
然后聊天框里会显示这个NPC的ID。记下它,之后的编辑中会用到。
如果你想给你的NPC添加一个命令,输入/mycmd-npcs add <ID> </commandname>
相反使用/mycmd-npcs remove <ID> </commandname>或者/mycmd-npcs remove <ID> clearall ,来移除某个NPC上的一个或全部命令。
如果你忘记了某个NPC的ID,你可以使用/mycmd-npcs entities来显示所有创建的实体。你还可以使用/mycmd-npcs tpto <ID>来传送到某个NPC旁边。
要完全移除一个NPC,使用/mycmd-npc delete <ID>命令
你还可以使用一些额外的命令和特性, 比如 AI (on-off), Glowing effect(on-off), Collidable(yes-no), Type of the NPC, Position and the Name of the NPC.  "/mycmd-npcs" 帮助页面中查找这些指令.

发送一个标题 (给一个玩家或者广播)

  1. title_test:
  2.   command: /title_test
  3.   type: TITLE
  4.   text:
  5.   - '&aHello &e$player'
  6.   - 'Sub-Title'
复制代码

把命令类型改成BROADCAST_TITLE便可以把title发送给所有玩家

使用 RUN_COMMAND_TASK创建一个循环任务


如果你需要一个命令像循环一样直行多次 你可以使用这个特性

就像你平常使用RUN_COMMAND类型那样建立一个命令, 然后把命令类型改成RUN_COMMAND_TASK。
然后编辑这些部分来更好的管理循环任务:
  1.   task_run_immediately: true
复制代码

值为true,命令会被立即执行.值为 false, 第一次执行命令会延迟 "task_repeat_every_sec" 秒。

  1.   task_repeat_every_sec: 5
复制代码

两次执行命令之间的间隔.

task_run_n_times: 10
定义命令会被执行多少次。
设置成task_run_n_times: -1可以让命令无限次执行。
task_run_when_offline: true
值为true, 输入这个命令的玩家即使下线,命令仍会在服务器执行.
task_show_debug: true
值为true, MyCmd每次开始一个新的循环任务都会在控制台输出记录

命令示例 :
  1. taskexample:
  2.   command: /taskexample
  3.   type: RUN_COMMAND_TASK
  4.   runcmd:
  5.   - /do something
  6.   task_run_immediately: true
  7.   task_repeat_every_sec: 5
  8.   task_run_n_times: 10
  9.   task_run_when_offline: true
  10.   task_show_debug: true
复制代码

使用命令/mycmd tasks,可以显示现在活动的所有循环任务、

如果你需要停止某个玩家的循环任务, 使用指令/mycmd tasks cancelfor <playername>
如果你需要更多,你可以在RUN_COMMAND_TASK中使用$Script$%while%结构。详情 脚本页

发送一个ACTION_BAR信息

只在Spigot服务器上有效
在"text"的行中输入文字. 在行间使用$delay$来发送更多信息.
  1. action_bar_example:
  2.   command: /actionbar
  3.   type: ACTION_BAR
  4.   text:
  5.   - "§aHello §b$player!"
  6.   - "$delay$How are you?"
  7.   - "$delay[        DISCUZ_CODE_74        ]amp;aBla bla bla"
  8.   delaytimer: 3
复制代码


把命令类型改为BROADCAST_ACTION_BAR可以给全服的所有玩家发送信息。
(现在无法配置淡入淡出。我无法使用现在的API来实现这个功能)

经验条特性

你可以使用这个特性在经验条上实现冷却进度条。
有两种方法可以实现上述功能。第一种是使用命令类型 EXP_BAR创建一个简单的命令:
  1. exp_bar_example:
  2.   command: /expbar
  3.   type: EXP_BAR
  4.   delaytimer: 10
复制代码

第二种方法是在runcmd块中使用变量"$ExpBar%10%".
  1. your_command:
  2.   command: /123
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - "$ExpBar%10%"
  6.   - "$delay[        DISCUZ_CODE_76        ]lt;200>"
  7.   - "/do something"
复制代码


OVERLAY覆盖命令

这个功能允许你执行命令或显示文字覆盖现有命令。
比如,你有另一个插件的命令/gamemode,但是你想给这个命令添加更多内容,比如文字解释,你可以使用overlay来实现。
要使用这个功能,只需要把overlay设置为true, 就像下面的例子一样:
  1. gamemode_overlay:
  2.   command: /gamemode
  3.   type: TEXT
  4.   text:
  5.   - "This message get showed in chat before the execution of /gamemode."
  6.   - "Write your information here, bla bla bla..."
  7.   overlay: true
复制代码

当然你可以使用任意的MyCmd命令类型。

在某个事件发生时执行命令.

在配置文件里开启EXTRA_LISTENER, 你可以在特定的事件运行命令,可用的事件 :

玩家加入:PlayerJoin
玩家离开:PlayerQuit
玩家踢出:PlayerKick
玩家重生:PlayerRespawn
玩家死亡:PlayerDeath

你可以通过编辑 playerevents.yml文件来管理这些事件.

使用示例 :
  1. PlayerJoin:
  2.   active: true
  3.   execute:
  4.   - '$text[        DISCUZ_CODE_78        ]amp;aWelcome back &b$player !'
  5.   - '$text[        DISCUZ_CODE_78        ]amp;6Online players : $online'
复制代码

这样的话,当一个玩家加入服务器,他会获得两条信息。
使用PlayerDeath事件的另一个例子:
  1. PlayerDeath:
  2.   active_on_kill: true
  3.   active_on_death: true
  4.   ignore_env_or_mobs_deathcause: false #防止玩家在被环境Prevent the player from execute command when get killed from enviroment or mobs
  5.   prevent_suicide: true #Prevent the player from execute command by killing themselfs.
  6.   execute_for_killer:
  7.   - '/givepoints'
  8.   execute_for_defeated:
  9.   - '/removepoints'
复制代码

你可以在一个玩家死亡或者击杀其它人是执行命令。

Killer = 杀害受害者的玩家.
Defeated= 被Killer击杀的玩家.
想要阻止玩家使用特殊的命令(比如命令里的/givepoint),你可以设置execute_mode: EVENT_ONLY。
  1. Example:
  2. give_points:
  3.   command: /givepoints
  4.   type: RUN_COMMAND
  5.   runcmd:
  6.   - "$text[        DISCUZ_CODE_80        ]amp;aGood job! You earned one point."
  7.   - "$Script$%PlayerData%points+1"
  8.   - "$text[        DISCUZ_CODE_80        ]amp;aPoints balance : $PlayerData%points%"
  9.   execute_mode: EVENT_ONLY
复制代码


这个特性支持使用一些特殊的占位符,然后你可以通过参数传递这些变量。
这些变量有: $killer $killed_player and $death_cause
#MyCommand/playerevents.yml
  1. PlayerDeath:
  2.   active_on_kill: true
  3.   prevent_suicide: true
  4.   execute_for_killer:
  5.   - '$broadcasttext$ $killer killed $killed_player!'
  6.   - '/commandname $killed_player'
复制代码


#MyCommand/commands/file.yml
  1. command_name:
  2.   command: /commandname
  3.   type: RUN_COMMAND
  4.   runcmd:
  5.   - "$Script$%if%$arg1==AdminName"
  6.   - "$text$ You killed an Admin!"
  7.   - "/givesomething"
  8.   execute_mode: EVENT_ONLY
复制代码


创建使用特殊前缀的命令 (不只是/)

使用5.3.3或者更新的版本,你可以开启这个功能。在配置文件config.yml中把CHAT_LISTENER改为true。
改完设置之后需要重启插件(/reload MCPC不支持或者 重启服务器)。
现在你可以不使用"/"来创建命令了.
  1. Example :
  2. customprefix_example:
  3.   command: !example
  4.   type: TEXT
  5.   text:
  6.   - "Command Text"
复制代码

注意:
没有/的命令只在游戏聊天框中输入有效,而且不能注册。(register: true)
你可以使用任意字符作为前缀 : "command: !dice" "command: command" "command: $hello" 等等...



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

该用户从未签到

地板
 楼主| 发表于 2017-3-23 22:56:05 | 只看该作者
本帖最后由 GiNYAi 于 2017-3-24 17:04 编辑

脚本配置和例子
待填的大坑


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

该用户从未签到

5#
 楼主| 发表于 2017-3-23 22:56:47 | 只看该作者
本帖最后由 GiNYAi 于 2017-3-24 17:03 编辑

一些写好的命令(更多例子)
每日礼包 :
dailybonus:
  command: /dailybonus
  type: RUN_COMMAND
  runcmd:
  - "$Script$%if%$todaydate!=$PlayerData%DailyBonus%"
  - "$text$&0[&6Daily&eBonus&0]&b Hello $player! Here, your daily reward!"
  - "$text$&0[&6Daily&eBonus&0]&b Received &a1 DIAMOND!"
  - "%PlayerOptions%addItem: DIAMOND:1"
  - "$Script$%PlayerData%DailyBonus=$todaydate"
  - "$text$&0[&6Daily&eBonus&0]&b Come back tomorrow!"
  - "$Script$%else%"
  - "$text$&0[&6Daily&eBonus&0]&b That's enough for today! Come back tomorrow!"
自定义抽奖 :
lottery_example:
  command: /lottery_example
  type: RUN_COMMAND
  runcmd:
  - '%PlayerOptions%playSound: BLOCK_LEVER_CLICK:1.0F:1'
  - '$text$&6Welcome to &eMyCommand &6Lottery!'
  - '$delay$'
  - '$text$&b+------------------------------------'
  - '$text$&b| &2Prize of today :'
  - '$text$&b| &aCOBBLESTONE, BREAD, APPLE, GOLD_INGOT or DIAMOND! '
  - '$text$&b+------------------------------------'
  - '$text$&ePlease wait for the results!'
  - '$delay$$delay$$delay$'
  - '$delay$$text$&0[$random_colorLottery&0] &65...'
  - '%PlayerOptions%playSound: BLOCK_LEVER_CLICK:1.0F:1'
  - '$delay$$text$&0[$random_colorLottery&0] &64...'
  - '%PlayerOptions%playSound: BLOCK_LEVER_CLICK:1.0F:1'
  - '$delay$$text$&0[$random_colorLottery&0] &63...'
  - '%PlayerOptions%playSound: BLOCK_LEVER_CLICK:1.0F:1'
  - '$delay$$text$&0[$random_colorLottery&0] &62...'
  - '%PlayerOptions%playSound: BLOCK_LEVER_CLICK:1.0F:1'
  - '$delay$$text$&0[$random_colorLottery&0] &61...'
  - '%PlayerOptions%playSound: BLOCK_LEVER_CLICK:1.0F:1'
  - '$delay$'
  - '%PlayerOptions%playSound: ENTITY_EXPERIENCE_ORB_PICKUP:1.0F:1'
  - '$Script$%PlayerData%lotteryprize=$GetRandomStringFromList%COBBLESTONE;DIAMOND;GOLD_INGOT;BREAD;APPLE%'
  - '$Script$%PlayerData%amount_lotteryprize=$randomnumber%3%'
  - '$delay$'
  - '$text$&b+------------------------------------'
  - '$text$&b| &6Congratulation! You won : &e $PlayerData%amount_lotteryprize% $PlayerData%lotteryprize%! '
  - '$text$&b+------------------------------------'
  - '%PlayerOptions%addItem: $PlayerData%lotteryprize%:$PlayerData%amount_lotteryprize%'
  delaytimer: 1
  cooldown: 600
自定义sethomehome
sethome:
  command: /sethome
  type: RUN_COMMAND
  runcmd:
  - $Script$%PlayerData%home.x=$locX
  - $Script$%PlayerData%home.y=$locY
  - $Script$%PlayerData%home.z=$locZ
  - $text$Home successfully created
  cost: 0
  permission-required: falsehome:
  command: /home
  type: RUN_CONSOLE
  runcmd:
  - /tp $player $PlayerData%home.x% $PlayerData%home.y% $PlayerData%home.z%
  cost: 0
  permission-required: false
自定义/top指令
go_to_the_top:
  command: /top
  type: RUN_CONSOLE
  runcmd:
  - /tp $player $locX $loc_highestY $locZ
检查一个玩家是否在线(.contains)示例.
is_online_check:
  command: /isonline
  type: RUN_COMMAND
  runcmd:
  - "$Script$%if%$ponline.contains=$arg1"
  - "$text$&aYes. The player $arg1 is online"
  - "$Script$%else%"
  - "$text$&cCan't find the player $arg1"
  require_all_arguments: true
  error-message: "&cUsage : /isonline playername"
自定义经济系统:
coin_pay_cmd:
  command: /coins pay
  type: RUN_CONSOLE
  runcmd:
  - $text$&b+-- MyCommand Coin System --+
  - $Script$%if%$arg2<=$PlayerData%coins%
  - /mycmd-playerdata add $arg1 coins $arg2
  - /mycmd-playerdata remove $player coins $arg2
  - $text_to_specific_player%$arg1%$player sended you $arg2 coins!
  - $text$&aTransaction Done.
  - '$text$&aNew balance : $PlayerData%coins%'
  - $Script$%else%
  - $text$&cNot enough coins for do this transaction
  error-message: '&cUsage : /coins pay <player_name> <amount>'
  require_all_arguments: truecoin_main_cmd:
  command: /coins
  type: TEXT
  runcmd:
  - "&b+-- MyCommand Coin System --+"
  - "&aCurrent balance :&e $PlayerData%coins%"
  - "&aSend coin to another player with /coins pay <player_name> <amount>"
另一个"Credits"命令系统示例:
'addcredits':
  command: /addcredits
  type: RUN_COMMAND
  runcmd:
  - '$Script$%PlayerDataFor%$arg1%Credits+$arg2'
  - "$text$New $arg1 balance : $PlayerDataFor%$arg1%Credits% Credits"
  required_args: 2
  error-message: "Usage : /addcredits <player> <amount>"'removecredits':
  command: /removecredits
  type: RUN_COMMAND
  runcmd:
  - '$Script$%PlayerDataFor%$arg1%Credits-$arg2'
  - "$text$New $arg1 balance : $PlayerDataFor%$arg1%Credits% Credits"
  required_args: 2
  error-message: "Usage : /removecredits <player> <amount>"'viewcredits':
  command: /viewcredits
  type: RUN_COMMAND
  runcmd:
  - "$Script$%if%$PlayerDataFor%$arg1%Credits%!=NoData"
  - "$text$$arg1 have $PlayerDataFor%$arg1%Credits% Credits"
  - "$Script$%else%"
  - "$text$This player don't have any account..."
  required_args: 1
  permission-required: false
  error-message: "Usage : /viewcredits <player>"
自定义礼包示例 :
kit_test:
  command: /mycmdkit
  type: RUN_COMMAND
  runcmd:
  - '%PlayerOptions%clearInventory'
  - '%PlayerOptions%setHelmet: IRON_HELMET:1:0:DAMAGE_ALL;1;FIRE_ASPECT;1:&aMega Helmet:&bLine 1;Line 2;$random_colorLine 3'
  - '%PlayerOptions%setChestplate: IRON_CHESTPLATE:1:0::Mega Chestplate:Super'
  - '%PlayerOptions%setLeggings: IRON_LEGGINGS:1'
  - '%PlayerOptions%setBoots: IRON_BOOTS:1'
  - '%PlayerOptions%setItemInOffHand: SHIELD:1'
  - '%PlayerOptions%addItem: STONE_SWORD:1:0:DAMAGE_ALL;1;FIRE_ASPECT;1:&aMega Sword:&bLine1;Line 2;$random_colorLine 3'
  - '%PlayerOptions%setHeldItemSlot:0'

由于编辑器的原因不能往上面套代码格式,勉强看吧
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
  • TA的每日心情
    奋斗
    2020-2-6 19:50
  • 签到天数: 34 天

    [LV.5]常住居民I

    6#
    发表于 2017-3-23 23:28:36 | 只看该作者
    看起来巨棒哦  火钳留名  
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

    该用户从未签到

    7#
     楼主| 发表于 2017-3-24 01:39:51 | 只看该作者
    本帖最后由 GiNYAi 于 2017-3-24 17:05 编辑

    除 脚本教程外编辑完毕
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    您需要登录后才可以回帖 登录 | 加入最MC

    本版积分规则