- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】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.
追踪范围(Tracking Range)是 MCreator 中定义生物实体(Living Entity)时的核心参数之一,它决定了服务器在多大距离内持续向玩家同步该实体的位置与状态。本文围绕该参数在 MCreator 中的数据模型、图形界面入口、Java 版代码生成结果与 Bedrock 版转换行为展开讲解,帮助你在自定义实体时正确设置追踪距离,并理解"设为 0 即完全禁用渲染与碰撞"这一特殊行为的底层原因。
参数定义:该参数控制什么
MCreator 官方帮助文档(de_DE/entity/tracking_range.md 及英文原版 en_GB/entity/tracking_range.md)对追踪范围的定义非常精炼:
该参数控制玩家追踪实体的距离(以方块为单位)。 将该参数设置为 0 则完全禁用实体的渲染和碰撞。
换句话说,trackingRange决定的是"实体在多大半径内会被服务器当作活跃对象持续跟踪并推送给附近玩家"。玩家只有进入这个半径范围内,客户端才会收到该实体的更新数据包,实体才会被渲染出来并参与碰撞计算。
在 MCreator 中的存储与取值范围
追踪范围在 MCreator 数据模型中对应LivingEntity类的trackingRange字段,定义位于 LivingEntity.java:
@Numeric(init = 64, min = 0, max = 2048, step = 1) public int trackingRange;从注解可以提炼出该参数的关键约束:
| 属性 | 值 | 说明 |
|---|---|---|
| 默认值(init) | 64 | 新建实体时的初始值,与 Minecraft 原版多数生物一致 |
| 最小值(min) | 0 | 允许设为 0,此时禁用渲染与碰撞 |
| 最大值(max) | 2048 | 最大追踪距离,单位为方块 |
| 步长(step) | 1 | 只能按整数调整 |
同时,在 LivingEntity.java 的构造函数中,trackingRange也被显式初始化为64,确保任何新建实体都有一个合理的默认追踪距离。
图形界面中的位置:与跟随范围并排
在实体编辑界面中,追踪范围输入框与"跟随范围(Follow Range)"并列显示。对应布局代码位于 LivingEntityGUI.java:
subpane1.add( PanelUtils.join(FlowLayout.LEFT, L10N.label("elementgui.living_entity.follow_range_tracking_range"), HelpUtils.helpButton(this.withEntry("entity/follow_range")), HelpUtils.helpButton(this.withEntry("entity/tracking_range")))); subpane1.add(PanelUtils.gridElements(1, 2, 2, 0, followRange, trackingRange));其中trackingRange输入框由 LivingEntityGUI.java 通过ComponentFromAnnotation.spinner(LivingEntity.class, "trackingRange")根据字段注解自动生成,界面标签文本来自本地化键elementgui.living_entity.follow_range_tracking_range(中文为"跟随范围,追踪范围",见 texts_zh_CN.properties),旁边的问号按钮即链接到本文所依据的帮助文档条目entity/tracking_range。
两个容易混淆的参数:追踪范围 vs 跟随范围
由于两者在界面中并排展示,容易混淆,需要明确区分:
- 追踪范围(Tracking Range):属于
EntityType层面的配置,决定服务器向客户端同步实体信息的半径。它影响的是"玩家能否看到/碰到这个实体"。 - 跟随范围(Follow Range):属于实体 AI 属性(
Attributes.FOLLOW_RANGE),决定生物在多大距离内会发现并继续追击目标。它影响的是"怪物能否追上/感知玩家"。
从代码生成结果可以清晰看到二者落入不同的底层机制。Java 版(NeoForge)中,跟随范围被写入实体属性构造器 livingentity.java.ftl:
builder = builder.add(Attributes.FOLLOW_RANGE, ${data.followRange});而追踪范围则通过EntityType.Builder配置,见 entities.java.ftl:
EntityType.Builder.<${entity.getModElement().getName()}Entity> of(${entity.getModElement().getName()}Entity::new, ${entity.mobSpawningType}) .setShouldReceiveVelocityUpdates(true).setTrackingRange(${entity.trackingRange}).setUpdateInterval(3) .sized(${entity.modelWidth}f, ${entity.modelHeight}f)即最终会调用 Minecraft 原版EntityType.Builder#setTrackingRange(int)接口,直接决定该实体类型在服务端的追踪半径。generator-26.3.x的 NeoForge 版本模板也完全相同(见 entities.java.ftl)。另外可以留意到,模板中投射物(projectile)的追踪范围被固定写死为 64,只有生物实体的setTrackingRange值由工作区中的trackingRange字段动态注入,说明该参数专门针对生物实体开放配置。
设置为 0 的行为:完全禁用渲染与碰撞
帮助文档特别强调:将追踪范围设为 0 会完全禁用实体的渲染和碰撞。这是因为 Minecraft 的服务端-客户端同步机制以追踪距离为前提——当追踪范围为 0 时,服务器不会向任何玩家同步该实体的位置与状态更新,客户端因此既不会渲染它,也无法与之产生碰撞交互。
从代码生成角度,这一设置不会产生任何特殊分支代码,模板中就是简单地把0直接传给setTrackingRange(0)。也就是说,禁用效果完全由 Minecraft 引擎自身的追踪机制实现,而非 MCreator 生成额外逻辑。这一行为可用来制作"完全不可见、无碰撞"的特殊实体(例如纯逻辑占位实体),但在使用前应确认该实体确实不需要任何可见性或交互。
Bedrock 版(Add-On)的映射关系
当工作区生成器为 Bedrock Add-On(生成器插件 generator-addon-26.5x)时,追踪范围并不会直接保留原名,而是由版本转换器映射为 Bedrock 实体组件的"跟随范围"属性。相关转换逻辑位于 LivingEntityToBedrockConverter.java:
beentity.followRangeValue = entity.trackingRange;随后在 Bedrock 实体的 JSON 模板 entity.json.ftl 中输出为:
"minecraft:follow_range": { "value": ${data.followRangeValue} }即在 Bedrock 平台上,追踪范围被复用为minecraft:follow_range组件值。这一点再次说明:追踪范围与跟随范围在语义上相互关联(都决定"实体与玩家的有效距离"),只是在不同平台上落入了不同的底层组件。
集成测试中的覆盖
MCreator 的集成测试数据提供器也会为trackingRange生成随机值参与完整工作区构建验证,见 TestWorkspaceDataProvider.java:
livingEntity.trackingRange = getRandomInt(random, LivingEntity.class, "trackingRange"); livingEntity.followRange = getRandomInt(random, LivingEntity.class, "followRange");说明该参数参与了实体生成链路的自动化验证,其取值范围与注解约束在测试中同样生效。
实践建议小结
- 保持默认值 64适合大多数常规生物,与原版行为对齐。
- 远程 Boss 或超大模型实体可适当增大(如 128 或更高),确保玩家在远处即可看到实体,但需注意更大的追踪范围会带来更多的网络同步开销。
- 设置 0可制作无渲染、无碰撞的隐藏实体,但请确认实体不需要任何可见交互。
- 追踪范围与跟随范围请分开调优:前者决定"能否被看到/碰到",后者决定"能否被 AI 感知/追击"。
- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】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.
相关推荐
MCreator 方块硬度(Hardness)参数详解:挖掘耗时、取值范围与生成代码原理
MCreator 方块硬度(Hardness)参数详解:挖掘耗时、取值范围与生成代码原理 导读 本文围绕 MCreator 中「方块硬度(Hardness)」这
低代码代码生成桌面应用游戏开发MCreator 维度环境光(Ambient Light)参数详解:数值范围、原版参考值与代码生成原理
MCreator 维度环境光(Ambient Light)参数详解:数值范围、原版参考值与代码生成原理 环境光是 MCreator 维度(Dimension)元
低代码代码生成桌面应用游戏开发MCreator 生物护甲值(Armor Base Value)完全指南:参数含义、配置范围与代码生成原理
MCreator 生物护甲值(Armor Base Value)完全指南:参数含义、配置范围与代码生成原理 导读 本篇围绕 MCreator「生物(Living
低代码代码生成桌面应用游戏开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考