打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

目前wiki关闭了自行注册账号的功能,如需注册账号,请查阅Help:注册账号

时装制作简明教程:修订间差异

来自RIA | Wiki
Liziluyu留言 | 贡献
分类
NvgaovO留言 | 贡献
完成70%
第46行: 第46行:
以我们的年猪为例,我们会希望有一个头部晃动的动画,因此头部要有一个专门的分组,命名好head,目的是清晰便于理解。身体和四肢我们就不做动画了,可以分为一个组,也可以干脆不分组,只要不做动画,一个组都没有也是可以的,但当你开始制作更加复杂的模型时,一大堆块混在一起会把你搞疯的,因此还是建议清晰的分开。
以我们的年猪为例,我们会希望有一个头部晃动的动画,因此头部要有一个专门的分组,命名好head,目的是清晰便于理解。身体和四肢我们就不做动画了,可以分为一个组,也可以干脆不分组,只要不做动画,一个组都没有也是可以的,但当你开始制作更加复杂的模型时,一大堆块混在一起会把你搞疯的,因此还是建议清晰的分开。


在一通添加、缩放、移动、旋转块之后,你成功得到了一个小猪模型!
在一通添加、缩放、移动、旋转块之后,你成功得到了一个小猪模型!别忘了把对齐用到的人物模型删除,我们的时装只有这个头饰!


[视频:堆块]
[视频:堆块]
第62行: 第62行:
点击右上角的动画模式,此时右侧只会剩下刚刚分好的组:head、body和包裹他们的总组main,这就是分组的作用,动画模式只能以组为单位进行动作编辑。下文称组为节点,这也是更规范的称谓。
点击右上角的动画模式,此时右侧只会剩下刚刚分好的组:head、body和包裹他们的总组main,这就是分组的作用,动画模式只能以组为单位进行动作编辑。下文称组为节点,这也是更规范的称谓。


首先要添加一个动画,这里我们做一个默认状态下一直摇头的动画,点击左上角的 <big>'''⊕'''</big> 按钮添加动画,命名为parallel0,以此命名的动画将不会被任何其他动画打断,如果想知道还能添加什么类型的动画,请跳转至最后一章:常用资料。
首先要添加一个动画,这里我们做一个默认状态下一直摇头的动画,点击左上角的 <big>'''⊕'''</big> 按钮添加动画,命名为parallel0,以此命名的动画将不会被任何其他动画打断,如果想知道还能添加什么类型的动画,请跳转至最后一章:常用资料。我们需要他一直播放,因此循环类型选择循环播放。单击确定就创建好了。
 
接下来选中parallel0,表示编辑此动画,点击head节点,表示给head添加动画,此时下方会出现head的时间轴,我们来到第0帧,点击“旋转”旁的 + ,就成功添加了一个关键帧,表示在第0帧时,head的旋转姿态应该是当前这样,接下来拖动时间条来到第1秒(或者任意时间),再次单击“旋转”旁的 + ,但是这时候我们要调整一下head的旋转,这里随意调整,只需要知道这样做是表示第1秒时,head会旋转成这个样子,这样就添加了一个简单的动画了!单击空格播放动画检查一下,你会看到head在循环这个旋转动画,但此时的动画比较生硬,因此我们要多加几个关键帧,让head达到来回摆动的效果,因此再添加一个复位的关键帧,以及朝另一个方向摆动的关键帧,最后再复位一次,这样来回摆动的动画就完全做好了!
 
最后按照第一章的操作,把模型导入游戏,记住,你需要选择合适的部位,在这里我们选择头部,导入模型并导出到物品栏,ctrl+p打开时装栏或者直接右键,开启第三人称欣赏你的成品吧!
 
[视频:动画制作]


= '''常用技巧''' =
= '''常用技巧''' =
=== 1.如何制作跟随视角旋转的时装?——nvgaovO ===
待编写
=== 2.如何让你手中的物品出现在时装上?——nvgaovO ===
待编写
=== 3.如何给时装添加音效?——nvgaovO ===
待编写
=== 4.待补充.... ===
待补充...


