Skip to content

宝石与槽位

GTGem 的核心是两类 NBT:

  • 宝石 NBT:定义宝石能镶嵌到什么槽位、成功率、消耗、属性、动作和拆卸规则。
  • 装备槽位 NBT:定义装备有哪些槽位,每个槽位是什么类型。

宝石 NBT 完整结构

yaml
gtgem:
  type: "gem"
  name: "&6&l红宝石"
  socket: "&6&l红宝石"
  rules:
    chance: 0.8
    cost:
      money: 100
      exp: 0
    conditions:
      - "%level% >= 10"
  attributes:
    生命值: 500.0
    物理攻击力: 10.0
  actions:
    success:
      - "SOUND:ENTITY_VILLAGER_YES;1.0;1.2"
      - "MESSAGE:&a宝石镶嵌成功!"
    fail:
      - "SOUND:ENTITY_VILLAGER_NO;1.0;0.8"
      - "MESSAGE:&c镶嵌失败!"
  remove-rules:
    conditions: []
    cost-items:
      - "钻石x3"
    cost-money: 50
    cost-exp: 10
字段必填说明
type必须是 gem
name宝石显示名
socket可镶嵌槽位类型
rules.chance成功率,未写则使用 config 默认值
rules.cost镶嵌消耗
rules.conditions镶嵌条件
attributes写入装备的属性
actions.success成功动作
actions.fail失败动作
remove-rules拆卸规则

成功率:

text
1.0 = 100%
0.8 = 80%
0.5 = 50%

socket 支持单个和多个

单槽位:

yaml
socket: "&6&l红宝石"

多个槽位:

yaml
socket:
  - "&6&l红宝石"
  - "&e&l通用槽位"

这个宝石可以镶嵌到红宝石槽位,也可以镶嵌到通用槽位。

装备槽位结构

空槽位:

yaml
gtgem:
  sockets:
    "0":
      type: "&6&l红宝石"
    "1":
      type: "&b&l蓝宝石"

装备的 Lore 中也要放槽位显示行,玩家才能直观看到这件装备可以镶什么:

yaml
lore:
  - "&7一把带红宝石槽位的剑"
  - "§孔§位 &7[ &c空槽位 &7<&6&l红宝石&7> ]"

这里的 §孔§位 要和 config.yml 里的 prefix.socket 保持一致。
<&6&l红宝石&7> 里的槽位文字要和 NBT 中的 type 保持一致。

NeigeItems 完整宝石示例

yaml
红宝石:
  material: NETHER_STAR
  amount: 1
  Name: "&c&l红宝石"
  Lore:
    - ""
    - "&7宝石等级: &6★★☆☆☆"
    - "&7镶嵌类型: &c攻击"
    - "&7宝石属性: &f物理攻击力 &a+20"
    - "&7成功几率: &e80%"
    - "&7镶嵌消耗: &6100金币"
    - ""
    - "§宝§石"
  nbt:
    gtgem:
      type: "gem"
      name: "&c&l红宝石"
      socket: "&c红宝石"
      rules:
        chance: 0.8
        cost:
          money: 100
          exp: 0
      attributes:
        物理攻击力: 20
      actions:
        success:
          - "SOUND:ENTITY_VILLAGER_YES;1.0;1.2"
          - "MESSAGE:&a宝石镶嵌成功!"
        fail:
          - "SOUND:ENTITY_VILLAGER_NO;1.0;0.8"
          - "MESSAGE:&c镶嵌失败!宝石已损坏。"

使用 NeigeItems 模板批量创建宝石

NeigeItems 批量做宝石主要用两种写法:

写法适合场景
sections + weight一个物品 ID 随机生成不同类型的宝石、词条和数值
inherit做一套公共模板,再派生出红宝石、蓝宝石、生命宝石等固定 ID

一个 ID 随机生成多种宝石

