API 一览

YAMCore 的全部价值是这 80 个类构成的 API 库。它在游戏内不注册任何内容,所有类都供其它 mod 继承或静态调用。本文按包列出可用接口与调用方。

注册管理器(blocks/ items/ fluids/ creativetabs/)

类 作用 状态
ModBlockManager 批量注册方块 ⚠️ 从不被调用
ModItemManager 批量注册物品 ⚠️ 从不被调用
ModFluidManager 批量注册流体 + 桶 ⚠️ 从不被调用
CreativeTabsManager 创造栏管理 ⚠️ 仅被上述死 Manager 引用
ModCreativeTab 自定义创造栏 库
BlockBase / ModSimpleBaseBlock 方块基类 库
ItemBase / ModSimpleBaseItem 物品基类 库
ModSimpleBaseFluid / ModBucketItem 流体与桶基类 库

「从不被调用」指YAMCore 自身不调用,这些类对外部 mod 仍完全可用——这正是它们存在的意义。YAMCore 自己不注册内容,是因为它是库而不是内容 mod。

接口(iface/,6 个)

接口 暴露的方法
IExtendedBlockProperties getMaterial、getUnbreakable、getHarvestLevel、getOpacity、getHardness、getLightLevel、getResistance、getBlockName、getTextureName、getHarvestToolClass、getStepSound、getIsOpaqueCube(共 12 个)
IExtendedItemProperties 物品属性扩展
IExtendedModItem<T extends Item> 带泛型的物品扩展
IModItem 物品统一入口
IPersistedDataBase setValue(String,String)、setValue(String,int)、getValueAsInt(String,int)、getValue(String)、Load()、Save()

IExtendedBlockProperties 的价值在于把方块属性访问统一到一个接口,调用方无需知道具体方块类即可读取硬度 / 抗性 / 工具类等。

网络(network/)

PacketDispatcher(network/PacketDispatcher.java)是抽象基类,构造时传入 modid,内部持有 SimpleNetworkWrapper 与自增的 _mPacketId:

方法 用途
registerPackets() 抽象方法,子类在 preInit 覆写以注册自己的封包
registerMessage(REQ, REPLY, side) 泛型版本,自动分配 id
registerMessage(pHandlerClass, pMessageClass, side) 原始类版本
sendTo(message, player) 发给单个玩家
sendToAllAround(...) 3 个重载(TargetPoint / 坐标 / 玩家+范围)
sendToDimension(message, dimId) 发给某维度
sendToAll(message) 广播
sendToServer(message) 发往服务端

配套:AbstractMessageHandler、client/AbstractClientMessageHandler、server/AbstractServerMessageHandler。

⚠️ 本 mod 自身不注册任何封包——registerPackets() 是抽象的,必须由子类实现。

持久化(persisteddata/)

PersistedDataBase(persisteddata/PersistedDataBase.java:34)是 IPersistedDataBase 的文件实现,构造需三个参数:配置根目录、缓冲文件名、mod 集合目录。

方法 行号
setValue(String, String) :59
setValue(String, int) :78
getValueAsInt(String, int) :87
getValue(String) :99
Load() :119
Save() :181

⚠️ 本 mod 自身从不实例化它(ConfigManager 是死类),因此 YAMCore 不生成任何配置文件。

SQL 数据源(datasource/)

类 作用
DatasourceSQL 抽象基类,持有 LogHelper + Schema + 连接参数;抽象方法 loadAll() / checkAll(),具体方法 stop() / getBridge()
Schema 表结构定义
bridge/BridgeSQL 通用 SQL 桥接
bridge/BridgeMySQL MySQL 专用实现
bridge/Bridge 桥接接口

⚠️ YAMCore 自身从不建立任何数据库连接,这是给其它 mod 用的能力。但它确实携带了 MySQL 驱动依赖代码,且 调试指令的 /yamcore 9 会发起外部 HTTP 请求。

动态 GUI(client/dynamicgui/,20 个类)

子包 类
根 DynGUIScreen、DynGUIContainer
elements/ ButtonGuiElement、ProgressElement、TextFieldGuiElement、SlotElement、DisplayElement、InfoPanelControlerEl、SimpleDrawingElement + 3 个接口(IGuiElement、IDisplayElementDataProvider、IProgressElementDataProvider)
backgrounds/ GUIBackgroundProvider、SimpleRectangleBackground
skins/ BackgroundSkin
widgets/ IWidget
helper/ IQuadDrawer、ColoredQuadDrawer、TexturedQuadDrawer、NullQuadDrawer

这是本 mod 除注册管理器外最完整的一套子系统——一个可运行时的 GUI 定义框架(元素 + 背景 + 皮肤 + 绘制抽象)。

客户端通知(client/)

GuiNotification、Notification、NotificationTickHandler——聊天栏通知框架。

游戏注册辅助(gameregistry/)

类 作用
DamageTypeHelper 伤害类型注册辅助
PotionHelper 药水效果注册辅助

⚠️ 两个都只是辅助类,YAMCore 自身不注册任何伤害类型或药水效果。

工具类(auxiliary/,18 个)

类 用途
PlayerChatHelper SendJsonRaw / SendJsonFormatted / SendPlain / SendError(调试指令的主要演示对象)
ItemDescriptor 物品描述符,fromString("minecraft:stone") 解析物品串
IntHelper tryParse 安全整数解析
LogHelper 日志封装,支持 setDebugOutput
MathHelper / TimeHelper / TextFormatHelper 数学 / 时间 / 文本格式化
PlayerHelper / EntityHelper / WorldHelper / FluidHelper 各类辅助
PermConfigHelper 权限配置
Placeable 可放置判定
Hacks 反射 / 访问控制绕过
IngameErrorLog 游戏内错误日志
DonorController ⚠️ 赞助状态查询,内部走外部 HTTP
TabText Tab 补全文本
classes/JSONChatText 1.12 风格富文本构造(1.7.10 上经 tellraw 实现)
classes/JSONClickEvent suggestCommand / runCommand
classes/JSONHoverEvent SimpleText / Item
enums/ItemEqualsCompareMethodEnum 物品相等比较方式
enums/ItemRecipeBehaviorEnum 配方行为

其它

包 类
world/ EzCoords(坐标工具)
config/ ConfigManager(⚠️ 死类,YAMCore 无配置项)
events/ BucketHandler(FillBucketEvent 监听,注册点留空给外部)
command/ YAMCommand(调试指令,默认不注册)

已知缺陷

  • 命名四套并存:modid YAMCore、包 eu.usrv.yamcore、资源域 yamcore、仓库 / wiki 分类 yamcl、日志名 Yamcl(YAMCore.java:34 的 new LogHelper("Yamcl"))。过滤日志要搜 Yamcl 而非 YAMCore。

  • 4 个 Manager 全是死类。这本身对库 mod 是正常的(留给外部调用),但意味着 YAMCore 运行时不做任何注册,YAMCore.Init 与 postInit 两个生命周期方法完全为空。

  • ConfigManager 死类 → YAMCore 没有任何 .cfg 文件,唯一「配置」是 调试模式靠 config/YAMCoreDebug 文件是否存在。

  • en_US.lang 的 2 条键全是死键(yamcore.char.protection.give / .remove,护盾气泡提示),源码无引用。

  • Hacks 类的存在。该类名表明用途是绕过访问控制,虽在 1.7.10 上属常见做法,但在 GTNH 这类有审查流程的环境下值得标注。

相关条目