跳到主要内容

创建物品

webapp_banner.jpg

创建自定义物品​

什么是自定义物品?​

自定义物品是由 EliteMobs 通过配置文件定义的物品。你可以自定义这些物品的多个方面,例如物品等级、附魔、名称、说明文字、纹理等等!

Webapp​

你可以在这里轻松快速地创建自定义战利品!

开始之前​

自定义物品放在哪里?​

自定义物品文件放在 plugins/EliteMobs/customitems/ 中。

可以使用 plugins/EliteMobs/customitems/myitems/ 这样的子文件夹来整理文件。引用时使用包含 .yml 的文件名,因此不同子文件夹中的文件名也要保持唯一。保存修改后执行 /em reload,再生成一个新物品来检查结果。

文件以 .yml 文件格式保存,推荐使用 Notepad++ 作为编辑配置的文件编辑软件。一个文件定义一个自定义物品。多个 Boss、宝箱或任务可以引用同一个物品文件。

你也可以使用 Webapp 快速轻松地创建自定义 Boss 等内容。

最小配置​

请注意,自定义物品最小的配置文件是:

空的普通物品文件默认是一把名为 "Default name" 的木剑。特殊定义有额外要求:CLASS_LOOT、消耗品和魔法武器必须提供下文对应章节中描述的字段。

物品示例​

让我们来看一个物品文件的示例。

示例
isEnabled: true
material: WOODEN_AXE
name: '&4Test item'
lore:
- This is a cool item
- It has cool lore
enchantments:
- SHARPNESS,4
- elitemobs:flamethrower,1
potionEffects:
- HASTE,0,self,onHit
- POISON,0,target,onHit
- GLOWING,0,self,continuous
dropWeight: dynamic
scalability: scalable
itemType: custom

自定义物品设置​

以下是自定义物品中可以配置的所有内容列表:


isEnabled​

为新生成的物品启用该定义。已存在的物品不会被重写。不过,消耗品服务会解析当前已启用的定义,因此禁用某个定义可能使之前生成的物品无法继续承担该用途。

键值默认值
isEnabledtrue / falsetrue
示例
isEnabled: true

material​

设置物品材质。

键值默认值
material从此列表中选择!WOODEN_SWORD
示例
material: DIAMOND_SWORD

level​

设置物品等级。

键值默认值
level整数0

保持默认值 0 时,EliteMobs 会根据材质推导等级,而不是使用固定等级。

当 scalability 设为 scalable 时,由掉落或奖励流程提供等级,它并不总是 Boss 的准确等级。设为 limited 时,配置的等级是上限;设为 fixed 时,它就是物品的等级。默认物品预览则改用配置的等级或由材质推导的等级。

盔甲有按材质划分的基准:皮革、金和海龟算作 3 级,锁链 5 级,铁 6 级,钻石 7 级,下界合金 8 级。物品等级低于该基准时,不会提供额外的精英等级防御。附魔和原版属性另行计算,因此这并不意味着该物品的表现与未经修改的原版盔甲完全相同。

示例
level: 100

name​

设置物品的显示名称。

键值默认值
name带有 颜色代码 的字符串"Default name"
示例
name: "&2Cool item"

create_item_name.jpg


lore​

设置物品的说明文字。

键值默认值
lore带有 颜色代码 的 列表无
示例
lore:
- "&2This is the coolest sword"
- "&2of all time!"

create_item_lore.jpg


enchantments​

设置物品上的附魔。

键值默认值
enchantments带有 Minecraft 附魔或 EliteMobs 自定义附魔的 列表无

原生条目使用 Bukkit 附魔名称。自定义效果需要使用小写的提供方 ID,例如 elitemobs:loud_strikes,3 或 freeminecraftmodels:multicast,2,后面跟一个正整数等级。重复的自定义 ID 和格式错误的自定义条目会禁用该定义。已废弃的无命名空间自定义名称同样会禁用该定义,它们不会被转换。提供该附魔的提供方必须可用,并且接受该物品。

示例
enchantments: 
- "SMITE,8"
- "UNBREAKING,4"
- "SHARPNESS,7"
- "elitemobs:loud_strikes,3"

create_item_enchantments.jpg

受支持的精英附魔(如 Sharpness)会保留完整的 EliteMobs 等级,而其原生附魔则被限制在原版最大值。原生附魔的应用遵循该附魔的启用设置。程序生成的上限并不是对手写等级的统一限制。

