自定义怪物

在我们开始之前

请注意下面是唯一一个自定义怪物的必须配置选项,这也是一个自定义怪物的最简单配置形式:

entityType: TYPE

其他的配置选项都是可选的。

示例怪物

首先,我们需要知道自定义怪物配置储存在哪里。它们被储存在 ~/EliteMobs/custombosses 文件夹。

每个自定义怪物都有它自己独立的文件,这意味着如果你想要创建新的自定义怪物,只需要在该文件夹内创建一个新的文件即可创建新的怪物,文件名称即为怪物的id。

默认情况下,EliteMobs 包含一个 test_boss.yml 示例自定义怪物文件,它也是一个很好的示例模板,内容如下:

isEnabled: true
entityType: ZOMBIE
name: '&eTest boss'
level: dynamic
timeout: 10
isPersistent: false
healthMultiplier: 2.0
damageMultiplier: 0.5
helmet: GOLDEN_HELMET
chestplate: IRON_CHESTPLATE
leggings: LEATHER_LEGGINGS
boots: CHAINMAIL_BOOTS
mainHand: GOLDEN_AXE
offHand: SHIELD
isBaby: false
powers:
- invulnerability_knockback.yml
spawnMessage: A test boss has been spawned!
deathMessage: A test boss has been slain by $players!
escapeMessage: A test boss entity has escaped!
locationMessage: 'Test entity: $location'
uniqueLootList:
- magmaguys_toothpick.yml:1
dropsEliteMobsLoot: true
dropsVanillaLoot: true
trails:
- BARRIER
onDamageMessages:
- I've hit you!
onDamagedMessages:
- I've been hit!

isEnabled

isEnabled 设置是否启用该自定义怪物。

entityType

entityType 设置自定义怪物的实体类型,你可以在 mobproperties 文件夹查看当前 EliteMobs 支持的实体类型。

示例:

entityType: ZOMBIE

name

name 设置自定义怪物的名称。

示例:

name: "$level &cCool boss!"

变量:

  • $level - "$level Cool boss" - 1 Cool boss

  • $normalLevel - "$normalLevel Cool boss" - [1] Cool boss

  • $minibossLevel- "$minibossLevel Cool boss" - 〖1〗 Cool boss

  • $bossLevel - "$bossLevel Cool boss" - 『1』 Cool boss

  • $reinforcementLevel - "$reinforcementLevel Cool boss" - 〔1〕 Cool Boss

  • $eventBossLevel- "$eventBossLevel Cool boss" - 「1」 Cool boss

以上变量符都是显示怪物的等级,只是显示上有区别,参考所给示例你就能明白,在此不再赘述。

level

level 设置自定义怪物的等级。

  • 任何固定的值

  • dynamic

dynamic 代表动态,会根据当前在线玩家拥有的最高战斗等级来决定它的等级,所以,很少玩家会觉得这个怪物很好打。

示例:

level: 1

timeout

timeout 设置自定义怪物逃跑的时间,以分钟为单位(也就是自动消失)。如果设置为 0 那么该怪物将永远不会自动消失。

示例:

timeout: 20

isPersistent

isPersistent 设置在怪物所在区块被卸载后怪物是否保持存活,只建议对大 BOSS 开启,否则会造成服务器性能问题。

示例:

isPersistent: true

healthMultiplier

healthMultiplier 设置怪物的血量的加倍值,值 0.00010.9999 代表低于该等级怪物本身的血量值,大于 1 则代表高于。事实上在技术层面上,EliteMobs 并没有实际修改怪物的血量值,它只是通过修改怪物的防御来实现类似效果,不过为了便于理解这里就这么写了。

示例:

healthMultiplier: 1.5

damageMultiplier

damageMultiplier 设置怪物的伤害的加倍值,值 0.00010.9999 代表低于该等级怪物本身的血量值,大于 1 则代表高于。不会影响怪物能力的伤害。

示例:

damageMultiplier: 1.5

damageModifiers

damageModifiers 设置不同物品对自定义怪物造成的伤害的加倍值,你可以用它制作怪物的弱点和强化。

示例:

damageModifiers:
- material:DIAMOND_SWORD,multiplier:0.8
- material:TRIDENT,multiplier:2.0

在这个示例中,玩家使用钻石剑只会对怪物造成 80% 的伤害,但使用三叉戟将会造成双倍伤害。

normalizedCombat