yaml
副本1宝石:
  material: DIAMOND
  name: "§f暗淡的<宝石类型>宝石"
  amount: 1
  lore:
    - "§宝§石"
    - "§-&6  <<宝石类型>.属性> +%neigeitems_nbt_属性数值%<<宝石类型>.后缀>"
    - ""
    - "§f镶嵌类型:§6 武器"
    - "§f成功几率:§c 80%"
  nbt:
    属性数值: <<宝石类型>.数值>
    gtgem:
      type: "gem"
      name: "§f暗淡的<宝石类型>宝石"
      socket: "&c红宝石"
      rules:
        chance: 0.8
        cost:
          money: 100
          exp: 0
      attributes:
        <<宝石类型>.属性>: <<宝石类型>.数值>
      actions:
        success:
          - "SOUND:ENTITY_PLAYER_LEVELUP;1.0;1.5"
          - "MESSAGE:&a宝石镶嵌成功"
        fail:
          - "SOUND:ENTITY_VILLAGER_NO;1.0;0.8"
          - "MESSAGE:&c镶嵌失败!宝石已损坏。"
  sections:
    宝石类型:
      type: weight
      values:
        - 1::锯齿
        - 1::会心
        - 1::狂怒
        - 1::星痕
        - 1::利刃
        - 1::噬魔
    会心:
      属性: "暴击率"
      数值: <number::1_3_0_HALF\_UP>
      后缀: "%"
    锯齿:
      属性: "物理穿透"
      数值: <number::1_10_0_HALF\_UP>
      后缀: ""
    狂怒:
      属性: "暴击伤害"
      数值: <number::1_5_0_HALF\_UP>
      后缀: "%"
    噬魔:
      属性: "魔法穿透"
      数值: <number::1_10_0_HALF\_UP>
      后缀: ""
    利刃:
      属性: "物理伤害"
      数值: <number::1_3_0_HALF\_UP>
      后缀: "%"
    星痕:
      属性: "魔法伤害"
      数值: <number::1_3_0_HALF\_UP>
      后缀: "%"

生成时,宝石类型 会先按权重抽取一个结果,例如 锯齿
后面的 <<宝石类型>.属性><<宝石类型>.数值> 会读取 锯齿 节点下面的配置。

这样一个 副本1宝石 就能生成多种不同属性的宝石,不需要为每一种属性复制一整段 NBT。

用 inherit 做固定宝石模板

yaml
通用宝石模板:
  material: NETHER_STAR
  amount: 1
  lore:
    - "§宝§石"
    - "&7宝石属性: <属性名> +%neigeitems_nbt_属性数值%<属性后缀>"
    - "&7成功几率: &e<成功率显示>"
  nbt:
    属性数值: <属性值>
    gtgem:
      type: "gem"
      name: "<显示名>"
      socket: "<槽位>"
      rules:
        chance: <成功率>
        cost:
          money: <金币>
          exp: 0
      attributes:
        <属性名>: <属性值>
  sections:
    显示名: "&f宝石"
    槽位: "&f通用槽位"
    属性名: "生命值"
    属性值: 100
    属性后缀: ""
    成功率: 1.0
    成功率显示: "100%"
    金币: 0

一级生命宝石:
  inherit: 通用宝石模板
  name: "&a一级生命宝石"
  sections:
    显示名: "&a一级生命宝石"
    槽位: "&a生命槽位"
    属性名: "生命值"
    属性值: 300
    成功率: 1.0
    成功率显示: "100%"
    金币: 50

二级攻击宝石:
  inherit: 通用宝石模板
  name: "&c二级攻击宝石"
  sections:
    显示名: "&c二级攻击宝石"
    槽位: "&c攻击槽位"
    属性名: "物理攻击力"
    属性值: <number::10_30_0_HALF\_UP>
    成功率: 0.8
    成功率显示: "80%"
    金币: 200

inherit: 通用宝石模板 会继承模板里的材质、Lore、NBT 和规则。
每个子宝石只需要覆盖 namesections,适合做一整套固定宝石。

NeigeItems 多槽位装备示例