= '''常用资料''' =
= '''常用资料''' =
第75行: 第93行:
|-
|-
|idle
|idle
|无其他动画播放时播放的动画,会被其他动画打断(如左/右键动画)
|无其他动画播放时播放的动画
|/
会被其他动画打断,无论是否有帧冲突(如左/右键动画)
|适用于待机动画
|-
|-
|parallel0
|parallel0
|覆盖播放的动画,一直播放不会被任何动画打断,但也不会打断其他动画
|'''强覆盖'''播放的动画
|/
一直播放不会被任何动画打断
如果有冲突,也会导致其他动画无法正常播放
|适用于一些默认的动画,比如齿轮旋转
|-
|-
|pre_parallel0-9
|pre_parallel0-9
|初始动画
|'''弱覆盖'''播放的动画
|
如果他的关键帧没有和别的动画冲突,则正常播放
如果冲突,则会被打断
|适用于默认动画在某些情况需要有所变化的情况,比如一直旋转的齿轮突然加速
|-
|-
|rightclick
|rightclick
|右键时触发
|右键时触发
|时装工坊并不支持,这是FST通过kjs脚本执行的动画播放,
|时装工坊并不支持,这是FST通过kjs脚本执行的动画播放
无法执行停下操作播放idle动画,并且使用物品时不会触发,
无法执行停下操作播放idle动画
只有右键空气时触发
当你右键后使用了物品(如扳手右键旋转方块),动画不会播放
只有当右键后,物品本身也没有发挥作用时(如扳手右键空气或其他方块)才会播放
当前有一点小bug,当你使用别的物品右键后再切换至有右键动画的物品,则动画也会播放
|-
|-
|leftclick
|leftclick
|左键时触发
|左键时触发
|时装工坊并不支持,这是FST通过kjs脚本执行的动画播放,
|时装工坊并不支持,这是FST通过kjs脚本执行的动画播放
无法执行停下操作播放idle动画。
无法执行停下操作播放idle动画,此动画无法覆盖第一/第三人称手臂挥舞的动画。
此动画无法覆盖第一/第三人称手臂挥舞的动画。
当前有一点小bug,当你使用别的物品左键后再切换至有左键动画的物品,则动画也会播放
|-
|-
|walk
|walk
第159行: 第184行:
|}
|}


== 所有可用query及示例 ==
== 所有可用查询query、函数及用法示例 ==
 
=== 一、变量绑定(Variables) ===
 
* 所有 “判断是否是xxxx ” 的query,若是则返回1,反之返回0。
* 特殊注意,涉及x、y相关的query,blockbench和mc中xy是相反的,请将x绑定在y上,y绑定在x上。
 