normalizedCombat 修改怪物的伤害和最大生命值以遵循 MobCombatSettings.yml 中标准化实体的设置。 这对于创建地牢很有用,因为您在进行战斗平衡时不再需要考虑每种实体类型的基础伤害。

示例:

normalizedCombat: 整数类型选项

helmet/chestplate/leggings/boots/mainhand/offhand

helmet/chestplate/leggings/boots/mainHand/offHand 设置怪物的对应槽位(分别为头盔、胸甲、护腿、靴子、主手、副手)的物品id,只对能够穿戴对应槽位的怪物有效。

请注意这里可以设置物品的 CustomModelData 的值,只需要在填写物品id时遵循格式: 物品id:custommodeldata的值。示例: DIAMOND_SWORD:1 则代表怪物手持 CustomModelData 为 1 的钻石剑。

同样地,你还可以设置染色皮革的值,只需要遵循格式:物品id:0xHEX颜色代码

示例:

helmet: 198c4123-cafc-45df-ba79-02a421eb8ce7
chestplate: DIAMOND_CHESTPLATE:1
leggings: LEATHER_LEGGINGS:0x000000
boots: NETHERITE_BOOTS
mainHand: DIAMOND_SWORD
offHand: SHIELD

isBaby

isBaby 设置怪物是否是幼体,只有部分实体支持,例如僵尸。

示例:

isBaby: true

powers

powers 设置怪物的能力列表(也就是技能),能力可以在 ~/EliteMobs/powers 文件夹查看。部分能力可能不支持部分实体类型,但在这里无法一一提供,如有帮助可联系作者。

示例:

powers:
- hyper_loot.yml

boss phases

设置怪物的阶段(形态),更多信息请 点击这里 查看。

regional boss

有关区域 BOSS 的大概介绍,请 点击这里 查看。有关区域 BOSS 如何设置,请 点击这里 查看。

spawnMessage

spawnMessage 设置当怪物生成时的提示。

示例:

spawnMessage: I rise once more!

需要依赖公告权重值系统,下面不再赘述,有关公告权重值相关信息,请 点击这里 查看!

deathMessage

deathMessage 设置当怪物死亡时的提示,可以使用变量 $players$ 替代参与击杀怪物的玩家。

示例:

deathMessage: Physical damage, my only weakness!

需要依赖公告权重值系统,下面不再赘述,有关公告权重值相关信息,请 点击这里 查看!

deathMessages

deathMessages 设置怪物死亡的提示,但是可以多行。

deathMessages:
- '&e&l---------------------------------------------'
- '&4The Test Boss has been killed!'
- '&c&l    1st Damager: $damager1name &cwith $damager1damage damage!'
- '&6&l    2nd Damager: $damager2name &6with $damager2damage damage!'
- '&e&l    3rd Damager: $damager3name &ewith $damager3damage damage!'
- '&4Slayers: $players'
- '&e&l---------------------------------------------'

可以使用变量 $damager1name, $damager2name, $damager3name, $damager1damage, $damager2damage, $damager3damage$players$damager1name 等代表伤害输出第x名的玩家的名称,$damager1damage 等代表 伤害输出第x名的玩家的输出值。$players 则同上。

需要依赖公告权重值系统,下面不再赘述,有关公告权重值相关信息,请 点击这里 查看!

escapeMessage

escapeMessage 设置怪物逃跑的消息,只有在 timeout 选项设置的时间到了之后怪物自动消失才会出现。

escapeMessage: "Sayonara!"

需要依赖公告权重值系统,下面不再赘述,有关公告权重值相关信息,请 点击这里 查看!

locationMessage

locationMessage 设置怪物出现在 Boss 条的信息,用于显示怪物的位置和距离。

  • $distance - 距离。

  • $location - 坐标。

Example:

locationMessage: "&4Cool boss: $distance blocks away!"

需要依赖公告权重值系统,下面不再赘述,有关公告权重值相关信息,请 点击这里 查看!

uniqueLootList

uniqueLootList 设置该自定义怪物固定的掉落物。

  • itemFilename.yml:掉落几率

itemFilename.yml 替换为自定义战利品名称,也就是 ~/EliteMobs/customitems 文件夹内的文件名称。掉落几率可以填写 0-1 之间的值,例如 0.5 代表 50%。

其他格式:

