简介
一款Lore属性插件 (╯‵□′)╯︵┻━┻
效果图
特性
- 作者不会跑路
- 多种属性,见下方配置文件
- 高度客制化
- 高性能,多线程的解析物品 Lore
- 自定义战斗显示信息
- 编辑失误后仍然能够加载的配置系统
- 可开关的血量控制系统
- 语言系统
使用说明
因为 Nk 没有 Lores 插件,所以在 Mesmerize 内置了一个,使用 /mes lore 查看帮助。
lore 格式为 属性: 值,属性名称可以在配置文件中定义,属性和值需要使用英文冒号分隔,属性前、值后、冒号两旁的空格可有可无可长可短。
以下的格式都是可以的,如果你真的要把生命、速度这种写成范围形式,我也嗦不出话:
- 伤害: +20
- 再生: 4
- 护甲: +12-25
- 吸血: +3%
- 灵魂绑定: Italiangun
以上。
更新日志
请用户在回帖中大胆提供建议,能加就加
请用户在回帖中反馈BUG,并附带报错信息
下载地址
提供建议或者反馈BUG也可以加群 219412424
Lore种类
- 伤害 - 攻击时所有的伤害的增幅
- PVP伤害 - 攻击时仅对玩家伤害的增幅
- PVE伤害 - 攻击时仅对非玩家伤害的增幅
- 弓箭伤害 - 远程攻击的伤害增幅
- 真实伤害 - 攻击造成的伤害一定会高于这个值
- 暴击加成 - 暴击判定时攻击的加成幅度
- 暴击几率 - 判定是否为暴击的几率,默认不为暴击
- 护甲 - 受伤时减少伤害的增幅
- PVP/PVE/弓箭护甲 - ....
- 反弹 - 收到所有伤害反弹的幅度
- 近战/远程反弹 - ...
- 反弹几率 - 判定是否反弹的几率,默认为反弹
- 吸血 - 攻击时造成伤害的一部分按比例回复到自身血量
- 吸血几率 - 判定是否吸血的几率,默认为吸血
- 生命 - 增加生命上限
- 再生 - 增加每 X tick回复的血量(回复的速度可在配置的 general.regenInterval 中设置
战斗经验加成 - 杀死生物后经验掉落加成经验加成 - 非杀死生物得到的经验加成移动速度 - 玩家移动的速度,最大为 1飞行速度 - 上帝模式下飞行的速度,最大为 1攻击速度 - 玩家使用武器攻击的速度,仅在 1.9+ 有效不灭 - 物品使用时有几率不消耗耐久,设置为 100% 以上将不会消耗耐久- 等级限制 - 使用物品等级的限制
- 灵魂绑定 - 设置后只有指定玩家可以使用该物品
攻击范围 - 武器最远能打到多远的生物(可以有100+的攻击距离- 会心一击 - 触发后被击中的生物立刻死亡
- 闪避 - 有几率避免一次攻击中受到伤害
- 命中 - 增加命中的几率
命令
所有 /mes 命令 皆可使用 /mesmerize 替代。
- /mes stats - 模拟一次攻击后解析的属性,用于评估自身属性
- /mes evaluate - 评估手中物品的价值
- /mes config load - 从磁盘加载配置
- /mes config save - 保存现在内存中的配置
- /mes config reload - 加载并保存配置
- /mes config set <配置项> <配置值> - 设置一个配置的值
- /mes config list <配置项> - 列出一个配置项中所有子项的值,使用 /mes config list . 列出默认的
权限
- mesmerize.showstats - 允许使用 /mes stats 命令
- mesmerize.evaluate - 允许使用 /mes evaluate 命令来评估手中物品的价值
- mesmerize.config - 允许使用 /mes config 命令来查看/更改设置
- mesmerize.lore - 允许使用 /mes lore 命令来编辑手上物品的 lore
配置文件
# 不要开 debug: false # 更新检测开关 checkUpdate: true # 插件基础配置 general: # 启用生命控制系统 # 如果这个功能影响了与其他插件的交互,请关闭 enableHealthControl: true # 最小的生命值,当 lore 中设置了负值的生命属性,最终生命将不会低于此值 minimalHealth: 1.0 # 最大生命值,你需要在 spigot.yml 中设置 settings.attribute.maxHealth 为更高才能达到这个值 maximumHealth: 2147483647 # 最小的移动速度,以防玩家无法移动 minimalMovespeed: 0.05 # 基础的移动速度 baseMovespeed: 0.2 # 基础生命值 baseHealth: 20.0 # 重生属性计算的间隔时间(tick regenInterval: 10.0 # 权限检测别名 permissionAlias: 某名称: 某某插件的.vip.权限.节点名 # 关系到服务器性能的设置项 performance: # lore 解析的间隔时间(tick # 设置过小将会消耗更多性能,设置过大将会影响 lore 效果 loreUpdateInterval: 10.0 # 使用多少线程用于 lore 解析 # 默认为所有可用处理器核心数 workerThreads: 8.0 # 属性的前缀设置 prefix: # 属性名 damage: # 属性用于解析的名称 name: 伤害 # 默认的属性颜色,用于 /mes evaluate 指令 color: §c # 每 1% 的该属性价值多少 valuePerPercentage: 4.0 # 是否累加,设置为 false 则取玩家所有属性的最大值 sumUp: true .... # 战斗信息显示 combatMessage: # 是否在造成伤害时显示提示信息 showOnDamage: true # 是否在造成暴击时显示提示信息 showOnCritical: true # 是否在造成吸血效果时显示提示信息 showOnLifeSteal: true # 是否在反弹伤害后显示提示信息 showOnReflect: true # 造成伤害时显示的提示信息 onDamage: §e你对 %s 造成了 %.2f 点伤害。 # 造成暴击时显示的提示信息 onCritical: §e你对 %s 造成了 %.2f 的暴击伤害。 # 造成吸血效果时显示的提示信息 onLifeSteal: §e你吸取了 %s 的 %.2f 点生命值。 # 反弹伤害后显示的提示信息 onReflect: §e你将 %.2f 伤害反弹给了 %s 。 # 其他的信息 message: # 检测到灵魂绑定不匹配时提示的信息 omSoulboundCheck: §c你不是这件物品的主人,所以你不能这样做! # 使用 /mes evaluate 命令后提示信息 onPriceEvaluate: §a你手中的物品的价值为§d %.2f §a。 # 触发等级限制后的提示信息 onLevelCheck: §c你的等级没有达到 %d 级,所以你不能使用这件物品! # 权限检测失败后的提示信息 onPermissionCheck: §c你没有权限 %s 来使用此物品。 # 高级设置 advanced: # 启用自定义攻击表达式 # 需要你的 Java 版本支持 Nashorn 库,即 Java 8+ # 对 Openjdk 的支持未知 enableCustomAttackExpression: true # 你的表达式 customAttackExpression: |- function max(a, b) { return a > b ? a : b; } max((base + damage - armor), attack.getRealDamage()); # 其他功能 misc: # 启用击杀生物后爆出粒子特效 # 这个功能在 Nukkit 上被削了 enableSplashParticles: true # 随机生成的粒子列表 # 可在 https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Effect.html 查看所有为 Particle 类型的粒子 splashParticles: - Critical - Dust - Flame - Portal - Lava - Smoke |
编写自己的伤害表达式
默认为下 function max(a, b) { return a > b ? a : b; } max((base + damage - armor), attack.getRealDamage()); 一共有 5 个可用变量 base 为事件的基础攻击力,如钻石剑默认为 6,钻石剑默认暴击为 7.5 damage 为 lore 上总共的伤害叠加,包括了 PVP PVE 远程伤害,并且已经进行了暴击加成 armor 为 lore 上总共的防御叠加 attack 为攻击者的 lore 信息,可以使用 attack.getXxx() 来获得具体的值 defense 为防御者的 lore 信息,也可以使用 defense.getXxx() function max(a, b) 为自定义的函数,方便比较两者之间的大值 在进行所有的函数定义后是你的计算语句,计算语句需为最后一个可执行的语句,否则插件将不能接收到返回的最终伤害值 编写自己的计算式直接按照 JavaScript 语句使用即可 attack 和 defense 可用的 getXxx() 中的 Xxx 为属性名,在 config.yml 中有列举,如获取玩家伤害为 getPlayerDamage() 获取近战反射为 getMeeleReflect() |
伤害计算经过性能优化后实测消耗的时间不会增加超过 50%,并且原先的攻击优化已经做得很好了。
YAML 语法中 xxx: |- 后可以接多行字符串,详细信息可以查阅 Wiki
插件部分使用了其他开源项目的代码
- 一个文本的 & 转颜色符的方法,因为 Nukkit 不自带
本人声明该插件仍受到维护,只要你能给出符合规范的错误报告(2020/1/23)