AdventureSkills

技能激活 + 天赋点系统 — 类 AuraSkills 风格的 RPG 成长体系

AdventureSkills 是一款为 Minecraft 服务器设计的技能与天赋系统插件。玩家可从 11 种技能中选择激活最多 2 个,通过日常行为获取经验升级,每升 5 级获得 1 个天赋点,投入 6 层 24 个天赋节点构建独特的角色成长路线。

核心特性

安装与依赖

项目要求
服务端Spigot / Paper 1.20+
Java17+
可选依赖Vault(重置金币扣费)、PlaceholderAPI(占位符)、AuraSkills(兼容参考)
  1. 放入 AdventureSkills-2.1.0.jarplugins/
  2. 启动服务器,自动生成配置文件
  3. 编辑配置后 /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§aWHEAT收获作物/植物
伐木foraging§2OAK_LOG砍伐原木/树叶
采矿mining§7DIAMOND_PICKAXE挖掘矿石/石头/深板岩
钓鱼fishing§bFISHING_ROD钓鱼/钓宝藏
挖掘excavation§6IRON_SHOVEL挖泥土/沙子/砂砾
射箭archery§cBOW箭矢伤害/击杀
防御defense§9SHIELD承受伤害/盾牌格挡
战斗fighting§4IRON_SWORD近战伤害/击杀生物/击杀玩家
敏捷agility§eLEATHER_BOOTS疾跑距离/跳跃
附魔enchanting§dENCHANTING_TABLE附魔物品
炼药alchemy§5BREWING_STAND酿造药水

经验与升级

升级公式

所需经验 = base_required + (level × per_level_increment)
默认: 100 + (level × 50)
实际获得经验 = baseAmount × xpRate × defaultMultiplier × anticheatMultiplier × permissionMultiplier
参数配置项默认值
基础所需经验xp.base_required100
每级增量xp.per_level_increment50
全局倍率xp.default_multiplier0.5
最大等级core.max_skill_level50

天赋点获取

权限倍率

给予权限 skillsystem.xp.multiplier.<倍率> 可提升经验倍率。例如 skillsystem.xp.multiplier.2.0 = 2 倍经验。取最高值生效。

里程碑音效

玩家总技能等级(所有技能等级之和)达到指定阈值时播放成就音效。默认阈值:10 / 25 / 50 / 75 / 100。

经验来源

技能来源基础倍率说明
农牧crop_harvest2.5收获成熟作物(需满生长)
plant_harvest1.5收获植物(甘蔗/仙人掌/竹子等)
伐木log_break2.0砍伐原木
leaf_break0.3打碎树叶
采矿ore_break3.0挖掘矿石(煤/铁/金/钻/绿宝石等)
stone_break0.5挖掘石头/花岗岩/闪长岩/安山�ite等
deepslate_break0.8挖掘深板岩
钓鱼catch_fish5.0钓到鱼
catch_treasure10.0钓到宝藏(弓/附魔书/鞍等)
挖掘dirt_break1.0泥土/草方块/黏土等
sand_break1.5沙子/红沙
gravel_break2.0砂砾
射箭arrow_damage1.0箭矢造成的伤害值
arrow_kill3.0用箭击杀生物
防御damage_taken0.5承受伤害量
block_damage1.0盾牌格挡
战斗melee_damage1.0近战伤害量
mob_kill5.0击杀生物
player_kill15.0击杀玩家
敏捷sprint_per_block0.1疾跑每格距离
jump0.5跳跃
附魔enchant_item10.0附魔物品
炼药brew_potion8.0酿造药水(5 格范围内玩家)
防刷机制:玩家放置的方块被追踪,破坏自己放置的方块不获得经验。

技能激活

天赋树

天赋树由 6 行组成,每行 3 个普通天赋 + 1 个精英天赋。逐行解锁:在当前行投入 ≥8 点后解锁下一行。

核心规则

6 大天赋行

类别ID图标解锁条件
1生存核心survivalGOLDEN_APPLE默认解锁
2战斗防御combat_defenseSHIELD第 1 行 ≥8 点
3近战攻击melee_attackDIAMOND_SWORD第 2 行 ≥8 点
4远程与魔法ranged_magicBOW第 3 行 ≥8 点
5PVE 专项pveZOMBIE_HEAD第 4 行 ≥8 点
6冒险探索adventureCOMPASS第 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 点时,系统会自动清空所有更高行的天赋并退还全部点数。

命令系统

玩家命令 /ss

别名:/ss_skills

命令说明权限
/ss/ss menu打开技能主界面 GUIskillsystem.use
/ss info [技能]查看技能信息(不指定则显示所有激活技能)skillsystem.use
/ss talent/ss tree打开天赋树 GUIskillsystem.use
/ss top打开排行榜 GUIskillsystem.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
注意:givepointstakepoints 需在 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 个天赋)

菜单配置 (menu/)

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 系统

界面大小打开方式说明
主界面27/ss技能槽 + 天赋 + 重置 + 经验途径入口
技能选择27GUI 按钮11 技能图标,点击激活/取消
天赋树54/ss talent6 行天赋节点,左键加点/右键减点
排行榜27/ss topTop 10 技能等级总和
重置确认 (步骤1)27/ss reset第一步确认(带延迟按钮)
重置确认 (步骤2)27步骤1确认后最终确认
经验途径27GUI 按钮显示激活技能的经验来源和倍率

重置流程

  1. 玩家点击重置按钮 → 打开第 1 步确认 GUI
  2. 等待 gui.confirm_duration 秒(默认 3 秒)后确认按钮变为可点击
  3. 点击确认 → 打开第 2 步最终确认 GUI(同样延迟)
  4. 最终确认 → 扣除金币 + 重置卷轴,重置所有技能等级 + 天赋 + 效果

权限

权限节点说明默认
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 限额时封禁时长

防作弊机制

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

数据管理

插件联动

插件类型说明
Vault可选技能重置扣除金币。未安装则跳过金币检查
PlaceholderAPI可选注册 %skillsystem_xxx% 占位符
AuraSkills软依赖兼容参考,不冲突