LootGames

[!INFO] Git Commit: 960cfc7 | Updated: 2026-10-02

LootGames 是 Minecraft 1.7.10 / Forge 10.13.4.1614 的地牢益智游戏模组——在程序化生成的地牢里玩「记忆」「扫雷」「数独」三款小游戏,赢了拿战利品,输了挨炸。

属性 值
modid lootgames(全小写,与分类名一致)
名称 LootGames
硬依赖 required-after:Forge@[10.13.4.1614,)(ru/timeconqueror/lootgames/LootGames.java:37)
证书指纹 1cca375192a26693475fb48268f350a462208dce
作者 Namikon、TimeConqueror
语言 源码 163 个 .java(无 Scala / Kotlin)
源码目录 /Users/evlos/a/mirror/LootGames/

⚠️ mcmod.info 整份都是构建期占位符(${modId} / ${modName} / ${modVersion} / ${minecraftVersion}),不能据此判断 modid。实测 modid 来自 @Mod(modid = LootGames.MODID) 恒为 "lootgames"(LootGames.java:45)。

实际注册规模(源码实测)

维度 实际数量 本 wiki 覆盖
方块 12(11 个在 LGBlocks + 1 个在 LootGamesLegacy) 12
物品 0(全仓库 registerItem 调用数 = 0) —
TileEntity 5 见方块条目
实体 0(无 EntityRegistry 调用) —
小游戏 3(扫雷 / 光之游戏 / 数独) 3
成就 8(LGAchievements 枚举,3 个 special) 见下
多方块结构 0(本 mod 无多方块结构) —
世界生成器 1(Integer.MAX_VALUE 优先级) —

本 mod 无多方块结构。地牢由 StructureGenerator 逐块程序化拼接,不使用 Multiblock 定义。

⚠️ 注册名三套命名混用

同一个注册表里并存两种风格,这是本 mod 最容易写错的地方:

风格 方块 示例
PascalCase(legacy) DUNGEON_WALL、DUNGEON_LAMP、PUZZLE_MASTER LootGamesDungeonWall、LootGamesDungeonLight、LootGamesMasterBlock、GOLMasterBlock
snake_case(现代) 其余 8 个 smart_subordinate、board_border、gol_activator、ms_activator、sdk_activator、gol_master、ms_master、sdk_master

TileEntity 名又用第三种风格:LOOTGAMES_MASTER_TE / LOOTGAMES_GOL_TE(大写下划线)与 gol_master / ms_master / sdk_master(snake_case)。

⚠️ 「双主控」重叠:光之游戏有两个主控方块

光之游戏(Game of Light)同时存在新旧两套主控,注册名与 TileEntity 全不同但功能重叠:

版本 方块注册名 TileEntity 注册位置
旧版 lootgames:GOLMasterBlock LOOTGAMES_GOL_TE(LegacyGameOfLightTile) LootGamesLegacy.PreLoad()(preInit)
新版 lootgames:gol_master gol_master(GOLMasterTile) LGBlocks.register()(preInit)

两者都在 preInit 注册,同时存在。LegacyMigrator(ru/timeconqueror/lootgames/LegacyMigrator.java)负责旧存档迁移。

⚠️ 三个 Master 共用同一个类

GOL_MASTER / MS_MASTER / SDK_MASTER 都是 GameMasterBlock 的实例(LGBlocks.java:53-55),靠 BiFunction 工厂注入不同 TileEntity 工厂。按类统计只得 1,按实例统计才是 3——典型的「数调用点严重少算」陷阱。

方块列表

地牢结构方块

主控与启动方块

棋盘构件

小游戏列表

三款游戏抽取权重默认全为 1(等概率),设 weight = 0 即关闭该游戏(LGGames.java:15-20)。

  • Minesweeper - 扫雷,4 关,半径 6→9、炸弹 20→68,引爆倒计时 60 tick
  • Game of Light - 光之游戏,4 关,失败三重惩罚(爆炸 + 僵尸 + 岩浆,默认全开)
  • Sudoku - 数独,3 档答错清除策略 + 3 个默认关闭的提示开关

成就列表(8 个)

LGAchievements 枚举(ru/timeconqueror/lootgames/registry/LGAchievements.java:16-25):

键名后缀 名称 图标 special
find_dungeon 发现地牢 PUZZLE_MASTER —
win_game 赢得游戏 下界之星 —
lose_game 输掉游戏 骷髅头 —
ms.start 开始扫雷 MS_ACTIVATOR —
ms.beat_level_4 通关扫雷第 4 关 TNT ✅
gol.start 开始光之游戏 GOL_ACTIVATOR —
gol.beat_level_3 光之游戏第 3 关 钻石 ✅
gol.beat_level_4 光之游戏第 4 关 绿宝石 ✅

成就名统一经 resolve() 加 lootgames. 前缀(:52-54)。

物品与实体

本 mod 不注册任何独立物品,不注册任何实体。 物品形式全部由方块自带的 ItemBlock / ItemBlockWithMetadata(DungeonBlockItem)提供。战利品通过 RewardUtils / LootTables(战利品表)发放,不占注册名。

依赖范围

依赖 relation.md 状态 处理
Forge 不在收录范围 仅写明版本下限
TimeCore(ru.timeconqueror.timecore) 内嵌源码(本仓库自带 30+ 个类) 随本 mod 一并覆盖,未单独建分类
GTNH Gradle / Lombok 构建期依赖 未收录

本 mod 不依赖任何其它内容模组,是自包含的。

源码缺陷汇总

# 缺陷 位置
1 GameBlock.getIcon() 判断取反:有 textureName 时返回默认图标,无纹理名时返回护盾地板贴图 ru/timeconqueror/lootgames/api/block/GameBlock.java:28-31
2 同一判断在 registerBlockIcons() 里方向正确,两处不一致 GameBlock.java:33-37
3 光之游戏双主控并存(新旧两套),功能重叠 LGBlocks.java:53,55 vs LootGamesLegacy.java:26
4 注册名三套命名风格混用(PascalCase / snake_case / 大写下划线) LGBlocks.java:43-59
5 DungeonLightSource 亮度靠覆写 getLightValue 而非 setLightLevel,易被误读 DungeonLightSource.java:50-52
6 LegacyLightGameBlock.registerBlockIcons 是空实现,方块无贴图 eu/usrv/legacylootgames/gol/blocks/LegacyLightGameBlock.java:33