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 这类有审查流程的环境下值得标注。
相关条目
- 调试模式与 /yamcore 指令 - 唯一在游戏内可见的行为