开启辅助访问      

站内搜索

搜索
热搜: 下载 1.19 1.20

Minecraft(我的世界)苦力怕论坛

[闲聊] 从无框玻璃开发到睡袋方块

发表于 2024-4-14 09:10:58 | 显示全部楼层 |阅读模式 IP:天津
注:这篇文章写于三月末(2024/3/30 - 2024/3/31)。由于系统维护,直到4月14日,它才得以发布。
------
之前我做的无框玻璃进度飞快。虽然我遇到了一点瓶颈,但很快就突破了,而且成功做出了染色的变种,还有遮光的变种。
前几天我才发现我那时以为开发好的无框玻璃的底面模型位置居然是反转的,这还是我在测试方块排列时发现的。我于是修复了这个问题,这很简单,只需要把骨骼名称改一下就好了。
------
做完无框玻璃后,我第一时间就要测试它对游戏造成了多少卡顿。第一项是“刻”相关的卡顿,因为无框玻璃的文件里用的是minecraft:queued_ticking组件,很多计划刻的堆积几乎是不可避免的。这表现为游戏里渲染很流畅,帧数也很高,但各种行为都很慢,例如悬空的沙子要等好几秒才会掉落。不过这种情况只会在几千块无框玻璃聚集在一起时出现,单独使用或分开一定距离使用是不会出现这种情况的。第二项是“方块排列数量”,根据计算,一个无框玻璃有64个方块排列,那么只需要1024个无框玻璃就会达到65536个方块排列的限制。此时再放几个无框玻璃,退出重进时应该就会弹出提示了。但提示并没有弹出,这让我怀疑“一个方块的方块排列数量即每个方块状态数量的乘积”这种说法。我认为方块排列数量可能是由已经定义的方块排列决定的,目前我没有定义任何一个方块排列,自然也没有方块排列数量了。
------
无框玻璃就这样做好了,我把它合并到了主附加包里。添补附加包在很长一段时间里加载时会有内容日志,不过最近没有。今天我突然看到有一个内置的物品标签,minecraft:bookshelf_books,似乎决定了可以放进雕纹书架里的物品。我的附加包里正好有“书”相关的物品,我就给它加上了这个标签,没想到真的能放进雕纹书架里了。
------
无框玻璃的开发到这里算是完成了,我不打算加入无框玻璃板。打包实验性玩法时,我还临时加入了一个功能,让原版玻璃放下之后直接变成无框玻璃,也就是说现在无需合成新方块了,更加方便。因此,我在创造模式物品栏中隐藏了无框玻璃。
这个功能默认开启,我测试了一下,没什么卡顿。不过如果在某些情况下真的很卡顿,或者你就爱多合成一次无框玻璃,那么可以选择恢复原来的样式,此时无框玻璃也会在创造模式物品栏里出现。
这个功能的实现方法相当简单,没错,就是fill命令加replace参数。我搞了个5*5*5的范围,差不多是玩家的触及距离(用手机的除外,触摸屏时触及距离在生存模式下有6格,创造模式好像就有12格了)。
------
之前,我测试过其他的无框玻璃附加包。我在MCPEDL上找了一个热度最高的附加包,然后在高版本进行测试,结果只有底面成功渲染,其他面都看不见。
这次,我又把那个附加包下载回来,结果是里面的无框玻璃变成了不透明的方块,而且有一个内容日志。我看了看那个附加包内部的方块文件,发现方块状态是以data:a[0-15]这种方式存储的,就没多看。
------
前几天我又产生了新想法,那就是睡袋。我记不起来具体是受什么的启发了,不过我总是想做一个睡袋方块。
首先就是制作模型。我很喜欢借原版的纹理,上次我制作压缩房屋附加包时就是费很多时间做了一个动态引用原版纹理的模型。这坏处是耗时有点长(尤其是这次做睡袋的纹理,我可谓是踢到铁板子上了,下文会提到),不过好处是你装了纹理包之后这个方块的纹理也会改变。另外,这样就不用自己画新纹理了,因此,附加包里哪怕一张图片也没有(包图标除外)。
上上次我制作的压缩房屋很简单,引用了石砖、玻璃、海晶石、末地石砖之类的各种方块的纹理,还引用了一些物品纹理,这只需要添加新的纹理短名和路径与之对应即可。上次的无框玻璃也是引用的原版玻璃纹理。
很久以前,我就发现给方块用的纹理不一定放在方块文件夹,而是可以引用其他文件夹的纹理。有些原版方块以实体形式渲染,例如床、告示牌等,它们的纹理就在实体文件夹下。以前,我已经引用了物品文件夹的纹理,却还未引用过实体文件夹的——因此,这次我打算引用实体文件夹里的床的纹理。
我本来以为事情会顺利地发展下去,就先添加了一个含有立方体的骨骼作为睡袋的底板。我打算给它盖上床的纹理,就导入了一张床的纹理图片。但问题在于UV怎么也对不上,总有两个面的UV需要旋转90度。
在百思不得其解的情况下,我打开了原版床的模型,然后看到了——一张竖立的床。原来,床的模型非常特殊,它原本是竖立的,渲染时会旋转90度把整个模型横过来,这才是我们在游戏里看到的模样。我还看到了床的四角之间居然也有透明的骨骼,发现那是一些未使用的骨骼。如果你编辑床的纹理,在床的四个“腿”的纹理右侧胡乱画了一些像素,再打开游戏就可能看到床的四角之间出现了一些不透明的像素。
于是我仿照原版,也制作了一个竖立的底板。这次的UV总算对了,我很快调好了底板,还做了一个枕头和被子(这都是翻译后的骨骼的名称)。虽然这是睡袋,但我还是下意识地添加了一个木制底板,虽然只有一个像素厚。
------
接下来就是开发功能。我添加了一个新方块,使用刚做好的模型,然后添加一个方块状态来反映现在睡袋是否被占用……
相机的缓动有点难。需要一个屏幕渐渐变暗的效果,同时视角得从仰望天空逐渐到平视地平线来表示入睡。不过最后,大部分问题都解决了。直到现在(2024/3/30 15:54:05),它的功能基本上已经完成了。仍然有晚上才能睡觉的设定,也有怪物阻止睡觉的设定。当然,一个玩家使用睡袋时,另一个玩家不能使用那个睡袋。
现在还有一点已知问题,那就是有时候缓动的起始点不对。不过这不怎么明显,也不经常出现,我索性把它当成特性,不修了。
------
昨天(本段写于2024/3/31)晚上,我成功把睡袋的所有彩色变种制作好了。其实就是复制成16份文件,再改改颜色对应的单词即可。不过床的纹理中,淡灰色床的名称是silver.png,而不是light_gray.png,如果引用不对,纹理就会丢失,这有时使人很困惑——其他颜色的睡袋都是好的,就淡灰色睡袋是例外。不过我注意到了这个差异,一次就成功制作了另外15种颜色的睡袋和它们的合成配方。本来我还想制作染色睡袋的配方,但是方块的tag不能用于合成输入,所以需要穷举256种配方——确实很多,我就放弃了制作相关内容。
苦力怕论坛,感谢有您~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供云服务 | GMT+8, 2024-4-30 04:30

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号