Bedrock Wiki
  • QQ
  • 原站
新手入门指南
  • Guide
    • 1. 简介
      指南
    • 2. 附加组件详解
    • 3. 软件与准备工作
    • 4. 项目设置
    • 5. 创建自定义物品
    • 6. 创建自定义实体
    • 7. Blockbench:建模、贴图与动画制作
    • 8. 添加战利品表、生成规则与合成配方
  • Extra
    • a. 理解JSON
    • b. 下载示例包
    • c. 故障排除
      帮助
    • d. 高级清单文件指南
    • e. 格式版本
    • f. Android 项目设置
JSON UI
  • General
    • JSON UI 入门指南
      指南
    • 最佳实践
      指南
  • Tutorials
    • Aseprite 动画
    • 保留标题文本
      中级
    • 修改服务器表单
      中级
    • 字符串与数字转换
      中级
    • 按钮与开关
      新手
    • 添加HUD界面元素
      新手
  • Documentation
    • JSON UI 文档
Meta
  • Style Guide
  • 使用JSON模式(Schemas)
  • 实用链接
  • 版本控制
  • 附加包性能优化
  • Q&A
    • GameTest 问答集 2021/08/06
    • 世界生成问答 2024/11/15
    • 延迟渲染技术预览问答 2024/02/23
    • 方块与物品问答 2024/08/30
    • 脚本与编辑器问答 2023/09/22
NBT
  • General
    • .mcstructure
  • Tutorials
    • 扩展结构限制
      简单
    • 教育版中的实验功能
      简单
  • NBT in Depth
    • NBT 库列表
      专家
    • NBT读取示例
      专家
    • 关于NBT(命名二进制标签)
      专家
世界生成
  • General
    • 世界生成入门
      指南
      实验性
    • 特性类型
      实验性
    • 生物群系
      指南
      实验性
  • Tutorials
    • 特征(Feature)的方块条件
      实验性
    • 生成地表区块
      实验性
    • 生成自定义矿石
      实验性
    • 生成自定义结构
      实验性
    • 高度图噪声地形
      实验性
  • Documentation
    • 生物群系标签
动画控制器
  • 动画控制器入门指南
    指南
  • 实体命令
    中级
  • AFK检测器
  • 将Molang变量转换为计分板数值
  • 死亡指令
  • 重生指令
命令
  • General
    • 命令方块入门指南
    • 函数
    • NBT 命令
    • 坐标系
    • 方块状态
    • 理解目标选择器
    • 记分板操作
  • Commands
    • Execute
      简单
    • Playanimation
    • 伤害
    • 播放音效
  • On Event Systems
    • 玩家首次加入时
    • On Player Join
    • 玩家离开时触发
    • 玩家死亡事件
    • 玩家重生事件系统
    • 首次加载世界时
  • Scoreboard Systems
    • 实体计数器
    • 计分板计时器
    • 比较与获取分数
  • Techniques
    • 执行逻辑门
    • MBE - Max的方块实体
    • FMBE - 创建显示实体的新方法
    • 视线检测
    • 移动状态检测
    • 轨道摄像机
  • Useful Creations
    • 多人位置重排系统
      函数
    • 自定义合成台
      简单
实体
  • General
    • Intro to Entities BP
      指南
      新手
    • 实体资源包入门
      指南
      新手
    • 实体问题排查指南
      帮助
    • NPC对话系统
      中级
    • 实体事件
      新手
    • 实体属性
    • 渲染控制器
      新手
    • 生成规则
  • Tutorials
    • 任意坐标系间的坐标转换(世界、实体、骨骼)
      中级
    • 创建船只
      中级
    • 实体手持物品
      中级
    • 实体攻击机制
      中级
    • 实体睡眠机制
      中级
    • 实体碰撞体
      中级
    • 实体移动
    • 实体计时器
      中级
    • 无敌实体
      新手
    • 村庄机制实现指南
    • 检测其他实体
      中级
    • 生成已驯服的实体
      脚本
      中级
    • 视线检测实体
      中级
    • 禁用队友伤害
      中级
    • 范围效果云入门指南
      中级
    • 虚拟实体
      新手
    • 飞行实体控制
      中级
  • Documentation
    • Vanilla Usage Spawn Rules
    • 原版使用组件
    • 抛射物
    • 虚拟组件
    • 运行时标识符
    • 非生物实体运行时标识符
战利品、配方与交易
  • General
    • 交易行为
  • Documentation
    • 战利品表
    • 交易表
    • 合成配方
    • 物品函数
  • Tutorials
    • 随机化结构战利品
      简单
