pen-to-square编辑怪物能力

所有的怪物能力的配置文件全部储存在 plugins/EnchantedMobs/powers 文件夹中。

  • 这些配置文件的名称(不含文件名称后缀)就是这个能力的 ID,每个 ID 都应该保持唯一性。

  • 如果需要创建新的能力,就直接创建新的文件,并将对应的配置文本复制到该文件中即可。所有更改都需要重启插件以生效。部分功能还需要重启服务器生效。

  • 怪物能力的配置文本遵循 YAML 格式。

动态数值

在怪物能力的配置文件中,几乎每个数字类型作为值的选项都支持数学公式和 {level} 变量符(代表怪物的等级值)。同时,也支持这样的格式:

  random:
    ">=15;;<23": 0.3
    ">=23": 0.6

这样的格式代表当怪物的等级大于等于 15 而又小于 23 时,取值 0.3,当怪物的等级大于 23 时,取值 0.6

配置示例

一个比较完整的能力示例文件如下:

# Web Trap
# The projectile launched by a monster with this ability will generate a temporary spider web upon landing.

enabled: true
placeholder: '{lang:power.web_arrow}'

apply-rules:
  group: ranged_projectile
  group-unique: true
  weight: 5
  match-entity:
    equip:
      main-hand:
        material:
          - bow
          - crossbow
          - trident
  level-weight: 15~25

limit:
  random:
    ">=15;;<23": 0.3
    ">=23": 0.6
  cooldown:
    ">=15;;<22": 10
    ">=22": 5

on-projectile-hit:
  abilities:
    1:
      type: delay
      delay:
        ">=15;;<20": 20
        ">=20": -1
      abilities:
        1:
          type: place_block
          block: cobweb
          duration: '{level} * 4'
        2:
          type: sound
          sound: BLOCK_WOOL_PLACE
        3:
          type: particle
          particle: BLOCK
          count: 20
          block: cobweb
        4:
          type: remove

on-shoot-bow:
  abilities:
    1:
      type: mark

on-projectile-tick:
  abilities:
    1:
      type: particle
      particle: WHITE_ASH
      count: 6
      offset-x: 0.05
      offset-y: 0.05
      offset-z: 0.05

该配置内容中的部分选项介绍如下:

  • enabled:是否启用该能力。

  • placeholder:该能力的显示名称。

  • apply-rules:该能力的抽取规则。在 机制 一节中,我们已经介绍了这部分选项的内容。

  • limit:该能力释放的限制:

    • random:该能力释放的几率,1.0 代表百分之百。

    • cooldown:该能力每次释放的冷却时间,以秒为单位。

  • 其他以 on 开头的选项部分:触发该事件后拥有此能力的怪物将会执行的动作。如果不满足 limit 选项部分设置的限制,则动作不会执行,所有的动作共用一个限制。

能力触发事件

拥有能力的怪物可以在触发指定的事件后执行指定的动作。所有触发事件都包含这 4 种属性:

  • 触发实体:哪个实体触发了这一事件。

  • 传递实体:哪个实体传递这一事件的过程。

  • 目标实体:这一事件最终作用于哪个实体。

  • 位置:这个事件在哪个位置触发。

1事件只能由实体自身触发,能力造成的效果不会触发事件。

一个事件不一定全部包含这四种属性,所有事件如这四种属性的信息表如下所示:

事件
触发实体
传递实体
目标实体
位置

on-projectile-hit 当抛掷物击中或者落地后触发。

射出抛掷物的实体

射出的抛掷物(如箭)

抛掷物击中的实体 ⚠若未击中则不存在

抛掷物击中位置

on-shoot-bow 实体发射抛掷物后触发。

射出抛掷物的实体

射出的抛掷物(如箭)

射出的抛掷物(如箭)

射出的抛掷物的位置

on-projectile-tick 抛掷物射出后尚未击中这一过程,每 tick 都会触发 1 次。

射出抛掷物的实体

射出的抛掷物(如箭)

射出的抛掷物(如箭)

射出的抛掷物的位置

on-tick 实体存活期间每 tick 都会触发 1 次。 ⚠尚在开发。 ⚠需要在 config.yml 中启用这个功能。

实体本身

实体本身

实体本身

实体当前所在的位置

on-spawn 实体生成时触发。

实体本身

实体本身

实体本身

实体当前所在的位置

on-combust 实体燃烧时触发。

实体本身

实体本身

实体本身

实体当前所在的位置

on-damage 实体受到伤害时触发。

