MC中液體不能游泳和浮起的問題
在很多時候,F(xiàn)abric的很多科技模組會有自己的液體,那些液體可以放出來,也可以流動?
但玩家和實體進入液體中卻不能游泳和浮起來,我不知道這是故意而為還是開發(fā)者沒有在意......
但實際上,只需要將自定義的液體添加到?#minecraft:water?標簽即可

假如我們有液體 "example:awa" 和流動的此液體 "example:flowing_awa"
此時在 resources 目錄下新建 /data/minecraft/tags/fluids/water.json
內容如下:

這么做了以后,就可以在自定義液體中游泳和上浮下沉了

其根本原因是因為原版對液體的判斷機制
在 Entity.checkWaterState?方法中(第1243行)可以看到對方法?updateMovementInFluid 的調用中傳入了 FluidTags.WATER 參數(shù)

而在?updateMovementInFluid?中的第3076行可以看到,原版對流體進行了一個判讀,使用 isIn 方法判斷是否在特定標簽中,而不在標簽內的流體則會被忽略不管
此方法在原版?zhèn)魅氲臉撕炛挥?FluidTags.WATER 和 FluidTags.LAVA 兩種,亦可以通過mixin注入代碼來使其可以處理帶有自定義標簽的流體

使用mixin注入的方式如下,修改speed參數(shù)決定在液體中的移動速度:

注入方法不只有這樣一種,可以通過很多形式實現(xiàn),在此不多舉例