文档
  • Shared Constructs
  • Molang 查询详解
  • Vanilla Materials
    专家
  • 声音定义
  • 文件类型
  • 材质配置文件说明
    专家
  • 菜单分类
  • 资源包文件夹结构
  • 雾效ID
  • 高级Molang指南
方块
  • General
    • 方块入门指南
      指南
      新手
    • 方块组件
    • Block Tags
    • 方块状态
    • Block Traits
    • 方块排列组合
    • 方块事件
      脚本
    • 方块事件迁移指南
      帮助
    • 方块物品化
      中级
    • 方块问题排查指南
      帮助
  • Visuals
    • 方块剔除
      中级
    • 方块模型
      指南
      新手
      简单
    • 方块着色
      简单
    • 方块纹理动画
      中级
    • 方块纹理变体
      中级
  • Tutorials
    • Precise Interaction
      专家
      脚本
    • Precise Rotation
      专家
      脚本
    • 伪方块
      中级
    • 可旋转方块
    • 应用持续效果
      简单
      脚本
    • 矿石战利品表
      简单
      脚本
    • 规避状态值限制
      专家
  • Vanilla Re-Creations
    • 自定义作物
      中级
      脚本
    • 自定义活板门
      中级
      脚本
    • 自定义玻璃
      新手
      简单
      已弃用
    • 自定义釉面陶瓦
      简单
  • Documentation
    • 原版方块模型
      新手
    • 方块形状
    • 方块格式历史
    • 方块音效
服务器
  • Software
    • Bedrock Server Software
  • Protocols
    • Bedrock Protocol
    • NetherNet 协议
    • RakNet 协议
概念
  • contents.json
  • Molang
    中级
  • Rawtext
  • textures_list.json
  • 命名空间
  • 子包
  • 文本与本地化
  • 着色器
  • 纹理图集
    中级
  • 表情符号与特殊字符
  • 覆盖资源
    中级
  • 音效
    中级
物品
  • General
    • 物品入门指南
      指南
      新手
    • 物品组件
    • 物品标签
    • 物品事件
      脚本
    • Item Event Migration
      帮助
    • 物品问题排查指南
      帮助
  • Tutorials
    • Custom Pottery Sherds
    • 可投掷物品
      中级
    • 生成物品
      中级
    • 自定义武器
      简单
    • 自定义盔甲
    • 自定义食物
      简单
      脚本
    • 通过装备物品执行命令
      实验性
      中级
    • 高分辨率物品
  • Documentation
    • 附魔
    • Numerical Item IDs
    • Vanilla Usage Components
    • 原版物品标识符
      已弃用
    • 可附着物
      新手
    • 物品格式历史记录
视觉效果
  • General
    • 实体视觉效果简介
      指南
    • 基岩版建模指南
    • 动画中的特效
    • 基于数学的动画
      中级
    • 材质
      专家
    • 材质创作
      专家
    • 皮肤包制作指南
    • 自定义死亡动画
      中级
  • Tutorials
    • Glowing Entity Texture
    • 受伤动画
      中级
    • 实体纹理动画
      中级
    • 栓绳位置调整
      简单
    • 玩家几何模型
      新手
    • 移除实体阴影
      中级
    • 重绘生成蛋纹理
      新手
  • Ideas
    • 结构展示技巧
粒子效果
  • General
    • 粒子效果入门
      指南
  • Tutorials
    • 禁用粒子效果
      新手
  • Documentation
    • 原版粒子效果
脚本编写
  • General
    • 脚本编程入门
    • 什么是Script API?
    • API 模块
  • Tutorials
    • GameTests
      实验性
    • 简易聊天命令
      实验性
    • 脚本核心功能
    • 脚本表单
      实验性
    • 脚本请求API
      实验性
    • 阻止方块放置
  • Documentation
    • JavaScript 问题排查指南
    • Script Resources
    • Script Watchdog
      实验性
    • TypeScript
    • 引擎环境
虚拟现实
  • General
    • 启用VR模式
      指南
    • 配置资源包
      专家
  • Tutorials
    • 编辑你的第一个模型
      专家

FMBE - 创建显示实体的新方法

FMBE - 创建显示实体的新方法
  • 引言
  • 视频演示
  • 系统架构
  • FMBE使用指南
    • 初始化
    • 变量控制
    • 数值编辑
    • 保存与加载FMBE
    • 消除狐狸音效
  • 精简版FMBE
  • 视频教程

引言 ​

由基岩指令社区(BCC) Discord提供

本文将指导您如何纯用指令在Minecraft基岩版中创建方块显示实体。

首位开发该技术的是u/Maxed_Out10,他仅使用原版指令。该技术虽灵活性较低但更为简单,采用盔甲架实现。查看该方法可参考"MBE - Max的方块实体"页面。

