跳到主要内容

虚拟宝箱

工作原理

TreasuresLite 的宝箱基于 NMS 数据包实现。插件通过 sendBlockChange 向玩家客户端发送虚拟方块,不会在世界中放置实体方块。

  • 宝箱仅在客户端渲染,服务端世界数据不受影响
  • 每个玩家看到的宝箱状态完全独立(是否可领取、是否在冷却)
  • 通过数据包拦截玩家右键点击虚拟方块的事件来触发开箱

方块外观配置

在宝箱配置文件的 settings 节点下配置方块外观。支持三种配置方式:

简化配置(仅指定材质)

settings:
block: "CHEST"

支持的材质:CHESTTRAPPED_CHESTENDER_CHESTBARREL 等所有 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_HEADSKELETON_SKULLWITHER_SKELETON_SKULLZOMBIE_HEADCREEPER_HEADDRAGON_HEADPIGLIN_HEAD(1.16+)

提示

头颅方块通过发包实现,不会真实修改世界方块。如果同时提供 textureowner,优先使用 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