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 总线上。

设置列表

已知源码缺陷汇总

本次核实共记录 7 处源码问题,均已在对应条目中附源码行号:

  1. Utils/CommandTransfer.java:21 — args[1] 在参数检查前被访问,无参/单参调用必崩
  2. Utils/CommandTransfer.java:22 — 上述导致 getCommandSenderAsPlayer 分支成为死代码
  3. Client/MainMenuRegistry.java:51 — menuList.size() < index off-by-one
  4. Client/GuiMenuList.java:95 — var1 <= menuList.size() off-by-one,且无 try/catch
  5. CreativeTabs/CreativePageBlocks.java:40、CreativePageItems.java:40 — tries <= 1 使候选列表只扫描一次
  6. Utils/DummyConfig.java:7-8 — MultiItemUID / MultiBlockUID 永不赋值且无读取方
  7. 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 的类加载存在风险。