是大憨憨呢 发表于 2025-2-27 17:43:36

[优化] ResolveLag — 高度自定义服务器实体优化插件

本帖最后由 是大憨憨呢 于 2025-2-27 17:47 编辑

▌前言


ResolveLag 是 ServerBuild 的内置 Module,如果希望使用 ResolveLag 则需要下载 ServerBuild
各位佬方便的话在帖子下回复一下帮忙顶一下帖子吧(ノへ ̄、)

教程文档: ‌​​​​​​​⁠⁠​​​​​​​​‬​‍​​​​​​​‌‬​​​​​​​‍​​‬​‍⁠​首页 - 飞书云文档 (feishu.cn)
开发文档: 首页 - 飞书云文档 (feishu.cn)
开源地址: https://github.com/hanhan2001/ServerBuild
文档还未完善,成熟的文档要学会自己编写教程



▌版本

理论 1.8-1.20.6


▌特点


[*]每个倒计时单独设置脚本配置(例如更具倒计时时间选择不同的倒计时提示)
[*]根据清理数量选择触发脚本配置(例如根据清理数量选择清理提示)
[*]实体过滤器和匹配器


▌联系方式

咨询Q号: 764932129
交流Q群: 811291248

▌配置文件

ResolveLag.yml


#服务器清理

#总控开关
#若此处关闭则其余配置文件设置开启状态也无法使用
Enable: false

#设置(如若无法更改请查看是否在 Config.yml 文件中启用了全局配置)
Setting:
#%date% 变量格式(如若无法编辑修改,请检查是否在 Config.yml 开启了全局配置)
DateFormat: "yyyy/MM/dd-HH:mm:ss"
#%prefix% 变量内容(如若无法编辑修改,请检查是否在 Config.yml 开启了全局变量配置)
Prefix: "&a[&bResolveLag&a]&e>> "

#词条
Message:
#重载插件
Reload: "%prefix%&a已重载!"
#无权限提示
MissingPermission: "%prefix%&c你无法这样做!"
#未找到世界
UnknownWorld: "%prefix%&c未找到世界"
#世界状态
WorldState: |
   
    %prefix%&a世界状态
   &7 - &6世界: &e%world%
   &7 - &6区块: &e%chunks%
   &7 - &6实体: &e%entities%
    &r
#指令提示--谁改谁憨憨,反正只是用来提示用的,出现问题我才不负责呢,哼!
Help: |-
   
    &a<-=-=-=-=-=-=-=-=-=-= &e&lResolveLag &a=-=-=-=-=-=-=-=-=-=->
    &b/rl reload &7重载
    &b/rl clear &7立即清理
    &b/rl state &7查看世界状态
    &f



EntityClear.yml


#ResolveLag 实体清理

#开关
#若 ResolveLag.yml 中总控开关未开启则此开关不起作用
Enable: true

#实体清理设置
EntityClear:
#间隔时间(单位: 秒)
IntervalTime: 120
#单个世界达到上限后开始清理实体
#开启后若某个世界的实体数量未达到指定数量则不会进行清理包括过滤和匹配
Total:
    #开关
    #关闭则每次倒计时结束都会清理
    Enable: false
    #上限实体数量
    Limit: 1200
