过滤器

基本信息

属性 值
注册名 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)。

相关条目