• 因近日遭受攻击,百科现已限制新用户的编辑权限,一段时间后成为自动确认用户方可编辑。

EliteMobs/指南/创建自定义Boss

From Minecraft插件百科
Revision as of 18:45, 15 July 2020 by Qsefthuopq (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

创建自定义boss

As of 7.1.0 it is possible to create your own Elite Mob Bosses. What follows is a guide on how to create these manually. A webapp to create them will be made available soon.

Please note that Custom Bosses can only spawned when summoned via the /em spawn [customboss] [level] command or using the spawnChance config option. Advanced spawning options will be added for 7.2.0

示例boss

Firstly, you need to know where to find the custom bosses. All EliteMobs custom bosses are in the ~/EliteMobs/custombosses folder (where ~ is whatever your plugin directory is).

Each custom boss is stored as its own file, meaning that if you want to create bosses you'll need to create a new file and upload it to this directory. I recommend you following the naming format (meaning names_are_lowercase_and_separated_with_underscores.yml).

By default, EliteMobs comes preloaded with a default Custom Boss in the configuration file test_boss.yml which exists to help admins learn the capabilities of these bosses. We'll be using this boss as an example throughout this guide. This file has the following settings:

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!
spawnChance: 0

是否启用

isEnabled sets whether or not the Custom Boss is enabled. Important: if you disable Elite Mobs associated to events, you will cause errors. You need to disable the events in the events folder instead. This is only meant to prevent Custom Bosses to spawn from commands.

实体类型

entityType sets the type of entity the Boss Mob will be. This uses the Spigot API values which you can find here. Only entity types that can be Elite Mobs in the first place can be Custom Bosses (the entities in the mobproperties folder).

名称

name sets the display name of the Custom Boss. If you want to use color codes, make sure you surround your name with '' (such as '&2Test')

等级

level sets the level of the Custom Boss. The valid options for these are:

  • Any positive natural numeric value
  • dynamic

Using a positive natural number (such as a number between 1 and 1500) will force the Custom Boss to always use that level.

dynamic sets the mob level to be challenging for the highest tier player currently online. As such, no one in the server will find it easy to kill, although lower tier players will have a particularly hard time at it. Also note that this is ignored in the spawn command, as you set the level in the command arguments.

消失时间

timeout sets the amount of time, in minutes, that passes before the Custom Boss "escapes" or, in other words, automatically despawns. When set to 0, the Custom Boss will never despawn from a timeout.

永存

isPersistent sets whether the Custom Boss can survive a chunk unload. This is recommended for big bosses, but not for minions / trash mobs. Too many active persistent Custom Bosses may cause some performance issues (when in the hundreds).

血量倍数

healthMultiplier modifies the amount of hit necessary to kill a Custom Boss. Values between 0.0001 and 0.9999 lower the amount of hits needed to kill the Custom Boss. Values above 1 increase the amount of hits needed to kill the Custom Boss. This multiplier doesn't actually change the health, just give it damage reduction or damage increase (armor), but it is called healthMultiplier for the sake of simplicity.

伤害倍数

damageMultiplier modifies the damage the Custom Boss deals to players. Values between 0.0001 and 0.9999 lowers the damage. Values above 1 increase it. Does not affect the custom damage of some very specific powers (such as the GoldShotgun).

头盔/胸甲/护腿/鞋子/主手/副手

helmet/chestplate/leggings/boots/mainHand/offHand set the items in those slots. This uses the Spigot API values which you can find here. This only affects entity types that can wear armor.

幼体

isBaby sets whether that Custom Boss is spawned as a baby entity. This is only applicable for entity types that can have baby entity variants, such as Zombies.

能力

powers lists the powers that the Custom Boss has. These powers are the filenames of the powers that can be found the in ~/EliteMobs/powers directory. Some entity types can't have certain powers, and though I can not provide a full list of incompatibilities, I'll let you know that the Phantom entity is prone to causing a some issues. These are not fixable, as they are vanilla Minecraft limitations.

生成消息

spawnMessage sets the message that gets broadcasted to players upon Custom Boss spawn.

死亡消息

deathMessage sets the message that gets broadcasted to players upon Custom Boss death. This uses the `$players$ placeholder which gets replaced with a list of all the players that participated in killing the Custom Boss using their display name.

死亡消息列表

deathMessages sets a list of messages that get broadcasted to players upon Custom Boss Death. This is far more extensive than the deathMessage option, and follows this format:

逃脱消息

escapeMessage sets the message that gets broadcasted to players upon Custom Boss escape. This only happens if a timeout time has been set for the Custom Boss, and when that time has elapsed.

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---------------------------------------------'

As you can see, it uses the following placeholders: $damager1name, $damager2name, $damager3name, $damager1damage, $damager2damage, $damager3damage and $players. $damager1name etc. display the display name of the player. $damager1damageetc. display the damage the player has dealt to the boss throughout the fight. $players displays a list of all damagers. Numbers 1-3 go through players from the highest damage dealt to the lower damage dealt.

位置消息

locationMessage sets the message shown in the BossBar. This is used to track both Custom Boss health and its location in the server. It uses the $location placeholder which gets automatically replaced with the custom boss' coordinates. The $location placeholder can be removed from the message (or the entire configuration option can be removed) for server that do not wish to display the locations near player bases.

特殊战利品列表

uniqueLootList sets the loot that drops from the custom boss. This is a list of items which follows the following format:

  • item:chanceToDrop

The item field is filled with the file name of the custom item in the ~/EliteMobs/customitems directory. In our case, it's magmaguys_toothpick.yml. The chanceToDrop is a value between 0 and 1 which expresses the odds of the item dropping. 0 expresses a 0% chance to drop, whereas 1 expresses a 100% chance to drop. 0.5 is 50%.

The item dropped does not necessarily have to have the unique itemType tag.

掉落精英怪物战利品

dropsEliteMobsLoot sets whether the Custom Boss will drop EliteMobs loot, excluding items in the uniqueLootList. This affects the loot that would drop from a normal Elite Mob and the loot shower coins. It is highly recommended that you disable this for trash mobs and reinforcement mobs.

掉落原版战利品

dropsVanillaLoot sets whether the Custom Boss will drop the vanilla loot usually associated to its vanilla mob type.

轨迹

trails sets the type of trail that the Custom Boss have. These are a list, so multiple can be selected (and repeatedly) to craft unique effects. Trails can both be particles or items. Both particles and item names have to be pulled from the Spigot API - here for items and here for trails.

击中消息

onDamageMessage sets the message that the Boss Mob displays when they hit a player. This is a list, and the one used is randomized from the list.

受伤消息

onDamagedMessage sets the message that the Boss Mob displays when damaged by a player. This is a list, and the one used is randomized from the list.

生成率

spawnChance sets the chance of the custom boss spawning naturally. The odds are contained between 0 and 1, where 0 is a 0% chance and 1 is a 100% chance (0.5 is a 50% chance). Only Elite Mobs of the same type are eligible for becoming Custom Bosses. This means that if you set your spawnChance to 0.5 and your custom boss is a Blaze entity type, every time an Elite Blaze spawns there's a 50% chance that it will become your Custom Boss. I recommend you keep the odds of conversion between 1/100 and 1/1000 (0.01 and 0.001) depending on how many players you have and how rare you want your Custom Boss to be.

骑乘实体

mountEntity allows the Custom Boss to mount an entity. Two types of values are allowed here:

  • Entity types from the spigot api if you want your boss to mount a normal mob (example: mountEntity: BAT)
  • File names of custom bosses if you want your custom boss to mount another custom boss (example: mountEntity: balrog.yml)

Regional bosses will share their leash with the entity they're mounting, meaning they'll both be dragged back to the spawn location if they exceed the distance allowed by their leash.

公告优先度

announcementPriority sets the priority level for the spawn/kill/escape announcements and allows or prevents the Custom Boss from being tracked by players. The accepted values are 0, 1, 2 and 3, with the default being 1. You can click here for more details on how the Announcement Priority System works.

Here's an example of a boss that is trackable, is able to send spawn/death/escape messages on chat and on Discord:

announcementPriority: 3

Note: You will have to configure the spawnMessage, deathMessage/deathMessages, escapeMessage for chat and discord announcements and the locationMessage for the tracking feature if you wish to use the corresponding Announcement Priority level.

跟随距离

followDistanceset the Minecraft follow distance attribute. This is used to set custom aggro distances. Note that this sometimes does not work properly for certain mob types due to inconsistencies with Minecraft AI.

示例用法:

followDistance: 30 sets a range of 30 blocks where if a player gets within that distance near the boss it will start chasing/attacking the player.

``Note:** The higher the followDistance, the more intensive the boss. Try to keep these reasonable and make sure you only use them when it matters.

死亡运行指令

onDeathCommandssets the list of commands to run on custom boss death. The list supports the following placeholders: $level for the level of the Elite Mob, $name for the name of the Elite Mob and $players for the players that killed the elite mob.

Please note that this probably doesn't work the way you assume it does! The $players placeholder will make the command run multiple times and each time it will replace the placeholder with the name of a player who damaged the Elite Mob. As an example:

onDeathCommands:
- broadcast $players has killed $name! That was level $level!

If Player1, Player2 and Player3 all damaged the boss before killing it, this is what the command output will be from console:

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!

The main goal of this command is not to broadcast messages, but to allow admins to give specific non-elitemobs rewards to players for killing Elite Mobs.