#过滤器分组
Filter:
    #可按照相同模板任意添加
    #过滤指定枚举类型的实体不进行清理
    #假设 filter_1 匹配到实体则不会再匹配 filter_2, filter_3...
    #不清理钻石物品和潜影箱。
    #filter_1 为分组名称,不做任何作用,可以任意修改
    filter_1:
      #过滤类型(ENUM, NAME, TYPE, LORE, POSE, CLASS, WORLD, NORMAL, METADATA, ENCHANTMENT)
      #ENUM -> 实体 Bukkit 中枚举名称,通常是游戏中使用命令 /summon 召唤实体的名称
      #NAME -> 实体的自定义名称
      #TYPE -> 实体类型(ANIMALS, MONSTER, ITEM)
      #LORE -> 物品LORE
      #POSE -> 实体动作
      #CLASS -> 实体 class 名称
      #WORLD -> 实体所在世界
      #METADATA -> 实体数据
      #ENCHANTMENT -> 物品附魔
      Type: ENUM
      #值列表(支持通配符)
      Values:
      - "*BOX"
      - "*DIAMOND*"
      #保留数值,过滤器仍想要留下一些匹配到实体数量去清理则可设置这个
      #若不需要可以直接删除 Exclude 行
      Exclude: 50
    #过滤指定 LORE 物品
    #LORE 只支持 ITEM类型的实体
    #filter_2 为分组名称,不做任何作用,可以任意修改
    filter_2:
      #过滤类型(ENUM, NAME, TYPE, LORE, POSE, CLASS, WORLD, METADATA, ENCHANTMENT)
      #ENUM -> 实体 Bukkit 中枚举名称,通常是游戏中使用命令 /summon 召唤实体的名称
      #NAME -> 实体的自定义名称
      #TYPE -> 实体类型(ANIMALS, MONSTER, ITEM)
      #LORE -> 物品LORE
      #POSE -> 实体动作
      #CLASS -> 实体 class 名称
      #WORLD -> 实体所在世界
      #METADATA -> 实体数据
      #ENCHANTMENT -> 物品附魔
      Type: LORE
      #值列表(支持通配符)
      Values:
      - "不清理的物品"
    #不清理附魔物品
    filter_3:
      Type: ENCHANTMENT
      Values:
      - "*"
    #不清理动物
    filter_4:
      Type: TYPE
      Values:
      - "ANIMALS"
    #不清理 test_world 和 test_world_1 世界中的实体
    filter_5:
      Type: WORLD
      Values:
      - "test_world"
      - "test_world_1"
    #不清理动作为 坐 的实体
    filter_6:
      Type: POSE
      Values:
      - "SITTING"
#匹配分组
Matcher:
    #可按照相同模板任意添加
    #匹配 怪物 类型的实体进行清理
    #分组名称,不做任何作用
    filter_1:
      #过滤类型(ENUM, NAME, TYPE, LORE, POSE, CLASS, WORLD, METADATA, ENCHANTMENT)
      #ENUM -> 实体 Bukkit 中枚举名称,通常是游戏中使用命令 /summon 召唤实体的名称
      #NAME -> 实体的自定义名称
      #TYPE -> 实体类型(ANIMALS, MONSTER, ITEM)
      #LORE -> 物品LORE
      #POSE -> 实体动作
      #CLASS -> 实体 class 名称
      #WORLD -> 实体所在世界
      #METADATA -> 实体数据
      #ENCHANTMENT -> 物品附魔
      Type: TYPE
      #值列表(支持通配符)
      Values:
      - "MONSTER"
      #排除数值,匹配器仍想要留下一些匹配到实体数量不进行清理则可设置此项
      #若不需要可以直接删除 Exclude 行
      Exclude: 50
