玩家接口
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | RandomThings:playerinterface(注意全小写) |
| 类 | lumien.randomthings.Blocks.BlockPlayerInterface |
| TileEntity | 无(直接代理玩家容器) |
| 材质 | Material.rock |
| 硬度 | 4.0F(BlockPlayerInterface.java:25) |
| 脚步声 | Block.soundTypeStone(:24) |
| 创造标签 | RandomThings.creativeTab(BlockBase.java:17) |
| 纹理 | 3 张独立贴图(底/顶/侧,BlockPlayerInterface.java:31-34) |
| GUI ID | GuiIds.PLAYER_INTERFACE = 0(GuiIds.java:5) |
| 开关 | Blocks.PlayerInterface(RTConfiguration.java:198) |
功能
玩家接口是一个只读地暴露自己背包的方块。右键打开的 GUI 直接绑定到放置者的 EntityPlayerMP 容器,而不是复制一份物品 —— 这是它与所有"储物方块"的根本区别:没有独立库存,也没有掉落物。
TileEntityPlayerInterface 实现了 ISidedInventory(TileEntityPlayerInterface.java:18),但 getSizeInventory() 直接返回 playerEntity.inventory.getSizeInventory()(:117),即把玩家自己的 36 格背包原样代理出来。getInventoryStackLimit() 同样透传玩家背包上限(:165)。
onBlockPlacedBy 在服务器端记录放置者,写入方块 TileEntity 侧的持有者信息(BlockPlayerInterface.java:59-60 起),后续 getPlayerEntity() 据此决定代理哪一个玩家。
数值
| 数值名 | 值 |
|---|---|
| 代理槽位数 | 玩家背包原值(36:9 快捷栏 + 27 背包) |
| 槽位上限 | 透传玩家背包(TileEntityPlayerInterface.java:165) |
| 独立库存 | 无 |
交互
| 触发 | 行为 |
|---|---|
| 右键 | 打开 GUI ID 0,内容为放置者自身背包(BlockPlayerInterface.java:49-53) |
| 比较器 | ISidedInventory + 标准 calcRedstoneFromInventory |
| 破坏 | 无掉落物需要处理(不含物品) |
合成配方
oeo
omo
ono
| 字符 | 物品 |
|---|---|
o |
黑曜石(Block.getBlockFromName("obsidian")) |
e |
末影箱(Blocks.ender_chest) |
m |
玩家核心(RandomThings:ingredient meta 0) |
n |
下界之星(Items.nether_star) |
来源:Library/Recipes.java:139-152。整个方块共用 Blocks.PlayerInterface 一个开关(RTConfiguration.java:198)。