过滤器
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | RandomThings:filter |
| 类 | lumien.randomthings.Items.ItemFilter |
| 变体数 | 4(metadata 0–3,一个类) |
| GUI ID | GuiIds.ITEM_FILTER = 1(GuiIds.java:6) |
| 中文名 | 全部未翻译 —— zh_CN.lang:174 仍是 item.filter.name=Filter: |
| 始终注册 | 是(ModItems.java:79,在所有 if 之外) |
功能
过滤器是本 mod 的通用过滤载体:一个物品、4 种变体,可以插进物品收集器、高级物品收集器、末影能量分配器等方块的过滤器槽。
4 个变体
| meta | 中文名(zh_CN.lang) |
说明 | 合成染料 |
|---|---|---|---|
| 0 | 方块过滤器(:38) |
按方块匹配 | 红(dyeRed) |
| 1 | 物品过滤器(:39) |
按物品匹配,默认变体 | 黄(dyeYellow) |
| 2 | 实体过滤器(:40) |
按实体类型匹配 | 蓝(dyeBlue) |
| 3 | 方位过滤器(:41) |
按坐标 + 维度匹配 | 紫(dyePurple) |
代码中把 meta 1 预置为 standardItemFilter(ItemFilter.java:38、:46),并在构造时写入两个默认 NBT 标志(:47-49):
standardItemFilter.stackTagCompound.setBoolean("oreDict", false);
standardItemFilter.stackTagCompound.setBoolean("metadata", true);
即物品过滤器默认使用 metadata 匹配、忽略矿物辞典。
方位过滤器的数据结构
getPosition 从 NBT 读出 4 个整数,构成一个 DimensionCoordinate(ItemFilter.java:189-197):
| NBT 键 | 含义 |
|---|---|
dimension |
维度 ID |
filterX |
X 坐标 |
filterY |
Y 坐标 |
filterZ |
Z 坐标 |
白名单 / 黑名单
lang 提供两个模式开关(zh_CN.lang:111-112):text.miscellaneous.whiteList(白名单)/ text.miscellaneous.blackList(黑名单)。GUI 中以 Shift 左击切换种类,对应 text.miscellaneous.shiftCategory(:107)。
另有开关 text.miscellaneous.ignoreOreDict / useOreDict(:120-121)与 ignoreMetadata / useMetadata(:123-124)。
数值
| 数值名 | 值 |
|---|---|
| 变体数 | 4 |
| 内部槽位 | 9(ContainerItemFilter.java:19-21,col 0–8) |
| 匹配维度开关 | 2(矿物辞典 / metadata) |
| 列表模式 | 2(白名单 / 黑名单) |
交互
| 触发 | 行为 |
|---|---|
| 右键 | 打开 GUI ID 1,9 格内容网格(ContainerItemFilter 继承 ContainerItem) |
| 玩家手动物品 | 放不进自己的快捷栏 —— isSlotBlocked 锁定手持格(ContainerItem.java:31-35) |
| Shift 左击 | 切换白名单 / 黑名单 |
| 放入方块 | 生效,由使用方块决定匹配语义 |
合成配方
4 个变体布局完全相同,只有染料不同(Library/Recipes.java:475-506):
xrx
rpr
xrx
| 字符 | 物品 |
|---|---|
r |
染料(红 / 黄 / 蓝 / 紫,对应 meta 0/1/2/3) |
p |
纸(Items.paper) |
x |
任意 |
meta 1 走静态字段 ItemFilter.standardItemFilter(Recipes.java:486),其余走 new ItemStack(ModItems.filter, 1, n)。