news 2026/10/17 13:28:54

MCreator 实体雷击触发器(When Struck by Lightning)完全指南:配置、依赖与生成代码解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MCreator 实体雷击触发器(When Struck by Lightning)完全指南:配置、依赖与生成代码解析
  • 低代码
  • 代码生成
  • 桌面应用
  • 游戏开发

【免费下载链接】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 中"生物(Living Entity)"元素的被闪电击中(When struck by lightning)触发器展开:它会在自定义生物被雷击的瞬间执行一个流程(Procedure),是制作"雷击变身""闪电召唤掉落"等玩法的基础事件入口。读完本文,你将掌握该触发器的编辑器配置位置、可用的流程依赖变量,以及它在 NeoForge 生成代码中如何通过覆写thunderHit方法落地,从而能独立在 MCreator 工作区中设计并调试此类雷击事件逻辑。

触发器是什么:触发条件与语义

原帮助文档(de_DE 版本 及对应的 zh_CN 版本)对该触发器的定义非常简洁:

当该实体被一道闪电击中时,触发(执行)该流程。

也就是说,只要 Minecraft 世界中存在一个闪电实体(LightningBolt)与你的自定义生物发生"雷击命中"交互,该事件就会被抛出。典型来源包括:自然雷暴天气降下的闪电、玩家使用"引雷(Channeling)"附魔三叉戟召唤的闪电,以及其他模组或指令(如/summon minecraft:lightning_bolt)生成的闪电。

在 MCreator 编辑器中的位置与配置

该触发器属于"生物(Living Entity)"元素的**事件(Events)**区块,与"实体被玩家右击""实体受伤""实体死亡""实体掉落"等触发器并列,集中展示在生物编辑界面的同一面板中。

从源码可以确认它的完整注册方式:在 LivingEntityGUI.java 中,它通过ProcedureSelector构建:

onStruckByLightning = new ProcedureSelector(this.withEntry("entity/when_struck_by_lightning"), mcreator, L10N.t("elementgui.living_entity.event_struck_by_lightning"), AbstractProcedureSelector.Side.SERVER, Dependency.fromString("x:number/y:number/z:number/world:world/entity:entity"));

其中:

  • this.withEntry("entity/when_struck_by_lightning")直接关联到本文所基于的帮助文档路径(plugins/mcreator-localization/help/<语言>/entity/when_struck_by_lightning.md),帮助面板中展示的正是这份说明;
  • 界面显示名取自本地化键elementgui.living_entity.event_struck_by_lightning,例如中文为"实体被雷击时"、德文为Wenn vom Blitz getroffen(见 texts_zh_CN.properties 与 texts_de_DE.properties);
  • Side.SERVER表明该触发器产生的流程运行在服务端,适合执行改变世界状态、伤害实体、掉落物品等逻辑;
  • 参数列表明确声明了该触发器向流程暴露的五个依赖(见下文)。

用户在该选择器中选定的流程,会被保存到生物数据模型LivingEntity的onStruckByLightning字段上(LivingEntity.java),并在界面保存时写回工作区(LivingEntityGUI.java)。

可用依赖变量(Dependencies)

选中该触发器后,在流程编辑器中可用的依赖变量与含义如下:

依赖类型含义
xnumber被雷击实体当前的 X 坐标
ynumber被雷击实体当前的 Y 坐标
znumber被雷击实体当前的 Z 坐标
worldworld实体所在的世界/维度对象,可用于放置方块、生成闪电等操作
entityentity被闪电击中的实体本身

这五个依赖正是 LivingEntityGUI.java 中Dependency.fromString("x:number/y:number/z:number/world:world/entity:entity")所声明的集合。由于雷击事件天然携带位置信息,这类流程最常用的就是"在 (x, y, z) 附近执行区域操作"或"对 entity 执行状态变更"。

生成代码剖析:thunderHit 覆写

选中该触发器并生成模组后,MCreator 会在自定义实体的 Java 源码中覆写 NeoForge/Minecraft 的thunderHit方法。两个 NeoForge 生成器(1.21.1 版模板 与 26.3.x 版模板)的生成逻辑完全一致:

<#if hasProcedure(data.onStruckByLightning)> @Override public void thunderHit(ServerLevel serverWorld, LightningBolt lightningBolt) { super.thunderHit(serverWorld, lightningBolt); <@procedureCode data.onStruckByLightning, { "x": "this.getX()", "y": "this.getY()", "z": "this.getZ()", "entity": "this", "world": "this.level()" }/> } </#if>

这段模板揭示了三个底层事实:

  1. 触发时机:thunderHit(ServerLevel, LightningBolt)是 Minecraft 实体在服务端被闪电击中时由游戏引擎调用的回调。当你的自定义实体遭遇闪电时,该覆写方法即被执行,因此触发器的时机与游戏内"雷击命中"事件完全同步。
  2. 依赖注入方式:模板将流程中使用的x/y/z/entity/world分别映射为this.getX()、this.getY()、this.getZ()、this与this.level()。也就是说,流程运行时拿到的entity就是被雷击的自定义实体实例本身,world即其所在的ServerLevel。
  3. 默认行为保留:覆写方法第一行先调用super.thunderHit(serverWorld, lightningBolt),因此原版"被闪电击中后着火"等默认行为依然生效,用户的流程是在默认行为之后追加执行的自定义逻辑。

