更好的附魔存储

更好的附魔存储

一个用于存储和提取附魔的Fabric Minecraft模组。

附魔存储

Fabric Minecraft Release Status

概述

附魔存储 模组为 Minecraft 新增了一个方块——附魔提取器。附魔提取器的目的是为所有收集到的附魔提供一个集中存储的地方。此模组诞生于因无法堆叠的附魔物品塞满背包、箱子和潜影盒而产生的挫败感。因此,与其浪费宝贵的存储空间,花太多时间整理附魔物品,现在你可以移除附魔并在其他地方使用它们。当然,这种好处不是免费的。每次存储或提取附魔的操作,每级附魔会消耗 1 级经验。但是,这个消耗可以通过消耗青金石来减少,甚至消除。聪明工作,而非埋头苦干。节省空间、时间和理智。

玩家使用

安装

  • 下载 附魔存储 的 .jar 文件。
  • 将 enchantment_storage-x.y.z.jar 文件放入你的 Minecraft mods/ 文件夹。
  • 使用与此模组相同的 Minecraft 版本(1.21.10)。
  • 确保已安装 Fabric Loader 和 Fabric API。

合成配方

有两种有效的有型配方可以合成附魔提取器,需要以下材料:

  • 黑曜石 x4
  • 青金石 x2
  • 末影之眼 x1
  • 龙息或末地水晶 x2

GUI 基础

槽位布局

  • 顶部槽只能放置青金石。
  • 底部槽只能放置书、附魔书或附魔物品。
  • 右侧槽仅用于输出。

操作按钮

  • 存储:将附魔从底部输入槽拉取到内部存储。
  • 提取:将选定的附魔应用到书或附魔书上。

注意:你不能直接将附魔提取到物品或工具上,只能提取到书或附魔书上。

存储和提取流程

  1. 将青金石放入顶部槽。
  2. 将附魔物品或附魔书放入输入槽,然后点击存储。
  3. 从列表中选择一个存储的附魔等级。
  4. 将书或附魔书放入底部输入槽,然后点击提取。
  5. 从输出槽中取走结果。

经验与青金石消耗

  • 存储 经验消耗 = 输入物品、书或附魔书上所有附魔等级的总和。
  • 提取 经验消耗 = 选定的附魔等级(经验修补消耗 1 级,亡灵杀手 V 消耗 5 级)。
  • 青金石提供直接折扣:1 级经验。
  • 每折扣 1 级消耗 1 个青金石。

兼容性

  • 此模组与所有“原版”Minecraft 附魔兼容。
  • 此模组也与模组的、非“原版”附魔兼容。

漏斗行为

  • 顶部面(UP)仅用于青金石顶部输入槽。
  • 侧面(N/S/E/W)仅用于物品、书和附魔书的输入槽。
  • 底部面(DOWN)仅用于输出槽的提取。

调试命令

调试命令仅供开发使用,需要权限等级 2。根命令:/es

描述 命令
填充内部附魔存储 /es seed [rows] [quantity]
打印已存储的附魔及其总数 /es list
清除所有已存储的附魔数据 /es clear
打印输入/输出/青金石槽位状态 /es inspect
设置青金石槽位数量(0..64) /es fillLapis [count]
向存储中添加附魔 /es store [enchantment] [rank] [quantity]
从存储中移除附魔 /es extract [enchantment] [rank] [quantity]

开发者笔记

Gradle

使用 .\gradlew <task> 来运行 Gradle 封装器任务。

任务 描述
runClient 以开发模式启动带有模组的 Minecraft 客户端。
build 编译、测试并构建模组 jar 文件。
test 运行 JUnit 单元测试。
runGameTest 运行 Fabric/Minecraft 游戏测试。
runDatagen 为资源/数据输出运行数据生成。
spotlessCheck 验证由 Spotless 配置的格式和 lint 规则。
spotlessApply 自动应用 Spotless 格式修复。
clean 删除构建目录以进行全新构建。

使用 --refresh-dependencies 标志强制进行完整的 Gradle 重建。

JVM 参数

  • Java 版本要求:Java 21
  • 全局 Gradle JVM 参数位置:gradle.properties
  • 其他 Gradle 依赖位置:build.gradle

Spotless

.\gradlew spotlessApply
.\gradlew spotlessCheck

单元测试

.\gradlew test

游戏测试

.\gradlew runGameTest

附魔注册表

  • 由 getEnchantmentRegistry() 方法实现。
  • 目的是从世界注册管理器中解析附魔注册表。
  • 当世界不可用时,该方法返回 null,因此调用方必须处理可为空的结果。

清晰代码指南

  1. 保持可为空性约定明确且一致。
  2. 用命名常量替换魔法数字。
  3. 保持日志结构化且低噪音。
  4. 将仅限客户端的代码排除在通用/服务端路径之外。
  5. 保持 NBT 序列化版本感知并经过验证。
  6. 使用一个清晰的注册/引导路径。
  7. 在热 UI/渲染循环中避免可避免的分配。
  8. 按领域保持工具类功能集中。
  9. 将确定性逻辑移入纯的、可测试的辅助工具中。
  10. 使用一致的命名和动词约定。
  11. 在 API/映射发生变化的地方添加兼容性守卫。
  12. 在自动化中强制执行格式化和静态检查。

源代码区域

区域 范围
Constants (常量) 类共享的静态/最终值。
Class Variables (类变量) 表示类状态的实例字段。
Constructors (构造器) 对象构造和初始化连接。
Registration and Initialization (注册与初始化) 启动注册和一次性引导流程。
Getters and Setters (获取器与设置器) 用于受控状态访问的访问器/修改器。
UI (用户界面) 面向 UI 的行为、布局/状态辅助工具和交互。
Overrides (重写) 超类/接口契约的实现。
Public (公有) 供外部调用者使用的公共 API 方法。
Protected (受保护) 供子类/包使用的扩展点。
Private (私有) 对外部调用者隐藏的内部实现细节。
Helpers (辅助工具) 支持核心逻辑的可重用内部实用方法。
Validation (校验) 输入/状态守卫和不变量检查。
Serialization (序列化) 持久化/传输数据的读写逻辑。
Debug (调试) 开发/测试专用的工具和调试实用程序。
Logging (日志记录) 结构化日志辅助工具和相关例程。

单元测试区域

区域 范围
Vanilla (原版) 原版附魔/运行时假设。
Modded (模组) 模组兼容性行为。
Smoke (冒烟测试) 快速通过/失败的冒烟测试。
Confidence (信心测试) 核心逻辑实用程序。
Regression (回归测试) Bug 修复锁定测试。
Stability (稳定性测试) 顶层行为验证。
Integration (集成测试) 屏幕/方块实体/游戏测试集成。

仓库

在 GitHub 上查看源代码。

拉取请求与问题

  • 创建拉取请求来贡献功能和 Bug 修复。
  • 如果你发现模组存在问题,请创建一个问题。

捐赠

许可

查看许可证。