受Max的方块实体(MBE)启发,来自日本指令开发者集会的指令专家@pipi_Spamton、@siratama及其团队开发了一种更灵活可定制的新技术。该方法基于MBE原理,但创新性地利用狐狸的骨骼结构来渲染方块显示。

传统上可称其为方块显示实体或简称"显示实体"。但为致敬u/Maxed_Out10,基岩社区更常称之为"狐狸MBE"(FMBE)。

注意

  • 每个方块显示需消耗1只狐狸。过多狐狸(如同其他实体)会导致服务器卡顿
  • 玩家仍可穿过这些实体,并与之交互(除非加以限制)

视频演示 ​

系统架构 ​

BP/functions/wiki/fmbe/render.mcfunction
yaml
### 重定位与定义FMBE缩放
playanimation @e[type=fox,tag=wiki:fmbe] animation.player.sleeping none 0 "" controller.animation.fox.move
playanimation @e[type=fox,tag=wiki:fmbe] animation.creeper.swelling none 0 "v.xbasepos=v.xbasepos??0;v.ybasepos=v.ybasepos??0;v.zbasepos=v.zbasepos??0;v.xpos=v.xpos??0;v.ypos=v.ypos??0;v.zpos=v.zpos??0;v.xrot=v.xrot??0;v.yrot=v.yrot??0;v.zrot=v.zrot??0;v.scale=v.scale??1;v.xzscale=v.xzscale??1;v.yscale=v.yscale??1;v.swelling_scale1=2.1385*math.sqrt(v.xzscale)*math.sqrt(v.scale);v.swelling_scale2=2.1385*math.sqrt(v.yscale)*math.sqrt(v.scale);" wiki:scale
playanimation @e[type=fox,tag=wiki:fmbe] animation.ender_dragon.neck_head_movement none 0 "v.head_rotation_x=0;v.head_rotation_y=0;v.head_rotation_z=0;v.head_position_x=(v.xbasepos*3741/8000)*math.sqrt(v.xzscale)*math.sqrt(v.scale);v.head_position_y=(10.6925+v.ybasepos*3741/8000)*math.sqrt(v.yscale)*math.sqrt(v.scale);v.head_position_z=(17.108-v.zbasepos*3741/8000)*math.sqrt(v.xzscale)*math.sqrt(v.scale);" wiki:shift_pos

## 定义FMBE旋转
### X轴
playanimation @e[type=fox,tag=wiki:fmbe] animation.warden.move none 0 "v.body_x_rot=90+v.xrot;v.body_z_rot=90+v.yrot;" wiki:xrot
### Z轴
playanimation @e[type=fox,tag=wiki:fmbe] animation.player.attack.rotations none 0 "v.attack_body_rot_y=-v.zrot;" wiki:zrot

## 定义FMBE位置
### X轴
playanimation @e[type=fox,tag=wiki:fmbe] animation.parrot.moving none 0 "v.wing_flap=(16-v.xpos)/0.3;" wiki:xpos
### Y轴
playanimation @e[type=fox,tag=wiki:fmbe] animation.minecart.move.v1.0 none 0 "v.rail_offset.x=0;v.rail_offset.y=1.6485+v.ypos/16;v.rail_offset.z=0;" wiki:ypos
### Z轴
playanimation @e[type=fox,tag=wiki:fmbe] animation.parrot.dance none 0 "v.dance.x=-v.zpos;v.dance.y=0;" wiki:zpos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

commandBlockChain8

注:指定控制器名称可叠加动画而不覆盖前序效果。例如:

  • wiki:scale(其中wiki是命名空间)

首条指令的控制器名称必须为controller.animation.fox.move。

其余指令虽不强制要求相同控制器名,但统一使用可避免与其他playanimation指令冲突。

FMBE使用指南 ​

激活上述系统后,按以下步骤操作:

初始化 ​

在聊天栏输入:

  1. 召唤狐狸并用/replaceitem赋予主手物品模型
    • /summon fox
    • /replaceitem entity @e[type=fox,c=1] slot.weapon.mainhand 0 <物品ID>
  2. 添加wiki:fmbe标签使狐狸呈现为方块形态
    • /tag @e[type=fox] add wiki:fmbe

变量控制 ​

通过客户端动画可调整显示位置、尺寸、角度等。可用变量包括:

  • 位置:
    • v.xpos
    • v.ypos
    • v.zpos
  • 旋转:
    • v.xrot
    • v.yrot
    • v.zrot
  • 缩放:
    • v.scale — 整体尺寸
    • v.xzscale — XZ轴尺寸
    • v.yscale — Y轴尺寸
  • 基准位置:
    • v.xbasepos
    • v.ybasepos
    • v.zbasepos

