过期版本的条件 (低于 2.5.11) 可以在这里找到。
条件用于决定是否执行一个动作,条件放在 Condition 项里,就像本章最下方的例子。
条件可用于
- 技能机制
- 掉落表
- 刷怪点
- 随机刷怪点
当应用多个条件后,所有的条件必须用于控制动作是否执行。一些条件可以使用逗号拆分的数组,这些条件只需要数组中的一个字符串匹配。
如何使用条件?
条件种类
条件可以分为三种:
- Conditions- 控制生物的条件
- TargetConditions- 控制目标的条件
- TriggerConditions- 控制触发触发器的生物的条件
Conditions 和 Target/TriggerConditions 含有只能这两个使用的条件,所以记在心里:
Conditions:
- globalscore{objective=Test;v=>10}
这个条件不代表任何生物,所以只能在 Condition 里使用:
TargetConditions:
- lineofsight false
因为这个条件必须有一个目标,所以不能在 Condition 里使用!生物不能检查自己在视线里,所以只能与 TargetConditions 或 TriggerConditions 使用。
格式
从 4.0.0 以后,所有的条件都有了新的格式。
Conditions:
新的“动作”决定了条件满足或不满足时技能的动作:
Conditions:
- day required
- stance defensive power 0.5
- stance{stance=defensive} power 0.5
- score{objective=test;value=>20} cancel
- haspotioneffect{type=POISON;level=>0;duration=0 to 100} true
条件动作
条件动作是一个新的特性,允许你通过条件做其他的事。之前一直是“required”,但是你现在可以给他们指定其他意义。
这是你可以添加的:
- required (or true) (default) - 这个条件是执行技能必需的。
- cancel (or false) - 如果有这个条件,技能不会执行。
- power [power multiplier] - 更改技能的力量等级
- cast [skill] - 未实现!! 如果有此条件,执行其他技能
- castinstead [skill] -未实现!! 如果有此条件,取消此技能而使用其他技能
自身/无目标条件
globalscore{objective=[objective];value=[value]}
- 测试玩家的分数
- 你可以将其用作服务器分数
mobsinworld{a=[amount]}
- 测试生物所在世界生物的数量
- 可以是一个值,也可以是范围
目标/触发器条件
distance{d=[value]}
- 测试目标与生物间的距离
- 可以是单独的数字,也可以是范围(20-40,<50)
lineofsight
- 测试目标在生物的视线上
- 示例:lineofsight true
owner
- 测试目标是否为生物的主人
- 必须使用 SetOwner 机制
- 示例:owner true
targetwithin/targetnotwithin{d=[value]}
- 测试目标是否在一定范围内
普通条件
altitude{a=[number]}
- 测试目标/生物的海拔
- 可为距离或范围
- 示例:altitude{a?1}
biome{b=[biome]}
- 测试目标/生物的生物群系
- 默认为 Plains
crouching
- 测试目标是否蹲下
- 应该只对玩家有用
distancefromspawn [number]
- 测试生物/目标距离出生点距离
- 可为数字或范围
entitytype [entity]
- 测试生物种类
- 示例:entitytype player
fallspeed{speed=[number/number range]}
- 可为数字或范围,可以为负,如跳跃
- 注意如果你站着,Bukkit 的机制会让你像以 0.785 的速度掉落
gliding
- 测试生物是否使用鞘翅滑翔
- 可以使用 SetGliding 机制
haspotioneffect{type=[potion type];level=[level];duration=[duration start] to [duration end]}
- 测试生物/目标的药水效果,种类,持续时间
- level 可以指定或比较(>1)
- 下方的示例让技能只在有中毒效果的情况下,药水等级大于1,剩余时间在5秒内执行
- haspotioneffect{type=POISON;level?1;duration=0 to 100} true
hastag{tag=[tag name]}
- 测试生物/目标有没有计分板标签
- 可以使用 AddTag 机制
height [number_range]
- 测试生物的高度
- 可以是范围或单个数字
- 按下 F3 会显示你的高度
heightabove / heightbelow [number]
- 测试生物是否在一个高度以上或以下
- 按下 F3 会显示你的高度
holding [itemname]
- 测试生物是否拿着 [itemname] 的物品
- 必须为 Bukkit 材料名称,不能是 Mythic 物品
inblock [material_type]
- 测试生物在一个方块李
- 经常用于测试是否在水中/岩浆中
- 必须为 Bukkit 材料名称
- 允许数组,逗号分隔([WATER, LAVA])
incombat
- 测试生物是否在战斗
inregion/notinregion [region]
- 测试生物是否在 WorldGuard 区域内
lastsignal{s=[signal]}
- 测试生物最后接收到的信号
- 不像 stance 条件,这个条件测试准确的字符串
level [number_range]
- 测试生物在一定等级间
- 可以为单个数字或范围
lightlevel{l=[number_range]}
- 测试生物的光照强度
- 必须在 0-15 间,可为范围
lunarphase{p=[days]}
- 测试月相
- 使用 0-7 作为参照,详情翻照 Minecraft Wiki
- 示例:lunarphase{p=4,5,6}
mobsinchunk{a=[number range]}
- 测试区块内的生物数量
- 可为单独数字或范围
mobsinworld [number_range]
- 测试当前世界的生物数量
- 可为单独数字或范围
mobtype [mobname]
- 测试生物种类
- 只可用于随机刷怪点文件
- 数组、逗号分隔
offgcd
- 当生物全局冷却为0,执行技能
- 必须使用 GCD 技能设置冷却时间,否则为 0
- 常用于有多个技能的生物,防止同时使用
onblock [material_type]
- 当生物站在特定方块上执行技能
- 允许数组(多个方块)
onground
- 当生物在地面上执行技能
outside/inside [true/false]
- 在室内或室外时执行技能
- 以头顶有无方块遮挡作为室内室外标准
playerkills [number]
- 当玩家击杀达到几个后执行技能
playernotwithin/targetnotwithin [distance]
- 当目标/玩家在几格以外执行技能
- 只可以使用数字,如果需要范围,使用 targetdistance 条件
playerwithin/targetwithin{d=(distance)}
- 当玩家/目标在几格以内执行技能
- 只可以使用数字,如果需要范围,使用 targetdistance 条件
- 常与 targetinlineofsight 条件搭配,用于防止看不见目标时使用技能
raining:
- 当下雨执行技能
score{objective=[objective name];value=[value];entry=[entry]}
- 测试目标的分数
- 如果你不知道啥是 entry,自己冒险试试
stance{s=[string]}
- 当生物处于什么立场时,执行技能
sunny
- 当出太阳时执行技能
tcbiome (测试版本)
- 当生物处于 TerrainControl 生物群系内执行技能
- tcbiome Forest (当生物群系名称含有 FOREST)
- tcbiome{biome=TropicalDesert;strict=true} 只匹配 TropicalDesert, 而没有 TropicalDesertBorder
thundering
- 当打雷时执行技能
world [worldname]
- 当生物处于特定世界执行技能
- 可以使用多个世界(数组)
worldtime [number_range]
- 当时间处于某范围内执行技能
- 0 到 24000。使用 /time 获得时间,使用范围(0-12000)
- 0-12000 白天 12001-13800 傍晚 13801-22200 夜晚 22201-24000 黎明
示例
FlameShock:
Cooldown: 1
Conditions:
- targetwithin 15
- targetinlineofsight true
- incombat
- stance aggressive
- onblock GRASS
- offgcd
Skills:
- gcd{t=60}
- message{m="<mob.name> begins casting a spell"}
- potion{t=SLOW;d=60;l=7}
- delay 60
- message{m="<target.name> &ecombusts"}
- effect:particles{p=flame;a=20;hS=3;vS=1;s=0;y=2}
- potion{t=HARM;d=1;l=1}