MCreator 物品「右键点击」事件详解:onRightClickedInAir 与 onRightClickedOnBlock 的触发机制与 ActionResult 返回值实战
低代码代码生成桌面应用游戏开发【免费下载链接】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 的普通物品Item与工具Tool元素都内置了两个极易混淆的「右键」事件当右键点击空气时右击空气时与当右键点击方块时右击方块时。本文以插件仓库中对应帮助文档 item/when_right_clicked.md 为骨架结合 item/when_right_clicked_block.md 与生成器源码讲清两个事件的触发时机、依赖项、ActionResultTypeSUCCESS/CONSUME/PASS/FAIL的语义以及如何用返回值控制「空中右键」与「方块右键」两个事件的分流。读完你将能精确设计出「右键物品打开 GUI」「右键空气才触发的技能」「右键方块才生效的交互道具」等典型玩法并知道生成后的 Java 代码长什么样。两个右键事件触发时机与坐标差异在物品Item或工具Tool元素的事件列表中MCreator 提供了两个看似相同、实则分工明确的事件。对应本地化文案见 texts_zh_CN.properties 中的elementgui.common.event_right_clicked_air/event_right_clicked_block清楚地体现了差异事件界面文案中文触发条件记录坐标onRightClickedInAir右击空气时实体的位置玩家手持该物品右键且没有对准任何方块实体位置entity.getX/Y/ZonRightClickedOnBlock右击方块时方块的位置玩家手持该物品右键且指针指向某个方块方块位置context.getClickedPos()两个事件在界面上的完整名称分别是「当右键点击时实体的位置」与「当右键点击方块时方块的位置」英文原文为When right-clicked (entity pos.)与When right-clicked on block (block pos.)。这里的“位置”差异是使用中最容易踩坑的地方如果你的流程依赖坐标参数务必确认自己用的是实体坐标还是方块坐标。依赖项Dependencies一览在 ItemGUI.java 中可以看到两个事件注册时声明的依赖项onRightClickedInAir右击空气时x:number / y:number / z:number—— 实体坐标world:world—— 世界对象entity:entity—— 执行右键的玩家itemstack:itemstack—— 手中的物品onRightClickedOnBlock右击方块时x:number / y:number / z:number——方块坐标world:world、entity:entity、itemstack:itemstack额外多出direction:direction被点击方块的朝向/面与blockstate:blockstate被点击方块的方块状态也就是说「右击方块时」事件还向流程额外提供了“点到了哪个面、点中的方块处于什么状态”这两个上下文适合做与方块交互的逻辑例如对草方块施肥、对箱子开锁、根据朝向放置物品等而「右击空气时」事件更适合做施法、举盾、开关装备等不依赖方块目标的逻辑。两个事件各自的生成入口「右击空气时」逻辑在生成时挂载到物品类的use()方法上。以 NeoForge 1.21.1 生成器模板 templates/item/item.java.ftl 为例Override public InteractionResultHolderItemStack use(Level world, Player entity, InteractionHand hand) { InteractionResultHolderItemStack ar super.use(world, entity, hand); // ... 远程武器 / 蓄力 / 右键打开 GUI 等前置逻辑 ... if (hasProcedure(data.onRightClickedInAir)) { onRightClickedInAirProcedure.execute(entity.getX(), entity.getY(), entity.getZ(), world, entity, ar.getObject()); } return ar; }「右击方块时」逻辑则挂在useOn()方法上由公共宏onItemUsedOnBlock生成见 utils/triggers.java.ftl26.3 分支同构见 utils/triggers.java.ftlOverride public InteractionResult useOn(UseOnContext context) { super.useOn(context); // 流程执行后返回 ActionResult若流程未返回值则回退为 SUCCESS return onRightClickedOnBlockProcedure.execute(...) 或 InteractionResult.SUCCESS; }在工具Tool元素中两个事件通过 templates/tool.java.ftl 以相同方式接入use()与useOn()。返回值 ActionResultTypeSUCCESS / CONSUME / PASS / FAIL 的语义「右击方块时」事件是 MCreator 中少数需要或可以返回ActionResultType的事件之一。在 ItemGUI.java 中可以看到该事件注册时指定了返回类型ACTIONRESULTTYPE并且.makeReturnValueOptional()——即返回值可选。可在流程编辑器的「动作结果类型」下拉块中选择其可选值定义在 action_result_type.jsonSUCCESS交互成功。表示该物品确实与方块发生了交互。CONSUME交互成功且消耗这次点击不继续传递。与 SUCCESS 类似但语义上强调“本次点击已被消费”。PASS没有发生交互将点击事件继续传递给后续逻辑如放置方块等默认行为。FAIL交互失败本次点击被阻止。对应的原版枚举为net.minecraft.world.InteractionResult四个值直接映射到其 SUCCESS / CONSUME / PASS / FAIL。不返回任何值时默认是 PASS「右击方块时」帮助文档when_right_clicked_block.md明确说明如果流程没有返回任何值结果将被视为 PASS。这一点在生成宏procedureCodeWithOptResult见 utils/procedures.java.ftl中体现得十分直接#if hasReturnValueOf(object, type) return procedureCode object dependencies/ #-- 流程返回了 ActionResultType -- #else procedureCode object dependencies/ return ${defaultResult}; #-- 未返回回退到默认值 -- /#if而onItemUsedOnBlock宏传入的defaultResult是InteractionResult.SUCCESS——注意这里生成器的“代码回退值”是 SUCCESS与文档描述存在一处细微差别文档语义层面约定“流程未返回值视为 PASS事件继续向后传递”代码回退层面则直接返回 SUCCESS。实际工程中的理解应以生成代码为准未返回值的流程会得到InteractionResult.SUCCESS。若你需要严格的“继续传递”行为请在流程末尾显式返回PASS。用返回值分流让「右击空气时」只在空中触发这是原文档when_right_clicked.md重点强调的核心技巧如果希望「右击空气时」流程只在玩家于空中未对准方块右键时被调用那么「右击方块时」流程必须始终返回 SUCCESS/CONSUME。原理如下当玩家右键时Minecraft 会先尝试对指针指向的方块调用useOn()即「右击方块时」。如果该方法返回 PASS点击事件会被“放行”并继续触发use()即「右击空气时」如果返回 SUCCESS/CONSUME则点击被判定为已处理use()不再被调用因此「右击空气时」不会触发。由此得出两条实用规则想要空中右键生效、方块右键也生效保持默认。右击方块时事件返回 PASS或不返回值use()与useOn()都会执行。只想要空中右键生效方块右键不触发空中逻辑在「右击方块时」流程末尾放置一个「动作结果类型」块并设置为SUCCESS 或 CONSUME。这样对准方块右键时事件被消费空中逻辑不会运行而对空右键时useOn()根本不会被调用空中逻辑照常执行。反之如果「右击方块时」返回 PASS那么玩家右键任何方块时空中右键流程也会一并执行——这常常导致“想点方块触发 A结果空中技能 B 也被触发了”的 bug。实战场景三种典型设计结合 Item.java 中声明的三个字段openGUIOnRightClick、onRightClickedInAir、onRightClickedOnBlock以下是常见玩法与事件配置对照需求onRightClickedInAironRightClickedOnBlock说明右键物品打开 GUI可留空留空使用元素自带「右键时打开 GUI」开关openGUIOnRightClick无需流程。注意若同时绑定 GUI 与两个右键流程生成逻辑会先处理 GUI 打开再执行流程见 item.java.ftl右键方块施肥/放火空中不触发留空执行逻辑返回 SUCCESS借助blockstate判断目标方块direction决定效果朝向空中右键施法/蓄力方块右键不误触施法流程直接返回 SUCCESS/CONSUME满足帮助文档的分流条件生成后的完整 Java 形态NeoForge 1.21.1将上述配置导出为模组后物品类中会同时出现两个重写方法。1.21.1NeoForge生成的代码形如// 空中右键依赖世界、实体坐标、玩家、物品堆 Override public InteractionResultHolderItemStack use(Level world, Player entity, InteractionHand hand) { InteractionResultHolderItemStack ar super.use(world, entity, hand); if (hasProcedure(data.onRightClickedInAir)) { MyItemOnRightClickedInAirProcedure.execute(entity.getX(), entity.getY(), entity.getZ(), world, entity, ar.getObject()); } return ar; } // 方块右键依赖额外包含 blockstate 与 direction Override public InteractionResult useOn(UseOnContext context) { super.useOn(context); MyItemOnRightClickedOnBlockProcedure.execute( context.getLevel(), context.getClickedPos().getX(), context.getClickedPos().getY(), context.getClickedPos().getZ(), context.getLevel().getBlockState(context.getClickedPos()), context.getPlayer(), context.getClickedFace(), context.getItemInHand()); return InteractionResult.SUCCESS; // 若流程返回了 ActionResultType则此处 return 流程结果 }若使用 NeoForge 26.3较新版本线生成器use()的签名改为public InteractionResult use(...)见 templates/item/item.java.ftl但useOn()的接入方式与返回语义保持一致。因此基于不同生成器版本排查右键问题时优先确认InteractionResultHolderItemStack与InteractionResult两种签名差异其余逻辑结构基本相同。常见排查清单坐标用错了空中事件用entity.getX/Y/Z方块事件用context.getClickedPos()不要在方块事件里误取实体坐标做放置偏移。两个事件同时触发确认「右击方块时」是否返回了 PASS或未返回值导致点击被放行后又执行了空中逻辑。返回块类型不匹配ActionResultType 下拉块只能在指定返回类型的事件中使用若流程结构里没有「动作结果类型」块生成代码会走默认回退值。与 GUI 冲突右键打开 GUI 与右键流程共用use()入口若 GUI 打开条件未满足流程仍会继续执行注意用条件块如openGUIOnRightClick的判断隔离。至此两个右键事件的触发边界、返回值语义、分流技巧与生成代码形态均已覆盖。实际开发时建议先在流程末尾显式返回PASS或SUCCESS再结合游戏内行为观察即可快速确定事件流向是否符合预期。赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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 Right Clicked完整指南ActionResult 返回语义与底层实现解析MCreator 方块右击事件When Right Clicked完整指南ActionResult 返回语义与底层实现解析 导读 本文围绕 MCreato低代码代码生成桌面应用游戏开发PokemonRedExperiments事件触发条件get_all_events_reward返回值解析PokemonRedExperiments事件触发条件get_all_events_reward返回值解析 在强化学习Reinforcement Learn强化学习深度学习AI应用MCreator 基岩版Bedrock物品教程用实体放置组件制作右键生成实体的物品MCreator 基岩版Bedrock物品教程用实体放置组件制作右键生成实体的物品 本教程围绕 MCreator 基岩版物品BEItem编辑器中的低代码代码生成桌面应用游戏开发上一篇GHelper 替换 Armoury Crate华硕本性能模式与风扇曲线快速上手下一篇小模型NPU横评EXAONE-3.5-2.4B-Instruct_rai_1.8.0_medusa_1.0_npu vs Qwen3、SmolLM性能与效果终极对比创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

余弦相似度 1.00000000 背后:Restormer-defocus-deblurring-fp32 数值一致性(Parity)验证体系全解析

余弦相似度 1.00000000 背后:Restormer-defocus-deblurring-fp32 数值一致性(Parity)验证体系全解析

【免费下载链接】Restormer-defocus-deblurring-fp32 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Restormer-defocus-deblurring-fp32 点击查看 免费下载 Restormer-defocus-deblurring-fp32 是经典单图**去模糊(defocus deblurring&a…

2026/10/17 1:56:29 阅读更多 →
内网离线部署DeepSeek全攻略:Ollama+多平台+RAG避坑指南

内网离线部署DeepSeek全攻略:Ollama+多平台+RAG避坑指南

简介:这份资源是一份面向政企内网与政府机构IT运维人员、具备基础技术能力爱好者的DeepSeek离线部署指南,重点解决无互联网接入环境下AI大模型落地难、工具链接依赖强、数据安全顾虑多等问题。内容围绕离线资源准备、多平台环境部署、数据投喂与权限管理…

2026/10/17 1:56:29 阅读更多 →
NetSpot 实战:2.4G/5G 信道规划与 Wi-Fi 干扰排查指南

NetSpot 实战:2.4G/5G 信道规划与 Wi-Fi 干扰排查指南

简介:这份文档面向家庭用户与小型企业网络运维人员,系统讲解NetSpot这款Wi-Fi分析工具的使用方法,帮助读者排查信号干扰、定位覆盖盲点并优化无线网络质量。内容围绕Discover与Survey两种模式展开,涵盖信号强度排序、Graph连续性判…

2026/10/17 1:56:29 阅读更多 →

最新新闻

用 qui 快速管理多个 qBittorrent 实例的完整指南

用 qui 快速管理多个 qBittorrent 实例的完整指南

用 qui 快速管理多个 qBittorrent 实例的完整指南 【免费下载链接】qui A fast, single-binary qBittorrent web UI: manage multiple instances, automate torrent workflows, and cross-seed across trackers. 项目地址: https://gitcode.com/GitHub_Trending/qui3/qui …

2026/10/17 6:30:56 阅读更多 →
foobox-cn 完整指南:为 foobar2000 换上现代 DUI 皮肤,外观与效率一次到位

foobox-cn 完整指南:为 foobar2000 换上现代 DUI 皮肤,外观与效率一次到位

foobox-cn 完整指南:为 foobar2000 换上现代 DUI 皮肤,外观与效率一次到位 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 用了多年 foobar2000 的人都知道,它的界…

2026/10/17 6:30:56 阅读更多 →
Win11Debloat 开始菜单模板实操指南:3 种场景统一所有用户的开始菜单

Win11Debloat 开始菜单模板实操指南:3 种场景统一所有用户的开始菜单

Win11Debloat 开始菜单模板实操指南:3 种场景统一所有用户的开始菜单 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…

2026/10/17 6:30:56 阅读更多 →
HBase Region合并实战:从概念、评估、操作到踩坑排查一次讲透

HBase Region合并实战:从概念、评估、操作到踩坑排查一次讲透

接手过集群的人应该都有这种经历:业务表读写量并不算大,但Region数量莫名其妙涨到上千,Master UI上一片飘红,某台RegionServer上的Region数远超其他机器,读请求延迟开始忽高忽低,元数据服务也时不时告警。这…

2026/10/17 6:30:56 阅读更多 →
Android MVP架构详解:从分层原理到面试避坑

Android MVP架构详解:从分层原理到面试避坑

1. 面试中的MVP:为什么几乎每一轮技术面都会问做客户端开发这几年,我发现一个很有意思的现象:不管你是去面初级、中级还是高级岗位,只要聊到架构设计,MVP几乎躲不掉。就算职位描述里写的是MVVM、MVI或者Jetpack全家桶&…

2026/10/17 6:30:56 阅读更多 →
TDA7050 双通道音频功率放大器

TDA7050 双通道音频功率放大器

一、产品概述TDA7050 是一款双通道低电压音频功率放大器集成电路,专为电池供电的便携式音频设备设计。该芯片采用高度集成化架构,内部集成偏置电路、前置放大器、双通道功率输出级及保护电路,无需任何外部元件即可构成完整的音频放大系统。产…

2026/10/17 6:29:56 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →