Skip to content

FluidSlot

自 2.2.1

FluidSlot 在槽位内渲染 FluidStack,并以方向性填充效果展示液位。手持流体容器点击槽位时,会通过原版 FluidUtil API 进行填充或排空。当 JEI、REI 或 EMI 存在时,它也会与这些模组联动。

INFO

UIElement 中记录的所有内容(布局、样式、事件、数据绑定等)同样适用于此处。


用法

java
var fluidSlot = new FluidSlot();
fluidSlot.bind(fluidHandler, 0); // IFluidHandler + tank index
fluidSlot.setCapacity(16000);
parent.addChild(fluidSlot);

// Phantom slot (XEI drag-drop)
fluidSlot.xeiPhantom();

XML

xml
<!-- Basic slot -->
<fluid-slot capacity="16000"/>

<!-- Disable XEI lookup -->
<fluid-slot capacity="4000" allow-xei-Lookup="false"/>
XML 属性类型描述
capacityint悬停提示中显示的储罐容量。默认值:0
allow-xei-Lookupboolean悬停时是否触发 XEI 配方查找。默认值:true

内部结构

字段CSS 类描述
amountLabel.__fluid-slot_amount-label__右下角显示流体数量的 Label(例如 1.5B)。

槽位样式

INFO

fill-direction

流体纹理随数量增加而填充槽位的方向。可选值:LEFT_TO_RIGHTRIGHT_TO_LEFTUP_TO_DOWNDOWN_TO_UPALWAYS_FULL

默认值:LEFT_TO_RIGHT

java
fluidSlot.slotStyle(style -> style.fillDirection(FillDirection.UP_TO_DOWN));

INFO

hover-overlay

悬停时绘制在槽位上方的纹理。

默认值:ColorRectTexture(0x80FFFFFF)

java
fluidSlot.slotStyle(style -> style.hoverOverlay(myTexture));

INFO

slot-overlay

绘制在槽位背景上方的纹理。

默认值:无(空)

java
fluidSlot.slotStyle(style -> style.slotOverlay(myOverlay));

INFO

show-slot-overlay-only-empty

true 时,slot-overlay 仅在槽位为空时绘制。

默认值:true

java
fluidSlot.slotStyle(style -> style.showSlotOverlayOnlyEmpty(false));

INFO

show-fluid-tooltips

悬停时是否显示流体名称、数量/容量、温度和状态悬停提示。

默认值:true

java
fluidSlot.slotStyle(style -> style.showFluidTooltips(false));

值绑定

FluidSlot 继承自 BindableUIElement&lt;FluidStack&gt;

java
fluidSlot.bind(DataBindingBuilder.fluidStackS2C(
    () -> tank.getFluidInTank(0)
).build());

详情请参见 数据绑定


字段

名称类型访问权限描述
amountLabelLabelpublic final显示精简流体数量的标签。
slotStyleSlotStyleprivate (getter)当前槽位样式。
fluidFluidStackprivate (getter)当前显示的流体。
capacityintgetter/setter用于填充计算和悬停提示的储罐容量。
allowClickFilledbooleangetter/setter手持容器点击时是否从储罐填充容器。默认值:true
allowClickDrainedbooleangetter/setter手持容器点击时是否向储罐排空容器。默认值:true

方法

方法返回值描述
bind(IFluidHandler, int)FluidSlot绑定到指定储罐索引的流体处理器。同步流体和容量。
setFluid(FluidStack)FluidSlot设置显示的流体并通知监听器。
setFluid(FluidStack, boolean)FluidSlot设置流体;第二个参数控制是否通知。
slotStyle(Consumer&lt;SlotStyle&gt;)FluidSlot以流式接口配置样式。
xeiPhantom()FluidSlot在此槽位上启用 XEI 虚拟拖拽功能。
xeiRecipeIngredient(IngredientIO)FluidSlot在 XEI 配方视图中标记为配方原料。
xeiRecipeSlot()FluidSlot标记为配方槽位,默认 IngredientIO.NONE
xeiRecipeSlot(IngredientIO, float)FluidSlot以给定的 I/O 类型和概率标记为配方槽位。
getFluidAmountText()Component返回 amountLabel 中显示的精简数量文本。
getFullTooltipTexts()List&lt;Component&gt;返回合并后的流体和自定义悬停提示文本行。

Released under the MIT License.