- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】MCreator
MCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.
导读
本文聚焦 MCreator 基岩版实体(Bedrock Edition Entity,BEEntity)定义中的攻击伤害(Attack Damage)参数,讲解它在实体行为面板中的位置、默认值与取值范围、与 Minecraft 基岩版minecraft:attack组件的映射关系,并揭示其底层代码生成与数据转换机制。读完本文,你将掌握如何为基岩版 Add-On 自定义实体的近战伤害,并学会利用负值实现"攻击反而治疗目标"的特殊玩法。
攻击伤害参数是什么
在 MCreator 的基岩版实体编辑器中,攻击伤害(Attack Damage)指该实体在成功命中另一实体时所造成的生命值扣减量。该参数决定了实体每一次近战攻击的基础伤害数值,直接影响实体在战斗中的威胁程度。
依据官方帮助文档的说明(见 de_DE 帮助文档 与 default 英文帮助文档),其核心语义包含两点:
- 伤害数值:这是实体伤害其他单位时造成的伤害量;
- 负值治疗:若使用负值,实体攻击时将治愈被攻击的生物,而不是造成伤害。
该帮助文档在中文语言包中的对应界面标签为elementgui.beentity.attack_damage,中文显示为"攻击伤害:"(见 texts_zh_CN.properties)。
界面位置与基本操作
攻击伤害参数位于基岩版实体的行为属性(Behaviour)面板中。在 BEEntityGUI.java 中可以看到:
behaviourProps.add(HelpUtils.wrapWithHelpButton(this.withEntry("beentity/attack_damage"), L10N.label("elementgui.beentity.attack_damage"))); behaviourProps.add(attackDamage);即该参数在界面上以"帮助按钮 + 数值输入控件(JSpinner)"的形式呈现,帮助按钮直接链接到本文所依据的帮助文档条目beentity/attack_damage。用户只需在实体编辑器的行为属性区域找到"攻击伤害"行,输入目标数值即可。
保存时,界面控件值会通过getElementFromGUI()写入实体模型对象:
entity.attackDamage = (int) attackDamage.getValue();打开已有实体编辑时,则通过openInEditingMode()将已保存的数值回填到控件:
attackDamage.setValue(entity.attackDamage);两处实现均位于 BEEntityGUI.java,保证了界面读写闭环一致。
默认值与取值范围(源码级证据)
攻击伤害字段在实体数据模型中的定义位于 BEEntity.java:
@Numeric(init = 3, min = -10000, max = 10000, step = 1) public int attackDamage;由该注解可以确认以下约束:
| 属性 | 值 | 说明 |
|---|---|---|
| 默认值(init) | 3 | 新建实体时的初始攻击伤害,与帮助文档中"僵尸(Zombie)3 点伤害"的典型值一致 |
| 最小值(min) | -10000 | 允许负值,为"负值治疗"玩法预留空间 |
| 最大值(max) | 10000 | 上限,防止异常超高伤害 |
| 步长(step) | 1 | 整数调整,以 1 点生命为单位增减 |
| 字段类型 | int | 攻击伤害为整数值 |
注意:正是因为最小值被设置为负数,帮助文档中"使用负值将治愈被攻击的生物"的行为才能成立。若上限不允许负数,该玩法将无法实现。
典型数值参考
帮助文档给出了两个典型取值锚点,可作为新手设计伤害数值时的对照基准:
- 3(如僵尸 Zombie):代表普通敌对生物的常规近战伤害,适合作为基础小怪的伤害档位;
- 7~21(如铁傀儡 Iron Golem):代表强力防御型生物的伤害区间,铁傀儡的高伤害用于惩罚攻击村民或自身的目标。
结合默认值 3 可知,MCreator 在新建基岩版实体时即采用与僵尸一致的伤害基准,用户可根据实体定位(普通小怪、精英怪、Boss 或守卫者)在此区间上下调整。
负值治疗机制:攻击变回血
这是攻击伤害参数最具特色的行为。帮助文档明确说明:
使用负值将治愈被攻击的实体,而不是伤害它。
在实际游戏逻辑中,当minecraft:attack组件的damage字段为负数时,基岩版引擎会将伤害值以治疗的形式作用于目标。这意味着你可以用同一套攻击行为制作出"治疗者"型实体——例如一只靠近并"攻击"玩家、实际上为玩家恢复生命的友好生物,无需编写额外的治疗逻辑。
一个典型的负值玩法是:将该参数设为-2,使实体每次成功命中后为目标恢复 2 点生命。由于攻击仍然会触发 AI 攻击任务(见下文),该实体会主动寻找目标并持续为其"回血",非常适合制作圣职者、治疗图腾等概念。
生成原理:与基岩版 minecraft:attack 组件的映射
攻击伤害最终通过 FreeMarker 模板写入基岩版实体定义 JSON。在 entity.json.ftl 中:
"minecraft:attack": { "damage": ${data.attackDamage} },即 MCreator 将界面上设置的attackDamage值直接映射为基岩版实体 JSON 中minecraft:attack组件下的damage字段。该组件是基岩版引擎判定实体近战攻击伤害的标准入口,因此此处的数值将原样生效于游戏运行时。
该模板的产物由 beentity.definition.yaml 定义,写入路径为@SRCROOT/entities/@registryname.json,即生成 Add-On 包中的entities目录,文件以实体注册名命名。
与 AI 攻击任务的配合
攻击伤害数值本身只定义伤害量,而实体"何时攻击、以何速度攻击"则由 AI 任务(AI Tasks)控制。在 BEEntity.java 中可以看到新建实体默认注入的 Blockly AI 任务骨架:
<block type="aitasks_container" ...> <next> <block type="attack_on_collide"><field name="speed">1.2</field>...</block> <block type="wander">...</block> <block type="attack_action"><field name="callhelp">FALSE</field>...</block> <block type="look_around">...</block> <block type="swim_in_water">...</block> </next> </block>其中attack_on_collide(碰撞攻击,定义见 attack_on_collide.json)使实体在碰撞接触目标时发起攻击,attack_action(攻击行为,定义见 attack_action.json)控制攻击时的辅助行为。只有当此类攻击任务被启用时,攻击伤害数值才会实际作用于目标。
从 Java 版实体自动转换
如果你已有 Java 版(NeoForge)自定义实体,MCreator 提供了将其迁移为基岩版实体的自动转换器。在 LivingEntityToBedrockConverter.java 中:
beentity.attackDamage = entity.attackStrength;即转换时将 Java 版实体的"攻击强度(attackStrength)"字段直接映射为基岩版实体的攻击伤害,其余血量、速度、生成等参数同步转换(见该转换器的 convert 方法)。因此你只需维护一套实体设计,即可借助转换器在两种平台上获得一致的攻击伤害语义。
小结
- 攻击伤害是基岩版实体行为属性中的核心战斗参数,位于 BEEntityGUI.java 所示的行为面板;
- 其默认值为
3,取值范围-10000 ~ 10000、步长1(见 BEEntity.java); - 典型设计参考:普通小怪约 3 点(僵尸),强力守护者 7~21 点(铁傀儡);
- 输入负值可实现"攻击治疗目标"的特殊机制;
- 生成时数值写入基岩版实体 JSON 的
minecraft:attack组件的damage字段(见 entity.json.ftl); - 需搭配
attack_on_collide等 AI 攻击任务才实际生效,并可通过 LivingEntityToBedrockConverter.java 从 Java 版实体一键迁移。
- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】MCreator
MCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.
相关推荐
MCreator 基岩版方块摩擦力(Friction)参数详解:作用机制、取值范围与源码实现
MCreator 基岩版方块摩擦力(Friction)参数详解:作用机制、取值范围与源码实现 本篇指南围绕 MCreator 的 Bedrock 附加包(Add
低代码代码生成桌面应用游戏开发MCreator 方块硬度(Hardness)参数详解:挖掘耗时、取值范围与生成代码原理
MCreator 方块硬度(Hardness)参数详解:挖掘耗时、取值范围与生成代码原理 导读 本文围绕 MCreator 中「方块硬度(Hardness)」这
低代码代码生成桌面应用游戏开发MCreator 基岩版物品实体生成限制详解:entity_placeable_on(可生成于)参数
MCreator 基岩版物品实体生成限制详解:entity_placeable_on(可生成于)参数 本指南基于 MCreator 开源仓库内置帮助文档 ent
低代码代码生成桌面应用游戏开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考