Sleeping Bag
基本信息
| 属性 |
值 |
| 注册名 |
adventurebackpack:blockSleepingBag |
| 方块类 |
BlockSleepingBag (extends BlockDirectional) |
| 材料 |
cloth |
| 尺寸 |
1×0.1×1 的"地毯式"扁平方块(仅 Y 方向 1/10 高) |
| 朝向 |
4 朝向;meta & 8 标记此格是床的"头"部 |
功能
代替普通床铺的位置型睡袋,可与 Campfire 一起实现"野外宿营"重置。当玩家右键时检测维度允许性(不可在 hells biome 睡觉);如果检测到最近的 blockCampFire(半径 8 横向 / 2 纵向)则将 BackpackProperty.setCampFire(coords) 并把床铺路径指向 Bag 自身;否则仅保留原 spawn。背包 UI 可直接 “deploy” 睡袋,相当于在玩家所在位置放置一个 BlockSleepingBag 并记忆坐标。
摆放要求
- 必须贴在 Solid top 朝上的实体方块之上
- meta & 8 是床头,另一 meta 半段是床尾(foot),两者使用相同的方块标记
- 只在
world.provider.canRespawnHere() 且不在地狱(hell)时生效
数值
| 数值 |
值 |
| 边界高度 |
0.1 |
| 床铺识别 |
严格依靠 meta 中 4 + 8 两位(8 = head) |
| 是否可睡维度 |
canRespawnHere == true(如 overworld) |
交互
| 触发 |
行为 |
| 右键(头格) |
调用 player.sleepInBedAt;同时检测是否已是"便携式睡袋":是则保存当前维度 bed 到 BackpackProperty.storedSpawn;否则尝试寻找附近 8×2×8 范围内的 blockCampFire,并记下其坐标作为新床铺 |
| 右键(尾格) |
自动偏移行至床头 meta 同时处理 |
| 占用中 |
显示 tile.bed.occupied 提示 |
| 时机不安全 |
提示 tile.bed.noSleep 或 tile.bed.notSafe |
| 快捷背包热键 + Shift |
触发 onPortableBlockActivated → 如果玩家已 deploy 过睡袋,则 fold 回背包并删除方块 |
玩家便携模式(“Sleep Anywhere” 集成)
玩家在穿戴中的 Backpack 设置 extendedProperties.setBoolean(TAG_SLEEPING_IN_BAG=true) 后,热键 + Shift 直接调用 player.setSpawnChunk = (...) 并传 isSleepingInPortableBag() 返回 true,跳过 Campfire 检测。起床/死亡时由 BlockSleepingBag.packPortableSleepingBag 删除方块并清空属性。
相关条目