注意

  • basepos变量移动位置但不改变旋转中心,其效果受角度影响(如v.zbasepos=16相当于相对坐标^^^1)
  • pos和basepos值以1/16方块为单位(16=完整1方块)

数值编辑 ​

使用以下指令结构编辑数值:

  • /playanimation @e[type=fox,tag=wiki:fmbe] animation.player.attack.positions none 0 "" wiki:setvariable

在引号内写入要编辑变量的Molang表达式并赋值。

例如设置xrot为35,ypos为16,scale为1.5:

  • /playanimation @e[type=fox,tag=wiki:fmbe] animation.player.attack.positions none 0 "v.xrot=35;v.ypos=16;v.scale=1.5;" wiki:setvariable

Molang支持使用各类查询和运算符实现复杂动画。详见**Molang文档**。

保存与加载FMBE ​

  1. 保存指令:

    • /execute at @e[type=fox,tag=FMBE,c=1] run structure save wiki:fmbe ~~~ ~~~ true disk false
  2. 加载指令:

    • /structure load wiki:fmbe <目标坐标: x y z>

注:结构名称wiki可自定义。

消除狐狸音效 ​

使用以下指令消除FMBE的狐狸声音:

BP/functions/fmbe/stopsound.mcfunction
yaml
stopsound @a mob.fox.spit
stopsound @a mob.fox.sniff
stopsound @a mob.fox.sleep
stopsound @a mob.fox.screech
stopsound @a mob.fox.hurt
stopsound @a mob.fox.eat
stopsound @a mob.fox.death
stopsound @a mob.fox.bite
stopsound @a mob.fox.ambient
stopsound @a mob.fox.aggro
1
2
3
4
5
6
7
8
9
10

commandBlockChain10

精简版FMBE ​

这是上述系统的三指令压缩版。若不需调整xzscale和yscale,此版本可稍作优化。

BP/functions/wiki/fmbe/render_compressed.mcfunction
yaml
## 重定位与定义FMBE缩放
playanimation @e[type=fox,tag=wiki:fmbe] animation.player.sleeping none 0 "" controller.animation.fox.move
playanimation @e[type=fox,tag=wiki:fmbe] animation.creeper.swelling none 0 "v.scale=1;v.adscale=math.sqrt(v.scale);v.adscaled=2.1385*v.adscale;v.xbasepos=0;v.ybasepos=0;v.zbasepos=0;v.xpos=0;v.ypos=0;v.zpos=0;v.xrot=q.life_time*0;v.yrot=q.life_time*0;v.zrot=q.life_time*20;v.swelling_scale1=v.adscaled;v.swelling_scale2=v.adscaled;" wiki:scale

## 定义FMBE位置与旋转
playanimation @e[type=fox,tag=wiki:fmbe] animation.ender_dragon.neck_head_movement none 0 "v.adjust_xz=8*v.adscaled+v.zbasepos/v.adscaled;v.adjust_y=(-5-v.ybasepos/v.adscaled/v.adscaled)*v.adscaled;v.x=v.xbasepos/v.adscaled;v.y=v.adjust_y;v.z=v.adjust_xz;v.ty=v.y*math.cos(v.xrot)-v.z*math.sin(v.xrot);v.tz=v.y*math.sin(v.xrot)+v.z*math.cos(v.xrot);v.y=v.ty;v.z=v.tz;v.tx=-v.x*math.cos(v.zrot)+v.y*math.sin(v.zrot);v.ty=v.x*math.sin(v.zrot)+v.y*math.cos(v.zrot);v.x=v.tx;v.y=v.ty;v.tx=v.x*math.cos(v.yrot)+v.z*math.sin(v.yrot);v.tz=-v.x*math.sin(v.yrot)+v.z*math.cos(v.yrot);v.x=v.tx;v.z=v.tz;v.head_position_x=v.x+v.xpos/v.adscaled;v.head_position_y=7.48/v.adscale+v.z+v.zpos/v.adscaled;v.head_position_z=v.y-v.ypos/v.adscaled;v.head_rotation_x=90+v.xrot;v.head_rotation_y=v.zrot;v.head_rotation_z=v.yrot;" wiki:posrot
1
2
3
4
5
6

commandBlockChain3

视频教程 ​

贡献者

编辑 FMBE - 创建显示实体的新方法

Bedrock Wiki by Bedrock OSS ,Translate by 8aka-Team

"Minecraft"是Mojang AB的注册商标。

Bedrock OSS、Bedrock Wiki以及 bedrock.dev 与Microsoft及Mojang AB不存在任何隶属关系。

  • 隐私政策
  • 加入QQ社区
  • 参与贡献指南
  • 访问代码仓库