更新记录
每个版本的更新内容与发布日期。升级方式:停服,替换 JAR,启动。配置文件会自动补上新增项目。
开服信息统一格式
- 优化开服信息改为与本系列插件相同的格式:标题下一行显示「[CloudModel] 云模型 v1.6.2 已启用」,再一行显示服务器版本、模型数量、显示模式等统计
- 修复开服侦测的系列插件名称:StarBag 显示为「星月行囊」
开服侦测系列插件、后台讯息整理
- 新增开服完成后在后台印出云模型启动横幅:版本、Minecraft 版本、已载入的模型数量与自由旋转状态,并列出侦测到的本系列插件(云动作、云时装、云血条会写出与云模型的联动内容)
- 优化后台只在需要你处理时才出现警告:模型 display 数量的效能提示、网格烘焙统计改为一般讯息
- 优化授权讯息整理:未填写授权码、暂时连不上授权服务器(会每 60 秒自动重试)、使用离线授权都改为一般讯息;只有授权码错误、过期或被停用才显示警告
网格时代,正式降临 —— Blockbench 网格模型原样上服
这是云模型诞生以来最大的一次更新。那些在 Blockbench 里用网格(mesh)雕出来的高精度模型——弧形的披风、雕花的铠甲、层层叠叠的发丝——过去只能忍痛转成方块,换来满屏的锯齿和马赛克。从今天起,不必了:把 .bbmodel 直接丢进 blueprints,玩家在游戏里看到的,就是你在 Blockbench 里亲手做出来的样子。不装任何模组,不改一个三角形。
34,935三角形的骑士,一次读进服务器
0 失真外观与 Blockbench 逐张对照一致
2.5 倍10 只同屏时的帧数(对比原样转换)
0.6 秒第二次开服的载入时间(快取)
- 新增Blockbench 网格(mesh)全面支持:读取时把网格换成任意角度的薄片,贴图照网格的 UV 逐像素重 新烘焙,三角形以外完全透明——斜面是直的、曲面是顺的,告别锯齿与马赛克。需要 1.21.11 起的客户端(
resource-pack.free-rotation开启) - 新增同一个骨骼仍然只占一个 display:网格面再多也不会多出展示实体,动画、骨骼、技能全部照旧
- 优化无损瘦身:真正同平面的面自动合成一片;同一骨骼内从 48 个方向都看不到的面自动拿掉。34,935 个三角形的骑士从 14,372 片降到 6,195 片,画面一个像素都不少
- 优化同屏更多大型模型:10 只骑士同时出现,帧数从 26 提升到 65;20 只从 13 提升到 28
- 优化秒开:网格烘焙结果存进快取,下次开服、
/cm reload直接读取(7.3 秒 → 0.6 秒) - 新增封闭的网格只画正面、有开口的网格(披风、布料)自动双面,与 Blockbench 预览一致
- 新增
resource-pack.mesh.max-faces:想要再更流畅,可以设定每个模型最多几片(会稍微失真);texel-density:网格贴图的清晰度
模型可见距离 vr:第一人称武器第三人称不再显示
- 新增MythicMobs
model{}支持vr(viewrange)可见距离倍率,与 ModelEngine 相同。第一人称武器包用vr=0.025:只有自己第一人称看得到手和地上的范围指示器,按 F5 第三人称、或其他玩家看你时都不显示(以前整组手会浮在玩家身旁)
修复新版 26.2 所有模型隐形、多条血的王取消死亡后消失
- 修复较新的 Paper 26.2 构建(内置 JOML 1.10.9)上所有模型都不显示,后台出现
模型 X 更新失败,已移除: NoSuchMethodError: Quaternionf.dot:JOML 1.10.9 改了这个方法的参数类型。云模型不再依赖它,并在建置时逐一检查用到的 JOML 方法在 1.20 ~ 26.x 各版本内置的 JOML 里都存在 - 修复MythicMobs
~onDeath用cancelevent取消死亡时(多条血的王:取消死亡再补满血),不再播放死亡动画、模型不再消失
动画时间轴脚本、动画切换不再闪、名牌插件共存
- 新增动画时间轴(Effects)的脚本关键帧
mm:技能名称与音效关键帧照样执行,与 ModelEngine 相同(例如第一人称武器的蓄力射击刀光、表情音效) - 修复自动动画切换(idle ↔ walk 等交叉淡换)时,两段动画都隐藏的骨骼(缩放 0 的特效)会闪出来、手臂瞬间偏向原本的姿势:新动画第一个 tick 的淡入权重没有前进,两段权重相加少了 1/4。现在交叉淡换中权重一直相加为 1
- 修复第一人称武器蹲下时(例如 Shift 蓄力的范围指示器)位置偏高:与 ModelEngine 相同固定用站立时的乘客座位高度,模型跟着镜头一起降
- 修复玩家身上套了模型时,CustomNameplates、PlayerTitle 等插件用封包挂在玩家头上的名牌 / 称号会被挤掉、卡在原地:云模型送乘客封包时会一并带上其他插件加的乘客
ModelEngine 4 的第一人称武器与玩家肢体
- 新增支持 ModelEngine 4 的第一人称 / 玩家模型技能:
animatemodel(技能直接控制骨骼)、pairmodel(对指定玩家强制显示 / 隐藏)、renderinit与model{init=false}、modelplayerskin(手臂画上玩家皮肤)、lockmodel(锁住转向,以前只是接受参数)、model{seeself}。ModelEngine 的第一人称武器包(例如 EliteCreatures 的动画武器)技能档不用改,与 ModelEngine 实测对照(1.21.4、26.2)位置与挥砍动作逐格相同,见 [第一人称与玩家模型](./mythicmobs.md#第一人称与玩家模型) - 新增骨骼标签
limb[type=...]_:玩家肢体(头、身体、上臂、前臂、大腿、小腿,一般 / 细手臂),用资源包逐像素上色画玩家皮肤,不需要 MineSkin 之类的外部服务 - 优化玩家身上的整 个模型
billboard:与 ModelEngine 相同,零件照常骑在玩家身上、整组绕乘客座位转向镜头(第一人称武器靠这个锁在视角前,移动不延迟)
资源包变动时自动让 CraftEngine 重新生成
- 修复CraftEngine 合并云模型资源包时,重开服 CraftEngine 不会重新生成资源包,玩家拿到的还是旧的:升级 1.4.0(零件编号改变)后斜片消失、出现别的贴图。现在云模型的资源包内容有变动(换模型、改设置、升级云模型)就在开服完成、
/cm reload完成时自动执行/ce reload all,内容没变不会执行 - 新增新设置
resource-pack.auto-reload-craftengine(默认true)
1.21.11 起一个骨骼一个 display
- 新增新版客户端(1.21.11 起)的物品模型支持方块任意角度、多轴旋转:资源包直接写入这种旋转,同一个骨骼的方块合成一个 display,不再按旋转角度拆开。实测买家的刀光特效 43 个 display → 9 个,整台测试服 2887 → 2002 个,封包与客户端负担跟着减少;画面与以前逐像素相同(1.21.11、26.2 客户端实测)
- 新增新设置
resource-pack.free-rotation(默认auto: 服务器 1.21.11 以上、没装 ViaBackwards / ViaRewind 时开启)。群组服在代理端用 ViaBackwards 让旧版客户端进来时请改成false,见 [设置](./config.md#方块自由旋转)
onend 无缝衔接下一段
- 优化
state{}的onend默认提早 2 tick 执行(新参数oeoffset/oeo,0= 播完才执行):技能排到主线程、新模型送到画面各要 1 tick,以前下一段会晚 2 tick(约 0.1 秒)才出现,中间有空窗;现在实测 0 毫秒无缝接上
移动中的逐格特效恢复平滑
- 修复1.2.2 起,移动中的逐格特效(例如
bulletType=MEG抛射物子弹上的刀光)每换一格会顿一下、平滑效果变差:刚出现的那一格直接到位,比其他还在插值的零件超前一格。现在刚出现的零件先放到上一刻该在的位置、再和其他零件一起平滑移动;原地不动的特效照样不会从中心滑出来
state{} 播完时执行技能(onend)
- 新增
state{}新增onend(缩写oe):动画播完时执行一个 MythicMobs 技能,例如state{mid=boss;s=attack;loop=once;oe=Boss_AttackEnd}。循环动画、中途被停掉都不执行,见 [动画播完时执行技能](./mythicmobs.md#动画播完时执行技能onend)
展示实体上的逐格特效不再从中心滑出来
- 修复模型套在展示实体(
ITEM_DISPLAY等,例如summon{}召唤的特效实体)上、或 billboard 零件:逐格动画(step 缩放 0 / 1 切换)的每一格出现时,零件会从骨骼中心滑到该在的位置,斜片看起来「抽搐」、最后都飞向中心。现在零件出现、第一次显示时位置直接到位(缩放本来就直接到位,位置插值之前漏掉了)
召唤出来的特效一出现就朝向正确
- 修复技能召唤的实体(例如
summon{}在@Forward生成的特效怪)套上模型后,模型先朝 0° 再慢慢转到实体的方向,刀光等特效出招时会甩一下、看起来像抽搐:刚生成的生物现在照原版客户端的做法,身体朝向直接对齐实体朝向,模型一出现就朝向正确(与 ModelEngine 相同)
兼容 MCPets 等只支持 ModelEngine 的插件
- 新增新增 ModelEngine 兼容层(另一个 jar,插件名称 ModelEngine):只支持 ModelEngine 的插件(例如 MCPets)可以直接改用云模型,见 [兼容 ModelEngine 插件](./meg-plugins.md)
- 新增骑乘操控:经由兼容层骑上的驾驶照 ModelEngine 的
walking/force_walking/flying/force_flying移动模型,速度看怪物的移动速度属性;模型没有mount骨骼时直接骑在怪物身上 - 新增名牌:ModelEngine 的
tag_name名牌(例如 MCPets 的宠物名称)显示在tag_name骨骼,不会和实体名称重复 - 优化座位改成与 ModelEngine 相同的做法:服务器上乘客直接骑在模型的实体身上,玩家看到的座位跟着骨骼走;不再每 tick 传送乘客(以前会让 MCPets 这类插件把玩家放下来)
- 修复下坐骑时其他插件在事件里又放人下来,会出现 ConcurrentModificationException
名称高度与开关
- 修复模型里有很高的方块(光环、特效)时,名称被推到最上面:名称高度改成与原版、ModelEngine 相同——有
tag_name骨骼在那根骨骼的位置,有hitbox骨骼在它上方 0.5 格,否则在实体碰撞箱上方 0.5 格 - 修复同一只生物套了好几个模型时会出现好几个名称,现在只显示一个
- 新增
model{}新增shownames(sn):个别生物不显示名称,例如model{mid=npc;shownames=false} - 新增
model{}新增nameoffset(nh)与 configrender.name-offset:名称高度再往上(负数往下)几格
套上模型的生物照样显示名称
- 修复生物套上模型后名称(MythicMobs 的
Display、自订名称)不见了:原版在实体隐形、或实体身上有乘客时都不显示名称,现在由云模型代为显示在模型上方,规则同原版——永远显示(AlwaysShowName)时一直显示,否则准心对准时才显示 - 新增玩家型的 Citizens NPC 也会显示名称,照 NPC 的名牌设定(显示 / 不显示 / 准心对准才显示)
- 优化名称高度:模型有
hitbox骨骼时在它上方,否则在实体与模型较高的那一个上方;盔甲架原本就会显示名称,不重复显示。可用render.show-names: false关闭
关键帧算式与 Blockbench 一致
- 修复关键帧的值只填了一半(例如
-、1-、*)时,与 Blockbench 相同把缺少的数字当成 0,/cm reload不再出现「无法解析的表达式」警告;以前缩放通道会用 1 代替,和 Blockbench 看到的不一样(Blockbench 是 0,那一格会缩到看不见)
ModelEngine 技能全面补齐
- 新增ModelEngine 的
changepartremapmodel(remap)submodelmountmodeldismountmodeldismountallmodel(dismountall)bindhitboxsetmodeltaglight技能、目标选择器@ModelPart(LOCAL / MODEL / GLOBAL 偏移)@ModelPassengers@MountedModel、条件ModelHasPassengers全部可用,bodyclamp不再报错。从 ModelEngine 搬过来的技能文件开服不再出现Failed to load custom mechanic / targeter / condition - 新增换零件:骨骼换成另一个模型的方块(换装、换武器、Boss 二阶段),动画进度不中断;结构相同的模型互换时只换物品、画面不闪
- 新增座位:玩家或怪物坐在模型的
p_骨骼上并跟着动画移动(Boss 抓人、荡秋千);名牌骨骼tag_显示文字;碰撞箱骨骼绑定 MythicMobs 怪物 - 新增骨骼 ID 与 ModelEngine 相同:技能里写去掉标签的名称(例如
h_head写head、p_seat写seat) - 修复
b_/ob_碰撞箱骨骼、ModelEngine 玩家肢体骨骼的方块不再被画出来;g_幽灵骨骼平时不显示,换零件后才看得到(与 ModelEngine 相同) - 修复模型方块的 UV 画到贴图外面时夹回贴图范围:26.1 起的客户端不会再无法显示这种模型,CraftEngine 合并资源包时也不再警告「越界 UV」
- 优化染色(
tint{})在换零件、/cm reload后会保留 - 新增给其他插件的 API:换骨骼显示的物品、登记额外的模型文件夹与资源包文件(为云动作 CloudMotion 准备)
onStart 控制子弹模型、新增 scale{}
- 新增抛射物
onStart技能里的state{}brightness{}tint{}partvis{}billboard{}scale{}defaultstate{}套到子弹的模型上,与 ModelEngine 相同:子弹不用写bulletState,飞出去那一刻用技能设定动画、亮度。目标是施法者自己时才会转到子弹,子弹没有指定的mid时照常套到施法者 - 新增
scale{}技能(与 ModelEngine 同名同参数):m留空 = 全部模型、s缩放倍数(支持变量与算式)、h=true改碰撞箱(底下实体的原版 scale 属性,1.20.5 以上);改完的大小重开服务器后保留
逐格特效不再偶尔往回缩小
- 修复用缩放 0 / 1 切换的逐格特效,偶尔会有一格刀光已经该消失了,却一闪一闪地重新出现、慢慢缩小(网络有抖动时才会,所以时有时无):原因是零件没变时也一直送「插值起点」,客户端每收到一次就把上一段插值重播一次。现在变换没变就不送
- 修复藏起来(缩放 0)的零件不再送变换更新;零件「啪」地出现的那一下与紧接的下一次更新都直接到位:两个封包挤在同一个客户端 tick 时,也不会变成从看不见慢慢放大、慢慢缩小
- 优化底座是展示实体时,判断「逐格瞬间切换」只看旋转与缩放,不再被同时往前移动的位移稀释(移动中的刀光切格也一定是直接切换)
逐格特效也能平滑移动
- 优化底座是展示实体(技能特效)时,零件的位置改用实体传送插值,变换只放旋转与缩放:用缩放 0 / 1 做的逐格刀光照样「啪」地切换,同时往前推、移动的部分平滑移动(以前缩放一瞬间切换,位置也只能跟 着一格一格跳)
- 优化底座自己设了
teleport_duration时,零件跟底座用同样的时间滑过去
动画衔接不再抽一下
- 修复没有淡入(
li=0)的动画开始、没有淡出的动画结束或被state{r=true}停掉时,姿势直接到位:连招里「停掉上一段、播下一段」的衔接不会再从上一段的最后姿势滑过去(看起来像抽一下) - 修复模型第一次显示前多等一个 tick,等同一批技能(
statebrightnessbillboard)都套上:MythicMobs 晚一两 tick 才执行state{}时,不会先闪一下没有动画的初始姿势;关闭自动动画(usm=false)而且还没播动画的模型最多等到第 6 tick。等待的时间在底座移除时会补回来,动画结尾照样完整
短特效动画完整播完
- 修复底座被移除(例如 MythicMobs 的
remove{delay=…})时,动画若为了显示第一帧而晚开始了几 tick,模型会在原地多留这几 tick 把动画播完:刀光、挥砍这类很短的特效不会再偶尔播到一半就消失(服务器有卡顿时更明显)。最多多留 10 tick,循环动画照常立刻移除
技能参数支持变量与算式
- 新增MythicMobs 技能参数支持变量与算式,与 ModelEngine 相同:例如
model{scale=2*<caster.var.size>}、state{s=<caster.var.anim>;speed=<caster.var.sp>*2},每次施放时才计算 - 新增
state{}找不到动画时在后台提醒,并列出这个模型有哪些动画(同一个情况只提醒一次,/cm reload换了文件会再提醒)
billboard 保留模型的旋转
- 修复
billboard{}套在一般方块做的特效上时,整个模型当成一张贴片面向镜头,保留模型里的旋转与相对位置(与 ModelEngine 相同):以前骨骼旋转会被丢掉,例如 group 转 -45° 的斜劈刀光会变回水平,同一个模型的不同动画看起来一样 - 修复玩家看到的是模型的 Blockbench 正面(北面),与 Blockbench 预览一致(已用 Blockbench 本身核对)
- 优化面向玩家的零件改为只送有变化的变换字段(位置、旋转、缩放分开比对)
抛射物模型子弹
- 新增MythicMobs 抛射物(projectile / missile / orbital / totem)可以用模型当子弹:
bulletType=MEG的技能不用改,没装 ModelEngine 时由云模型接手;也可以写bulletType=CMODEL - 新增支持 ModelEngine 子弹的
bulletModelbulletState(循环播放)bulletScalebulletColorbulletBrightness;子弹结束时有death动画就先播完再消失 - 新增
bulletPitch=true:整个模型跟着飞行方向上下倾斜(ModelEngine 只转h_头部骨骼,默认与它相同) - 修复死亡动画播完后模型正确标记为已移除(
ModelHandle#isValid()变成false)
动画第一帧、逐格动画
- 修复动画的第一帧一定会显示:刚开始播放的那一 tick 不再先往前推;怪物刚生成、玩家还没开始追踪时动画停在 0 秒,等模型送到玩家画面才开始
- 修复面向玩家(Billboard)的零件也照 step 关键帧直接切换:逐格动画(用缩放 0 / 1 轮流显示)不再被插值成慢慢缩放
- 修复
model{}的damagetint(d、tint)改为与 ModelEngine 相同的开关:d=false= 受伤不闪红;填颜色仍可指定受伤颜色 - 新增
model{}支持invisible(i):i=false不隐藏底下的实体
面向玩家(Billboard)
- 新增支持 Blockbench 的 Billboard 元素:特效永远面向每个玩家的镜头,朝向模式 lookat / rotate → 原版 CENTER,lookat_y / rotate_y → VERTICAL
- 新增MythicMobs
billboard{}(mpbemc,与 ModelEngine 相同):整个模型或指定骨骼面向玩家,b可选 FIXED / VERTICAL / HORIZONTAL / CENTER - 优化面向玩家的零件位置照样跟着骨骼动画走,用原版的位置插值平滑移动
- 优化读取模型时遇到还不支持的元素(例如 mesh 网格)会在后台提醒,不再默默略过
简体授权版
- 新增简体授权版:在资源中心下载,授权码在会员中心「我的授权」,填进
plugins/CloudModel/token.yml即可。默认配置与提示消息全部是简体中文 - 新增授权在后台验证 ,不拖慢开服;连不上授权服务器时每 60 秒自动重试,连上立即生效,不需要重启;最多可离线运行 72 小时
- 新增没有有效授权时模型不显示、
/cm锁定,插件其他部分照常载入;授权生效后模型自动出现
转向平滑、受伤变红更可靠
- 优化模型转向照原版客户端画生物身体的方式缓动:服务器上的身体朝向是一段一段跳的(走路转弯一 tick 最多转 90°),以前大模型会一顿一顿,现在平滑转过去。实测底座一 tick 转 90° 时分 20 次转完、单次最多 18°(以前一次跳完)
- 新增新配置
render.rotation-smoothing(默认 0.3,0 = 关闭)与render.rotation-max-lag(默认 60°,转太快时直接拉近,不会跟不上) - 修复受伤变红:除了受伤事件,另外侦测受伤封包与血量下降,技能、其他插件的伤害系统、直接扣血都会变红(真实客户端截图验证)
- 新增
model{}支持damagetint(别名d、tint)指定受伤颜色,ModelEngine 的写法直接可用
继承展示实体
- 新增模型套在展示实体(block / item / text display)上时,可以继承展示实体的变换(平移、旋转、缩放)、朝向与亮度,就像模型是展示实体的内容一样。MythicMobs 用
model{mid=...;inherit=true},或在 config 设render.inherit-display: true全部开启 - 新增继承时照原版的方式平滑:变换按
interpolation_duration/start_interpolation,转向按teleport_duration - 新增API:
ModelOptions#inheritDisplay(Boolean);继承设定会随模型一起存档,重启后保留
动作衔接更准
- 修复隐藏后重新显示的骨骼(例如
partvis或动画切换)在同一个封包组里送出完整位置与物品,不会先在旧位置闪一下 - 修复服务器卡顿后补帧时,瞬间切换(Step 关键帧)的判断范围改用动画实际前进的 tick 数,技能动作不再错位
效能优化
- 优化位置封包只发送有变化的字段,流量减少约 39%
- 优化受伤泛红改用封包组同时套用,整个模型同一帧变色
- 新增渲染线程过载时自动补帧,并在控制台提示
首个正式版
- 新增纯封包
item_display渲染:服务器端没有实体,动画、骨骼计算与封包都在独立渲染线程 - 新增读取
.bbmodel(含压缩存档)与 ModelEngine 模型文件夹,自动生成资源包,PNG 无损压缩与可选缩图 / 减色 - 新增MythicMobs 技能
modelstatebrightnesspartvistintdefaultstate,名称与参数同 ModelEngine - 新增Citizens NPC:
/cm npc套模型并存档,重启与区块重新加载自动套回 - 新增玩家伪装
/cm dis,重新登录自动恢复;/cm apply给任意实体套模型 - 新增CloudCosmetics 3.2 起可使用云模型渲染模型时装
- 优化动画与 Blockbench 5 逐帧一致:Linear / Step / Catmull-Rom / Bezier、Molang 关键帧
- 优化与服务器 tick 同步更新、近距离每 tick 更新,同一模型的封包同一 tick 套用,动作不抖动
- 修复
state{}的loop=hold/once/loop与 ModelEngine 一致,技能特效播完不会跳回静止姿势