纱夜
资料参考地址:https://www.mcbbs.net/thread-1447730-1-1.html


准备工作:自动生成不同aoe所需颜色纹理+自定义模型

调色板自动生成所需aoe纹理:

由于是根据原版资源包的行为猜测出来的格式(没有找到(也没找)对应的wiki或者官方资料)不保证做法一定最优。

大致流程:
    给定纹理的源图片,然后给定需要被替换的颜色(不考虑A通道),最终动态生成一个替换好的颜色的纹理。
    被替换的颜色与替换的颜色在一张图片中给出,应该需要保证长宽一致,对应的位置颜色被替换成对应颜色的纹理。

对于FFXIV,实现aoe特效简单的两个图片如下:










【分别为block/circle与block/ring】
由于颜色单一,调色板图片仅为1*1:










其中white.png为被替换的颜色,其他为替换的颜色。
[尺寸过小图片]
考虑到普通aoe与死刑,所需颜色应该是红色与黄色,同时提供不透明版与透明版。
最终调色板的json如下:
{
    "type": "paletted_permutations",
    "textures": [
    "block/circle",
    "block/ring"
    ],
    "palette_key": "trims/color_palettes/white",
    "permutations": {
    "yellow": "trims/color_palettes/yellow",
    "warning": "trims/color_palettes/warning",
    "red": "trims/color_palettes/red",
    "red_a": "trims/color_palettes/red_a"
    }复制代码


配上其他自定义模型json就可以在游戏中使用展示实体展示物品并渲染了。

最终成品资源包如下:
https://github.com/KunoSayo/BattleLibrary/tree/master/ff



展示实体实现动画

https://minecraft.fandom.com/zh/ ... A%E5%AE%9E%E4%BD%93

新版本展示实体能够让我们展示方块/物品/文本。
使用展示实体物品+自定义模型数据即可渲染先前定义好的模型。

其中transformation能够插值渲染,来实现动画效果。
由于动画中间过程是由客户端实时计算的,我们仅仅需要给出初始状态与最终状态。

在0 65 0位置处先生成一个展示物品实体,缩放最终为0
/summon minecraft:item_display 0 65.501 0 {"item_display":"none", "item":{"id":"minecraft:blue_stained_glass", Count:1b, tag:{CustomModelData:99613}}, Tags:["aoe_warning", "linear_warning"], transformation:[0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0], start_interpolation:0, interpolation_duration:20}复制代码


并在1tick之后给出最终阶段的缩放。
由于同tick设置属性并不会发生插值(实践结果.jpg),所以需要在1tick之后设置。

/data modify entity @e[tag=linear_warning, limit=1] transformation set value [30.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,30.0,0.0,0.0,0.0,0.0,1.0]复制代码


由于设置了interpolation_duration为20,表示该插值持续时长(tick)。
那么在20tick之后实体变换会达到设定值(最终状态)



最终效果:














第一页 上一页 下一页 最后一页