#倒计时
CountTime:
    #第 60 秒时执行脚本命令
    60: |-
      send * %prefix%&6谁的零食掉了!?(*/ω\*) &e(%time%秒)
    30: |-
      send * %prefix%&6有人吗!谁的零食掉了!φ(゜▽゜*)♪ &e(%time%秒)
    15: |-
      send * %prefix%&6谁零食掉地上了!!!ヾ(•ω•`)o &e(%time%秒)
    5: |-
      send * %prefix%&6我吃我吃!( •̀ ω •́ )✧ &e(%time%秒)
#清理提示
#数值指的是清理实体个数,判断方式取决于Type
#Type可选(=, <, >, <=, =<, >=, =>)(其他写法均不判断)
#当两个条件都是大于,且都满足(如: 80 - >, 85 - >)则获取数值大的配置
#当两个条件都是小于,且都满足(如: 30 - <, 35 - <)则获取数值小的配置
#如果出区间 31 < x < 35 则获取的是数值大的词条(Message: (35: Message))
ClearDown:
    0:
      #判断方式(如 x = 0)
      Type: "="
      #消息内容
      Script: |-
      send * %prefix%&c怎么会是空的!!!???இ௰இ &e(总计: %amount%)
    30:
      #判断方式(如 x <= 0)
      Type: "<="
      #消息内容
      Script: |-
      send * %prefix%&6怎么才这么点?根本不够吃!>﹏< &e(总计: %amount%)
    31:
      #判断方式
      Type: ">"
      #消息内容
      Script: |-
      send * %prefix%&6勉勉强强吧≡[。。]≡ &e(总计: %amount%)
    50:
      #判断方式
      Type: "<"
      #消息内容
      Script: |-
      send * %prefix%&6哼哼,一般般吧(ง •_•)ง &e(总计: %amount%)
    100:
      #判断方式
      Type: ">="
      #消息内容
      Script: |-
      send * %prefix%&6桀桀桀,兜是我哒(๑•̀ㅂ•́)و✧ &e(总计: %amount%)



EntityChecker.yml


#ResolveLag 实体数量检测器

#开关
#若 ResolveLag.yml 中总控开关未开启则此开关不起作用
Enable: false

#实体清理设置
EntityChecker:
#检测间隔时间(单位: tick)
Interval: 2
#不检测的世界
ExcludeWorld:
    - "Bed_world"
#实体设置
Entities:
    #可按照相同格式随意追加配置项
    #检测 僵尸 实体
    Group1:
      #实体 ID
      #默认使用 minecraft 原版 id,可指定 class
      Key: "Zombie"
      #上限值,达到上限值立马清理实体到指定最小值
      Limit: 500
      #最少实体数量
      Min: 70
    #检测 org.bukkit.craftbukkit.entity.CraftSheep 实体
    Group2:
      #实体 ID
      #默认使用 minecraft 原版 id,可指定 class
      Key: "org.bukkit.craftbukkit.entity.CraftSheep"
      #上限值,达到上限值立马清理实体到指定最小值
      Limit: 300
      #最少实体数量
      Min: 10
#清理提示
Message:
    #是否开启清理提升
    #不推荐开启,因为会和 EntityClear 冲突
    Enable: false
    #清理提示
    #数值指的是清理实体个数,判断方式取决于Type
    #Type可选(=, <, >, <=, =<, >=, =>)(其他写法均不判断)
    #当两个条件都是大于,且都满足(如: 80: >, 85: >)则获取的是数值大的词条
    #如果出区间 31 < x < 35 则获取的是数值大的词条(Message: (35: Message))
    ClearDown:
      0:
      #判断方式(如 x = 0)
      Type: "="
      #消息内容
      Script: |-
          send * %prefix%&c怎么会是空的!!!???இ௰இ &e(总计: %amount%)
      30:
      #判断方式(如 x <= 0)
      Type: "<="
      #消息内容
      Script: |-
          send * %prefix%&6怎么才这么点?根本不够吃!>﹏< &e(总计: %amount%)
      31:
      #判断方式
      Type: ">"
      #消息内容
      Script: |-
          send * %prefix%&6勉勉强强吧≡[。。]≡ &e(总计: %amount%)
      50:
      #判断方式
      Type: "<"
      #消息内容
      Script: |-
          send * %prefix%&6哼哼,一般般吧(ง •_•)ง &e(总计: %amount%)
      100:
      #判断方式
      Type: ">="
      #消息内容
      Script: |-
          send * %prefix%&6桀桀桀,兜是我哒(๑•̀ㅂ•́)و✧ &e(总计: %amount%)



▌命令


/rl reload 重载
/rl entityclear clear 立即清理某个世界的实体,如果不选择世界则默认全世界
/rl state 查看世界状态

▌权限

sb.admin -> ServerBuild 管理权限
sb.rl.admin -> ResolveLag 管理权限

▌本体文件


如开头所说 ResolveLag 是 ServerBuild 内置的 Module,所以需要下载 ServerBuild 使用 ResolveLag
原帖: [管理] ServerBuild — 便捷式服务器基础插件、插件开发中间... - 服务器插件 - Minecraft(我的世界)苦力怕论坛


YanRan233 发表于 2025-4-9 00:56:40

感谢楼主分享,制作辛苦了[哔哩_打call]
页: [1]
查看完整版本: [优化] ResolveLag — 高度自定义服务器实体优化插件