在缩放生成期间,scalable 和 limited 物品会不放回地抽取 ceil(total configured native levels * 0.5) 个附魔单位。这不会保留完整总量,也不保证抽到某个特定附魔。自定义附魔不在这个预算之内。包括 /em loot give 在内的默认物品生成则改用手写的原生等级。fixed 物品同样使用其手写等级。

自动职业战利品采用相同的预算原则,并提供可配置的难度/阶级配置、独立的规则概率以及可配置的主附魔最低值。需要一致的基础装备时使用该系统;特意设计的特殊奖励则保留为单独的自定义物品文件。


proceduralEnchantments​

可选布尔值,默认为 false。在普通自定义物品构建期间启用程序化抽取,并受程序生成设置约束。每个抽到的附魔会与手写或缩放后的结果合并,取较高的等级,而不是把两个等级相加。抽取可能引入新的附魔类型;兼容的魔法武器还可以抽到 FMM 附魔。CLASS_LOOT 则改用它自己的配置。

potionEffects​

设置物品拥有的药水效果。这些效果可以施加给玩家,也可以施加给被玩家伤害的实体。

键值默认值
potionEffects带有 Minecraft 药水效果的 列表无

此外,药水效果使用特定格式,管理员可以借此选择谁受到影响以及何时生效:

设置说明值默认值
药水效果等级设置药水效果的等级。药水效果从 0 级开始!整数无
受影响实体设置谁会受到命中效果的影响。self(玩家)/ target(被击中的实体)self
应用方式设置效果何时生效。onHit / continuouscontinuous

药水效果的格式是 potionEffectName,potionEffectLevel,affectedEntity,applicationMethod。最后两个参数(affectedEntity 和 applicationMethod)是可选的,未指定时分别默认为 self 和 continuous。请查看下面的示例!

请使用 Bukkit 效果名称,逗号前后不要加空格。效果从主手、副手和四个盔甲槽位收集,而不是从背包的其余部分收集。已损坏的物品、绑定到其他玩家的灵魂绑定物品,以及被技能限制拒绝的装备都不会提供效果。持续效果始终作用于佩戴者;target,continuous 不会产生光环。命中效果可以来自这六个槽位中的任何一个,并在玩家对活体目标发起的攻击未被取消时生效,包括弹射物攻击。

药水效果持续时间:

  • 持续性装备效果每秒检查一次。普通效果持续 2 秒,并在临近到期时刷新;夜视持续 15 秒,并在剩余 12 秒或更少时刷新。
  • 对于每种效果类型,以已装备来源中最强的为准。卸下或更换装备会移除或更新 EliteMobs 视为自己施加的效果。来自其他来源的已有效果会被保留,即使装备的效果更强;装备效果可以在该外部效果过期后再生效。
  • 普通命中效果使用对应 potionEffects/ 配置中的 onHitDuration,单位为秒。

对自身施加的 INSTANT_HEALTH、INSTANT_DAMAGE 和 SATURATION 无论采用哪种应用方式,都使用特殊处理器。每种效果有按玩家共享的 100 tick 冷却(20 TPS 时为 5 秒)。数值为增幅值加一,分别表示恢复的生命值点数、提交的伤害,或恢复的饥饿值点数。SATURATION 改变的是饥饿条,而不是饱和度储备。这些效果不使用普通持续效果的刷新机制。

下列默认药水效果图标可以在 ItemSettings.yml 中修改:

  • ☠️ 骷髅 – 作用于敌人。
  • 🛡️ 盾牌 – 作用于使用者/玩家。
  • ⚔️ 剑 – 命中时触发。
  • ⟲ 圆环 – 物品被佩戴或手持期间持续生效。

EliteMobs 还提供作为护符使用的自定义物品。这些物品除了在被手持或装备在槽位中时为玩家提供药水效果之外,不做任何其他事情。

警告:由于这是原版 Minecraft 的默认机制,使用 INSTANT_DAMAGE 药水效果会在命中时治疗亡灵生物。

无效的效果:

  • ABSORPTION 和 HEALTH_BOOST 会被物品药水效果系统完全跳过。无论设为 continuous 还是 onHit,它们都不会被应用。
  • 命中时施加到 target 的 LEVITATION、SLOWNESS 和 BLINDNESS,在被击中的实体是生命倍率大于 1 的精英时会被忽略。这包括被设置了更高生命值的 Boss;healthMultiplier 默认为 1,因此并不涵盖所有自定义 Boss。它们对其他精英和原版生物仍然有效。