{| class="wikitable"
!query 名
!含义
!用法
!测试情况
|-
|
===== 上下文变量 =====
|
|
|
|-
|<code>anim_time</code>
|动画时间
|获取当前动画播放的时间进度,用于同步动画与逻辑
|✅
|-
|<code>life_time</code>
|生命周期时间
|获取实体 / 对象从创建到现在的时间,用于时效逻辑判断
|✅
|-
|<code>actor_count</code>
|实体数量
|获取当前场景中的实体总数,用于场景负载判断
|
|-
|<code>is_first_person</code>
|是否第一人称视角
|判断当前游戏视角是否为第一人称,用于视角相关逻辑
|
|-
|
===== 世界变量 =====
|
|
|
|-
|<code>time_of_day</code>
|游戏天数
|获取游戏内的天数,用于昼夜周期、事件触发
|
|-
|<code>time_stamp</code>
|时间戳
|获取游戏内的精确时间戳,用于时间相关的精确判断
|
|-
|<code>moon_phase</code>
|月相
|获取当前月相,用于触发月相相关事件或效果
|
|-
|
===== 实体基础变量 =====
|
|
|
|-
|<code>eye_target_x_rotation</code>,
<code>eye_target_y_rotation</code>
|眼睛目标旋转
|获取实体眼睛的目标旋转角度,用于视线追踪
|
|-
|<code>head_x_rotation</code><code>head_y_rotation</code>
|头部旋转
|获取实体头部的旋转角度,用于头部动画同步
|✅
|-
|<code>yaw_speed</code>
|偏航速度
|获取实体偏航方向的旋转速度,用于运动状态判断
|
|-
|<code>ground_speed</code>
|地面速度
|获取实体在地面的移动速度,用于运动状态判断
|
|-
|<code>vertical_speed</code>
|垂直速度
|获取实体的垂直方向速度,用于判断上升 / 下落状态
|
|-
|<code>cardinal_facing_2d</code>
|2D 朝向(东南西北)
|获取实体在 2D 平面的朝向,用于方向相关逻辑
|
|-
|<code>distance_from_camera</code>
|与相机距离
|获取实体到相机的距离,用于 LOD 或渲染优化
|
|-
|<code>modified_distance_moved</code>
|移动距离
|获取实体的修正后移动距离,用于统计或触发事件
|
|-
|<code>walk_distance</code>
|行走距离
|获取实体的行走距离,用于统计或成就触发
|
|-
|
===== 实体状态变量 =====
|
|
|
|-
|<code>has_rider</code>
|是否有骑乘者
|判断实体是否被其他实体骑乘,用于骑乘逻辑
|
|-
|<code>is_in_water</code>
|是否在水中
|判断实体是否处于水中,用于触发水下效果
|
|-
|<code>is_in_water_or_rain</code>
|是否在水 / 雨 / 气泡中
|判断实体是否处于水、雨或气泡环境,用于环境逻辑
|
|-
|<code>is_on_fire</code>
|是否着火
|用于触发燃烧效果
|
|-
|<code>is_on_ground</code>
|是否在地面
|判断实体是否接触地面,用于运动状态判断
|
|-
|<code>is_riding</code>
|是否在骑乘
|判断实体是否正在骑乘其他实体,用于骑乘逻辑
|
|-
|<code>is_sneaking</code>
|是否潜行
|用于触发潜行相关效果
|✅
|-
|<code>is_jumping</code>
|是否跳跃
|用于触发跳跃相关效果
|
|-
|<code>is_spectator</code>
|是否为旁观者
|用于权限或逻辑判断
|
|-
|<code>is_sprinting</code>
|是否疾跑
|用于触发疾跑相关效果
|
|-
|<code>is_swimming</code>
|是否游泳
|用于触发游泳相关效果
|
|-
|
====== 生物实体变量(LivingEntity) ======
|
|
|
|-
|<code>body_x_rotation</code>, <code>body_y_rotation</code>
|身体旋转
|获取生物身体的旋转角度,用于身体动画同步
|✅
|-
|<code>health</code>
|生命值
|获取生物的当前生命值,用于战斗或状态判断
|
|-
|<code>max_health</code>
|最大生命值
|获取生物的最大生命值,用于状态计算
|
|-
|<code>hurt_time</code>
|受伤时间
|获取生物上次受伤的时间,用于无敌帧或状态判断
|
|-
|<code>is_playing_dead</code>
|是否装死 / 濒死
|判断生物是否处于装死或濒死状态,用于触发相关效果
|
|-
|<code>is_eating</code>
|是否进食
|判断生物是否正在进食,用于触发进食相关效果
|
|-
|<code>is_sleeping</code>
|是否睡觉
|判断生物是否处于睡觉状态,用于触发睡眠相关效果
|
|-
|<code>is_using_item</code>
|是否使用物品
|判断生物是否正在使用物品,用于触发物品使用效果
|
|-
|<code>item_in_use_duration</code>
|物品使用持续时间
|获取当前物品已使用的时间,用于持续效果判断
|
|-
|<code>item_max_use_duration</code>
|物品最大使用时间
|获取物品的最大使用时长,用于计算剩余时间
|
|-
|<code>item_remaining_use_duration</code>
|物品剩余使用时间
|获取物品的剩余使用时间,用于触发结束效果
|
|-
|<code>equipment_count</code>
|装备数量
|获取生物的装备数量,用于状态判断或统计
|
|-
|
===== 玩家特定变量 =====
|
|
|
|-
|<code>has_cape</code>
|是否有披风
|判断玩家是否装备披风,用于外观或权限判断
|
|-
|<code>cape_flap_amount</code>
|披风飘动程度
|获取披风的飘动幅度,用于动画同步
|
|-
|<code>player_level</code>
|玩家经验等级
|获取玩家的经验等级,用于等级相关逻辑
|
|}
 
