AdventureSkills
技能激活 + 天赋点系统 — 类 AuraSkills 风格的 RPG 成长体系
AdventureSkills 是一款为 Minecraft 服务器设计的技能与天赋系统插件。玩家可从 11 种技能中选择激活最多 2 个,通过日常行为获取经验升级,每升 5 级获得 1 个天赋点,投入 6 层 24 个天赋节点构建独特的角色成长路线。
核心特性
- 11 种技能 — 农牧/伐木/采矿/钓鱼/挖掘/射箭/防御/战斗/敏捷/附魔/炼药
- 技能槽机制 — 同时最多激活 2 个技能,仅激活技能获得经验
- 6 层天赋树 — 24 个天赋节点(每层 3 普通 + 1 精英),逐行解锁
- 实时 Attribute 效果 — 天赋直接修改玩家属性(生命/护甲/攻速等)
- BossBar + ActionBar — 经验获取实时显示,AuraSkills 风格
- 防作弊系统 — 频率限制、每秒经验上限、临时封禁、敏捷 30 分钟上限
- 排行榜 — 全服技能等级总和排行 Top 10
- 全 GUI 操作 — 主界面/技能选择/天赋树/排行榜/重置确认(两步)
- 管理员工具 — 设等级/给天赋点/批量设置/回滚操作
- 重置系统 — 金币 + 重置卷轴双重消耗
- 数据完整性 — 启动时自动校验、异步批量存储
- PlaceholderAPI — 15+ 个占位符
安装与依赖
| 项目 | 要求 |
| 服务端 | Spigot / Paper 1.20+ |
| Java | 17+ |
| 可选依赖 | Vault(重置金币扣费)、PlaceholderAPI(占位符)、AuraSkills(兼容参考) |
- 放入
AdventureSkills-2.1.0.jar 到 plugins/
- 启动服务器,自动生成配置文件
- 编辑配置后
/skillsadmin reload 热重载
目录结构
plugins/AdventureSkills/
├── config.yml # 核心配置(经验倍率/天赋/性能/防作弊)
├── messages.yml # 全部消息文本
├── talent-gui.yml # 天赋树 GUI 配置(图标/CustomModelData)
├── menu/
│ ├── main.yml # 主界面布局
│ ├── skill_select.yml # 技能选择界面
│ ├── leaderboard.yml # 排行榜界面
│ ├── reset_confirm.yml # 重置确认界面
│ └── xp_sources.yml # 经验途径界面
└── data.db # SQLite 数据库
技能系统
11 大技能
| 技能 | ID | 颜色 | 图标 | 说明 |
| 农牧 | farming | §a | WHEAT | 收获作物/植物 |
| 伐木 | foraging | §2 | OAK_LOG | 砍伐原木/树叶 |
| 采矿 | mining | §7 | DIAMOND_PICKAXE | 挖掘矿石/石头/深板岩 |
| 钓鱼 | fishing | §b | FISHING_ROD | 钓鱼/钓宝藏 |
| 挖掘 | excavation | §6 | IRON_SHOVEL | 挖泥土/沙子/砂砾 |
| 射箭 | archery | §c | BOW | 箭矢伤害/击杀 |
| 防御 | defense | §9 | SHIELD | 承受伤害/盾牌格挡 |
| 战斗 | fighting | §4 | IRON_SWORD | 近战伤害/击杀生物/击杀玩家 |
| 敏捷 | agility | §e | LEATHER_BOOTS | 疾跑距离/跳跃 |
| 附魔 | enchanting | §d | ENCHANTING_TABLE | 附魔物品 |
| 炼药 | alchemy | §5 | BREWING_STAND | 酿造药水 |
经验与升级
升级公式
所需经验 = base_required + (level × per_level_increment)
默认: 100 + (level × 50)
实际获得经验 = baseAmount × xpRate × defaultMultiplier × anticheatMultiplier × permissionMultiplier
| 参数 | 配置项 | 默认值 |
| 基础所需经验 | xp.base_required | 100 |
| 每级增量 | xp.per_level_increment | 50 |
| 全局倍率 | xp.default_multiplier | 0.5 |
| 最大等级 | core.max_skill_level | 50 |
天赋点获取
- 每升 5 级(
talent_point_interval)获得 1 个天赋点(talent_points_per_interval)
- 天赋点总上限:110(
max_talent_points)
- 11 技能 × 50 级 ÷ 5 级/点 = 110 点
权限倍率
给予权限 skillsystem.xp.multiplier.<倍率> 可提升经验倍率。例如 skillsystem.xp.multiplier.2.0 = 2 倍经验。取最高值生效。
里程碑音效
玩家总技能等级(所有技能等级之和)达到指定阈值时播放成就音效。默认阈值:10 / 25 / 50 / 75 / 100。
经验来源
| 技能 | 来源 | 基础倍率 | 说明 |
| 农牧 | crop_harvest | 2.5 | 收获成熟作物(需满生长) |
| plant_harvest | 1.5 | 收获植物(甘蔗/仙人掌/竹子等) |
| 伐木 | log_break | 2.0 | 砍伐原木 |
| leaf_break | 0.3 | 打碎树叶 |
| 采矿 | ore_break | 3.0 | 挖掘矿石(煤/铁/金/钻/绿宝石等) |
| stone_break | 0.5 | 挖掘石头/花岗岩/闪长岩/安山�ite等 |
| deepslate_break | 0.8 | 挖掘深板岩 |
| 钓鱼 | catch_fish | 5.0 | 钓到鱼 |
| catch_treasure | 10.0 | 钓到宝藏(弓/附魔书/鞍等) |
| 挖掘 | dirt_break | 1.0 | 泥土/草方块/黏土等 |
| sand_break | 1.5 | 沙子/红沙 |
| gravel_break | 2.0 | 砂砾 |
| 射箭 | arrow_damage | 1.0 | 箭矢造成的伤害值 |
| arrow_kill | 3.0 | 用箭击杀生物 |
| 防御 | damage_taken | 0.5 | 承受伤害量 |
| block_damage | 1.0 | 盾牌格挡 |
| 战斗 | melee_damage | 1.0 | 近战伤害量 |
| mob_kill | 5.0 | 击杀生物 |
| player_kill | 15.0 | 击杀玩家 |
| 敏捷 | sprint_per_block | 0.1 | 疾跑每格距离 |
| jump | 0.5 | 跳跃 |
| 附魔 | enchant_item | 10.0 | 附魔物品 |
| 炼药 | brew_potion | 8.0 | 酿造药水(5 格范围内玩家) |
防刷机制:玩家放置的方块被追踪,破坏自己放置的方块不获得经验。
技能激活
- 最多同时激活 2 个技能(
core.max_active_skills)
- 仅激活的技能获得经验
- 首次选满 2 个技能后标记为「已初始化」
- 未初始化的玩家无法获得经验
- 可通过 GUI 切换激活/取消技能
天赋树
天赋树由 6 行组成,每行 3 个普通天赋 + 1 个精英天赋。逐行解锁:在当前行投入 ≥8 点后解锁下一行。
核心规则
- 普通天赋每级消耗 1 点,最高 5 级(总计 5 点)
- 精英天赋费用递增:1/1/2/2/2(总计 8 点),需本行普通天赋已投入 ≥8 点
- 减点时级联回收:若某行投入不足 8 点,自动清空所有更高行并退还点数
- 左键加点,右键减点
6 大天赋行
| 行 | 类别 | ID | 图标 | 解锁条件 |
| 1 | 生存核心 | survival | GOLDEN_APPLE | 默认解锁 |
| 2 | 战斗防御 | combat_defense | SHIELD | 第 1 行 ≥8 点 |
| 3 | 近战攻击 | melee_attack | DIAMOND_SWORD | 第 2 行 ≥8 点 |
| 4 | 远程与魔法 | ranged_magic | BOW | 第 3 行 ≥8 点 |
| 5 | PVE 专项 | pve | ZOMBIE_HEAD | 第 4 行 ≥8 点 |
| 6 | 冒险探索 | adventure | COMPASS | 第 5 行 ≥8 点 |
全部 24 天赋
第 1 行:生存核心
| 天赋 | ID | 类型 | 每级效果 | 满级 | 说明 |
| 生命强化 | health_boost | 普通 | +2.0% | +10% | 提升基础生命值上限 |
| 代谢减缓 | slow_hunger | 普通 | +3.0% | +15% | 降低饥饿值消耗速度(概率阻止饥饿下降) |
| 水下适应 | water_resist | 普通 | +4.0% | +20% | 减少溺水伤害 |
| 生命链接 | life_link | 精英 | +0.1 点/秒 | +0.5 点/秒 | 生命值 <20% 时自动回血 |
第 2 行:战斗防御
| 天赋 | ID | 类型 | 每级效果 | 满级 | 说明 |
| 盔甲增效 | armor_boost | 普通 | +1.6% | +8% | 提升盔甲防御值(Attribute 修改) |
| 爆炸抗性 | explosion_resist | 普通 | +2.4% | +12% | 减少爆炸伤害 |
| 远程格挡 | ranged_block | 普通 | +2.0% | +10% | 减少远程(投射物)伤害 |
| 护盾精通 | shield_master | 精英 | +3.0% | +15% | 手持盾牌格挡时额外减伤 |
第 3 行:近战攻击
| 天赋 | ID | 类型 | 每级效果 | 满级 | 说明 |
| 利刃精通 | blade_master | 普通 | +2.4% | +12% | 提升剑类武器基础伤害 |
| 迅捷挥砍 | swift_strike | 普通 | +1.6% | +8% | 提升攻击速度(Attribute 修改) |
| 强力击退 | power_knockback | 普通 | +3.0% | +15% | 增强近战击退效果 |
| 致命打击 | critical_strike | 精英 | +2.0% | +10% | 近战暴击概率(暴击 1.5x 伤害) |
第 4 行:远程与魔法
| 天赋 | ID | 类型 | 每级效果 | 满级 | 说明 |
| 精准射击 | precise_shot | 普通 | +2.0% | +10% | 提升弓类基础伤害 |
| 箭矢增速 | arrow_speed | 普通 | +3.0% | +15% | 提升箭矢飞行速度 |
| 药效延长 | potion_extend | 普通 | +4.0% | +20% | 延长正面药水效果 |
| 爆头专精 | headshot | 精英 | +10.0% | +50% | 弓箭命中头部额外伤害 |
第 5 行:PVE 专项
| 天赋 | ID | 类型 | 每级效果 | 满级 | 说明 |
| 亡灵猎手 | undead_hunter | 普通 | +3.0% | +15% | 对亡灵生物额外伤害 |
| 节肢克星 | arthropod_bane | 普通 | +3.0% | +15% | 对节肢生物额外伤害 |
| 爆炸预警 | explosion_warning | 普通 | +0.1 秒 | +0.5 秒 | 延长苦力怕引信时间 |
| 群体威慑 | group_intimidation | 精英 | +4.0% | +20% | 概率取消敌对生物锁定 |
第 6 行:冒险探索
| 天赋 | ID | 类型 | 每级效果 | 满级 | 说明 |
| 挖掘加速 | mining_speed | 普通 | +2.0% | 急迫 0-2 | 给予急迫药水效果(1-2级=0级, 3-4级=1级, 5级=2级) |
| 水下呼吸 | water_breathing | 普通 | +5.0% | +25% | 概率减缓水下氧气消耗 |
| 工具耐久 | tool_durability | 普通 | +3.0% | +15% | 概率阻止工具耐久损耗 |
| 状态调和 | status_harmony | 精英 | 1 级 | 5 级 | 负面效果 -20% 时间 / 正面效果 +10% 时间 |
天赋效果实现方式
| 效果类型 | 实现方式 | 天赋 |
| Attribute 修改 | 通过 AttributeModifier 实时修改 | 生命强化、盔甲增效、迅捷挥砍 |
| 事件伤害修改 | 监听 EntityDamageEvent | 水下适应、爆炸抗性、远程格挡、护盾精通、利刃精通、致命打击、精准射击、爆头专精、亡灵猎手、节肢克星 |
| 概率触发 | 随机数判定 | 代谢减缓、工具耐久、水下呼吸、群体威慑 |
| 周期任务 | Scheduler 定时执行 | 生命链接(每秒)、挖掘加速(每15秒)、水下呼吸(每tick) |
| 药水修改 | 监听 EntityPotionEffectEvent | 药效延长、状态调和 |
| 速度修改 | 修改 Projectile.velocity | 箭矢增速、强力击退 |
| 实体修改 | 修改 Creeper.maxFuseTicks | 爆炸预警 |
级联回收机制
当玩家在某行减点导致该行总投入低于 8 点时,系统会自动清空所有更高行的天赋并退还全部点数。
- 精英天赋依赖:若本行普通天赋投入 <8 点,精英天赋也会被回收
- 级联向上:第 N 行不足 → 清空第 N+1、N+2...全部行
- 系统消息会列出每层回收的点数,例如:
天赋不足8点,已回收第三层3点、第四层2点,共返还5天赋点
命令系统
玩家命令 /ss
别名:/ss_skills
| 命令 | 说明 | 权限 |
/ss 或 /ss menu | 打开技能主界面 GUI | skillsystem.use |
/ss info [技能] | 查看技能信息(不指定则显示所有激活技能) | skillsystem.use |
/ss talent 或 /ss tree | 打开天赋树 GUI | skillsystem.use |
/ss top | 打开排行榜 GUI | skillsystem.use |
/ss reset | 打开重置确认 GUI(两步确认) | skillsystem.reset |
/ss help | 显示帮助 | skillsystem.use |
管理命令 /skillsadmin
所有管理命令需要 skillsystem.admin 权限(默认 OP)
| 命令 | 说明 | 额外权限 |
/skillsadmin setlevel <玩家> <技能> <等级> | 设置技能等级(经验归零,里程碑同步) | skillsystem.admin.setlevel |
/skillsadmin givepoints <玩家> <数量> | 给予天赋点 | skillsystem.admin.givepoints |
/skillsadmin takepoints <玩家> <数量> | 扣除天赋点 | skillsystem.admin.givepoints |
/skillsadmin resetpoints <玩家> | 重置天赋点和天赋(含效果移除) | skillsystem.admin |
/skillsadmin check <玩家> <技能> | 查询技能状态 | skillsystem.admin |
/skillsadmin massset <技能> <等级> <权限组> | 批量设置在线玩家等级 | skillsystem.admin.setlevel |
/skillsadmin reload | 重载所有配置 | skillsystem.admin |
/skillsadmin rollback <玩家> [次数] | 回滚最近 N 次操作(最多 3 次) | skillsystem.admin |
注意:givepoints 和 takepoints 需在 config.yml 中设置 enable-admin-give-point: true 才能使用。
配置文件
config.yml — 核心配置
核心参数
core:
max_active_skills: 2 # 最大激活技能数
max_skill_level: 50 # 技能等级上限
talent_points_per_interval: 1 # 每次里程碑给予天赋点数
talent_point_interval: 5 # 每 N 级触发一次里程碑
max_talent_points: 110 # 天赋点总上限
reset_cost:
gold: 5000 # 重置消耗金币
scroll_item:
material: PAPER
custom_model_data: 1001
name: "§c技能重置卷轴"
经验倍率
每个技能的每种来源都有独立倍率,在 xp 节点下配置。示例:
xp:
base_required: 100
per_level_increment: 50
default_multiplier: 0.5
multiplier_permission_prefix: "skillsystem.xp.multiplier."
mining:
ore_break: 3.0
stone_break: 0.5
deepslate_break: 0.8
天赋行配置
talent:
row_unlock_cost: 8 # 解锁下一行所需点数
elite_unlock_cost: 8 # 精英天赋解锁所需本行普通天赋点数
categories:
survival:
name: "生存核心"
row: 1
combat_defense:
name: "战斗防御"
row: 2
# ... (共 6 行)
BossBar 经验显示
boss_bar:
enabled: true
stay_ticks: 60 # 显示持续 tick
animate_progress: true # 动画进度条
style: SOLID
format: "{skill_color}{skill_name} {skill_color}Lv.{level} &f{current_xp}&7/&f{required_xp} &e+{gained_xp} &7({percent}%)"
colors:
farming: GREEN
mining: WHITE
fighting: RED
# ... (每技能独立颜色)
ActionBar 经验显示
action_bar:
enabled: true
format: "{skill_color}{skill_name} &7{current_xp}&8/&7{required_xp} &e+{gained_xp}"
性能配置
| 配置项 | 说明 | 默认 |
performance.async_tick_interval | 异步任务间隔 (tick) | 10 |
performance.max_xp_per_second | 每秒经验上限 | 200 |
performance.cache_expire_minutes | 缓存过期 (分钟) | 30 |
performance.cache_refresh_minutes | 缓存刷新 (分钟) | 5 |
performance.batch_save_seconds | 批量保存间隔 (秒) | 300 |
音效配置
sounds:
level_up:
enabled: true
sound: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.0
milestone:
enabled: true
sound: UI_TOAST_CHALLENGE_COMPLETE
total_levels: [10, 25, 50, 75, 100]
敏捷防刷
agility_cap:
enabled: true
max_xp_per_30min: 500.0 # 30 分钟内最大敏捷基础经验
消息开关
message_toggles:
level_up: true
talent_point_gained: true
xp_throttled: true
xp_banned: true
skill_activated: true
talent_allocated: true
talent_deallocated: true
talent-gui.yml — 天赋树 GUI
每个天赋有三种状态的 CustomModelData:locked(未解锁)、unlocked(已学习)、maxed(满级)。
title: "&0&l✦ 天赋树 &8[&a{points}&8点可用]"
bar:
filled: "■"
empty: "□"
filled_color: "&a"
empty_color: "&8"
icons:
default:
locked: 0
unlocked: 0
maxed: 0
health_boost:
locked: 40101
unlocked: 40102
maxed: 40103
# ... (24 个天赋)
main.yml — 主界面 (27 格)
| 位置 | 元素 |
| 槽 4 | 天赋点显示(变量:{unspent}、{earned}、{max}) |
| 槽 12 | 技能槽位 1 |
| 槽 13 | 天赋树按钮 |
| 槽 14 | 技能槽位 2 |
| 槽 20 | 选择技能按钮 |
| 槽 22 | 重置按钮(变量:{gold}) |
| 槽 24 | 经验途径按钮 |
leaderboard.yml — 排行榜 (27 格)
显示全服技能等级总和 Top 10。槽位 10-16 + 19-21。自动刷新间隔在 config 中配置(默认 60 秒)。
messages.yml — 消息配置
所有消息支持 § 颜色代码和变量占位符。分类包括:
- 技能操作 — 激活/已激活/槽位满/取消激活
- GUI 标题 — 技能选择/确认/重置/天赋树/经验途径
- 重置 — 成功/金币不足/缺少卷轴
- 经验等级 — 升级/获得天赋点
- 管理员 — 设等级/给点/扣点/重置/查询/批量/回滚
- 天赋树 GUI — 返回/天赋点/行信息/天赋描述/操作提示/Title 反馈
- 防作弊 — 经验限流/临时封禁
GUI 系统
| 界面 | 大小 | 打开方式 | 说明 |
| 主界面 | 27 | /ss | 技能槽 + 天赋 + 重置 + 经验途径入口 |
| 技能选择 | 27 | GUI 按钮 | 11 技能图标,点击激活/取消 |
| 天赋树 | 54 | /ss talent | 6 行天赋节点,左键加点/右键减点 |
| 排行榜 | 27 | /ss top | Top 10 技能等级总和 |
| 重置确认 (步骤1) | 27 | /ss reset | 第一步确认(带延迟按钮) |
| 重置确认 (步骤2) | 27 | 步骤1确认后 | 最终确认 |
| 经验途径 | 27 | GUI 按钮 | 显示激活技能的经验来源和倍率 |
重置流程
- 玩家点击重置按钮 → 打开第 1 步确认 GUI
- 等待
gui.confirm_duration 秒(默认 3 秒)后确认按钮变为可点击
- 点击确认 → 打开第 2 步最终确认 GUI(同样延迟)
- 最终确认 → 扣除金币 + 重置卷轴,重置所有技能等级 + 天赋 + 效果
权限
| 权限节点 | 说明 | 默认 |
skillsystem.use | 基础使用权限 | true |
skillsystem.reset | 允许重置技能 | true |
skillsystem.admin | 管理员总权限 | OP |
skillsystem.admin.givepoints | 给予/扣除天赋点 | OP |
skillsystem.admin.setlevel | 设置技能等级 | OP |
skillsystem.xp.multiplier.<倍率> | 经验倍率权限(如 2.0 = 双倍) | — |
防作弊系统
anticheat:
enabled: true
frequency_window_seconds: 60 # 检测窗口(秒)
max_events_per_window: 100 # 窗口内最大事件数
throttle_multiplier: 0.1 # 限流时经验倍率
ban_duration_minutes: 10 # 超过 3x 限额时封禁时长
防作弊机制
- 事件频率限制 — 60 秒窗口内同一技能超过 100 次事件 → 经验倍率降至 10%
- 临时封禁 — 超过 300 次(3×限额)→ 10 分钟内禁止获得经验
- 每秒经验上限 — 单技能每秒最多 200 经验
- 敏捷 30 分钟上限 — 30 分钟内最多获得 500 基础敏捷经验
- 放置方块追踪 — 破坏自己放置的方块不给经验
- 作物成熟度 — 仅收获完全成熟的作物才给经验
- 传送距离限制 — 疾跑经验单次最多 10 格距离
PlaceholderAPI 占位符
标识符:%skillsystem_xxx%
| 占位符 | 说明 |
%skillsystem_unspent_points% | 可用天赋点 |
%skillsystem_total_earned_points% | 总获得天赋点 |
%skillsystem_initialized% | 是否已初始化 |
%skillsystem_active_count% | 激活技能数 |
%skillsystem_total_level% | 所有技能等级总和 |
%skillsystem_skill_level_<skill>% | 指定技能等级(如 mining) |
%skillsystem_is_active_<skill>% | 指定技能是否激活 |
%skillsystem_xp_<skill>% | 指定技能当前经验 |
%skillsystem_xp_progress_<skill>% | 指定技能经验进度百分比 |
%skillsystem_talent_<talent>% | 指定天赋等级(如 health_boost) |
%skillsystem_top_total_<排名>% | 排行榜第 N 名玩家名 |
%skillsystem_top_total_<排名>_level% | 排行榜第 N 名总等级 |
数据库
使用 SQLite 存储(data.db),4 张表:
| 表 | 说明 | 主键 |
skill_data | 技能数据 | (uuid, skill) |
player_meta | 玩家元数据 | uuid |
talent_data | 天赋数据 | (uuid, talent) |
admin_log | 管理员操作日志 | id (自增) |
skill_data 字段
uuid / skill / level / xp / active / claimed_milestones
player_meta 字段
uuid / unspent_points / total_earned_points / initialized
数据管理
- 异步批量保存(默认 300 秒间隔)
- 缓存过期清理(默认 30 分钟,仅离线玩家)
- 启动时数据完整性校验(等级/天赋点超限自动修复)
- 关服时保存所有缓存数据
插件联动
| 插件 | 类型 | 说明 |
Vault | 可选 | 技能重置扣除金币。未安装则跳过金币检查 |
PlaceholderAPI | 可选 | 注册 %skillsystem_xxx% 占位符 |
AuraSkills | 软依赖 | 兼容参考,不冲突 |