尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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 中生物实体编辑器的振动Vibration机制展开重点解析「接收振动时When vibration received」流程参数它决定生物在感知到振动如脚步声、方块放置、投掷物落地等游戏事件后执行什么逻辑。文章将结合仓库中该参数对应的 GUI 实现、数据模型与 NeoForge 代码生成模板说明参数的位置、可用依赖变量、生效条件与底层调用链帮助你在制作狱卒式监听型生物或其他振动响应玩法时正确使用这一流程。参数定位在哪个界面找到「接收振动时」该参数的官方帮助文档位于 plugins/mcreator-localization/help/default/entity/on_received_vibration.md指定文档 de_DE 德文版 为其翻译全文语义为This procedure determines what happens when a vibration is received.此流程决定接收振动后发生的事。在 MCreator 界面中它位于生物Living Entity编辑器的「Vibrations」页签。源码 LivingEntityGUI.java 中通过addPage(L10N.t(elementgui.living_entity.page_vibration), vibrationPane)将该页签挂载到生物编辑器界面标签文本来自本地化文件 texts.propertieselementgui.living_entity.on_received_vibrationWhen vibration received与之配套的还有同页签下的另外四个参数本地化文本见 texts.properties界面参数本地化 Key帮助文档defaultSensitive to vibration对振动敏感elementgui.living_entity.sensitive_to_vibrationentity/sensitive_to_vibration.mdVibrational events可监听的振动事件elementgui.living_entity.vibrational_eventsentity/vibrational_events.mdVibration sensitivity radius振动感知半径elementgui.living_entity.vibration_sensitivity_radiusentity/vibration_sensitivity_radius.mdVibration receiving condition接收振动条件elementgui.living_entity.receive_vibration_conditionentity/receive_vibration_condition.mdWhen vibration received接收振动时elementgui.living_entity.on_received_vibrationentity/on_received_vibration.md前置条件流程何时才会被触发「接收振动时」流程并非始终生效它由同页签的一组参数共同控制形成一条完整的触发链路开启振动感知开关勾选Sensitive to vibration。帮助文档 sensitive_to_vibration.md 说明勾选后该生物将像《Minecraft》中的 Warden循声守卫一样对振动敏感。在数据模型 LivingEntity.java 中对应字段public boolean sensitiveToVibration;在 GUI 中该开关通过enableOrDisableFields()LivingEntityGUI.java联动控制其余四个控件的启用状态。选择监听事件Vibrational events指定该生物能够接收哪些游戏事件Game Event产生的振动。若留空则对所有振动敏感见本地化提示Leave empty to make the block sensitive to all vibrations。数据模型字段为NonNullIf(sensitiveToVibration) public ListGameEventEntry vibrationalEvents;。限定感知距离Vibration sensitivity radius给出生物接收振动的最大距离帮助文档 vibration_sensitivity_radius.md可为固定数值或数值型流程。过滤接收条件Vibration receiving condition是一个返回布尔值的条件流程用于决定检测到的这次振动是否应该被该生物接收帮助文档 receive_vibration_condition.md。响应振动当以上条件全部满足时When vibration received即 on_received_vibration.md 所描述的流程才会被执行。流程可用依赖变量你能拿到哪些信息「接收振动时」流程属于服务端Side.SERVER流程。在 GUI 中它的ProcedureSelector通过依赖列表向流程注入上下文数据见 LivingEntityGUI.javaonReceivedVibration new ProcedureSelector(this.withEntry(entity/on_received_vibration), mcreator, L10N.t(elementgui.living_entity.on_received_vibration), AbstractProcedureSelector.Side.SERVER, true, ... x:number/y:number/z:number/world:world/entity:entity/sourceentity:entity/ immediatesourceentity:entity/vibrationX:number/vibrationY:number/vibrationZ:number/distance:number) .makeInline();在生成的 Java 代码中这些依赖被映射为VibrationSystem.User.onReceiveVibration回调中的实际参数见生成模板 livingentity.java.ftl依赖变量类型映射到的 Java 表达式含义x/y/znumberentity.getX()等生物自身坐标worldworldworldServerLevel振动发生所在的服务端世界entityentityentity接收振动的生物自身sourceentityentityvibrationSource引发振动的实体如走动的玩家、投掷弹射物的实体immediatesourceentityentityimmediateSource振动的直接来源实体vibrationX/vibrationY/vibrationZnumbervibrationPos.getX()等振动发生位置坐标distancenumberdistance振动源与接收者之间的距离这意味着你可以在流程中读取谁发出的振动、在哪发出的、离我多远从而做出差异化响应。源码原理从 GUI 参数到生成的 Java 回调勾选Sensitive to vibration后生成模板会为生物类注入一整套VibrationSystem实现见 livingentity.java.ftl 与 模板内 Vibrations 相关代码段// 生成的生物类声明data.sensitiveToVibration 为 true 时 public class ${name}Entity extends ${extendsClass} implements VibrationSystem { ... } // 实例字段动态游戏事件监听器 振动用户 振动数据 private final DynamicGameEventListenerVibrationSystem.Listener dynamicGameEventListener new DynamicGameEventListener(new VibrationSystem.Listener(this)); private final VibrationSystem.User vibrationUser new VibrationUser(); private VibrationSystem.Data vibrationData new VibrationSystem.Data();模板内部类VibrationUser implements VibrationSystem.Userlivingentity.java.ftl逐项实现振动系统的四个关键回调getPositionSource()使用EntityPositionSource以生物的眼睛高度作为振动感知位置getListenableEvents()返回一个TagKeyGameEvent即注册名_can_listen标签详见下一节getListenerRadius()返回感知半径——若你在 GUI 中为Vibration sensitivity radius绑定了数值流程则执行该流程取整返回值否则使用固定值canReceiveVibration(...)若绑定了Vibration receiving condition流程则执行它决定是否接收本次振动否则默认返回trueonReceiveVibration(...)这里就是「接收振动时」流程的落点——将上文表格中的依赖变量注入后执行用户流程。振动系统的驱动与持久化同样由模板生成每 tick 通过VibrationSystem.Ticker.tick(serverLevel, vibrationData, vibrationUser)推进振动数据处理livingentity.java.ftl通过updateDynamicGameEventListener(...)将监听器注册到ServerLevellivingentity.java.ftl通过addAdditionalSaveData/readAdditionalSaveData用VibrationSystem.Data.CODEC将监听器状态写入存档livingentity.java.ftl保证振动状态在存档加载后不丢失。从源码结构看这一整套实现同时存在于 NeoForge 1.21.1 与 NeoForge 26.3 两个生成器对应 generator-1.21.1 与 generator-26.3.x 模板即该功能面向基于 NeoForge 的 Java 版模组生成。监听事件与自动生成的 can_listen 标签生物可监听的事件集不是硬编码的。生成器定义文件 livingentity.definition.yaml 会在满足条件勾选sensitiveToVibration且vibrationalEvents非空时自动生成一个游戏事件标签- tag: GAME_EVENTS:minecraft:registryname_can_listen condition: - sensitiveToVibration - ${data.vibrationalEvents?has_content} entryprovider: getVibrationalEvents()生成的VibrationUser.getListenableEvents()返回的正是这个注册名_can_listen标签livingentity.java.ftl。也就是说你在Vibrational events列表中选择的事件会汇入该标签作为生物振动监听的白名单留空则退化为监听所有振动。事件列表本身来自 MCreator 数据列表 gameevents.yaml覆盖了原版丰富的 Game Event例如BLOCK_PLACE方块放置、BLOCK_DESTROY方块破坏、STEP脚步、SWIM、PROJECTILE_SHOOT投掷物发射、EXPLODE爆炸、ENTITY_DAMAGE、NOTE_BLOCK_PLAY等。此外事件选择控件 GameEventListField.java 还允许直接添加标签并预置了warden_can_listen、shrieker_can_listen、allay_can_listen等原版监听标签作为快捷入口。实战制作一个循声警戒型生物以听到脚步声与方块声响就发出警告的守卫型生物为例操作步骤如下打开生物编辑器切换到Vibrations页签勾选Sensitive to vibration此时其余控件自动启用。在Vibrational events中勾选STEP、BLOCK_PLACE、BLOCK_DESTROY等想要监听的事件如需监听全部保持为空。在Vibration sensitivity radius中设置感知半径固定值或数值流程例如设为 16格。 4.可选在Vibration receiving condition中绑定条件流程例如限定只对特定sourceentity振动来源实体做出响应。新建流程并绑定到When vibration received。流程内可使用依赖变量用sourceentity/immediatesourceentity判断振动来源是谁用vibrationX/vibrationY/vibrationZ定位振动发生点例如让生物向该点移动或朝向该点用distance判断振动远近实现越近反应越强烈的梯度逻辑用entity对生物自身施放效果如发光、召唤粒子、播放音效、进入警戒 AI 状态。生成模组后在游戏中验证让玩家或弹射物在生物附近活动即可看到When vibration received流程被触发。需要注意该流程在服务端执行且仅当生物处于ServerLevel服务端世界时振动系统才会推进模板中通过if (this.level() instanceof ServerLevel ...)判断因此流程中不宜依赖纯客户端 API。关联功能与文件速查方块同样支持整套振动机制对应帮助文档位于 block/on_received_vibration.md 及同目录下block/vibrational_events.md、block/sensitive_to_vibration.md等语义与实体版一致方块侧实现见 BlockGUI.java 与生成模板 blockentity.java.ftl。数据模型字段定义LivingEntity.java。事件选择与标签入口GameEventListField.java。可监听事件全集gameevents.yaml。生成的can_listen标签声明livingentity.definition.yaml。生成代码核心模板livingentity.java.ftl。赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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 动画振幅Amplitude参数详解控制行走动画强度与代码生成原理MCreator 动画振幅Amplitude参数详解控制行走动画强度与代码生成原理 本篇技术指南围绕 MCreator 生物Living Entity低代码代码生成桌面应用游戏开发MCreator 实体动画振幅Animation Amplitude参数详解控制步行动画效果强度MCreator 实体动画振幅Animation Amplitude参数详解控制步行动画效果强度 本篇指南围绕 MCreator「生物实体Living低代码代码生成桌面应用游戏开发MCreator 方块「接收到振动后」流程On Received Vibration完整实战指南MCreator 方块「接收到振动后」流程On Received Vibration完整实战指南 本文以 MCreator 官方帮助文档 plugins/m低代码代码生成桌面应用游戏开发上一篇5分钟掌握libcimbar无需网络用摄像头和屏幕传输文件的奇妙技术下一篇reactstrap部署到VercelNext.js最佳选择创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