=== 二、函数绑定(Functions) ===
{| class="wikitable"
!query 名
!含义
!用法
!测试情况
|-
|
===== 环境检测函数 =====
|
|
|
|-
|<code>biome_has_all_tags()</code>
|生物群系是否包含所有指定标签
|判断当前生物群系是否包含所有传入的标签
|
|-
|<code>biome_has_any_tag()</code>
|生物群系是否包含任意指定标签
|判断当前生物群系是否包含任意传入的标签
|
|-
|<code>relative_block_has_all_tags()</code>
|相对位置方块是否包含所有标签
|判断相对位置的方块是否包含所有传入的标签
|
|-
|<code>relative_block_has_any_tag()</code>
|相对位置方块是否包含任意标签
|判断相对位置的方块是否包含任意传入的标签
|
|-
|
===== 物品检测函数 =====
|
|
|
|-
|<code>is_item_name_any</code><code>( slot , namespace:item )</code>
|物品名称匹配
|<code>slot</code> 指槽位 可选值(已测试可用):mainhand(主手)、offhand(副手)
<code>namespace:item</code> 指命名空间:物品id 为mc标准物品命名方式
命名空间可以理解为模组名,例如机械动力的土豆加农炮的命名空间命名为:
<code>'create:potato_cannon'</code>
示例:判断主手是否持有土豆加农炮
<code>is_item_name_any('mainhand','create:potato_cannon')</code>
|✅
|-
|<code>equipped_item_all_tags()</code>
|装备物品是否包含所有标签
|判断已装备物品是否包含所有传入的标签
|
|-
|<code>equipped_item_any_tag()</code>
|装备物品是否包含任意标签
|判断已装备物品是否包含任意传入的标签
|
|-
|
===== 位置相关函数 =====
|
|
|
|-
|<code>position()</code>
|获取位置
|获取实体 / 对象的当前坐标位置,返回三维坐标
|
|-
|<code>position_delta()</code>
|获取位置变化量
|获取实体 / 对象的位置变化量,返回三维向量
|
|-
|
===== 物品耐久函数 =====
|
|
|
|-
|<code>max_durability()</code>
|最大耐久度
|获取物品的最大耐久值,用于耐久计算
|
|-
|<code>remaining_durability()</code>
|剩余耐久度
|获取物品的当前剩余耐久值,用于耐久判断
|
|}
[[分类:攻略和指南]]
[[分类:攻略和指南]]

2026年2月3日 (二) 13:28的版本

前言

本页主要是对《时装工坊官方教程》中的高级时装教程的扩展与补充,教程的重点将放在blockbench上,如果你想学习时装工坊游戏内时装制作(体素化(就是很多小方块堆起来)),请参阅时装工坊官方教程:入门实践教程 & 高级时装教程,教程较为详细,适合新人阅读。但美中不足的是,官方教程对blockbench时装制作几乎是一笔带过,很容易让想要制作更花哨精致时装的新人一头雾水,别着急,本篇教程将会从熟悉流程、具体时装制作实例、常用技巧以及常用资料四个方面教会你如何制作你的时装!