示例
potionEffects: 
- "POISON,0,target,onHit"
- "INSTANT_HEALTH,1,self,onHit"
- "NIGHT_VISION,0,self,continuous"

create_item_potion_effects.jpg

使用这组药水效果时,会发生以下情况:

命中时,目标获得中毒 I。玩家通过特殊治疗处理器恢复 2 点生命值,最多每 100 tick 一次。

持续效果方面,玩家会获得夜视。这意味着只要玩家佩戴或手持该物品,就会一直拥有夜视。


scalability​

控制物品如何使用其掉落或奖励流程提供的等级。

键值默认值
scalabilityfixed、limited 或 scalable。见下文!scalable

查看此列表以了解各个选项的作用!

设置说明
fixed使用配置的或由材质推导的物品等级。
limited使用请求等级与配置上限中较低的一个。
scalable使用请求等级。

带有数值型 dropWeight 的普通物品会被强制设为 fixed。dynamic 不会强制任何模式。CLASS_LOOT 遵循它自己的可缩放构建。

示例
scalability: "scalable"

itemType​

设置可以从哪里获得该物品。

键值默认值
itemTypecustom、unique、droppable、CLASS_LOOTcustom

共有四种物品类型:

设置说明
custom可参与普通随机自定义物品掉落和自定义商店。仍受掉落池和等级筛选影响。
unique将该物品排除在普通随机掉落池和自定义商店之外。请在 Boss 战利品、宝箱、任务或竞技场奖励中显式引用它,或使用管理员命令发放。
droppable可参与普通随机自定义物品掉落,但被排除在自定义商店之外。
CLASS_LOOT被显式引用时使用职业战利品配置。被排除在普通自定义物品池和自定义商店之外。
示例
itemType: "unique"

dropWeight​

设置物品所属的战利品表。

键值默认值
dropWeightdynamic 或一个小数值。dynamic

普通随机装备生成会在五个池中选择。Boss 的 uniqueLootList 等显式表与之分开。

分别如下:

战利品表说明默认权重
程序生成的物品根据服务器配置文件随机生成的物品90.0
加权物品权重不是 dynamic 的物品1.0
固定物品缩放类型为固定的物品10.0
受限物品缩放类型为受限的物品3.0
可缩放物品可缩放的物品6.0

生成普通随机装备掉落时,会使用 ItemSettings.yml 中的这些权重来选择池。这些权重只用于选择池;它们不保证每次 Boss 死亡都会掉落物品,也不控制 Boss 的显式战利品表。

加权物品 的 默认权重 很小,这意味着它们不会经常掉落。dropWeight 不是 dynamic 的物品本就应当稀有,在默认配置中只用于 Boss 掉落的护符——这类物品并非直接用于战斗,而是用药水效果为玩家增益。

请使用大于或等于 0 的有限数值作为 dropWeight。它控制加权池内的相对选择概率,而不是选中该池的概率。权重为 0 时,物品仍会作为 fixed 加载,但不会进入加权池。负数或非数值会导致该物品无法加载。

如果你感到困惑,只是想制作武器和盔甲,请跳过此设置,因为它正确地默认为 dynamic。

加权物品 的权重通常为 1.0。

数值型 dropWeight 会将物品加入固定掉落池和加权掉落池,除非其 itemType 为 unique。带有数值权重的 unique 物品会留在这两个池之外,并且仍使用固定缩放。

加权池会复制缓存的物品,因此不会为每次掉落重新抽取程序附魔。为玩家挑选物品时,它会跳过 unique 物品、已禁用的物品,以及玩家缺少其 permission 的物品。只有当此定义设置了 soulbound: true 且全局灵魂绑定附魔已启用时,掉落物才会灵魂绑定。CLASS_LOOT 忽略 dropWeight,不会进入这些池。

普通随机受限物品选择器目前只考虑上限严格低于请求掉落等级的定义。不要假定所有受限物品都能在任意较低等级的随机掉落中出现;显式战利品引用会直接选择定义。

示例
dropWeight: "dynamic"

customModelID​

注意: 此设置已被移除,不再从配置文件中读取。请改用 customModelV2,它是 Minecraft 1.21.4+(EliteMobs 9.1.13+)起唯一被识别的模型 ID 设置。配置文件中任何已有的 customModelID 条目都会被忽略。

设置物品的纹理。需要使用资源包中的有效纹理!

