> For the complete documentation index, see [llms.txt](https://liyi2015.gitbook.io/magicgem/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://liyi2015.gitbook.io/magicgem/advance/bao-shi-pei-zhi.md).

# 宝石配置

详尽说明，教你配置自己的宝石

* 宝石所有的基本配置都以大写字母开头。大小写错误将使得配置项目无法识别
* 宝石的Display、Lore、Tips等条目均支持颜色代码&
  * 宝石不支持直接写十六进制颜色，如<#123ABF>
  * **但你可以简单做手工转换**，方法是去掉尖括号，**在前面加上\&x，再在每个数字、字母前加&**
  * 如上述<#123ABF>**手工转换后就是**\&x&1&2&3\&A\&B\&F

## 宝石外观

宝石外观通常不影响宝石功能

* **=================宝石功能：材料================**
* Display：字符串，附魔宝石显示名，任意修改该名称不影响宝石的识别。支持颜色代码&。
* Tips：字符串列表，宝石物品上的lore， 任意修改该Lore不影响宝石的识别。支持颜色代码&。
* Texture：base64字符串，头颅贴图, 可在<https://minecraft-heads.com/获取>
* Material：字符串，原版物品材料名
  * **如果要使用原版的物品作为材料，你不能写Texture**
  * 支持冒号+子ID的形式，但不推荐
  * 如果使用药水，你可以指定药水的颜色Color
* Color：字符串或整数，当且仅当材料为药水时可以使用
  * 插件内置了十八种可选颜色字符串。
  * | 白色     | 银色     | 灰色      | 黑色     | 红色     | 栗色     |
    | ------ | ------ | ------- | ------ | ------ | ------ |
    | WHITE  | SILVER | GRAY    | BLACK  | RED    | MAROON |
    | **黄色** | **橄榄** | **浅绿**  | **绿色** | **青色** | **蓝绿** |
    | YELLOW | OLIVE  | LIME    | GREEN  | AQUA   | TEAL   |
    | **蓝色** | **海蓝** | **紫红色** | **紫色** | **橙色** | **金色** |
    | BLUE   | NAVY   | FUCHSIA | PURPLE | ORANGE | GOLD   |
  * 在MC1.11以下，你只能使用这些字符串，且某些颜色是一样的
  * 在MC1.11以上的版本，你不仅可以使用这些字符串，还能用RGB整数表示颜色
    * RGB的三个分量需要用画图工具，或者干脆去网上找。找到以后转换为整数
    * 可以用计算器进行转换，公式为$RGB=(R\times256+G)\times256+B$
  * 提示：插件会阻止用户
    * 将宝石放在地上
    * 右键触发原版使用
    * 用作原版合成材料
    * 用作燃料
  * 因此一般情况下请放心使用原版材料
* Effect: 额外药水效果，当且仅当材料为药水时可以使用。
  * 可以有多个效果，用分号分隔
  * 格式为 Effect: "药水效果1:持续秒数1:等级1;药水效果2:持续秒数2:等级2"。如

    ```
    Effect: "GLOWING:30:1;SPEED:30:3"
    ```
  * **药水效果是原版特性，要喝下才会生效**。因此建议配合玩家宝石并打开Eat选项
* Glow: true或false，为true时让物品发出附魔的辉光特效。默认为false
  * 其原理是添加一个锋利附魔，并用附魔隐藏标志隐藏它
  * **因此对头颅无效**
* CustomModelData: 整数, 为有自定义材质包的腐竹提供。
* **所有加粗材料的位置均可以使用上述格式，此后不再赘述**
* 某些位置你必须压缩成一行来写，会特别注明
* **=============================================**

## 功能选项

### **通用配置**

* Name: 字符串, 识别宝石用的名称, 储存在NBT里, 你只需要保证每个宝石的名称唯一
* Type：宝石类型 可选择ITEM\_GEM（物品宝石），PLAYER\_GEM（玩家宝石）以及 RANDOM\_GEM（随机宝石）
* Lore：识别Lore，**可选项**，如果有这一条，则插件会将所有包含此Lore的物品视为该宝石（不推荐）
* Success: 强化成功率**表达式**. 如果没能成功宝石立即消耗
  * 不写时默认是100，必然成功.
  * 大于等于100必然成功，小于等于0必然失败
  * **你可以使用表达式来读取装备上的Lore、附魔等级、NBT数字或者读取玩家的PlaceholderAPI，参与成功率计算**
  * **==============宝石功能：物品表达式================**
  * 表达式写法：和Excel公式类似。
    * 数值计算支持加减乘除、括号、取余数(%)。
    * 逻辑计算支持大于、小于、等于（==）、大于等于(>=)、小于等于(<=)、不等于（!=)、与(&&)、或(||)、非(!)
    * 支持三目操作符?:
      * **小贴士：三目操作符?:的用法**
      * 判断条件?值1:值2
      * 当条件为真时，整个式子的值为值1；否则为值2
    * 支持函数，格式为$函数名(参数1,参数2...)
      * $RANDOM()：产生0-1之间的随机小数
      * $RANDINT(a,b)：产生大于等于a，小于b的随机整数
      * $FLOOR(a)：取小于a且最接近a的整数
      * $LOG(a): 取a的自然对数
      * $POW(a,b): 取a的b次方
      * $SQRT(a): 取根号a
  * 表达式变量：宝石插件提供了三个**物品变量**，可以读取物品Lore、附魔、NBT，格式为$关键词:要读取的内容?默认值$
    * 读取Lore数值: $LORE:要读取的Lore?默认值$。适用于读取Lore变量
    * 读取Lore词汇：$WORD:字符串?常量值$
      * 该功能可以读取Lore中的特定字符串，把它转化为数字代入计算。
      * 读不到字符串时这个式子为0。例如：
      * ```
        Success: "$WORD:武器品质: 白?100$ 
          + $WORD:武器品质: 绿?80$
          + $WORD:武器品质: 蓝?70$
          + $WORD:武器品质: 紫?60$
          + $WORD:武器品质: 红?50$
          + $WORD:武器品质: 橙?40$
          + $WORD:武器品质: 黑?30$
          + $WORD:武器品质: 粉?30$
          + $WORD:武器品质: 金?20$"
        ```
      * 上述这个例子中，插件会读取武器品质设置成功率（注意该配置中武器不能有多个品质）
    * 读取附魔等级：$ENCHANT:要读取的附魔名?默认值$。可读取装备上任意附魔的等级
    * 读取NBT浮点数：$NBT:要读取的NBT名?默认值$。可读取NBT小数
    * **可以读取PAPI**
    * **默认值不填则为0**
  * 上述式子可以套娃，比如Success: 100-$SQRT(1,$LORE:强化等级?1$)
  * **所有加粗表达式的位置均可以按上述格式书写，之后不再赘述**
  * **某些位置的表达式不能读取变量，会特别注明**
  * **=============================================**
