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。

游戏设定 / 机制列表

工作模式

环节 是否处理 说明
区块发包(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 未说明。