战利品堆

战利品堆

该项目是一个战利品箱,带有冷却时间,并包含适用于任何物品组(任何权重)的配置文件。

战利品堆

NeoForge 模组,适用于 Minecraft 1.21.1,添加了带等级的战利品堆方块,具有全局冷却时间和注重性能的服务器架构。

特性

  • 五个战利品堆等级:普通、稀有、史诗、传说
  • 空手右键点击搜索堆并生成战利品
  • 每个方块位置共享冷却时间(非玩家独立)
  • 中心化 SavedData 冷却管理器——无方块实体持续 tick
  • 可通过 config/lootpiles-server.toml 配置冷却时长
  • 管理员命令用于生成、重置和检查战利品堆
  • Blockbench 方块模型,使用 64×64 基础纹理和等级染色(tintindex: 0)
  • 冷却时显示扁平的枯竭模型,保留原等级颜色
  • 物品栏和 JEI 中显示等级颜色物品名称(CUSTOM_NAME 数据组件)
  • metal_scrap 战利品物品
  • 可选的 JADE 悬浮提示和 JEI 信息页面(仅开发模式加载)

需求

  • Minecraft 1.21.1
  • NeoForge 21.1.64+
  • Java 21

开发

./gradlew build
./gradlew runClient
./gradlew runServer
  • 客户端 使用 run-client/(单人存档)
  • 服务端 使用 run-server/(专用世界+控制台)
  • 开发用户名在 NeoForge userdev 中固定为 Dev

测试服务器 OP 设置

  1. 首次启动时在 run-server/eula.txt 中接受 EULA(eula=true)
  2. 启动服务器:.\gradlew.bat runServer
  3. 玩家 Dev 在首次运行时自动获得 OP(复制 dev/server/ops.json)
  4. 从服务器控制台手动授予 OP:
    op Dev
    
  5. 从客户端连接:多人游戏 → localhost(需 online-mode=false)

修复客户端 invalidplayerdata 错误

当 run/saves/ 下的世界损坏时会出现此问题(数据/进度存在但 playerdata/ 缺失)。

修复方法: 删除损坏的世界并创建新世界:

Remove-Item -Recurse -Force run\saves\Dev, run\saves\"New World"
# 或删除所有内容:
Remove-Item -Recurse -Force run\saves\*

在当前 Gradle 配置下,运行 runClient 后存档位于 run-client/saves/。

JADE 和 JEI 通过 localRuntime 加载,仅用于本地测试。

命令(OP 等级 2)

命令 描述
/scrappile spawn <等级> [x y z] 放置一个战利品堆
/scrappile reset all 清除当前维度所有冷却
/scrappile reset <x> <y> <z> 重置指定战利品堆
/scrappile status <x> <y> <z> 显示等级和冷却状态

别名:/lootpiles

配置

服务器配置文件:config/lootpiles-server.toml

默认冷却时间(tick):

等级 Tick 时间
普通 12000 10分钟
稀有 24000 20分钟
史诗 36000 30分钟
传说 60000 50分钟
传说 120000 100分钟

视觉设计

  • 活跃堆: 完整 Blockbench 模型(scrap_pile.json),使用 lootpile_base.png(64×64 图集)
  • 枯竭堆: 扁平模型(scrap_pile_empty.json),当 depleted=true 时通过方块状态切换
  • 等级颜色: 通过方块染色索引和物品显示名称在客户端应用
等级 方块染色 物品名称样式
普通 #909090 灰色
稀有 #1EFF00 绿色
史诗 #0070DD 蓝色,加粗
传说 #A335EE 紫色,加粗
传说 #FF8000 橙色,加粗,下划线

发布(CurseForge)

仓库密钥

密钥 描述
CURSEFORGE_TOKEN CurseForge API 令牌
CURSEFORGE_PROJECT_ID CurseForge 项目数字 ID

通过标签发布

git tag v1.0.0
git push origin v1.0.0

发布模组到 CurseForge 工作流会构建 jar、上传到 CurseForge,并在没有对应版本文件时生成 GitHub 发布更新日志。

手动发布

从 Actions 标签运行 发布模组到 CurseForge 工作流,并设置模组版本输入(例如 1.0.0)。

更新日志

每个版本的更新日志位于 docs/changelogs/<版本>.md(例如 docs/changelogs/1.0.0.md)。当该文件存在时,会作为发布说明上传到 CurseForge。

版本类型自动推断:

  • *-alpha → alpha
  • *-beta → beta
  • 其他 → release

许可证

MIT — 参见 LICENSE。