Skip to content

Addon Quickstart

HoshinoYumeka edited this page Sep 7, 2026 · 1 revision

三分钟:做一个能点开的 App

首页附属接口文档 | 下一页:IPhoneApp

四步:加依赖、实现 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

第二步:实现 IPhoneApp

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。直接实现接口。

⚠ 实现类只能在客户端加载,见两端安全

第三步:SPI 注册

文件: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() 返回的一致

贴图缺失也能运行:原版会绘制紫黑格,不会崩溃,但玩家看得见。


接下来读什么

  1. IPhoneApp —— 一个 App 的全部方法
  2. IPhonePage / PhoneCanvas / PhoneStyle —— 把界面画进手机屏幕
  3. ⚠ 非踩不可的坑 —— 写完对一遍

首页附属接口文档 | 下一页:IPhoneApp

Clone this wiki locally