* SuccessTip: 宝石使用成功的**提示信息**，如果没有则使用默认提示
  * **==============宝石功能：提示信息================**
  * 提示信息有四种：不提示（NONE），聊天栏（Chat），动作栏（Actionbar），标题（Title）。
  * 格式分别为
    * Chat{messages=消息1;消息2;消息3..;interval=间隔的ticks数}
    * ActionBar{messages=消息1;消息2;消息3..;interval=间隔的ticks数}
    * Title{messages=大标题1;小标题1;大标题2;小标题2;..;interval=间隔的ticks数;fadein=淡入ticks数;fadeout=淡出ticks数;stay=停留ticks数}
  * 不写花括号，只写一行文字，等价于发送一条聊天栏消息
  * 写None（无视大小写），等价于不发送任何消息
  * 支持颜色代码&。
  * **所有加粗提示信息的位置均可以按上述格式书写，之后不再赘述**
  * **=============================================**
* FailTip：宝石使用失败的**提示信息**，如果没有则使用默认提示
* Rewards: 字符串列表，详见宝石奖励

### **物品宝石选项**

* Require: 字符串列表, 控制物品宝石能强化的装备类型. 这里**只对结尾敏感.**
  * 比如，SWORD对所有材料的剑都生效
  * \_ AXE既对斧头(某某材料AXE)生效也对镐子(某某材料PICKAXE)生效
  * 有三种内置类型: 武器WEAPON/工具TOOL/盔甲ARMOR
    * Weapon: 含剑/斧/弓/弩/三叉戟
    * Armor: 包括头盔/胸甲/护腿/靴子/鞘翅。**注意不包括盾牌**
    * Tool: 包括斧/镐/铲/锄
  * **特殊识别**：支持显示名/Lore/NBT/NBT字符串/宝石识别。格式为关键词+冒号+识别内容。
    * **注意关键词全为大写，冒号后没有空格**
    * 识别名称："NAME:要识别的名字"
    * 识别Lore："LORE:要是别的Lore"
    * 识别NBT是否存在："NBT:要检测存在的NBT名称"
    * 识别NBT字符串的内容："NBT:要检测的NBT名称:要检测的NBT内容"
    * 识别宝石名："GEM:宝石名"
    * 一些例子："NAME:神奇的钓竿"，"LORE:按SHIFT+右键切换附魔"，"GEM:锋利宝石"，"NBT:MYTHIC\_TYPE:振奋胸甲"
  * **注意，写在Require里的条件，并非需要全部满足，而是只要满足一条就能被识别。**
