资讯动态

MCreator 实体“启用 AI 任务“选项详解:开关原理、AI 任务编辑器与 mob base 协同机制

发布时间:2026/10/17 1:56:45 来源:尧图企业网站定制
低代码代码生成桌面应用游戏开发【免费下载链接】MCreatorMCreator 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 生物实体定义中的Enable AI启用 AI 任务选项展开说明该开关在 Java 版生物Living Entity建模中的实际作用、底层代码生成机制以及它与 AI 任务编辑器AI Task Builder、AI 基类AI Base之间的协同关系。读完本文你将掌握该选项的适用场景、如何判断何时应关闭它并能从源码层面理解勾选/取消勾选后生成代码的差异。一、选项位置与基本语义在 MCreator 的生物实体编辑器Living Entity元素中Enable AI是一个位于 AI 参数区域顶部的复选框UI 中同时以帮助按钮挂接本帮助文档条目。从源码看它由LivingEntityGUI中的hasAI复选框承载并通过withEntry(entity/enable_ai)关联到对应帮助文档// src/main/java/net/mcreator/ui/modgui/LivingEntityGUI.java#L139 private final JCheckBox hasAI L10N.checkbox(elementgui.living_entity.has_ai); // src/main/java/net/mcreator/ui/modgui/LivingEntityGUI.java#L749-L752 JPanel aitop new JPanel(new GridLayout(3, 1, 0, 2)); aitop.setOpaque(false); aitop.add(PanelUtils.join(FlowLayout.LEFT, HelpUtils.wrapWithHelpButton(this.withEntry(entity/enable_ai), hasAI)));该复选框与可繁殖Breedable、可驯服Tameable、AI 基类AI Base同处 AI 参数面板顶部是实体 AI 体系的总开关。它对应的数据字段定义在实体数据模型中// src/main/java/net/mcreator/element/types/LivingEntity.java#L180 public boolean hasAI;勾选状态通过hasAI.setSelected(livingEntity.hasAI)加载、通过livingEntity.hasAI hasAI.isSelected()保存见 LivingEntityGUI.java 与 LivingEntityGUI.java。基本语义帮助文档原文要点勾选后实体的 AI 任务AI Tasks会被激活未勾选时在 AI 任务编辑器中定义的所有 AI 任务全部不会生效除非你正在制作某种特殊的技术性实体misc entity否则应当保持该选项启用。二、关闭后 AI 任务为何全部失效代码生成层原理MCreator 的 Java 版生成器NeoForge在生成实体类时直接根据hasAI的值决定两处关键代码。1. 构造器中的setNoAi()调用生成模板在实体构造器中写入// plugins/generator-1.21.1/neoforge-1.21.1/templates/livingentity/livingentity.java.ftl#L97-L100 public ${name}Entity(EntityType${name}Entity type, Level world) { super(type, world); xpReward ${data.xpAmount}; setNoAi(${(!data.hasAI)});当hasAI false时该行编译为setNoAi(true)——原版 Minecraft 中这会直接关闭实体的 AI 更新逻辑包括寻路、目标选择、行为目标等。这一行在neoforge-1.21.1与neoforge-26.3两个生成器中的写法完全一致见 plugins/generator-26.3.x/neoforge-26.3/templates/livingentity/livingentity.java.ftl。2. 条件包裹的registerGoals()与 AI 代码注入模板进一步用#if data.hasAI包裹整个目标注册方法的覆盖// plugins/generator-1.21.1/neoforge-1.21.1/templates/livingentity/livingentity.java.ftl#L203-L223 #if data.hasAI Override protected void registerGoals() { super.registerGoals(); #if aicode?? #if aiblocks?seq_contains(doors_open) || aiblocks?seq_contains(doors_close) this.getNavigation().getNodeEvaluator().setCanOpenDoors(true); /#if ${aicode} /#if #if data.ranged this.goalSelector.addGoal(1, new RangedAttackGoal(this, 1.25, ${data.rangedAttackInterval}, ${data.rangedAttackRadius}f) { ... }); /#if } /#if这里揭示了三层含义${aicode}是 AI 任务编辑器中 Blockly 积木被编译后的 Java 代码。它由LivingEntity#getAdditionalTemplateData()中的BlocklyToJava生成见 LivingEntity.java所用编辑器类型为BlocklyEditorType.AI_TASK注册名为aitasks、起始积木为aitasks_container见 BlocklyEditorType.java。未勾选Enable AI时registerGoals()覆盖方法根本不会被生成自然也不存在注入 AI 积木代码的问题——这就是AI 任务编辑器里定义的任务全部失效的生成层原因。即使勾选了若 AI 积木中用到了开关门任务doors_open/doors_close生成器还会额外把寻路节点评估器设为可开门保证 AI 能实际操作门。三、与 AI 基类AI Base的协同谁会覆盖你的 AI 任务Enable AI复选框下方是AI 基类AI Base下拉框其可选值受数据模型中的LimitedOptions约束// src/main/java/net/mcreator/element/types/LivingEntity.java#L181-L183 LimitedOptions({ (none), Bat, Blaze, Chicken, Cow, Creeper, Enderman, Horse, IronGolem, MagmaCube, Ocelot, Pig, Skeleton, Slime, Spider, Squid, Villager, Witch, Wolf, Zombie }) public String aiBase;选择某个原版生物作为 AI 基类会使你的实体行为像对应的原版生物但同时也会覆盖部分参数如掉落物。因此帮助文档见 entity/base.md建议除非确有需要应保持默认的(none)。对Enable AI而言aiBase有一个重要影响部分 AI 基类的 AI 行为不可自定义。生成器定义中声明了不可修改 AI 基类列表# plugins/generator-1.21.1/neoforge-1.21.1/livingentity.definition.yaml#L25 unmodifiable_ai_bases: [ Bat, MagmaCube, Slime ]对应地LivingEntity在生成 AI 代码时会做判断——若当前aiBase属于该列表则不把 AI 任务编辑器中的积木编译成代码aicode为空字符串并在 UI 中显示一条AI 不可修改的编译提示见 LivingEntity.java 与 LivingEntityGUI.java。也就是说选了蝙蝠/岩浆怪/史莱姆这类基类时Enable AI只能控制其整体 AI 是否激活具体行为由基类决定无法再靠 AI 任务积木叠加。四、什么时候应该关闭 Enable AI帮助文档给出了明确的指导原则除非你在做某种特殊实体否则保持启用。结合源码可以归纳出几类典型场景纯展示/装饰性实体不希望实体自主移动、寻路或攻击只需静态存在如建筑装饰、动画演示物。行为完全由自定义流程Procedure驱动的实体当实体的移动、交互都由实体更新时on tick update等事件流程控制原版 AI 反而可能干扰自定义逻辑。技术性实体misc entity作为其他机制的一部分存在不需要任何自主行为。关闭后请注意两点连带影响实体不会再执行任何registerGoals()逻辑aiBase提供的原版行为同样不会生效AI 任务编辑器中的积木即使搭好也不参与代码生成但积木 XML 仍保存在aixml字段中重新勾选后可恢复生效。五、实战AI 任务编辑器与任务块分类启用Enable AI后真正的行为定义来自 AI 任务编辑器。该编辑器由BlocklyEditorType.AI_TASK定义注册名aitasks在 LivingEntityGUI.java 中通过BlocklyPanel加载并监听变化实时重新编译blocklyPanel.addChangeListener( _ - new Thread(() - regenerateBlockAssemblies(true), AITasksRegenerate).start());任务积木库存放在 plugins/mcreator-core/aitasks/ 目录按功能分为 7 大类以$开头的 JSON 定义分类元数据分类文件代表任务积木$basictasks.json基础行为类$combattasks.jsonattack_entity攻击指定实体、attack_on_collide碰撞攻击、attack_with_range远程攻击等$movementtasks.jsonwander随机游荡、fly飞行、swim_in_water游泳、leap_at_target扑向目标等$targettasks.json目标选择类如follow_entity、follow_owner、watch_closest_entity$parentownertasks.json与主人/亲子相关的跟随、保护类任务protect_owner、fight_as_owner、follow_parent$villagetasks.json村庄行为类move_indoors、doors_open/doors_close/doors_break$othertasks.json其他杂项如panic_when_attacked、restrict_sun、avoid_entity、eat_grass每个任务积木都是一个 JSON 定义文件。以attack_entity为例见 plugins/mcreator-core/aitasks/attack_entity.json它提供insight是否无视遮挡视线、nearby是否仅附近目标、entity目标实体选择和condition附加条件流程等参数并归入combattasks工具盒子。任务积木通常可以串联previousStatement/nextStatement形成从上到下依次执行的 AI 行为序列。六、核心要点速览问题结论Enable AI 不勾选会怎样构造器生成setNoAi(true)registerGoals()覆盖方法不生成AI 任务编辑器内容全部不生效如何重新启用重新勾选即可AI 任务积木 XMLaixml仍保留什么情况应关闭制作无自主行为的装饰性/技术性实体或行为完全由 Procedure 驱动时与 AI Base 的关系AI 基类为Bat/MagmaCube/Slime时 AI 不可自定义aiBase为(none)时行为完全由 AI 任务积木决定生成的代码在哪里看生成工作空间的实体类中构造器内setNoAi(...)与registerGoals()方法七、延伸阅读相关源码索引UI 实现与帮助按钮挂接LivingEntityGUI.java 、LivingEntityGUI.java数据模型字段定义LivingEntity.javaAI 代码编译与模板数据注入LivingEntity.javaNeoForge 代码生成模板1.21.1livingentity.java.ftlNeoForge 代码生成模板26.3livingentity.java.ftl生成器定义中的不可修改 AI 基类livingentity.definition.yamlAI 任务编辑器类型定义BlocklyEditorType.javaAI 任务积木库plugins/mcreator-core/aitasks/相邻帮助文档AI 基类说明 entity/base.md、生物类型说明 entity/behaviour.md赞分享低代码代码生成桌面应用游戏开发【免费下载链接】MCreatorMCreator 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点击查看免费下载相关推荐Taskmaster AI任务协作多用户实时编辑与评论Taskmaster AI任务协作多用户实时编辑与评论 痛点团队协作中的任务管理困境 你是否曾经遇到过这样的场景团队成员各自为战任务状态更新不及时依赖AI Agent开发工具CLIMCPApache Druid任务管理详解Overlord与任务优先级调度机制Apache Druid任务管理详解Overlord与任务优先级调度机制 在实时数据分析场景中任务调度的效率直接影响数据处理的及时性和系统资源利用率。Apa数据库数据分析OLAP大数据实时分析数据仓库后端MCreator 实体行为Behaviour参数完全指南Mob、Creature 与 Raider 的选用逻辑与底层生成原理MCreator 实体行为Behaviour参数完全指南Mob、Creature 与 Raider 的选用逻辑与底层生成原理 本篇指南聚焦 MCreato低代码代码生成桌面应用游戏开发上一篇终极Sei Chain路线图解读探索未来技术突破与生态扩张全景下一篇phenomenon调试与问题排查常见WebGL错误及解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