入口点与代理类

基本信息

属性 值
modid journeymap(Journeymap.MOD_ID,Journeymap.java:40)
主类 journeymap.common.Journeymap(Journeymap.java:38)
客户端代理 journeymap.client.JourneymapClient
服务端代理 journeymap.server.JourneymapServer
代理接口 journeymap.common.CommonProxy
Core Mod journeymap.client.mixin.MixinLoadingPlugin(coreModClass 配置项)
Mixin 数量 2 个(均为客户端)
FML 事件处理器 5 个(4 客户端 / 1 服务端)
canBeDeactivated true(Journeymap.java:35)

功能

Journeymap 是标准的 Forge 双端入口:公共代码放这里,客户端/服务端差异通过 @SidedProxy(:52-53)分流。

modid 与分类名不一致

⚠️ 本 wiki 分类名 journeymap-legacy 与 modid journeymap 不同。 modid 取自源码三处一致的定义:Journeymap.MOD_ID = "journeymap"(Journeymap.java:40)、@Mod(modid = Journeymap.MOD_ID, ...)(:32)、gradle.properties 的 modId = journeymap,以及 mcmod.info 的 "modid": "journeymap"。journeymap-legacy 是仓库名(远端 GTNewHorizons/journeymap-legacy)与本 wiki 分类名,不是游戏内 ID。资源命名空间同样是 journeymap(ResourceLocation(MOD_ID, "web"),webmap/WebMap.java:86)。

5 个 FML 事件处理器

事件 方法 侧 行为 源码
FMLInitializationEvent initialize 双端 转发 proxy.initialize(event) :85-89
FMLPostInitializationEvent postInitialize 双端 转发 proxy.postInitialize(event) :97-101
FMLPreInitializationEvent preInitEvent 仅服务端 ConfigHandler.init(new File(event.getModConfigurationDirectory() + "/JourneyMapServer/")) :103-108
FMLServerStartingEvent serverStartingEvent 仅服务端 注册 /jmserver 指令 :110-115
FMLServerStartedEvent serverStartedEvent 仅服务端 记录世界名并把 World ID 打进日志 :117-124

网络握手

@NetworkCheckHandler checkModLists(Map<String,String>, Side)(:66-77)决定客户端与服务端是否接受互相连接:若 proxy == null(尚未初始化)直接放行,否则转发 proxy.checkModLists()。JourneymapServer.checkModLists() 在 JourneymapServer.java:105。

服务端配置目录

preInitEvent 把服务端配置固定在 <游戏目录>/config/JourneyMapServer/(:107),与客户端的 <游戏目录>/config/journeymap/(Constants.CONFIG_DIR,Constants.java:46-47)是两套独立目录。

Core Mod 与 Mixin

MixinLoadingPlugin(client/mixin/MixinLoadingPlugin.java:11)实现 IFMLLoadingPlugin,声明 @IFMLLoadingPlugin.Name("Journeymap") 与 @IFMLLoadingPlugin.MCVersion("1.7.10")(:9-10)。

build.gradle.kts 的 tasks.jar 块在打包时移除 manifest 中的 TweakClass 属性,注释说明原因是"启用了 mixin 但它只是软依赖,若不移除,玩家未装 UniMixins 时启动会 class not found 崩溃"。

2 个 mixin 均为客户端(见 Mixin 集成)。

数值

数值名 值
modid journeymap
mod 显示名 JourneyMap(Journeymap.SHORT_MOD_NAME,:41;gradle.properties 的 modName = JourneyMap)
硬依赖 required-after:Forge@[BuildInfo.FORGE_VERSION,)(:37)
mcmod.info 声明依赖 Forge@[${forgeversion},),并同时写入 requiredMods(mcmod.info)
FML 事件处理器数 5
@SubscribeEvent 处理器数 12(客户端 11 + 服务端 1)
注册的方块 / 物品 / 实体 / 配方 0 / 0 / 0 / 0
注册的按键 6
注册的指令 1

版本信息

Journeymap 中与版本相关的常量:

常量 来源 说明
JM_VERSION new Version(5, 1, 4, "dev")(:43) 硬编码的兜底版本对象
@Mod(version = BuildInfo.JM_VERSION) :34 实际生效的是 BuildInfo.JM_VERSION
BuildInfo 由 generateGradleTokenClass = journeymap.common.BuildInfo 在构建期生成(gradle.properties) 注入 VERSION、MAJOR、MINOR、MICRO、PATCH(build.gradle.kts 的 minecraft { injectedTags.put(...) })
版本号回退值 project.properties 的 jm_major=5、jm_minor=2、jm_micro=23 仅当 project.version 缺分量时使用(build.gradle.kts 的 getOrNull(...) 链)

⚠️ JM_VERSION(:43)与 @Mod(version = ...)(:34)不是同一个值:前者硬编码为 5.1.4-dev,后者取构建期注入的 BuildInfo.JM_VERSION。因此 JM_VERSION 用于配置文件版本比对(PropertiesBase.isCurrent(),PropertiesBase.java:245-248)与配置目录名(Constants.CONFIG_DIR,Constants.java:47),在正式构建中与界面显示的版本可能不一致。

仓库网址常量

WEBSITE_URL(:45)、DOWNLOAD_URL(:46)、VERSION_URL(:47)分别指向 teamjm.github.io 文档站、CurseForge 1.7.10 文件页与 cfwidget API。VERSION_URL 供 checkUpdates 配置项使用。

交互

触发 行为
客户端连接服务端 checkModLists() 校验双方 mod 列表;不符则拒绝连接
客户端进入世界 ClientChatReceivedEvent → 控制码处理(见 聊天控制码)
服务端世界首次启动 生成 <世界名>.cfg 并记录 World ID 日志(Journeymap.java:123)
玩家未安装 UniMixins jar 已移除 TweakClass,mod 仍可加载,只是 mixin 不生效

相关条目