跳到正文

Smart item deleter V2

作者:metl_play

Smart Item Deleter v2 是一款服务端优化模组。当掉落物实体数量超过设定阈值时,它会自动清理这些实体。

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

**它的运作方式、原因和创意均由人类完成
编码与实现由 AI 完成**

🧹 智能物品清理器 v2

一个轻量、智能的物品清理系统,适用于 NeoForge 1.21.1


📘 概述

智能物品清理器 v2 是一个服务端优化模组,用于在掉落物品实体数量超过设定阈值时自动清理它们。
它会逐个追踪物品,以确保公平、高效且安全地移除——只删除多余的、陈旧的、不重要的掉落物,不干扰正常游戏。

✅ 支持 NeoForge 21.1.215、Youer 1.21.1、AsyncYouer-1.21.1

⚙️ 专为机械动力整合包和重度模组生存服务器设计

💾 低开销、确定性的清理周期


⚙️ 配置(面向服主)

配置文件:

config/smart_item_deleter_v2-common.toml

| 选项 | 类型 | 默认值 | 描述 |
|——–|——|———-|————-|
| entityCountThreshold | int | 200 | 清理激活所需的掉落物品实体数量。 |
| minItemAgeMs | long | 15000 | 物品可被删除前的最小存在时间(毫秒)。防止新掉落物被立即移除。 |
| scanIntervalTicks | int | 20 | 系统扫描世界中物品的频率(刻,20 刻 = 1 秒)。 |
| scanJitterEnabled | boolean | true | 为间隔添加小幅随机偏移(±scanJitterTicks),以减少多个模组同时运行时的服务器刻峰值。 |
| scanJitterTicks | int | 2 | 每个清理周期时间上添加/减去的最大抖动。 |
| consoleDebugLogging | boolean | true | 当为 false 时,抑制服务器控制台中的清理摘要消息。 |
| deletePercentage | int | 90 | 每个周期删除符合条件物品的百分比(0–100)。即使超过阈值,也会保护最新的物品。 |
| whitelistMode | boolean | false | 切换白名单(true)或黑名单(false)过滤行为。 |
| filteredItems | list | [] | 接受精确物品 ID(minecraft:stone)、标签引用(#forge:ingots)或使用 */? 的通配符模式(例如 minecraft:*、minecraft:oak*),用于定义哪些物品受保护(黑名单)或被针对(白名单)。 |

示例:

entityCountThreshold = 250
minItemAgeMs = 15000
scanIntervalTicks = 20
deletePercentage = 80
whitelistMode = false
filteredItems = ["minecraft:nether_star", "minecraft:diamond"]

通配符示例

filteredItems = ["minecraft:oak*"]

此配置的含义是:

  • 清理大约每秒运行一次。
  • 仅在存在超过 250 个掉落物品时开始。
  • 删除所有存在时间超过 15 秒的物品中的 80%(优先删除最旧的)。
  • 钻石和下界之星永远不会被删除。

🧠 技术细节(面向开发者和维护者)

核心行为

  • 物品在 TrackedItemsData 中追踪,使用按维度持久化存储。
  • 每个物品存储:
  • UUID
  • dimension
  • firstSeenMs(首次检测到的时间)
  • lastSeenMs(最后确认的时间)
  • 仅当物品总数超过配置阈值时才会执行清理。
  • 物品符合条件需满足:
  1. 其存在时间 ≥ minItemAgeMs
  2. 通过当前策略过滤器(黑名单/白名单模式)
  • 当启用 protectNamedItems 时,带自定义名称的物品会被完全忽略——它们不计入阈值,也永远不会被删除。

删除逻辑

  • 所有符合条件的物品都会按最旧优先排序(按firstSeenMs升序)。
  • 每个周期的删除数量为:
  deletions = min(excess_items, eligible_items * (deletePercentage / 100))
  • 这可以确保:
  • 服务器维持稳定的 tick 时间。
  • 玩家最近掉落的物品会被保留。
  • 持续溢出物品的自动化机器会被清理干净。

抖动(扫描不同步)

  • 系统使用随机间隔:
  nextInterval = scanIntervalTicks ± scanJitterTicks

以避免多个模组或系统运行周期性更新时同时出现高 tick 峰值。

代码结构

| 包 | 用途 |
|———-|———-|
| core/ | 清理逻辑、tick、过滤和执行 |
| persist/ | 用于按世界存储的持久跟踪数据(SavedData) |
| config/ | 配置规范与加载 |
| command/ | 可选的 /cleanup 管理员命令,用于手动触发 |

命令

| 命令 | 描述 |
|———-|————-|
| /cleanup run | 手动强制执行一次清理周期。 |
| /cleanup status | (计划中)显示已跟踪物品数量、符合条件的物品以及当前阈值。 |
| /cleanup config | 即时更改配置中的值。 |


💡 未来计划

  • 仅通过动作栏或服务器控制台提供游戏内反馈
  • 将指标暴露给 /cleanup status 或与计分板兼容的数据点

📜 许可证

MIT 许可证——可自由使用和修改。
重新分发时请注明 Metl_Play。
如果在整合包中提及我会很感激,但不是必须的。


🧩 致谢

  • 开发者: Metl_Play
  • Minecraft: 1.21.1 (NeoForge)
  • 映射: Parchment mappings
  • 库: NeoForge API、标准 Java 集合

“它不只是一个清理模组——它是一个更聪明的清洁工。” 🧠🧹

常见问题

Smart item deleter V2 支持哪些 Minecraft 版本?

Smart item deleter V2 支持 Minecraft Java 版 1.21.1,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。

Smart item deleter V2 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。

评论

登录后评论和评分