跳到主要内容

职业

每个职业一个文件,放在 classes/(可以放子文件夹)。文件名就是职业 ID,可以用中文;也可以写 id: 职业ID 另外指定。 ID 会转成大写,- 与空格换成 _(与 MMOCore 相同)。

MMOCore 的职业文件可以直接复制进来使用。标 + 的选项是星月天职额外提供的。

完整示例​

classes/剑士.yml
display:
name: '<gradient:#FFB36B:#FFE0A3>剑士</gradient>'
lore:
- '&7手持长剑的近战职业'
- ''
- '{stat_lines}'
item: IRON_SWORD
max-level: 100
exp-curve: levels
exp-sources: [原版, 新手村, 首领]
attributes:
max-health: {base: 20, per-level: 2}
attack-damage: {base: 1, per-level: 0.5}
max-mana: {base: 20, per-level: 1}
options:
display: true
needs-permission: false
triggers:
level-up:
- 'points: skill 1'
- 'points: attribute 1'
skills:
裂地斩: {level: 1, max-level: 20}
冲锋: {level: 5, max-level: 15}
跃击: {level: 10, max-level: 10}
skill-slots:
1: {name: '&b主动技能槽 I', formula: '<ACTIVE>'}
2: {name: '&b主动技能槽 II', formula: '<ACTIVE>'}
3: {name: '&b主动技能槽 III', formula: '<ACTIVE>', unlock-level: 10}
4: {name: '&d被动技能槽', formula: '<PASSIVE>'}
skill-trees: [剑士天赋]
subclasses:
狂剑士: 30
exp-table: 剑士升级奖励

显示​

选项说明
display.name名称,支持 & 颜色与 MiniMessage(<gradient> 等)
display.lore介绍。写一行 {stat_lines} 会自动展开成「每级 +N 最大生命」等,数值来自 attributes:
display.attribute-loreMMOCore 的写法:追加在介绍后面的属性说明
display.item图标,IRON_SWORD、IRON_SWORD:1001(材质:模型数据),支持 MythicLib 的全部图标写法
order选择界面的顺序,小的在前(MMOCore 读了但没有使用)

等级与经验​

选项默认说明
max-level0等级上限,0 = 不限
exp-curve—expcurves/ 里的文件名(每行一个数字),或 formula: 100 + level * 50。找不到时用 100、200、300、400、500,见经验
exp-source / exp-sources—+ 经验组(exp-sources.yml 的组名)
main-exp-sources—MMOCore 的写法:经验来源列表
exp-multiplier1.0+ 本职业经验倍率
exp-table—每升一级抽一次的经验表:exp-tables/ 的 ID,或直接写在这里,见经验表

每级属性 attributes​

属性名是 MythicLib 属性(max-health、attack-damage、max-mana、defense… 大小写、- _ 都可以)。

attributes:
max-health:
base: 20 # 1 级时的数值
per-level: 2 # 每升一级增加
min: 20 # 可选,下限
max: 300 # 可选,上限
attack-damage: '1 + level * 0.5' # 也可以写公式
max-mana:
formula: '20 + %player_level% * 0.1' # 公式可以使用 PlaceholderAPI
failsafe: 20 # 公式算不出来时的值

数值 = base + per-level × (等级 − 1),与 MMOCore 相同。没有写的属性使用 stats.yml 的数值(所有职业共用)。

选项 options​

选项默认说明
defaultfalse默认职业(新玩家的职业,通常是「旅人」)
displaytrue是否出现在选择界面;子职业通常设为 false
needs-permissionfalse需要 starvocation.class.<ID>(或 mmocore.class.<ID>)才能选择;也可以写 permission: 自定义权限
off-combat-health-regenfalse只在脱战时回复生命
off-combat-mana-regenfalse只在脱战时回复魔力
off-combat-stamina-regen / off-combat-stellium-regenfalse同上

技能 skills​

技能界面照这里的顺序显示,第一个写的技能就在第一格。

