欢迎光临散文网 会员登陆 & 注册

MC中液体不能游泳和浮起的问题

2023-06-28 16:51 作者:草awa  | 我要投稿

在很多时候,Fabric的很多科技模组会有自己的液体,那些液体可以放出来,也可以流动 


但玩家和实体进入液体中却不能游泳和浮起来,我不知道这是故意而为还是开发者没有在意......


但实际上,只需要将自定义的液体添加到 #minecraft:water 标签即可

假如我们有液体 "example:awa" 和流动的此液体 "example:flowing_awa"


此时在 resources 目录下新建 /data/minecraft/tags/fluids/water.json


内容如下:

将液体添加到 #minecraft:water 标签

这么做了以后,就可以在自定义液体中游泳和上浮下沉了

其根本原因是因为原版对液体的判断机制

在 Entity.checkWaterState 方法中(第1243行)可以看到对方法 updateMovementInFluid 的调用中传入了 FluidTags.WATER 参数


checkWaterState 方法代码

而在 updateMovementInFluid 中的第3076行可以看到,原版对流体进行了一个判读,使用 isIn 方法判断是否在特定标签中,而不在标签内的流体则会被忽略不管

此方法在原版传入的标签只有 FluidTags.WATER 和 FluidTags.LAVA 两种,亦可以通过mixin注入代码来使其可以处理带有自定义标签的流体

updateMovementInFluid 方法代码

使用mixin注入的方式如下,修改speed参数决定在液体中的移动速度:

注入代码示例

注入方法不只有这样一种,可以通过很多形式实现,在此不多举例

MC中液体不能游泳和浮起的问题的评论 (共 条)

分享到微博请遵守国家法律