TLA接口

TLA接口

Minecraft 配方查看器 API 的抽象层。

基础库

TLA Api

在 modrinth 上显示下载量的徽章 在 curseforge 上显示下载量的徽章 链接至 github 上问题的徽章 链接至 discord 支持的徽章

TLA api 是 Minecraft 配方查看器 api 的一个抽象层。 它允许模组开发者一次编写配方查看器集成,即可兼容多个配方查看器。 目前支持的配方查看器有:EMI 和 REI

使用方法

Gradle

TLA api 可在 jitpack 上获取。将以下内容添加到你的 build.gradle 中以使用它:

repositories {
    maven {
        url "https://jitpack.io"
    }
}

dependencies {
    modImplementation "com.github.mattidragon:TlaApi:${tla_api_version}"
    include "com.github.mattidragon:TlaApi:${tla_api_version}"
}

入口点

要使用此 api,你需要实现 TlaApiPlugin 接口,并将你的实现添加到 tla-api 入口点中。 请注意,整个 api 仅在客户端生效。如果你使用分离的源集(split source sets), 你需要在客户端源集中实现该 api。

public class MyTlaPlugin implements TlaApiPlugin {
    @Override
    public void register(PluginContext context) {
        // 在此处注册你的 api
    }
}
{
  "entrypoints": {
    "tla-api": [
      "my.package.MyTlaPlugin"
    ]
  }
}

注册内容

设置好入口点后,你就可以开始注册内容了。 整个 api 都使用 javadocs 进行了文档化,因此你可以使用 IDE 来浏览该 api。 该 api 的设计主要基于 EMI,但我不得不做一些改动以适配 REI。

注意事项

虽然 TLA api 抽象了所有内容,但你仍需要自行验证你的代码能否与两个配方查看器配合工作。 例如,你仍然需要为 EMI 翻译所有的标签。某些组件(widgets)的渲染效果也可能略有不同。

使用该 api 时,值得留意以下注解。 它们有助于说明该 api 应如何使用。

  • @ApiStatus.Internal:这表示该部分代码不供模组开发者使用。
  • @ImplementationOnly:这表示该部分代码仅供 api 针对配方查看器的实现使用。 除非你在创建自己的配方查看器集成,否则不应使用 api 的这些部分。
  • @PluginOnly:这表示该部分代码仅供插件使用,而不供 api 针对配方查看器的实现使用。
  • @ImplementationsExtend:这表示该接口由 api 的实现类实现,插件通常不应实现它。
  • @PluginsExtend:这表示该接口由插件实现,api 的实现类通常不应实现它。

常见问题

问:这能让仅支持一种查看器的模组同时兼容两者吗?

答:不能。此 api 只是让模组开发者更容易同时支持两种查看器。

问:为什么此 api 仅在客户端生效?

答:EMI 的整个 api 仅在客户端生效。REI 有一个服务端 api,但它不包含 TLA 所使用的任何功能。

问:有示例吗?

答:有,你可以在这里找到测试模组。 它做了一些你通常不会做的事情,但总体而言很好地展示了该 api。