yaml
多彩盾牌:
  material: SHIELD
  Name: "&d&l多彩盾牌"
  Lore:
    - "&7可镶嵌多种宝石的盾牌"
    - "§孔§位 &7[ &c空槽位 &7<&6&l红宝石&7> ]"
    - "§孔§位 &7[ &c空槽位 &7<&b&l蓝宝石&7> ]"
    - "§孔§位 &7[ &c空槽位 &7<&e&l黄宝石&7> ]"
  nbt:
    gtgem:
      sockets:
        "0":
          type: "&6&l红宝石"
        "1":
          type: "&b&l蓝宝石"
        "2":
          type: "&e&l黄宝石"

NeigeItems 通用宝石

yaml
万能石:
  material: QUARTZ
  Name: "&f&l万能石"
  Lore:
    - "§宝§石"
    - "&7可镶嵌到多种槽位"
    - "&7成功率: &e100%"
  nbt:
    gtgem:
      type: "gem"
      name: "&f&l万能石"
      socket:
        - "&6&l红宝石"
        - "&b&l蓝宝石"
        - "&e&l黄宝石"
      rules:
        chance: 1.0
        cost:
          money: 0
          exp: 0
      attributes:
        生命值: 100.0

MythicMobs 宝石示例

yaml
RubyGem:
  Id: NETHER_STAR
  Display: "&6&l红宝石"
  Lore:
    - "§宝§石"
    - "&7一颗闪耀的红宝石"
  Options:
    NBT:
      gtgem.type: "gem"
      gtgem.name: "&6&l红宝石"
      gtgem.socket: "&6&l红宝石"
      gtgem.rules.chance: 0.8
      gtgem.rules.cost.money: 100
      gtgem.rules.cost.exp: 0
      gtgem.attributes.生命值: 500.0
      gtgem.attributes.物理攻击力: 10.0

MythicMobs 装备示例

yaml
RubySword:
  Id: DIAMOND_SWORD
  Display: "&c&l红宝石之剑"
  Lore:
    - "&7一把镶嵌了红宝石槽位的剑"
    - "§孔§位 &7[ &c空槽位 &7<&6&l红宝石&7> ]"
  Options:
    NBT:
      gtgem.sockets.0.type: "&6&l红宝石"
      gtgem.sockets.1.type: "&6&l红宝石"

镶嵌后的 Lore 显示

装备原本的槽位行:

yaml
lore:
  - "&7一把带红宝石槽位的剑"
  - "§孔§位 &7[ &c空槽位 &7<&6&l红宝石&7> ]"

镶嵌成功后,这一行会按 config.yml 的模板变成已镶嵌显示:

yaml
lore-template:
  socket-filled: "&7[ &a已镶嵌 &7<&b{gem}&7> ]"

显示效果:

text
[ 已镶嵌 <红宝石> ]

可用变量:

变量内容
{gem}宝石名称
{type}槽位类型

如果想显示槽位类型和宝石名称,可以这样写:

yaml
lore-template:
  socket-filled: "&7[ &a已镶嵌 &7<&e{type}&7> &8- &b{gem}&7 ]"

显示效果:

text
[ 已镶嵌 <红宝石槽位> - 红宝石 ]

拆卸宝石后,GTGem 会把镶嵌前那一行槽位 Lore 恢复回来,所以原本装备的排版不会被固定模板覆盖。

属性写入结果

镶嵌成功后,GTGem 会把所有已镶嵌宝石的属性汇总到配置中的 tag。

默认:

yaml
attribute:
  write-to-nbt: true
  tag: "GTGemAttr"

装备最终会出现:

yaml
GTGemAttr:
  生命值: 500.0
  物理攻击力: 10.0

CraneAttribute、AttributePlus 等属性插件需要读取这个 NBT 标签,属性才会真正生效。

调试方法

手持宝石或装备执行:

text
/gtgem debug item

重点看:

  • 宝石是否有 gtgem.type: gem
  • 宝石 socket 是否和装备槽位 type 一致。
  • 装备是否有 gtgem.sockets
  • 镶嵌后是否出现 GTGemAttr