Skip to content

Prop 快捷道具

功能定位

把物品标记为"快捷道具",绑定 ArcartX 客户端按键效果和临时属性加成。

核心特性

  • 道具定义:在 prop/props/*.yml 中定义快捷道具,每个道具有独立的按键绑定、冷却、消耗和效果
  • 按键触发:绑定 ArcartX 客户端自定义按键,按下即触发道具效果
  • 冷却与消耗:每个道具可配置使用冷却和消耗条件
  • 使用条件:通过 PlaceholderAPI 变量配置使用条件(等级、余额、职业等),支持数值比较、字符串匹配、包含判断和正则匹配
  • 临时属性加成:道具使用时可附加 MythicLib 临时属性(如攻击力、暴击率),效果结束后自动移除
  • 提示文案:自定义道具使用、冷却中、消耗不足等提示文本(prop/language.yml
  • 按键配置:按键绑定定义在 prop/key.yml,可自定义客户端按键映射

依赖

类型依赖作用缺少时表现
必需ArcartX客户端按键、道具触发包和 UI 提示模块无法接收客户端快捷键
可选PlaceholderAPI解析道具使用条件中的 %...% 变量条件原样保留无法解析,等同未配置条件
可选MythicLib / MMOItemsml|... / mythiclib|... 临时属性效果对应属性效果跳过,命令/消息类效果仍可用
可选AttributePlusap|... AttributePlus 属性加成效果对应属性效果跳过
可选其他命令型插件道具效果中执行该插件命令AXS 不强依赖,命令不存在时由服务端返回未知命令

启用步骤

yaml
modules:
  prop:
    enabled: true

配置

主配置(ArcartXProp.yml

yaml
settings:
  debug: false

mythiclib:
  enabled: false
  source-prefix: "AXS_PROP"
字段类型默认值说明
settings.debugbooleanfalse是否输出调试日志
mythiclib.enabledbooleanfalse是否启用 MythicLib 临时属性效果
mythiclib.source-prefixstringAXS_PROPMythicLib modifier 前缀,最终生成 <前缀>_<道具ID>_<属性>

按键映射(prop/key.yml

yaml
category: "ArcartX 快捷道具按键"

keys:
  快捷道具1:
    defaultKey: "Z"
    slot: Slot1
  快捷道具2:
    defaultKey: "X"
    slot: Slot2
  快捷道具3:
    defaultKey: "C"
    slot: Slot3
字段说明
category客户端按键分类名,显示在按键设置界面
keys.<名称>.defaultKey默认绑定的按键
keys.<名称>.slot对应的 ArcartX 额外槽位 ID

提示文案(prop/language.yml

yaml
COOL_DOWN: "&7[&dArcartXProp&7]&c{NAME}&f还在冷却,你还需要等待&a{TIME}秒&f才能使用道具"
NO_PERMISSION: "&7[&dArcartXProp&7]&f你没有权限使用 &c{NAME}"
NO_KEY: "&7[&dArcartXProp&7]&c{NAME} &f无法按键使用"
NO_HAND: "&7[&dArcartXProp&7]&c{NAME} &f该道具无法手持使用"
CONDITION_NOT_MET: "&7[&dArcartXProp&7]&c{NAME} &f使用条件不满足: &e{CONDITION}"
变量说明
{NAME}道具显示名
{TIME}剩余冷却秒数(保留两位小数)
{CONDITION}未满足的条件原文(仅 CONDITION_NOT_MET 可用)

道具定义

道具定义文件位于 prop/props/*.yml,支持子目录。每个 .yml 文件定义一个道具。

字段说明

字段类型默认值说明
namestring文件名道具显示名
coolDownGroupstring默认冷却组冷却组;同组道具共享冷却
coolDownTimeint10冷却时间(秒)
Durationint10持续时间(秒);药水、属性效果到期后自动移除
removebooleantrue使用后是否消耗物品
handbooleantrue是否允许手持右键使用
keybooleantrue是否允许通过客户端按键触发
permissionstring""使用权限;留空表示不检查
conditionslist[]使用条件列表;详见下方"使用条件"
effectslist[]效果列表;详见下方"效果类型"

使用条件(conditions)

通过 条件系统 配置使用门槛,支持 PlaceholderAPI 行内表达式Aria 脚本JavaScript 脚本。所有条件必须同时满足(AND)。

PAPI 行内格式<PlaceholderAPI变量> <运算符> <期望值>

支持运算符

运算符说明示例
==等于(不区分大小写)%player_world% == world
!=不等于%craneattribute_job% != 无职业
>=大于等于(数值比较)%player_level% >= 10
<=小于等于%player_max_health% <= 40
>大于%player_health% > 5
<小于%player_food_level% < 20
contains包含子串(不区分大小写)%luckperms_groups% contains VIP
regex正则匹配(不区分大小写)%player_name% regex ^[A-Z].*

数值比较:当两端都可解析为数字时按数值比较,否则按字符串字典序比较。

完整示例

yaml
conditions:
  # PAPI 数值 / 字符串
  - "%player_level% >= 10"
  - "%player_world% == world"
  - "%luckperms_groups% contains VIP"

  # Aria 脚本(需 BlinkAriaHost)
  - "aria: return player.getHealth() > 5"
  - type: aria
    script: "return player.hasPermission('prop.advanced.use')"

  # JavaScript 脚本(零依赖,JVM 自带)
  - "js: player.getHealth() > 5"
  - type: js
    script: "return player.hasPermission('prop.advanced.use')"

依赖说明

  • PAPI 条件:需安装 PlaceholderAPI;未安装时占位符不解析,条件通常不通过。
  • Aria 条件:需 Blink 系插件注入 Aria;未部署时条件求值为 false。
  • JS 条件:零外部依赖,Java 8+ 自带 Nashorn 引擎;无 Blink 时优先使用 JS 替代 Aria。 详见 条件系统

效果类型(effects)

每行格式:<类型>|<参数>

类型参数格式说明
cmd命令文本以控制台身份执行命令,{player} 替换为玩家名
msg消息文本给玩家发送彩色消息,支持 & 颜色码
food数字恢复饱食度
health数字恢复生命值
healthPercent数字按最大生命值百分比恢复
exp数字增加经验值
potion效果:等级附加药水效果,持续时间取 Duration,如 SPEED:2
ap属性名:数值附加 AttributePlus 属性,持续时间取 Duration,如 物理伤害:10
ml / mythiclib属性:数值附加 MythicLib 临时属性,需在主配置启用,如 ATTACK_DAMAGE:5

物品绑定

Prop 模块通过 ArcartX 的 NBT 系统将道具 ID 写入物品:

NBT 标签说明
prop_id道具定义 ID(对应 prop/props/ 下文件名,不含扩展名)
cooldown冷却组标签,用于 ArcartX 冷却系统

使用 /axs prop set <道具ID> 可将手持物品绑定为指定道具(调试用)。

命令

权限:arcartxsuite.admin

命令说明
/axs prop status查看 Prop 模块状态和已加载道具列表
/axs prop reload重载 Prop 配置
/axs prop set <道具ID>把指定道具 ID 写入执行者手持物品的 NBT,用于调试

使用流程

  1. 玩家手持右键或按下绑定按键
  2. 读取物品 prop_id NBT → 查找道具定义
  3. 依次检查:手持/按键权限 → 使用权限 → 使用条件(conditions) → 冷却
  4. 设置冷却 → 消耗物品(如配置) → 执行效果列表

注意事项

  • 道具文件名(不含 .yml)即为道具 ID,匹配时转为小写
  • 同一冷却组内的多个道具共享冷却时间
  • MythicLib 效果需要在 ArcartXProp.yml 中启用 mythiclib.enabled: true
  • 条件中使用的 PlaceholderAPI 变量取决于服务端已安装的 PAPI 扩展
  • 条件值支持中文(如 %player_biome% == 森林%luckperms_primary_group% == 战士

基于 GPL-3.0 许可发布