过期版本的条件 (低于 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}

results matching ""

    No results matching ""