首页 / 资讯中心 / 文章详情

MCreator 实体摔落触发器(Entity Falls)完全指南:依赖参数、底层事件与实战用法

MCreator 实体摔落触发器(Entity Falls)完全指南:依赖参数、底层事件与实战用法 ★ FEATURED ARTICLE
低代码代码生成桌面应用游戏开发【免费下载链接】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 中实体摔落时触发流程这一触发器展开讲解其触发时机、可用依赖参数、基于 NeoForgeLivingFallEvent的底层实现原理并结合仓库源码给出取消摔落伤害、按摔落距离分支处理等实战思路。读完本文你将能够在 MCreator 中熟练配置实体摔落触发器并理解其生成代码的工作机制。该触发器在 MCreator 官方帮助文档中的定位十分清晰当实体摔落时触发一个流程中文帮助条目原文德语版本为Dieser Auslöser löst die Prozedur aus, wenn die Entität fällt.见 de_DE 帮助条目。一、触发器是什么触发时机与配置入口1.1 触发时机实体摔落Entity Falls触发器在任意生物实体发生摔落行为时触发。所谓摔落在 Minecraft 中对应实体从高处落下并产生摔落伤害判定LivingFallEvent的过程——只要实体处于下落状态并触发摔落判定就会执行绑定的流程Procedure。从仓库的本地化资源可以确认该触发器的官方命名英文Entity fallstexts.properties 中trigger.entity_fallsEntity falls实体编辑器中的同名事件选项When entity falls同文件elementgui.living_entity.event_mob_fallsWhen entity falls1.2 配置入口在 MCreator 中该触发器有两大典型使用入口全局触发器Global Trigger选择Entity falls全局触发器创建一条独立流程对世界中的任意实体摔落事件生效实体元素Living Entity在生物实体的 AI/事件配置中选择When entity falls事件对应本地化键elementgui.living_entity.event_mob_falls让该事件仅作用于当前自定义实体。两种入口都会在代码生成阶段产生同一套基于事件订阅的监听逻辑详见第三节区别仅在于作用范围是全局还是限定到具体实体。二、依赖参数详解流程中可用的 7 个变量当流程由该触发器启动时MCreator 会向流程注入一组上下文变量依赖参数供你在 Blockly 流程中直接引用。这些参数由 triggers/entity_falls.json 统一定义参数名数据类型含义生成代码中的取值来源entityentity正在摔落的实体event.getEntity()damagemultipliernumber本次摔落伤害的倍率系数浮点数event.getDamageMultiplier()worldworld实体当前所在的世界event.getEntity().level()xnumber实体摔落时的 X 坐标event.getEntity().getX()ynumber实体摔落时的 Y 坐标event.getEntity().getY()znumber实体摔落时的 Z 坐标event.getEntity().getZ()distancenumber实体本次摔落的距离浮点数event.getDistance()2.1 参数使用要点distance与damagemultiplier是核心业务参数前者代表摔落距离event.getDistance()常用于判断摔得多重后者代表伤害倍率event.getDamageMultiplier()常用于自定义摔落伤害强度。坐标三件套x/y/z在触发时刻实体的坐标快照适合做位置相关的特效、粒子、音效或方块操作。entity与world分别指向触发实体与其所在世界可无缝接入实体管理、世界管理类流程块。注意若实体在摔落判定时不存在event.getEntity() ! null判空失败流程不会执行——生成模板中带有这一前置判空逻辑见 entity_falls.java.ftl。三、底层实现原理从 Blockly 流程到LivingFallEvent订阅3.1 生成器模板事件订阅代码MCreator 的代码生成器为每个触发器准备了一套 FreeMarker 模板.ftl。实体摔落触发器的核心模板位于generator-1.21.1 版模板generator-26.3.x 版模板两个生成器版本的实现完全一致生成的核心 Java 代码逻辑如下EventBusSubscriber public class 流程名Procedure { SubscribeEvent public static void onEntityFall(LivingFallEvent event) { if (event.getEntity() ! null) { // 注入依赖参数 double x event.getEntity().getX(); double y event.getEntity().getY(); double z event.getEntity().getZ(); float damagemultiplier event.getDamageMultiplier(); float distance event.getDistance(); Level world event.getEntity().level(); Entity entity event.getEntity(); // 执行流程主体你的 Blockly 逻辑被编译为 Java 注入此处 execute(event, ...); } } }关键机制说明类上标注EventBusSubscriber方法上标注SubscribeEvent——这是 NeoForgeForge的事件总线订阅机制游戏运行时每当LivingFallEvent被派发该方法都会被回调模板通过event.getEntity().getX()/getY()/getZ()等表达式为流程注入第二节表格中的全部参数流程逻辑你在 MCreator 可视化界面中搭建的 Blockly 积木会被编译成 Java 并替换到模板中execute(...)调用的位置。3.2 事件参数映射eventparameters.yaml生成器中的 eventparameters.yaml26.3 版本同款进一步定义了该触发器可被事件参数机制修改的字段FALL_DISTANCE: - LivingFallEvent - setDistance #float - entity_falls FALL_DAMAGE_MULTIPLIER: - LivingFallEvent - setDamageMultiplier #float - entity_falls这意味着流程执行时不仅可以读取distance与damagemultiplier还可以通过 MCreator 的事件参数机制回写这两个字段对应LivingFallEvent.setDistance(float)与setDamageMultiplier(float)从而直接干预本次摔落事件的最终结算——这是实现摔落伤害增强/减免类玩法最直接的途径。3.3 触发器的声明式定义[triggers/entity_falls.json](https://link.gitcode.com/i/ca34df6066e6540dcaa721ba2314d921)是 MCreator 插件体系中触发器的元数据它声明了两件事dependencies_provided该触发器向流程注入的全部依赖参数及其类型即第二节表格cancelable: true该事件可被取消。四、可取消事件让实体免受摔落伤害entity_falls.json中cancelable: true意味着该触发事件支持被流程中途取消。当你在流程中使用 MCreator 的**取消事件Cancel Event**流程块时生成器会插入如下代码见 _cancel_event.java.ftlif (event instanceof ICancellableEvent _cancellable) { _cancellable.setCanceled(true); }由于实体摔落流程最终通过execute(event, ...)将event对象透传给流程代码流程中的取消事件块可以拿到该事件并将其标记为取消。事件被取消后本次摔落伤害将不会结算——这是实现摔落免疫羽落效果、摔落不受伤的 Boss、防摔特性等的标准做法。除直接取消外也可以结合 3.2 节的damagemultiplier回写把伤害倍率改为0同样可以达到摔落无伤的效果且保留其他摔落逻辑如落地特效、音效继续执行二者语义不同、可灵活取舍。五、实战示例三个可直接上手的流程构思以下流程均在 MCreator 可视化编辑器中搭建无需手写 Java生成代码由上文模板自动完成。示例一摔落伤害免疫最简方案新建全局触发器选择Entity falls在流程画布中拖入取消事件块保存并生成代码。生成后所有实体摔落事件均被取消相当于为全世界实体施加了永久羽落。若只想对特定实体生效可在取消前用如果块判断entity的类型或标签。示例二按摔落距离分级触发利用distance参数判断摔落高度实现摔得越高后果越严重用如果块判断distance 10摔落超过 10 格命中分支中播放音效、生成粒子或通过事件参数把damagemultiplier提升到2.0实现加倍伤害否则分支执行轻量反馈如仅输出一条聊天/日志消息。示例三落地位置触发机关利用x、y、z参数在流程中读取实体落地坐标调用世界管理类流程块如放置方块、触发红石、生成结构可实现踩踏触发的陷阱、压力感应地板、着陆平台机关等。六、多语言帮助体系与文档引用实体摔落帮助条目在 MCreator 的本地化帮助体系中为每种语言各维护一份内容一致地说明实体摔落时触发一个流程。除本文主讲的德语版 when_falls.md 外还包含中文版英文版默认语言版以及法、俄、日、韩、波兰、葡萄牙、越南、繁体中文等十余种语言的对应条目同位于plugins/mcreator-localization/help/语言代码/entity/目录同时触发器的界面文案由 texts.properties 及其各语言变体如texts_de_DE.properties提供其中trigger.entity_falls键对应全局触发器面板中的显示名称elementgui.living_entity.event_mob_falls键对应实体编辑器中的事件选项名。七、注意事项与适用版本适用生成器当前仓库内置的 generator-1.21.1NeoForge 1.21.1与 generator-26.3.xNeoForge 26.3两个生成器均原生支持该触发器模板实现一致均基于 NeoForge 的LivingFallEvent使用旧版 Forge 生成器时事件类名可能不同。实体判空生成代码会在触发前检查event.getEntity() ! null实体不存在时流程不会执行因此流程中不必重复判空但若需访问实体属性仍建议保持防御式编程习惯。坐标语义x/y/z为摔落判定瞬间的坐标快照而非落地后的最终位置涉及落地位置逻辑时请结合实际物理时刻考虑。取消语义取消事件块对所有cancelable触发事件通用仓库中block_place、entity_attacked、player_right_click_block等大量触发器同样声明了cancelable: true同一流程中取消操作作用于当前正在执行的event对象。结语实体摔落触发器虽在帮助文档中仅以一句话概括但底层由LivingFallEvent事件订阅、7 个依赖参数、可取消语义与事件参数回写机制共同支撑是 MCreator 中做摔落类玩法伤害调整、免疫、落地机关、距离检测的核心入口。理解本文所讲的声明定义entity_falls.json、生成模板entity_falls.java.ftl与参数映射eventparameters.yaml三件套你就能举一反三快速掌握 MCreator 中其他同类实体事件的底层原理。赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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 事件触发器详解When entity falls on the block实体落到方块上MCreator 事件触发器详解When entity falls on the block实体落到方块上 本文围绕 MCreator 方块与植物类元素内低代码代码生成桌面应用游戏开发MCreator 方块事件实战理解与配置「实体踩上方块When entity walks on the block」触发器MCreator 方块事件实战理解与配置「实体踩上方块When entity walks on the block」触发器 「实体踩上方块」是 MCrea低代码代码生成桌面应用游戏开发OpenMMO服务器状态持久化SIGTERM优雅关闭全流程解析OpenMMO服务器状态持久化SIGTERM优雅关闭全流程解析 OpenMMO 是一款用 Rust Svelte 构建的开放世界 MMORPG。当运维人员游戏开发AI Agent人工智能上一篇Lobsterpicker 使用教程下一篇新语言规范添加创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站