虚拟宝箱
工作原理
TreasuresLite 的宝箱基于 NMS 数据包实现。插件通过 sendBlockChange 向玩家客户端发送虚拟方块,不会在世界中放置实体方块。
- 宝箱仅在客户端渲染,服务端世界数据不受影响
- 每个玩家看到的宝箱状态完全独立(是否可领取、是否在冷却)
- 通过数据包拦截玩家右键点击虚拟方块的事件来触发开箱
方块外观配置
在宝箱配置文件的 settings 节点下配置方块外观。支持三种配置方式:
简化配置(仅指定材质)
settings:
block: "CHEST"
支持的材质:CHEST、TRAPPED_CHEST、ENDER_CHEST、BARREL 等所有 Bukkit Material。
CraftEngine 自定义方块(简化)
settings:
block: "craftengine:custom_chest"
# 或简写
block: "ce:my_custom_block"
详细配置(支持完整 BlockData 属性)
settings:
block:
# 方块材质类型(必填)
material: "CHEST"
# 方块朝向(可选,默认 NORTH)
# 可选值:NORTH, SOUTH, EAST, WEST, UP, DOWN
facing: "NORTH"
# 方块是否包含水源(可选,默认 false)
waterlogged: false
# 箱子类型(可选,默认 SINGLE)
# 可选值:SINGLE, LEFT, RIGHT
type: "SINGLE"
头颅方块
支持使用自定义材质的头颅方块,有多种配置方式:
settings:
# 使用玩家名
block: "player_head:Notch"
# 使用 Base64 材质
block: "player_head:base64:eyJ0ZXh0dXJlcyI6..."
# 使用材质 URL
block: "player_head:url:http://textures.minecraft.net/texture/abc123..."
# 使用纯材质值
block: "player_head:texture:eyJ0ZXh0dXJlcyI6..."
头颅详细配置:
settings:
block:
material: "PLAYER_HEAD"
facing: "NORTH"
# 使用 Base64 材质
texture: "eyJ0ZXh0dXJlcyI6..."
# 或使用玩家名
owner: "Notch"
# 或使用材质 URL
texture_url: "http://textures.minecraft.net/texture/abc123..."
# 可选:自定义 UUID
uuid: "069a79f4-44e9-4726-a5be-fca90e38aaf5"
支持的头颅类型:PLAYER_HEAD、SKELETON_SKULL、WITHER_SKELETON_SKULL、ZOMBIE_HEAD、CREEPER_HEAD、DRAGON_HEAD、PIGLIN_HEAD(1.16+)
提示
头颅方块通过发包实现,不会真实修改世界方块。如果同时提供 texture 和 owner,优先使用 texture。
生成模式
固定坐标模式(Normal)
在 location.yml 中定义坐标分组,然后将宝箱绑定到坐标组:
# location.yml
location:
def1:
- 'world, 0, 80, 0, east'
- 'world1, 0, 80, 0, south'
generator:
normal:
period: 36000
treasure:
def:
def1: "true"
每个坐标组可以设置独立的冷却时间,也可以配置为公共宝箱(一人领取后所有人消失)。
随机坐标模式(Random)
在指定区域内随机生成宝箱坐标:
# location.yml
generator:
random:
period: 36000
treasure:
- location: "world: 50,100 ~ -50,-100: ground#255: random"
max: 5
chest: def
ground#255 表示从 Y=255 往下找到第一个非空气方块上方放置宝箱。range#0~40 表示在 Y=0~40 范围内随机选择高度。
其他设置
settings:
# 上锁玩家背包,无法点击背包内物品
lock_inventory: true