键值默认值
customModelID整数无
示例(已失效)
material: DIAMOND_SWORD
customModelID: 1

此设置已不再生效。请改为迁移到 customModelV2。


customModelV2​

从 Minecraft 1.21.4 版本(EM 9.1.13)开始,这是配置自定义物品模型 ID 的新的必需设置。 设置物品的纹理。需要使用资源包中的有效纹理!

物品模型键和装备模型键需要在 CustomModels.yml 中设置 useModels: true,并且需要已安装 ResourcePackManager,或在 config.yml 中设置 useResourcePackEvenIfResourcePackManagerIsNotInstalled: true。后一个标志不会分发资源包:玩家仍然需要匹配的资源。

键值默认值
customModelV2字符串无

自动外观等阶: 如果此设置和 equipmentModelID 都未设置,EliteMobs 会应用其资源包中基于等级的外观。等阶根据物品等级选取:

最低物品等级等阶
20bronze
40palladium
60corrupted
80living
100ultimatium

20 级以下的物品没有等阶外观。等阶仅应用于剑、斧、锄(渲染为镰刀)、弓、弩、头盔、胸甲、护腿和靴子。三叉戟被特意排除在外。

设置 customModelV2 或 equipmentModelID 中的任意一个,会在受支持的情况下将你显式指定的键用于对应的外观。另一种外观仍可能回退到其等阶模型。任何显式键都会跳过自动的原版属性缩放,即使模型已被禁用。没有显式键时,CustomModels.yml 中的 useAttributeScaling 控制受支持服务器版本(1.21.2+)上的缩放,包括低于 20 的正数等级;它不要求启用模型。这会改变原版的攻击伤害、攻击速度、护甲值、护甲韧性和击退抗性。EliteMobs 的伤害和防御仍使用其自身的计算方式。

示例
customModelV2: elitemobs:equipment/magmaguys_toothpick

此设置为物品指定特定的纹理。工作方式如下:

  • elitemobs: 是资源包 assets 文件夹中的主目录。
  • equipment 是 assets/elitemobs/items 内的子目录。
  • magmaguys_toothpick 选中物品定义 assets/elitemobs/items/equipment/magmaguys_toothpick.json。该定义引用 assets/<namespace>/models/ 下的实际模型。

物品定义路径: \.minecraft\resourcepacks\elitemobs_resource_pack\assets\elitemobs\items\equipment\magmaguys_toothpick.json

这会使用玩家正在使用的 EliteMobs 资源包中的自定义纹理 magmaguys_toothpick。如果你想正确使用此功能,建议将服务器设置为在玩家登录时向其分发资源包。


equipmentModelID​

为受支持的盔甲槽位设置穿戴时的装备资源。它不会让任意材质变得可穿戴。头盔特意改用其物品模型,因此请使用 customModelV2 设置头盔外观。上文的模型要求在此同样适用。

键值默认值
equipmentModelID字符串无

未设置 customModelV2 时,仍可能回退到基于等级的背包模型。

示例
material: DIAMOND_CHESTPLATE
equipmentModelID: elitemobs:bronze

这会为胸甲的穿戴外观选择 assets/elitemobs/equipment/bronze.json,与其背包物品模型分开。


weaponType 与 fmmItemModel​

魔法武器请使用 weaponType: WANDS 或 weaponType: STAVES。其他武器技能由材质决定。fmmItemModel 用于标识 FMM 编写的武器或纯展示模型:

material: BLAZE_ROD
name: "&bApprentice's Wand"
lore: []
weaponType: WANDS
fmmItemModel: fmm_default_arcane_wand
enchantments:
- "POWER,3"
- "freeminecraftmodels:multicast,1"
scalability: scalable

魔法武器需要一个可用的、与所声明类型匹配的兼容 FMM 武器定义。缺失魔法武器身份会阻止物品生成;仅仅更改材质或展示模型并不会造出能正常工作的魔杖。缺失的非武器展示模型会保留原版材质外观;当 FMM 可用时,未知模型还会记录一条警告。魔法武器会丢弃 PUNCH,堆叠上限为 1;可损耗且没有手写最大耐久的魔法物品,最大耐久为 384。

FMM 身份字段优先于 customModelV2、equipmentModelID 和基于等级的自动外观,即使展示模型无法解析也是如此。EliteMobs 仍保留其名称、说明文字、附魔、等级和所有权系统。参见 FMM 魔法武器。

scriptedItem​

