-
Notifications
You must be signed in to change notification settings - Fork 5
Addon Quickstart
HoshinoYumeka edited this page Sep 7, 2026
·
1 revision
四步:加依赖、实现 IPhoneApp、登记 SPI、放语言文件与贴图。
MCphone 是 NeoForge 模组,使用 ModDevGradle(不是 ForgeGradle,没有 fg.deobf 这类写法)。
目前没有公开 maven,最省事的办法是把 jar 放进项目的 libs/:
dependencies {
compileOnly files("libs/mcphone-1.10.0.jar")
// 想在开发环境里真跑起来,再加一行
localRuntime files("libs/mcphone-1.10.0.jar")
}在 neoforge.mods.toml 中声明依赖,使加载顺序正确:
[[dependencies.yourmod]]
modId = "mcphone"
type = "required" # 可选依赖写 "optional"
versionRange = "[1.2.13,)" # 用到 IPhonePage 即为这一版起;只做图标可写 [1.0.46,)
ordering = "AFTER" # 必须 AFTER:要用的注册表得先就位
side = "BOTH"| 项 | 当前值 |
|---|---|
| Minecraft | 1.21.1 |
| NeoForge | 21.1.200+ |
| MCphone | 1.10.0 |
public final class CalculatorApp implements IPhoneApp {
@Override
public ResourceLocation getId() {
return ResourceLocation.fromNamespaceAndPath("mymod", "calculator");
}
@Override
public Component getDisplayName() {
return Component.translatable("mymod.app.calculator");
}
@Override
public ResourceLocation getIconTexture() {
return ResourceLocation.fromNamespaceAndPath("mymod", "textures/app/calculator.png");
}
@Override
public void onPress() {
Minecraft.getInstance().setScreen(new CalculatorScreen());
}
}这四个方法是必须实现的,其余全为 default,见方法一览。
界面要画在手机屏幕内部而不是跳出去时,改为覆盖 openPage()。
⚠ 不要继承内建的
PhoneApp基类:它把命名空间写死为mcphone,且位于core包,不属于 API。直接实现接口。
⚠ 实现类只能在客户端加载,见两端安全。
文件:src/main/resources/META-INF/services/com.november.mcphone.api.client.app.IPhoneApp
内容:com.yourmod.client.CalculatorApp
文件名就是接口全名,内容是实现类全名,一行一个。
语言:assets/mymod/lang/zh_cn.json → { "mymod.app.calculator": "计算器" }
英文另开 en_us.json,两边的键要对齐
贴图:assets/mymod/textures/app/calculator.png
20×20、PNG-32。路径要与 getIconTexture() 返回的一致
贴图缺失也能运行:原版会绘制紫黑格,不会崩溃,但玩家看得见。
-
IPhoneApp—— 一个 App 的全部方法 -
IPhonePage/PhoneCanvas/PhoneStyle—— 把界面画进手机屏幕 - ⚠ 非踩不可的坑 —— 写完对一遍