skills:
裂地斩:
level: 1 # 解锁需要的职业等级(默认 0)
max-level: 20 # 技能等级上限(默认 0 = 不限)
unlocked-by-default: true # false = 需要 unlock_skill 或指令解锁
needs-bound: true # 被动技能是否要放进技能槽才生效(不写 = config 的 passive-skill-need-bound)
upgradable: true # false = 不能用技能点升级
slot: 10 # + 指定技能界面的格子
damage: {base: 12, per-level: 3} # 覆盖技能文件的参数,只对这个职业有效

没有写在这里的技能,玩家只能经由经验表、技能树等动作解锁(等级 1、上限 1,与 MMOCore 相同)。技能本身的写法见技能。

技能槽 skill-slots​

skill-slots:
1:
name: '&b主动技能槽 I'
lore: ['&7放入主动技能']
formula: '<ACTIVE>' # 能放什么技能
unlocked-by-default: true
can-manually-bind: true # false = 玩家不能在界面装备 / 卸下(只能由动作 bind_skill)
unlock-level: 10 # + 职业到达这个等级自动解锁
skill-buffs: # 装在这个槽的技能获得加成
- 'skill_buff{modifier=damage;amount=10;type=RELATIVE;formula="<ACTIVE>"}'

formula 用 <> 包住条件:<ACTIVE>(主动)、<PASSIVE>(被动)、<技能ID>、<技能的 categories>,可以用 && || ! == != 与括号组合,例如 <ACTIVE> && !<冲锋>、<火系> || <冰系>。不写 = 任何技能(与 MMOCore 相同)。

槽号中间有空缺时,会自动补上锁住的「未设定技能槽」,避免数字键对不上。

子职业​

classes/剑士.yml
subclasses:
狂剑士: 30 # 剑士 30 级可以转职成狂剑士
  • 达到等级后 /sv class 打开转职界面,只列出可以转的子职业。
  • 转职保留全部进度(等级、经验、点数、技能等级),清空技能槽,消耗 1 职业点(与 MMOCore 相同)。
  • 子职业文件通常写 options.display: false,不出现在一般的选择界面。
  • 管理员可以用 /sv admin subclass <玩家> <职业> 直接转职(等同 MMOCore 的 force-class)。

选择职业的规则​

在 config.yml 设定:

class-select:
cost: 1 # 选择职业消耗几点职业点
first-choice-free: false # + 从默认职业第一次选择时免费
keep-progress: true # 换回以前玩过的职业时保留进度
confirm: true # 先打开确认界面
default-playerdata:
class-points: 1 # 新玩家的职业点
save-default-class-info: false # 默认职业的进度在选择其他职业后是否保留
force-class-selection: false # 还是默认职业时进服自动打开选择界面

每个职业的进度分开保存,换回原本的职业时等级、技能、技能槽、经验表奖励都还在。

触发 triggers​

triggers:
level-up: # 每升一级
- 'points: skill 1'
level-up-10: # 升到 10 级
- 'title: &6Lv.10|&e解锁新技能'
level-up-multiple-5: # 每 5 级
- 'points: skill-tree 1'
level-up-max: # 到达等级上限
- 'broadcast: &6{player} 的剑士已满级!'
class-chosen: # 选择这个职业时
- 'message: &a你成为了剑士'
first-choice: # + 第一次选择这个职业时
- 'item: IRON_SWORD 1'
break-block: [] # 破坏方块
place-block: [] # 放置方块
magic-damage: # 造成某种伤害时:weapon / physical / magic / skill / projectile / unarmed / on-hit / minion / dot
- 'mmskill: Burn'
level-rewards: # + 指定等级奖励的另一种写法
10: ['points: attribute 3']
every-5: ['points: skill-tree 1']

动作的完整写法见触发动作。on-hit-damage 在 MMOCore 永远不会触发(键名转换的问题),星月天职可以正常使用。

其他​

选项说明
skill-trees职业可以使用的技能树 ID 列表,见技能树
mana魔力的名称、图标与条的颜色,见资源
resource职业额外的生命 / 魔力 / 耐力 / 星能回复,见资源
key-combosKEY_COMBOS 施放模式下这个职业的按键组合,见施放
cast-particle施放模式时身边的粒子:{particle: DUST, size: 1, color: {red: 255, green: 200, blue: 80}}
action-bar这个职业专用的常驻动作栏格式
scriptsMythicLib 脚本:触发类型: 脚本,例如 TIMER: my_script、LOGIN: welcome