你还可以使用以下掉落物类型:

  • minecraft:type=物品id:amount=数量:chance=几率 - 掉落原版 MC 物品。

  • SCRAP:等级=x-y:amount=x-y:ignorePlayerLevel=x:chance:x - 掉落 EliteMobs 的卷轴,其中 level=x-yamount=x-y 分别代表卷轴等级数量,x-y 代表在 x-y 之间随机抽取一个数字。ignorePlayerLevel=x 设置是否忽视玩家当前战斗等级而掉落。

  • UPGRADE_ITEM:level=x-y:amount=x-y:ignorePlayerLevel=x:chance:x - 掉落 EliteMobs 的升级球,同上不再赘述。

  • itemFilename.yml:掉落几率:权限 - 设置需要权限才会掉落指定固定战利品。

示例:

- magmaguys_toothpick.yml:1
- minecraft:type=DIAMOND:amount=1:chance=0.9
- SCRAP:level=5-10:amount=10-20:ignorePlayerLevel=false:chance=0.5
- UPGRADE_ITEM:level=5-10:amount=1-2:ignorePlayerLevel=false:chance=0.1
- magmaguys_toothpick.yml:0.5:elitemobs.*

dropsEliteMobsLoot

dropsEliteMobsLoot 设置怪物是否掉落非上面选项设置的其他战利品。

示例:

dropsEliteMobsLoot: true

dropsVanillaLoot

dropsVanillaLoot 设置怪物是否掉落其原版会掉落的物品,例如僵尸掉落腐肉。

示例:

dropsVanillaLoot: true

dropsRandomLoot

dropsRandomLoot 设置怪物是否掉落随机战利品。

示例:

dropsRandomLoot: true

trails

trails 设置怪物的粒子效果。

示例:

trails:
- CLOUD

onDamageMessages

onDamageMessages 设置怪物击打到玩家时随机出现的提示。

示例:

onDamageMessages:
- "I hit you!"

onDamagedMessages

onDamagedMessages 设置玩家击打到怪物时随机出现的提示。

示例:

onDamageMessages:
- "You hit me!"

mountedEntity

mountedEntity 设置怪物的坐骑,可以填写:

  • 某个原版生物的id (示例: mountedEntity: BAT)。

  • 指定自定义怪物的文件名称。

示例:

mountedEntity: balrog.yml

announcementPriority

announcementPriority 设置公告权重值,请 点击这里 了解详情。

announcementPriority: 3

followDistance

followDistance 设置怪物的察觉距离,部分实体类型可能不能很好工作。

示例:

followDistance: 30

请注意不要将这里的值设置过大,这将会导致服务器大量 CPU 负担!

onDeathCommands

onDeathCommands设置当怪物死亡时执行的指令列表。可以使用如下变量:

  • $level 代表怪物的等级。

  • $name 代表怪物的名称。

  • $chance=x$ 设置指令执行的几率。

  • $players 代表击杀怪物的玩家,如果击杀者有多位,那么指令会被执行多次

  • $locationX, $locationY$locationZ 代表怪物死亡的坐标。

onDeathCommands:
- "broadcast $players has killed $name! That was level $level!"
- "$chance=0.5$ What a kill!"

在这个示例中,假设有 Player1、Player2和Player3 三位玩家一起击杀,那么将会执行三次 broadcast 指令:

broadcast Player1 has killed CustomBossName! That was level X!
broadcast Player2 has killed CustomBossName! That was level X!
broadcast Player3 has killed CustomBossName! That was level X!

此外还会有 50% 几率执行如下指令:

What a kill!

onSpawnCommands

onSpawnCommands 设置当怪物生成时执行的指令列表。 $chance=x$ 变量同样可用。

示例:

onSpawnCommands:
- broadcast Boss has spawned!

onCombatEnterCommands:

onCombatEnterCommands 设置当怪物进入战斗时执行的指令列表。 $chance=x$ 变量同样可用。

onCombatEnterCommands:
- broadcast Boss has entered combat!

onCombatLeaveCommands:

onCombatLeaveCommands 设置当怪物离开战斗时执行的指令列表。 $chance=x$ 变量同样可用。

onCombatLeaveCommands:
- broadcast Boss has left combat!

disguise

disguise 设置怪物的伪装,更多信息请 点击这里 查看。

customModel

customModel 设置怪物的模型,更多信息请 点击这里 查看。

示例:

customModel: your_model

frozen

frozen 设置怪物是否原地不动。

示例:

frozen: true

最后更新于