资料参考地址: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之后实体变换会达到设定值(最终状态)
最终效果:


准备工作:自动生成不同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之后实体变换会达到设定值(最终状态)
最终效果:

