Pseudo
[!INFO] Git Commit:
d315cbc| Updated: 2025-10-02
modid:pseudo(来自 Pseudo.java:15 public static final String MODID = "pseudo";)
显示名: Pseudo
mcmod.info 描述: Allows client side blocks/metadata to be overridden from server side values
纯机制 mod。全部源码只有 4 个 java 文件,不注册任何方块、物品或实体。
唯一在 init 阶段做的事是向 ChunkAPI 注册一个数据管理器(Pseudo.java:20-22);
其余内容是一个供其它 mod 使用的方块改写 API。
游戏设定 / 机制列表
- BlockManager 数据管理器 — ChunkAPI
DataManager,拦截区块与单方块更新发包 - 客户端方块变换器 API — 供其它 mod 改写"发给客户端"的方块 ID 与 metadata
工作模式
| 环节 | 是否处理 | 说明 |
|---|---|---|
区块发包(readFromBuffer) |
是 | 解包 EndlessIDs 的 B/M 数组 → 批量变换 → 写回 |
单方块更新(writeBlockToPacket) |
是 | 改写 S23PacketBlockChange |
自定义单方块包(writeBlockPacketToBuffer) |
是 | 仅当 packet 是 CustomPacketBlockChange |
反向解析(readBlockFromPacket、readBlockPacketFromBuffer) |
否 | 均为空实现 |
数据写出(writeToBuffer) |
否 | 空实现,无持久化 |
依赖
dependencies.gradle 中为 api 依赖(会随 jar 的 Maven 坐标发布):
| 依赖 | 版本 |
|---|---|
com.falsepattern:chunkapi-mc1.7.10 |
0.7.0-alpha-01 |
com.falsepattern:endlessids-mc1.7.10 |
1.6.12 |
com.github.GTNewHorizons:GTNHLib |
0.6.40 |
另有仅运行期、不发布的依赖:WAILA 1.9.0、NotEnoughItems 2.8.0-GTNH
(runtimeOnlyNonPublishable,dependencies.gradle)。
本 mod 没有的内容(源码核实)
registerBlock、registerItem、registerEntity、registerTileEntity、GameRegistry、
addCommand、addChatCommand、keyBinding、Enchantment、BiomeGen、WorldProvider、
Potion、Achievement 在 src/main/java 下各 0 命中;无 extends Block / extends Item /
extends Entity 的类。
已知源码问题
@Mod未声明依赖:Pseudo.java:12的注解没有dependencies字段,但代码硬依赖 ChunkAPI / EndlessIDs / GTNHLib。缺库时表现为类加载NoClassDefFoundError,而不是 FML 的友好依赖报错。- 变换结果写回服务器端存储:
managers/PseudoBlockManager.java:115-116用eid$setID/eid$setMetadata改ExtendedBlockStorage,与 mcmod.info 宣称的 “client side” 语义不符——变换会实际落进服务器区块数据。 - 批量长度用
capacity():api/IClientBlockTransformer.java:45与managers/PseudoBlockManager.java:111,对非整块缓冲不安全。 world可能为 null 但契约未声明:managers/PseudoBlockManager.java:142传 null,api/IClientBlockTransformer.java:25的 javadoc 未说明。