槽位控件(ItemSlot / FluidSlot / PhantomItemSlot / SlotGroup)
基本信息
| 属性 | 值 |
|---|---|
| 包路径 | com.cleanroommc.modularui.widgets.slot |
| 文件数 | 10 |
| 原版基类 | SlotItemHandler extends net.minecraft.inventory.Slot(utils/item/SlotItemHandler.java:15) |
| 主题部件 | itemSlot、fluidSlot,各带 4 个子部件(见「部件主题」) |
功能
槽位族
| 类 | 文件 | 继承 | 实现 | 说明 |
|---|---|---|---|---|
ModularSlot |
widgets/slot/ModularSlot.java:30 |
SlotItemHandler |
— | 最底层槽位 |
ModularCraftingSlot |
widgets/slot/ModularCraftingSlot.java:22 |
ModularSlot |
— | 合成用槽位 |
ItemSlot |
widgets/slot/ItemSlot.java:46 |
Widget<ItemSlot> |
IVanillaSlot, Interactable, RecipeViewerIngredientProvider |
物品槽位控件 |
PhantomItemSlot |
widgets/slot/PhantomItemSlot.java:14 |
ItemSlot |
RecipeViewerGhostIngredientSlot<ItemStack> |
幻影物品槽:只用于配置/过滤,不实际存物 |
FluidSlot |
widgets/slot/FluidSlot.java:36 |
AbstractFluidDisplayWidget<FluidSlot> |
Interactable, RecipeViewerGhostIngredientSlot<FluidStack> |
流体槽位 |
SlotGroup |
widgets/slot/SlotGroup.java:20 |
— | — | 一组槽位的逻辑分组 |
PlayerSlotGroup |
widgets/slot/PlayerSlotGroup.java:5 |
SlotGroup |
— | 玩家背包槽位分组 |
SlotGroupWidget |
widgets/SlotGroupWidget.java(在 widgets/ 根,不在 slot/) |
ParentWidget<SlotGroupWidget> |
ISynced |
把 SlotGroup 变成可布局的控件 |
InventoryCraftingWrapper |
widgets/slot/InventoryCraftingWrapper.java:20 |
InventoryCrafting |
— | 把合成格包装成 MUI2 槽位组 |
IOnSlotChanged |
widgets/slot/IOnSlotChanged.java:5 |
接口 | — | 槽位内容变化回调 |
⚠️
SlotItemHandler不是 NEI 或 Forge 的类,而是 ModularUI2 自己在utils/item/下对net.minecraft.inventory.Slot的实现(SlotItemHandler.java:15)。utils/item/共 13 个文件,是 MUI2 自带的IItemHandler实现 (ItemStackHandler、LimitingItemStackHandler、各类InvWrapper等), 不依赖 NEI 的物品栏 API。
两套槽位体系并存:
ModularSlot走原版Slot体系(用于GuiContainer集成);ItemSlot则是纯 MUI2 的Widget实现。两者不是继承关系,需要api/SlotAccessor.java桥接。 注意ItemSlot本身耦合了 NEI——ItemSlot.java:41导入了codechicken.nei.guihook.GuiContainerManager,是widgets/slot/下唯一的 NEI 引用。
幻影槽位的操作方式
PhantomItemSlot / FluidSlot 的 tooltip 文案直接给出了完整操作说明
(src/main/resources/assets/modularui/lang/en_us.lang):
| 槽位 | 行 | 说明 |
|---|---|---|
| 物品幻影 | :11 |
modularui.item.phantom.control |
| 流体幻影 | :10 |
modularui.fluid.phantom.control |
物品幻影(en_us.lang:11):
Scroll wheel up increases amount, down decreases. Shift[§6x4§7], Ctrl[§ex16§7], Alt[§ax64§7] Right click increases amount, left click decreases. Shift + left click to clear.
流体幻影(en_us.lang:10):
Scroll wheel up increases amount, down decreases. Shift[§6x10§7], Ctrl[§ex100§7], Alt[§ax1000§7] Right click increases amount, left click decreases. Shift + left click to clear.
⚠️ 这两条 key 在
assets/modularui/lang/en_us.lang(旧的modularui资源域、小写_us), 而不是assets/modularui2/lang/en_US.lang。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 物品幻影 Shift 倍率 | ×4 | en_us.lang:11 |
| 物品幻影 Ctrl 倍率 | ×16 | en_us.lang:11 |
| 物品幻影 Alt 倍率 | ×64 | en_us.lang:11 |
| 流体幻影 Shift 倍率 | ×10 | en_us.lang:10 |
| 流体幻影 Ctrl 倍率 | ×100 | en_us.lang:10 |
| 流体幻影 Alt 倍率 | ×1000 | en_us.lang:10 |
| 槽位占位显示 | 开启(showSlotOverlay 默认 true) |
ModularUIConfig.java:30 |
这些倍率是tooltip 文案中的说明文本,不是从 Java 常量读出的; 文案位于资源文件而非源码。
交互
| 触发 | 行为 |
|---|---|
| 滚轮 | 增减数量(按上表倍率) |
| 右键 | 数量增加 |
| 左键 | 数量减少 |
| Shift + 左键 | 清空 |
| 槽位被占用 | 按 showSlotOverlay(默认开)显示覆盖层 |
相关条目
- 配置项 -
showSlotOverlay等 - 部件主题 -
itemSlot/fluidSlot及 4 个玩家子部件 - Mixin 与底层补丁 -
InventoryCraftingAccessor如何让 MUI2 读取原版合成格