FPGA实现AD9653四通道125M ADC采集:LVDS接收与SPI配置

FPGA实现AD9653四通道125M ADC采集:LVDS接收与SPI配置

做过多通道高速采集的朋友应该都有体会,FPGA端真正麻烦的往往不是算法本身,而是ADC芯片的配置、高速串行数据的接收、跨时钟域的处理这些"地基活"。这篇聊聊我用Vivado做的一个AD9653四通道Verilog工程,采样率125M,涉及…

📅 2026/10/17 6:14:10
Multi-DBSCAN多密度聚类算法解析与Python实践

Multi-DBSCAN多密度聚类算法解析与Python实践

做空间聚类的人大概都遇到过这种尴尬:数据里有几坨挤得很紧的点簇,又有几片散得跟芝麻似的稀疏簇。经典的 DBSCAN 只给一套eps和min_samples,半径定小了,稀疏簇被当成噪声;半径定大了,密集簇又粘成一团。我…

📅 2026/10/17 6:09:10
Android逆向入门:APK反编译、重打包与签名工具链实战

Android逆向入门:APK反编译、重打包与签名工具链实战

简介:这套工具面向Android开发、安全测试和逆向学习人员,将apktool、dex2jar、jd-gui、autosign等常用组件整合为一体化逆向助手,能够完成APK反编译、DEX转JAR、Java代码查看、重签名等核心操作,帮助使用者快速分析应用结构、定位…

