ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

MCreator 基岩版实体(BEEntity)攻击伤害详解:取值范围、负值治疗机制与生成原理

MCreator 基岩版实体(BEEntity)攻击伤害详解:取值范围、负值治疗机制与生成原理
  • 低代码
  • 代码生成
  • 桌面应用
  • 游戏开发

【免费下载链接】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.

项目地址:https://gitcode.com/gh_mirrors/mc/MCreator
点击查看免费下载

导读

本文聚焦 MCreator 基岩版实体(Bedrock Edition Entity,BEEntity)定义中的攻击伤害(Attack Damage)参数,讲解它在实体行为面板中的位置、默认值与取值范围、与 Minecraft 基岩版minecraft:attack组件的映射关系,并揭示其底层代码生成与数据转换机制。读完本文,你将掌握如何为基岩版 Add-On 自定义实体的近战伤害,并学会利用负值实现"攻击反而治疗目标"的特殊玩法。

攻击伤害参数是什么

在 MCreator 的基岩版实体编辑器中,攻击伤害(Attack Damage)指该实体在成功命中另一实体时所造成的生命值扣减量。该参数决定了实体每一次近战攻击的基础伤害数值,直接影响实体在战斗中的威胁程度。

依据官方帮助文档的说明(见 de_DE 帮助文档 与 default 英文帮助文档),其核心语义包含两点:

  1. 伤害数值:这是实体伤害其他单位时造成的伤害量;
  2. 负值治疗:若使用负值,实体攻击时将治愈被攻击的生物,而不是造成伤害。

该帮助文档在中文语言包中的对应界面标签为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.

项目地址:https://gitcode.com/gh_mirrors/mc/MCreator
点击查看免费下载

相关推荐

上一篇:突破显卡性能极限:NVIDIA Profile Inspector深度调校指南
下一篇:Arbor 自主优化运行收尾指南:用科学级 Final Report 模板沉淀可审计的假设树成果

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进