造成伤害的实体 ⚠若伤害不是由其他实体触发则不存在

实体本身

实体本身

实体当前所在的位置

on-regain 实体回血时触发。

实体本身

实体本身

实体本身

实体当前所在的位置

on-melee-attack 近战攻击时触发。

实体本身

实体本身

受到攻击的实体

受到攻击的实体当前所在的位置

on-death 实体死亡时触发。

实体本身

实体本身

实体本身

实体当前所在的位置

on-target 实体具有仇恨目标时触发。

实体本身

实体本身

受到仇恨的实体

受到仇恨的实体当前所在的位置

on-target-tick 实体具有仇恨目标时每 tick 都会触发 1 次。 ⚠尚在开发。 ⚠需要在 config.yml 中启用这个功能。

实体本身

实体本身

受到仇恨的实体

受到仇恨的实体当前所在的位置

on-explode 实体爆炸时触发。

实体本身

实体本身

实体本身

实体当前所在的位置

事件配置

每个事件的配置由 abilities、modifier、conditions 三个部分组成。

  • abilities:配置事件执行后将要执行哪些动作。

  • modifier:配置对事件要执行哪些修改。

  • conditions:配置执行动作需要的条件。

其中,有关 abilities 的部分会在下一节单独介绍,其他两个部分介绍如下。

修改事件

并不是所有的事件都支持修改,可修改的内容也是固定的,具体如下:

on-shoot-bow

可以修改射出的抛掷物类型:

这个示例更改抛掷物类型是 TNT。

提供的配置选项如下:

  • projectile:新的抛掷物类型,支持:

    • Arrow

    • BreezeWindCharge

    • DragonFireball

    • Egg

    • EnderPearl

    • Fireball

    • Firework

    • FishHook

    • LargeFireball

    • LingeringPotion

    • LlamaSpit

    • ShulkerBullet

    • SizedFireball

    • SmallFireball

    • Snowball

    • SpectralArrow

    • SplashPotion

    • ThrownExpBottle

    • TNT

    • Trident

    • WindCharge

    • WitherSkull

  • fuse:如果设置抛掷物为 TNT,则可以通过这个选项设置点燃时间。

  • fireball-yield:如果设置抛掷物为火球,则可以通过这个选项设置爆炸强度。

  • fireball-incendiary:如果设置抛掷物为火球,则可以通过这个选项设置释放燃烧。

喷溅药水的支持示例如下:

on_combust

可以修改燃烧的持续时间。

circle-info

除非特别说明,本文所有的“持续时间”全部以 tick 为单位。20 tick = 1秒。

on_damage

可以修改受到的伤害的值,支持使用 {original} 代表原伤害值。

on_regain

可以修改回血的值。

on_melee_attack

可以修改造成的近战伤害值,支持使用 {original} 代表原伤害值。

on_death

可以复活并获得对应血量,支持使用 {original} 代表原最大血量。

on-explode

可以修改爆炸强度。

触发条件

circle-info

除非另有说明,否则所有条件如果没有在配置内容中写明,都视为不使用此条件。

血量

on-death 触发事件外,其他触发事件都支持检查触发实体的血量,你可以设置某些动作只有在怪物剩余百分之 50 的血量时才会触发,增加游戏趣味性。

  • compare: 比较的规则,支持:

    • >

    • >=

    • <

    • <=

    • != (不等于)

    • =

  • value:比较的值。支持使用 {health} 代表当前血量,{max-health} 代表最大血量。

on-combust

  • by-block:这次燃烧是由其他方块造成的。

  • by-entity:这次燃烧是由其他实体造成的。

  • min-duration:燃烧持续时间的最小值。

  • max-duration:燃烧持续时间的最大值。

on-damage

  • by-block:这次伤害是由其他方块造成的。

  • by-entity:这次伤害是由其他实体造成的。

  • min-duration:伤害的最小值。

  • max-duration:伤害的最大值。

  • damage-cause:伤害来源必须来自这些情况,可用的伤害来源见此 页面

  • ignore-damage-cause:伤害来源不能来自这些情况,可用的伤害来源见此 页面

on-regain

  • min-amount:回血的最小值。

  • max-amount:回血的最大值。

on-melee-attack

  • accept-source:默认情况下此条件启用且为 false。如果设置为 true,则远程攻击手段也会触发此事件。(⚠尚在测试。)

  • min-amount:攻击的最小值。

  • max-amount:攻击的最大值。

on-explode

  • min-yield:最小爆炸威力。

  • max-yield:最大爆炸威力。

最后更新于