个人槽界面
[!INFO] 实现类:
de.eydamos.backpack.gui.GuiPersonalSlot/de.eydamos.backpack.factory.FactoryPersonalSlot容器:de.eydamos.backpack.inventory.container.ContainerPersonalSlot
基本信息
「额外穿戴槽」界面 —— 玩家把一个背包放进专属的额外槽位, 死亡不掉落、且可被快捷键直接打开。
| 属性 | 值 |
|---|---|
| 打开方式 | 潜行 + 个人背包快捷键,或潜行右键背包 |
| 常量 | Constants.Guis.OPEN_PERSONAL_SLOT = 1 |
| 服务端容器 | InventoryBackpackSlot(读 PlayerSave) |
| 客户端容器 | InventoryBasic(..., false, 1) 桩,仅 1 格 |
server/client 分流
FactoryPersonalSlot.getContainer 显式分侧:
if (BackpackUtil.isServerSide()) {
inventorySlot = new InventoryBackpackSlot(player); // 真实存档
} else {
inventorySlot = new InventoryBasic(Localizations.INVENTORY_PERSONAL, false, 1); // 1 格桩
}
InventoryPickup inventoryPickup = new InventoryPickup();
ContainerAdvanced container = new ContainerPersonalSlot(inventorySlot, inventoryPickup);
客户端的 InventoryBasic 只建 1 格,仅用于让 GuiSlot 算出正确的
槽位坐标 —— 真实数据永远只在服务端。
InventoryPickup 是界面上那块「放入的物品」区域,
与 个人背包 的主容器分离。
槽位专用类型
inventory/slot 包提供 4 种槽位限制:
| 槽位类 | 作用 |
|---|---|
SlotBackpack |
通用背包槽 |
SlotBackpackOnly |
只接受背包物品(本界面用) |
SlotCraftingAdvanced |
工作台合成结果槽 |
SlotPhantom |
幽灵槽(只显示不扣除) |
个人槽界面用 SlotBackpackOnly 保证只有背包类物品能放入,
普通物品会被拒绝。
死亡掉落处理
EventHandlerBackpack 处理玩家死亡事件时的个人背包取舍:
- 若背包留在穿戴槽中(受配置控制),则不加入掉落列表,
PlayerSave继续持有它; - 否则手动
event.drops.add(new EntityItem(...))把背包作为掉落物实体 丢到玩家位置,并playerSave.setPersonalBackpack(null)清空存档引用。
event.drops.add(new EntityItem(entityPlayer.worldObj,
entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, backpack));
playerSave.setPersonalBackpack(null);
allowSoulbound 配置(见 Backpack 配置)
控制带灵魂绑定附魔的背包是否也留在槽中不掉落。
BackpackUtil.pickupItem
BackpackUtil.pickupItem 会在玩家捡起背包时尝试放回个人槽:
PlayerSave playerSave = new PlayerSave(entityPlayer);
ItemStack backpack = playerSave.getPersonalBackpack();
if (backpack == null) { ... }
即拾取到的背包若与玩家个人存档兼容,会被优先收进额外槽而非占用背包栏。
独立存档类
本界面读写的是 saves/PlayerSave(按玩家 UUID 命名),
与 背包 使用的 saves/BackpackSave(按背包 UUID 命名)
是两套独立存档。saves/AbstractSave 是二者的公共基类。
相关条目
- 个人背包快捷键 - 潜行分派到本界面
- 高级容器界面 - 非潜行时打开的另一个界面
- 消息协议 -
MessageOpenPersonalSlot/MessagePersonalBackpack - Backpack 配置 -
allowSoulbound影响死亡掉落