本帖最后由  咕  于 2020-1-25 18:30 编辑

Mesmerize


简介

一款Lore属性插件 (╯‵□′)╯︵┻━┻

效果图



特性

  • 作者不会跑路
  • 多种属性,见下方配置文件
  • 高度客制化
  • 高性能,多线程的解析物品 Lore
  • 自定义战斗显示信息
  • 编辑失误后仍然能够加载的配置系统
  • 可开关的血量控制系统
  • 语言系统

使用说明

因为 Nk 没有 Lores 插件,所以在 Mesmerize 内置了一个,使用 /mes lore 查看帮助。

lore 格式为 属性: 值,属性名称可以在配置文件中定义,属性和值需要使用英文冒号分隔,属性前、值后、冒号两旁的空格可有可无可长可短。

以下的格式都是可以的,如果你真的要把生命、速度这种写成范围形式,我也嗦不出话:

  • 伤害: +20
  • 再生: 4
  • 护甲: +12-25
  • 吸血: +3%
  • 灵魂绑定: Italiangun

以上

更新日志


请用户在回帖中大胆提供建议,能加就加
请用户在回帖中反馈BUG,并附带报错信息

下载地址

MesNk-20.1.1.jar (65.09 KB, 下载次数: 733)


提供建议或者反馈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)