📅 2026/10/17 6:09:10
MORE NEWS

更多资讯

📰

Linux:信号的认识、信号的产生、信号的保存、信号的处理

一、对信号的宏观认识从实际的场景来举例:红绿灯、上课铃声,电话铃声等都是一种信号的产生,而我们对这种信号处理的方式是后天训练而形成的,如:红灯停,绿灯行。 所以对于OS的信号而言,也就是工程师们内置提前写好的,对于对信号怎么…

📰

内测分发折腾史:从微信传包到海哈游分发

做独立开发这几年,写代码的时间其实只占一半,另一半全耗在了“把包送到测试同学手里”这件事上。今天想聊聊内测分发这个看似不起眼、实则极其磨人的环节,以及我最终怎么用 海哈游分发 把这事儿理顺的。一、那些年我发内测包踩过的坑最开始&a…

📰

一根线的显相:人体拓扑论

—— 关于人体拓扑生长原理及未来仿生体路径的假说 本文为作者(道影子)基于内观体悟所提出的一个思想假说,非实证科学结论。文中涉及 "维性力网"" 人体拓扑 " 等概念,均为本体系内的自洽设定,供同…

📰

小说推文配套漫剧生产,知漫剧高速生成成片方案

引言: 短剧漫剧赛道持续升温,小说推文的玩法也在升级——文字推文配漫剧成片,成了完播率最高的组合。推文拼的不再是文案,是配套产能。 小说推文配漫剧,拼的是生成速度。知漫剧(zz.jiaxunai.cn&#xff09…

📰

WuKongIM v2→v3 迁移元数据读取规则深度解析:设备冷启动凭据、重复会话与空身份记录的迁移策略

即时通讯后端 【免费下载链接】WuKongIM More than just IM 不只是即时通讯(IM) 项目地址: https://gitcode.com/gh_mirrors/wu/WuKongIM 点击查看 免费下载 本文基于 WuKongIM 仓库中的《v2 元数据读取规则与迁移进展》报告(docs/superpowers/reports/…

📰

中标麒麟上CUDA环境搭建与深度学习推理实战

1. 为什么要在中标麒麟上折腾CUDA中标麒麟这套系统,接触过的人心里都有数。它在不少单位的办公终端和服务器上跑了好些年,界面用的是MATE桌面,底层是Linux内核,包管理走的是RPM那一套。平时拿它写文档、跑脚本、做点轻量级开发都没…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