物品收集器

基本信息

属性 值
注册名 RandomThings:itemCollector
类 lumien.randomthings.Blocks.BlockItemCollector
TileEntity TileEntityItemCollector(ModTileEntities.java:25,注册名 itemcollector)
材质 Material.rock
硬度 1.5F(BlockItemCollector.java:20)
碰撞箱 极小:(0.35, 0, 0.35) → (0.65, 0.3, 0.65)(:23)
碰撞实体 无(getCollisionBoundingBoxFromPool 返回 null,:62-65)
渲染类型 -1(getRenderType,:52)
GUI ID GuiIds.ITEM_FILTER = 1 / ADVANCED_ITEMCOLLECTOR = 2
开关 Blocks.ItemCollector

功能

物品收集器是朝向下方的极小方块模型,用来自动吸取掉落物。它的放置规则与破除规则由 metadata 决定朝向(BlockItemCollector.java:26-38):

onNeighborBlockChange 先用 BlockDispenser.func_149937_b(Facing.oppositeSide[metadata]) 反解出朝向,再检查该朝向的相邻格 —— 若为空气则自毁并掉落自身:

if (worldObj.isAirBlock(targetX, targetY, targetZ)) {
    this.dropBlockAsItem(...);
    worldObj.setBlockToAir(...);
}

canPlaceBlockOnSide 用同一套朝向计算,要求目标格不是空气才允许放置(:41-49)。两者共用 BlockDispenser.func_149937_b(Facing.oppositeSide[side]) 这一取反技巧,因此放置面与吸取面相反 —— 必须把它放在某个容器/漏斗上方。

它没有自己的存储槽:容器 ContainerItemCollector 只绑定了 1 个过滤器槽加玩家背包(ContainerItemCollector.java:18 一条 SlotFilter,:25 与 :30 为玩家 27+9 格)。物品直接被推向下方方块。

数值

数值名 值
过滤器槽位 1(ContainerItemCollector.java:18)
自身存储 0
碰撞箱高度 0.3 格
朝向来源 metadata(Facing.oppositeSide 取反)

交互

触发 行为
右键 打开过滤器 GUI,需放入过滤器
放置 canPlaceBlockOnSide 要求吸取方向不是空气
朝向格变空气 自毁 + 掉落(:26-38)
吸取 将范围内掉落物推向下方方块

合成配方

xhx
rer
xox
字符 物品
h 漏斗(Blocks.hopper)
r 红石粉(dustRedstone)
e 末影珍珠(Items.ender_pearl)
x / o 黑曜石棒(stickObsidian,即 ingredient meta 1)

来源:Library/Recipes.java:181-194。

升级配方(Recipes.java:195-205):

xdx
gig

d = 钻石(gemDiamond),g = 荧石粉(dustGlowstone),i = 本方块 → 高级物品收集器。

相关条目