* Embed：可以镶嵌的最大颗数。**为0或者不写此条则为一次性宝石**
* Downgrade：强化失败的情况下，物品降级的概率**表达式**。仅对物品宝石有效
* DowngradeTip：物品降级时的**提示信息**。仅对物品宝石有效
* RemoveTip：拆卸宝石时的**提示信息**。仅对物品宝石有效
* Break：拆卸时宝石破碎的概率**表达式**。仅对物品宝石有效
* BreakTip：拆卸时宝石破碎的**提示信息**。仅对物品宝石有效
* FastUse：是否允许玩家右键快速将宝石打到某个槽位上。仅对物品宝石有效。可选择
  * 头盔（Helmet或Head）
  * 胸甲（Chestplate或Chest）
  * 护腿（Leggings或Legs）
  * 靴子（Boots或Feet）
  * 主手（Mainhand或Hand）
  * 副手（Offhand）
  * **不写FastUse时禁止快速打在槽位上**
* Gui：字符串列表，允许宝石在哪些GUI上使用。仅对物品宝石有效
  * 内置的三个GUI分别为workbench（工作台），backpack（玩家背包），default（默认镶嵌台）
  * 玩家背包监听默认是关闭的。你需要在config.yml中开启它
  * 注意，**创造模式**下开启背包监听，在背包给物品打宝石，物品会被直接复制。这是无法修复的原版特性。

### **玩家宝石选项**

* Eat：true或false，是否是食用宝石。仅对玩家宝石有效
  * 如果为true，则宝石材料必须是原版就可以吃的东西
* Shift：true或false，是否需要蹲着才能使用
* Cooldown：宝石使用冷却时间，单位为秒
* CooldownTip：冷却时间提示，格式为
  * ```
    位置{p=提示前缀;s=提示后缀;empty=空进度格子样式;full=满进度格子样式;length=进度条长度}
    ```
  * 其中位置同样可以选择ActionBar（动作栏）、Chat（聊天框）、Title（标题）
  * **提示后缀必须要包含浮点数占位符%.nf**
  * 例如，如下配置会在玩家动作栏显示
    * 宝石使用冷却时间:||||||||||||||||||| x.xx秒
  * ```
    CooldownTip: ActionBar{p=&a宝石使用冷却时间;s=&a%.2fs;empty=&f|;full=&a|;length=75}
    ```

### **随机宝石选项**

* 随机宝石较为特殊，其成功率和奖励均没有作用，只能套娃别的宝石
* 随机宝石只能套娃物品宝石和玩家宝石中的某一种，不能两种都有。其格式为

  ```
  Gems:
    宝石1: 概率1
    宝石2: 概率2
    ...
  ```
* 默认情况，随机宝石包含什么宝石他自己就是什么宝石。
  * 比如，随机宝石包含一系列的玩家宝石，那么你就只能右键使用它
  * 又比如，随机宝石包含一系列物品宝石，那么你就只能把它打在物品上
* 无论套娃的宝石是否成功使用，随机宝石都会被消耗
* 特殊情况：你可以添加一行Give: true，这样随机宝石会变成**抽奖宝石**，玩家右键它就会随机获得一颗宝石