在开始学习之前,请准备好:

  1. blockbench 4.12版本(可以从建模社群文件中找到)(请勿使用网页端,是5.0)(打开后请在左上角-文件-首选项-设置-应用里关闭自动更新
  2. 一个单人创造存档(用于游戏内查看效果,要导入到服务器内请参阅:莉亚工坊 - RIA | Wiki中时装提取章节的说明)
  3. 耐心

本教程为傻瓜式教程,只需按教程一步步操作,即可学会制作流程,也因此文中可能不会提及太多其他(比如进阶以及无关的操作),所以如果有类似:“在这一步里我看到了xxx,有什么用,我该不该点击 / 填写?”之类的问题,没有说那就不要做,由于有大量的操作内容,文字能够传达的十分有限,因此请务必结合相应的视频进行理解。本文未提及的问题,请在建模社与热情的群u们讨论解决。

熟悉流程

在学会具体的时装制作之前,我更推荐新人先熟练掌握从bb中导出模型,并导入到游戏内查看效果的流程,因为一个时装的制作,少不了反复制作-导入-查看效果-返回细化-继续导入...这一套来来回回,并且bb中预览效果也和游戏内有较大差别(比如难以查看的第一视角、光影渲染等),所以学会更快更方便的操作整个流程非常有必要。

1.创建并保存一个blockbench模型

首先打开blockbench,点击通用模型-创建新模型,来到模型编辑页,填入文件名,点击确定,这样一个新的模型文件就创建好啦。

但此时这个模型还什么都没有,为了能在游戏内查看到效果,你需要点击右侧的添加块工具,选中此块(cube),并点击左侧的创建纹理按钮,有模型有纹理,这样他就是一个完整的模型了!现在点击左上角的文件-另存为项目,将文件保存在 ...\RiAFst_Autoupdate\armourers_workshop\model-imports 路径(RiAFst_Autoupdate是fst自动更新整合包的实例名,如果你修改了实例名,请找到对应的实例文件夹),这样就大功告成了!

检查你的model-imports文件夹,如果有刚刚保存的 教学模型.bbmodel 文件,就说明我们已经保存成功了!之后保存时,无需再选择另存为文件,只需要选择保存文件,相应的文件即会覆盖更新,不必每次都重新选择对应文件夹,这样做也是为了更迅速更效率的导出!

这么多文字是不是有点头大?文字描述的按钮也并不直观,好在我录制了操作的视频(后面也都会有,不想阅读可以直接查看),连草履虫都能看懂噢!↓↓↓↓↓↓

[视频:创建并保存一个blockbench模型]

2.在游戏内导入模型并查看效果

进入到你的存档,拿出“高级时装工作台”,放置并右击进入GUI界面,首先关注右上角的时装类型,默认选中的是头部,这里我们以方块为例,点击通用-头部即可出现类型选择列表,滚动到底部选中方块,此时中间的模特会变成一个草方块,用于指示方块底部的一格,可以帮助你参考以更好的贴合地面。

按ctrl+i,此时会出现导入菜单,找到刚刚创建的文件:教学模型.bbmodel,选中并单击确定,就可以看到时装被成功导入了,再按ctrl+e,点击确定,物品就成功被导入物品栏中了。

退出此界面,物品栏中已经多出了刚刚导入的时装方块,把它放置出来,小小的,很可爱。

[视频:在游戏内导入模型并查看效果]

3.调整模型后再次导入

刚刚导入的方块过于小了,假设我们想做一个正常大小的方块,此时就需要返回blockbench中进行调整,此处不对blockbench的基础操作进行教学,想要学习可以参考b站视频教程,可以视为mc与blockbench中采用同一个单位,mc的默认资源包中,方块纹理默认尺寸是16x16,因此我们将模型放大至16x16x16,再次导入,即可得到一个与原版方块相同大小的时装方块,此时选择保存项目,进入游戏中导入,放置下来看看,严丝合缝!

[视频:调整模型后再次导入]

具体时装制作实例

本章将带你从堆块、上色到动画效果,教会你如何规范的制作一个有模有样的时装。但请注意你需要有一定的blockbench基础,至少明白如何创建块、分组、使用调整工具、创建纹理、使用上色工具、创建动画、添加关键帧...如果你还不清楚,请自行查找blockbench基础教程(这与时装工坊无关)。

当然如果你不想看也完全米有问题!跟着教学视频一步步操作,也可以实现大概的效果,但是要对于blockbench,视频中能够展现的内容较为有限,编者的水平也有限,如有更好的操作技巧,请多多留言指教。

此文编时,新年将至,不妨我们就做一只 猪咪 年猪头饰,希望大家都能吃好喝好,新的一年白白胖胖多多上工!

1.堆块

在开始堆砌块元素之前,我们要先想好这个物品由哪几部分组成,然后进行专门的分组,这一步对于后面的动画制作十分重要,如果处理不好将会非常麻烦,如何分组?只需要记得,如果你希望一个块(或一群块)能够活动,就要分为一个组,组和组之间可以嵌套包裹,父级组的动画会带动子级组一起活动。要查看具体的分组示例,请下载建模社群文件中的 高级时装部件对照-原版皮肤.bbmodel

因为要制作一个头饰,为了对齐人物头部,编者建议在刚刚的 高级时装部件对照-原版皮肤.bbmodel 的基础上进行修改,这个模型和游戏内的模特是完全对齐的,当你制作通用类的时装时,都可以基于此模型进行制作以达到完美对齐的效果,而无需在游戏内进行调整。

以我们的年猪为例,我们会希望有一个头部晃动的动画,因此头部要有一个专门的分组,命名好head,目的是清晰便于理解。身体和四肢我们就不做动画了,可以分为一个组,也可以干脆不分组,只要不做动画,一个组都没有也是可以的,但当你开始制作更加复杂的模型时,一大堆块混在一起会把你搞疯的,因此还是建议清晰的分开。

在一通添加、缩放、移动、旋转块之后,你成功得到了一个小猪模型!别忘了把对齐用到的人物模型删除,我们的时装只有这个头饰!

[视频:堆块]

2.上色

接下来我们添加纹理,也就是上色,按ctrl+a全选,点击创建新纹理,接下来会弹出一个新建弹窗,名称暂时可以不修改,重要的是这个像素密度,正如字面意义,越大的密度,每个面的分辨率会更高,也就是会更高清,这取决于你,默认16x可以较好的贴合mc的原版风格,当然像素密度也不一定是固定的,你可以通过调整UV大小来更改每个面的分辨率。

创建好纹理后,接下来开始上色,点击右上角的绘画模式,此时编辑工具会发生变化,可以使用画笔、油漆桶、渐变工具等进行上色,选中一个块,按 i 可以暂时隐藏其他块,让你聚焦选中块的上色,熟悉基本操作后,这一步骤考验的是你的绘画能力。

感觉上色困难?我们还编写了一篇上色教程,详细介绍了色彩理论,帮助你更好的学习上色。

[视频:上色]

3.动画制作

点击右上角的动画模式,此时右侧只会剩下刚刚分好的组:head、body和包裹他们的总组main,这就是分组的作用,动画模式只能以组为单位进行动作编辑。下文称组为节点,这也是更规范的称谓。

首先要添加一个动画,这里我们做一个默认状态下一直摇头的动画,点击左上角的 按钮添加动画,命名为parallel0,以此命名的动画将不会被任何其他动画打断,如果想知道还能添加什么类型的动画,请跳转至最后一章:常用资料。我们需要他一直播放,因此循环类型选择循环播放。单击确定就创建好了。

接下来选中parallel0,表示编辑此动画,点击head节点,表示给head添加动画,此时下方会出现head的时间轴,我们来到第0帧,点击“旋转”旁的 + ,就成功添加了一个关键帧,表示在第0帧时,head的旋转姿态应该是当前这样,接下来拖动时间条来到第1秒(或者任意时间),再次单击“旋转”旁的 + ,但是这时候我们要调整一下head的旋转,这里随意调整,只需要知道这样做是表示第1秒时,head会旋转成这个样子,这样就添加了一个简单的动画了!单击空格播放动画检查一下,你会看到head在循环这个旋转动画,但此时的动画比较生硬,因此我们要多加几个关键帧,让head达到来回摆动的效果,因此再添加一个复位的关键帧,以及朝另一个方向摆动的关键帧,最后再复位一次,这样来回摆动的动画就完全做好了!

最后按照第一章的操作,把模型导入游戏,记住,你需要选择合适的部位,在这里我们选择头部,导入模型并导出到物品栏,ctrl+p打开时装栏或者直接右键,开启第三人称欣赏你的成品吧!

[视频:动画制作]

常用技巧

1.如何制作跟随视角旋转的时装?——nvgaovO

待编写

2.如何让你手中的物品出现在时装上?——nvgaovO

待编写

3.如何给时装添加音效?——nvgaovO

待编写

4.待补充....

待补充...

常用资料

动画类型及效果对应

动画名称 动画效果 备注
idle 无其他动画播放时播放的动画

会被其他动画打断,无论是否有帧冲突(如左/右键动画)

适用于待机动画
parallel0 强覆盖播放的动画

一直播放不会被任何动画打断 如果有冲突,也会导致其他动画无法正常播放

适用于一些默认的动画,比如齿轮旋转
pre_parallel0-9 弱覆盖播放的动画

如果他的关键帧没有和别的动画冲突,则正常播放 如果冲突,则会被打断

适用于默认动画在某些情况需要有所变化的情况,比如一直旋转的齿轮突然加速
rightclick 右键时触发 时装工坊并不支持,这是FST通过kjs脚本执行的动画播放

无法执行停下操作播放idle动画 当你右键后使用了物品(如扳手右键旋转方块),动画不会播放 只有当右键后,物品本身也没有发挥作用时(如扳手右键空气或其他方块)才会播放 当前有一点小bug,当你使用别的物品右键后再切换至有右键动画的物品,则动画也会播放

leftclick 左键时触发 时装工坊并不支持,这是FST通过kjs脚本执行的动画播放

无法执行停下操作播放idle动画,此动画无法覆盖第一/第三人称手臂挥舞的动画。 当前有一点小bug,当你使用别的物品左键后再切换至有左键动画的物品,则动画也会播放

walk 走路时触发 /
run 跑步时触发 /
jump 跳跃时触发 /
sneak 潜行(下蹲)静止时触发 /
sneak_walk 潜行(下蹲)走路时触发 /
swim 在水中静止(站立)时触发 /
swim_walk 在水中行走/游泳时触发 /
fly 创造飞行时静止触发 /
fly_walk 创造飞行时移动触发 /
fall_fly 使用鞘翅飞行时触发 /
ride 骑乘/坐下时触发 使用按键坐下将不会触发此动作,只有坐在椅凳、载具、生物上可以。
boat 乘坐船支时触发 /
crawl 趴下/匍匐静止时触发 /
crawl_walk 趴下/匍匐移动时触发 /
climb 攀爬时触发 /

所有可用查询query、函数及用法示例

一、变量绑定(Variables)

  • 所有 “判断是否是xxxx ” 的query,若是则返回1,反之返回0。
  • 特殊注意,涉及x、y相关的query,blockbench和mc中xy是相反的,请将x绑定在y上,y绑定在x上。
query 名 含义 用法 测试情况
上下文变量
anim_time 动画时间 获取当前动画播放的时间进度,用于同步动画与逻辑
life_time 生命周期时间 获取实体 / 对象从创建到现在的时间,用于时效逻辑判断
actor_count 实体数量 获取当前场景中的实体总数,用于场景负载判断
is_first_person 是否第一人称视角 判断当前游戏视角是否为第一人称,用于视角相关逻辑
世界变量
time_of_day 游戏天数 获取游戏内的天数,用于昼夜周期、事件触发
time_stamp 时间戳 获取游戏内的精确时间戳,用于时间相关的精确判断
moon_phase 月相 获取当前月相,用于触发月相相关事件或效果
实体基础变量
eye_target_x_rotation,

eye_target_y_rotation

眼睛目标旋转 获取实体眼睛的目标旋转角度,用于视线追踪
head_x_rotationhead_y_rotation 头部旋转 获取实体头部的旋转角度,用于头部动画同步
yaw_speed 偏航速度 获取实体偏航方向的旋转速度,用于运动状态判断
ground_speed 地面速度 获取实体在地面的移动速度,用于运动状态判断
vertical_speed 垂直速度 获取实体的垂直方向速度,用于判断上升 / 下落状态
cardinal_facing_2d 2D 朝向(东南西北) 获取实体在 2D 平面的朝向,用于方向相关逻辑
distance_from_camera 与相机距离 获取实体到相机的距离,用于 LOD 或渲染优化
modified_distance_moved 移动距离 获取实体的修正后移动距离,用于统计或触发事件
walk_distance 行走距离 获取实体的行走距离,用于统计或成就触发
实体状态变量
has_rider 是否有骑乘者 判断实体是否被其他实体骑乘,用于骑乘逻辑
is_in_water 是否在水中 判断实体是否处于水中,用于触发水下效果
is_in_water_or_rain 是否在水 / 雨 / 气泡中 判断实体是否处于水、雨或气泡环境,用于环境逻辑
is_on_fire 是否着火 用于触发燃烧效果
is_on_ground 是否在地面 判断实体是否接触地面,用于运动状态判断
is_riding 是否在骑乘 判断实体是否正在骑乘其他实体,用于骑乘逻辑
is_sneaking 是否潜行 用于触发潜行相关效果
is_jumping 是否跳跃 用于触发跳跃相关效果
is_spectator 是否为旁观者 用于权限或逻辑判断
is_sprinting 是否疾跑 用于触发疾跑相关效果
is_swimming 是否游泳 用于触发游泳相关效果
生物实体变量(LivingEntity)
body_x_rotation, body_y_rotation 身体旋转 获取生物身体的旋转角度,用于身体动画同步
health 生命值 获取生物的当前生命值,用于战斗或状态判断
max_health 最大生命值 获取生物的最大生命值,用于状态计算
hurt_time 受伤时间 获取生物上次受伤的时间,用于无敌帧或状态判断
is_playing_dead 是否装死 / 濒死 判断生物是否处于装死或濒死状态,用于触发相关效果
is_eating 是否进食 判断生物是否正在进食,用于触发进食相关效果
is_sleeping 是否睡觉 判断生物是否处于睡觉状态,用于触发睡眠相关效果
is_using_item 是否使用物品 判断生物是否正在使用物品,用于触发物品使用效果
item_in_use_duration 物品使用持续时间 获取当前物品已使用的时间,用于持续效果判断
item_max_use_duration 物品最大使用时间 获取物品的最大使用时长,用于计算剩余时间
item_remaining_use_duration 物品剩余使用时间 获取物品的剩余使用时间,用于触发结束效果
equipment_count 装备数量 获取生物的装备数量,用于状态判断或统计
玩家特定变量
has_cape 是否有披风 判断玩家是否装备披风,用于外观或权限判断
cape_flap_amount 披风飘动程度 获取披风的飘动幅度,用于动画同步
player_level 玩家经验等级 获取玩家的经验等级,用于等级相关逻辑

二、函数绑定(Functions)

query 名 含义 用法 测试情况
环境检测函数
biome_has_all_tags() 生物群系是否包含所有指定标签 判断当前生物群系是否包含所有传入的标签
biome_has_any_tag() 生物群系是否包含任意指定标签 判断当前生物群系是否包含任意传入的标签
relative_block_has_all_tags() 相对位置方块是否包含所有标签 判断相对位置的方块是否包含所有传入的标签
relative_block_has_any_tag() 相对位置方块是否包含任意标签 判断相对位置的方块是否包含任意传入的标签
物品检测函数
is_item_name_any( slot , namespace:item ) 物品名称匹配 slot 指槽位 可选值(已测试可用):mainhand(主手)、offhand(副手)

namespace:item 指命名空间:物品id 为mc标准物品命名方式 命名空间可以理解为模组名,例如机械动力的土豆加农炮的命名空间命名为: 'create:potato_cannon' 示例:判断主手是否持有土豆加农炮 is_item_name_any('mainhand','create:potato_cannon')

equipped_item_all_tags() 装备物品是否包含所有标签 判断已装备物品是否包含所有传入的标签
equipped_item_any_tag() 装备物品是否包含任意标签 判断已装备物品是否包含任意传入的标签
位置相关函数
position() 获取位置 获取实体 / 对象的当前坐标位置,返回三维坐标
position_delta() 获取位置变化量 获取实体 / 对象的位置变化量,返回三维向量
物品耐久函数
max_durability() 最大耐久度 获取物品的最大耐久值,用于耐久计算
remaining_durability() 剩余耐久度 获取物品的当前剩余耐久值,用于耐久判断