模板外层使用<#if hasProcedure(data.onStruckByLightning)>做条件包裹:只有用户确实为该生物选择了流程时,才会生成这段覆写代码,未配置时生成的实体类不包含任何雷击相关逻辑,从而保持生成的类干净精简。

典型使用场景

基于以上依赖与生成机制,该触发器适合实现以下玩法:

  • 雷击进化/变身:流程中判断entity的类型,满足条件时将实体替换为更强的变体,或为实体施加状态效果(如力量、速度);
  • 雷击掉落:在x/y/z坐标生成自定义掉落物、经验球或触发另一个流程;
  • 连锁闪电:通过world在世界中再次召唤LightningBolt,制造二次雷击;
  • 区域事件:将x/y/z传给区域操作,例如雷击点周围方块被烧毁、生成自定义结构等;
  • 玩法保护:检测到雷击后为entity施加防雷效果、恢复生命,实现"避雷针"式的自定义生物特性。

由于流程运行在服务端,这些逻辑天然具备多人联机下的权威性,不需要额外处理客户端同步。

注意事项与适用边界

  • 仅适用于"生物(Living Entity)"元素:从源码看,该触发器只注册于LivingEntityGUI的事件面板中(LivingEntityGUI.java),普通"生物群系"、"物品"等其他元素类型没有此事件;
  • 仅适用于基于实体类的生成器:其生成代码位于 NeoForge 生成器的livingentity模板中,数据包(Datapack)与资源包(Resource Pack)生成器不涉及实体类生成,因此该触发器只在生成 Java 模组时生效;
  • 触发条件是"实体被雷击",而非"闪电生成":若你想在闪电落地的瞬间(无论是否击中实体)执行逻辑,应改用世界/位置类事件或在流程中另行监听闪电实体生成,而非本触发器;
  • 默认雷击伤害/着火行为仍然存在:由于模板先调用super.thunderHit(...),原版雷击伤害与引燃逻辑不会被覆盖,如需完全免疫需在流程中自行处理生命值恢复或清除着火状态。

小结

"实体被雷击时"是 MCreator 生物元素中一个服务端流程触发器,通过 LivingEntityGUI.java 注册、在 LivingEntity.java 中持久化、并由 livingentity.java.ftl 覆写thunderHit生成落地代码。它向流程暴露x/y/z/world/entity五个依赖,是搭建"雷击类"自定义生物玩法最直接、最可靠的事件入口。配合 MCreator 流程编辑器中的条件判断与实体操作块,即可在几分钟内完成一套完整的雷击事件玩法。

  • 低代码
  • 代码生成
  • 桌面应用
  • 游戏开发

【免费下载链接】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
点击查看免费下载

相关推荐

上一篇:USB Army Knife项目架构解析:从硬件抽象到攻击模块
下一篇:vim-slime 目标系统对比:tmux、screen、neovim 等11种环境的配置指南

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 13:27:29

Aria 多语言支持:5 分钟切到母语界面的完整指南

Aria 多语言支持&#xff1a;5 分钟切到母语界面的完整指南 【免费下载链接】Aria 下载可以很简单 项目地址: https://gitcode.com/GitHub_Trending/ar/Aria Aria 自带多语言支持&#xff0c;界面语言可随时切换。不用重装软件&#xff0c;两分钟就能把整个下载界面换成…

作者头像 李华
网站建设 2026/10/17 13:27:27

Android构建系统全解析:Gradle、AGP与依赖管理实践

前阵子有个朋友发来一个求助&#xff1a;他改了build.gradle里的一个依赖版本&#xff0c;然后 sync 就失败了&#xff0c;报错信息是一大段堆栈&#xff0c;里面混杂着 Groovy 语法错误、AGP 的异常提示还有 Gradle 的下载日志&#xff0c;他完全不知道从哪里下手&#xff0c;…

作者头像 李华
网站建设 2026/10/17 13:24:21

VINS-Mono 介绍 PPT 框架拆解:从四层结构到可复现调试清单

简介&#xff1a;这份PPT资源面向视觉SLAM入门者、机器人或自动驾驶方向的学生与工程师&#xff0c;系统梳理VSLAM与VINS-Mono框架的核心脉络&#xff0c;帮助读者快速建立从传感器数据预处理到后端优化的整体认知。内容围绕VSLAM的前端与后端分工展开&#xff0c;前端涵盖光流…

作者头像 李华
网站建设 2026/10/17 13:20:34

Claude Code + MCP 配置实战:从安装到进阶玩法全指南

讲道理&#xff0c;Claude Code 这玩意儿出来有一阵子了&#xff0c;但真正用好它的人真不多。多数人还停留在“命令行里聊天写代码”的阶段&#xff0c;根本没把它当成一个可以无限扩展的开发平台。而让 Claude Code 从一个“能写代码的聊天框”升级成“能操作你整个开发环境的…

作者头像 李华
网站建设 2026/10/17 13:20:08

基于STM32F429与MP2642GR-Z的储能电池主动均衡方案设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 13:18:35

微信网页端复制微信号并唤起App的合规实现方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华