这个较旧的字段仍然是 FMM 编写物品的身份/展示桥接。它不再运行装备物品的 Lua 脚本。所引用的物品 ID 必须存在于 FMM 的物品目录中,且不带 .yml;包含非空 scripts: 列表的物品定义已不再有效。

新内容请使用 fmmItemModel,魔法武器还需使用 weaponType。不要将手写的魔法武器与 scriptedItem 组合;生成会拒绝这种组合。这两种桥接都不会把 FMM 的名称、说明文字或附魔复制到 EliteMobs 物品上。

consumable​

服务物品使用明确的用途,而非标记附魔:

material: PAPER
name: "&aRepair Scrap"
lore: []
consumable:
type: repair_scrap
tier: 2
类型附加字段用途
repair_scrap整数 tier,1 到 5修理员使用的废料,从最小到最大
lucky_ticket无升级系统使用的幸运券
unbind无移除灵魂绑定的物品

只有修理废料接受 tier。未知字段、缺失或无效的类型,或超出范围的废料等级都会禁用该定义。解析后的材质必须是非空气物品。服务会检查当前已启用的自定义物品定义、身份和匹配的材质,而不是旧的 REPAIR、LUCKY_SOURCE 或 UNBIND 附魔。

CLASS_LOOT 物品​

在普通自定义物品文件中设置 itemType: CLASS_LOOT,然后从 Boss 的普通战利品表中引用它。请编写有效的 material、name 和 lore 字段;lore: [] 是可接受的。盔甲还需要匹配的 classLootFamily,例如 TANK_HELMETS。

此类型使用其自己的可缩放构造器,忽略普通的 scalability、dropWeight 和 proceduralEnchantments。阶级和难度由 Boss 上下文提供;没有该上下文的命令无法复现某个特定 Boss 的抽取结果。默认预览至少使用 1 级。手写附魔会覆盖匹配的配置条目,手写药水效果则追加到配置的效果之后。

职业战利品指南介绍了分类推断、配置抽取、手写覆盖和选择。Boss 侧的 classLootItems 展示配置已不再读取。

showSource​

注意: 此设置目前不起任何作用。该键仍会从配置文件中读取且不会报错,但插件的任何部分都不会读取其结果值,因此将其设为 false 不会隐藏物品的来源说明文字。

生成的来源行使用 ItemSettings.yml 中 itemLoreStructureV2 里的 $itemSource。移除该占位符即可全局隐藏该行。来源说明文字只会添加到装备或最大堆叠数为 1 的物品上;普通可堆叠的非装备物品不会获得。手写的自定义说明文字与此无关。

键值默认值
showSource布尔值true

permission​

设置获得该物品所需的权限。

键值默认值
permission字符串无

请通过你的权限管理插件授予该权限节点。

感知玩家的生成流程会检查此权限:随机掉落(包括加权掉落)、显式个人掉落、/em loot give 和 /em loot reward。没有接收者的个人掉落会跳过设置了权限的物品。它并不是对所有获取方式都有效的屏障:无玩家的生成流程和管理员战利品菜单可以绕过它。没有已注册的 /em loot get 命令。交易不会重新检查该权限节点。soulbound 在生成的物品有所有者时限制其转移;它不会让该权限成为持续的使用检查。

示例
permission: "elitemobs.cool.permission"

在此配置下,会检查权限的生成流程要求拥有 elitemobs.cool.permission。


soulbound​

设置物品掉落时是否应灵魂绑定。

绑定需要有接收者,并且全局灵魂绑定功能已启用。无玩家预览没有所有者。普通构建、加权掉落和团队战利品分配都遵循 false。

键值默认值
soulbound布尔值true
示例
soulbound: true

测试你的物品​

保存文件,执行 /em reload,然后生成一个新物品。请留出背包空间,并使用包含 .yml 的文件名。这些命令要求接收者在线:

命令作用
/em loot give <player> <filename>使用默认构建,等级为配置的或由材质推导的等级,带有完整的手写原生附魔,并检查接收者的权限。背包放不下的部分不会交付。
/em loot reward <player> <filename>将接收者的战斗等级提供给普通构建:固定等级和受限上限仍然有效。缩放构建会抽取原生附魔。背包溢出的物品会掉落在地上。

两者都需要 elitemobs.loot.admin 权限。

检查生成的说明文字、穿戴外观、药水效果和所有权。还要检查你打算使用的实际 Boss、宝箱或奖励流程:通过命令生成并不能证明其选择规则和来源上下文与之一致。