DummyCore
[!INFO] Git Commit:
932ebbf| Updated: 2026-10-01
modid:DummyCore(大驼峰,注意与本 wiki 分类名 dummycore 大小写不一致)
Minecraft:1.7.10 / Forge 10.13.4.1614
DummyCore 是 Dummy Thinking 团队(Modbder / TheDen2099)的公共依赖库,不是一个独立的玩法 mod。
它的定位在 README.md 中写得很明确:“DummyCore is a package required for mods made by dummy thinking.
It also can be used in another projects.”
源码共 58 个 Java 文件 / 5717 行(不含 src/main/resources),其中 DummyCore/Utils/ 一个包就占了
绝大部分篇幅 —— 最大单文件是 Utils/MiscUtils.java(1387 行)。
本 mod 没有的内容维度
以下维度经 grep 全量核实确认不存在,因此本分类不创建对应目录:
| 维度 | 核实命令 | 结果 |
|---|---|---|
| 方块 | grep -rn "extends Block" src/main/java | wc -l |
0 |
| 物品 | grep -rn "extends Item" src/main/java | wc -l |
0 |
| TileEntity | grep -rn "registerTileEntity" src/main/java | wc -l |
0 |
| 实体 | grep -rn "registerEntity" src/main/java | wc -l |
0 |
| 多方块 | grep -rni "multiblock" src/main/java | wc -l |
1(仅为死字段 DummyConfig.MultiBlockUID) |
| 世界/维度 | grep -rn "registerDimension|WorldProvider" src/main/java | wc -l |
0 |
| 群系 | grep -rn "registerBiome" src/main/java | wc -l |
0(仅 MiscUtils.changeBiome 辅助方法) |
| 结构生成 | grep -rn "IWorldGenerator|MapGen" src/main/java | wc -l |
0 |
| 附魔 | grep -rn "Enchantment" src/main/java | wc -l |
2(仅 EnchantmentHelper 调用) |
| Buff/Debuff | grep -rn "PotionEffect" src/main/java | wc -l |
1(仅读取抗性效果) |
| 热键 | grep -rn "registerKeyBinding" src/main/java | wc -l |
0 |
| 成就 | grep -rn "Achievement" src/main/java | wc -l |
0 |
| 合成配方 | grep -rn "addRecipe|ShapedRecipes" src/main/java | wc -l |
0(仅 OreDictionary 查询) |
为什么没有方块和物品:Blocks/BlocksRegistry.java 与 Items/ItemRegistry.java 看起来像注册表,
但它们的 registerBlock / registerItem 方法是给其它 mod 调用的工具方法 ——
接收外部传入的 Block / Item 实例并转发给 GameRegistry。DummyCore 自己一个方块、物品都没有注册。
核心 API
DummyCore 的实际内容就是它暴露给其它 mod 的接口面:
| API | 类 | 用途 |
|---|---|---|
| mod 注册 | Core.registerModAbsolute(Class, String, String, IDummyConfig) |
preInit 调用,自动建 .cfg 与两个创造模式页签 |
| 方块/物品注册助手 | BlocksRegistry.registerBlock、ItemsRegistry.registerItem |
注册时顺带塞进该 mod 的页签 |
| 页签查询 | Core.getBlockTabForMod(Class)、getItemTabForMod(Class) |
取 mod 专属页签 |
| GUI 容器注册 | GuiContainerLibrary.registerGuiContainer(String, String) |
免写 Proxy 打开方块 GUI,返回 ID |
| 主菜单注册 | MainMenuRegistry.registerNewGui(Class, String, String) |
需实现 IMainMenu 标记接口 |
| 配置 | IDummyConfig + Core.getConfigFileForMod(Class) |
每个 mod 独立的配置文件 |
| 数据持久化 | DummyDataUtils |
在世界存档 DummyData/ 下按 mod / 按玩家存取字符串 |
| 数据同步 | SyncUtils.addRequiresSync(...) |
服务端数据批量下发客户端 |
| 网络封包 | DummyPacketHandler.sendTo* |
广播 / 维度 / 玩家 / 服务器四种发送方式 |
| 方块数据同步 | DummyTilePacketHandler + ITEHasGameData |
TileEntity NBT 增量同步 |
| 事件 | DummyEvent_OnPacketRecieved、DummyEvent_OnKeyboardKeyPressed_Server、DummyEvent_OnClientGUIButtonPress |
DummyCore 自定义事件,抛在 Forge 总线上供订阅 |
| 工具类 | MiscUtils(1387 行)、MathUtils、Lightning、ReflectionProvider、UnformedItemStack 等 |
伤害计算、粒子、发光、反射、矿石字典等杂项 |
内部事件总线注册见 CoreInitialiser.preInit()(CoreInitialiser.java:76-78):DummyEventHandler
与 DummyDataUtils 同时注册到 MinecraftForge.EVENT_BUS 和 FML 总线上。
设置列表
- /DummyCore.Transfer 指令 - 把玩家传送到指定维度的唯一指令,权限等级 0
- DummyCore 配置 -
config/DummyCore.cfg的 6 个全局配置项 - 主菜单替换系统 - 接管原版主菜单并支持玩家切换
- 创造模式物品栏图标轮换 - 页签图标每 3 秒重掷
已知源码缺陷汇总
本次核实共记录 7 处源码问题,均已在对应条目中附源码行号:
Utils/CommandTransfer.java:21—args[1]在参数检查前被访问,无参/单参调用必崩Utils/CommandTransfer.java:22— 上述导致getCommandSenderAsPlayer分支成为死代码Client/MainMenuRegistry.java:51—menuList.size() < indexoff-by-oneClient/GuiMenuList.java:95—var1 <= menuList.size()off-by-one,且无 try/catchCreativeTabs/CreativePageBlocks.java:40、CreativePageItems.java:40—tries <= 1使候选列表只扫描一次Utils/DummyConfig.java:7-8—MultiItemUID/MultiBlockUID永不赋值且无读取方Utils/DummyConfig.java:33-38— 每次打开主菜单都完整load()+save()配置文件
另有两处 API 易用性问题(非崩溃):Utils/DummyPacketHandler.java:45 的
sendToAllAround(IMessage, int dim) 名字暗示"周围广播"实则调用 sendToDimension;
Utils/EnumGuiPosition.java 已 @Deprecated,且其枚举值 x / y 字段因无参构造而恒为 0。
相关分类
- 本分类未与 Thaumcraft API 建立依赖关系。核实结论:
grep -rni "thaumcraft" /Users/evlos/a/mirror/dummycore/src/main/java | wc -l→ 0, DummyCore 不引用 Thaumcraft 任何类,也无重名/重复实现。两者的 Thaumcraft 相关能力 (thaumcraft-api/aspect、thaumcraft-api/research等)互不重叠。
外部依赖
| 依赖 | 作用域 | 说明 |
|---|---|---|
| EndlessIDs | compileOnly |
dependencies.gradle 声明 curse.maven:endlessids-665730:7585931 |
Utils/DummyEventHandler.java:22 直接 import 了 com.falsepattern.endlessids.mixin.helpers.ChunkBiomeHook,
用于在收到 dummycore.biomechange 封包时改写区块群系数组。运行时由
CoreInitialiser.java:80 的 ENDLESS_IDS_LOADED = Loader.isModLoaded("endlessids") 守卫,
未安装 EndlessIDs 时走 byte[] 分支。但该 import 是对 EndlessIDs 类的硬引用,
若换用非 log4j 之外的日志绑定或不同版本的 EndlessIDs,DummyEventHandler 的类加载存在风险。