NonNonSense

NonNonSense

NonNonSense 是一个个人模组,旨在清理我认为《我的世界》中的“无意义”内容。

NonNonSenseMC — 清理 Minecraft 无意义的 Mod (Fabric 1.21.10)

NonNonSenseMC 是一个个人向 Mod,旨在清理我认为 Minecraft 中的“无意义”内容。它引入了两个关键特性:

  1. 村民检查器:一个轻量级 HUD,用于实时检查村民。
  2. 无限交易:移除村民的交易限制,允许无限交易。

基础版本:Minecraft 1.21.10 • Fabric Loader 0.17.3 • Fabric API 0.136.0+1.21.10

特性

村民检查器

  • 当准星瞄准村民时显示上下文相关的村民 HUD。
  • 显示内容:
    • 职业(颜色编码)和等级。
    • 基于当前 AI 任务的恐慌状态。
    • 可繁殖状态。
    • “最近检测到铁傀儡”(值与 TTL,通过内部记忆暴露)。
    • “最后睡觉”记忆。
    • “家”的 BlockPos。
  • 高效的客户端-服务器通信:客户端仅在需要时请求信息,并使用节流机制避免向服务器发送过多请求。

无限交易

  • 移除村民交易的最大使用次数限制。
  • 允许与村民无限交易而无需重置其交易。
  • 通过一个修改 TradeOffer 的 maxUses 和 uses 字段的 mixin 实现。

使用方法

  1. 安装该 Mod 后启动游戏(如果在 Mod 专用服务器或局域网服务器上,则需要同时安装在客户端和服务器端)。
  2. 将准星对准村民以查看 HUD。
  3. 与村民交易,无需担心交易次数限制。

无需按键绑定——特性会自动生效。

工作原理(高层概述)

村民检查器

  • 客户端:当您瞄准村民时,它会发送一个 C2S 请求,包含实体 ID,同一目标间隔至少 150 毫秒。
  • 服务器:收到请求后,读取村民的大脑(记忆和正在运行的任务),并以 S2C 负载进行响应,客户端将其渲染到 HUD 中。

无限交易

  • 一个 mixin 挂钩到 VillagerEntity 的 fillRecipes 方法。
  • 通过反射修改 TradeOffer 的 maxUses 和 uses 字段,将其设置为 Integer.MAX_VALUE。

高级网络(村民检查器):

  • C2S:nonsensenmc:villager_info_request — 内容:VAR_INT entityId。
  • S2C:nonsensenmc:villager_info — 内容:BOOLEAN scared、BOOLEAN readyToBreed、STRING home、STRING lastSlept、STRING golemDetected。

架构(整洁架构)

  • 领域层
    • VillagerInfo(不可变记录/DTO):原始村民数据,不含 UI 格式化。
  • 应用层
    • VillagerInfoService:用例,从 VillagerEntity 构建 VillagerInfo(读取任务/记忆)。无网络/UI 依赖。
  • 基础设施层(服务器端)
    • ServerNetworking:注册编码器和 C2S 处理器;使用服务并回复 S2C 数据包。
  • 客户端层
    • NonNonSenseMCClient:注册编码器和 S2C 接收器。
    • ClientVillagerHudState:HUD 状态和请求节流。
    • HudRenderingEntrypoint:渲染叠加层,从状态和指向的 VillagerEntity 读取数据。
  • Mixin 层
    • VillagerEntityMixin:挂钩村民的 fillRecipes 以启用无限交易。

要求

  • Minecraft:1.21.10
  • Fabric Loader:0.17.3
  • Fabric API:0.136.0+1.21.10

安装(玩家)

  1. 安装与 1.21.10 兼容的 Fabric Loader。
  2. 将此 Mod 的 JAR 文件放入实例的 mods/ 文件夹。
  3. 同时将兼容的 Fabric API JAR 放入 mods/ 文件夹。
  4. 启动游戏。

对于多人游戏/服务器:如果您希望所有人都能看到服务器支持的 HUD 数据并享受无限交易,也需要在服务器端安装该 Mod 和 Fabric API。

构建产物位于 build/libs/ 目录下。

配置

  • 请求节流:目前设置为同一目标村民每 150 毫秒一次(ClientVillagerHudState.beginRequestIfAllowed)。您可以在代码中调整此值。
  • 日志:服务会输出 debug 级别的日志行,包含原始记忆内容。

注意事项与限制

  • 此映射版本中使用的某些 AI/大脑 API 来自已弃用的方法;保留它们是为了与当前构建版本兼容。
  • 修改交易提供的 mixin 是实验性的,可能会影响村民的交易行为或游戏平衡。

故障排除

  • HUD 不显示:
    • 确保您确实瞄准了村民。
    • 确认已安装 Fabric API,并且客户端和服务器端的 Mod 版本匹配。
  • 负载/类型不匹配:
    • 确保客户端和服务器都注册了编码器(此 Mod 在其入口点中执行此操作),并且两端的 Mod 版本匹配。
  • 性能:
    • 节流机制限制了请求次数;如果您自定义间隔时间,请避免使用极低的值,以防止网络请求过频。

贡献

欢迎提交 PR,用于:迁移到未弃用的 Brain API、添加配置选项等。

许可证

请参阅附带的 LICENSE.txt 文件。