StalApi

StalApi

一个为Minecraft模组提供可复用功能和方法的库模组,减少重复实现常见功能的需求。

如果你没有安装需要将 StalApi 作为前置依赖的模组,则无需将其添加到你的模组列表或整合包中。

StalAPI 是一个库模组,旨在为我的其他模组提供集中化、可复用的系统、功能和工具。

其目标是避免在多个项目中重复代码,同时为各种渲染和动画系统提供通用基础。随着时间的推移,StalAPI 将包含自定义着色器、后处理特效、用于渲染模组实体的工具,以及用于处理物品和实体动画的实用程序。 StalAPI 还提供了一个披风管理系统,用于向特殊玩家(如贡献者、测试版玩家和活动获胜者)分发专属奖励披风。 该 API 的设计会随着新可复用系统和功能的开发而不断演进。

目前,模组开发者可以将 StalAPI 作为其模组的跨版本披风库使用,从而在 StalAPI 更新时,无需更新其模组即可管理和自定义披风。

如何将 StalApi 集成到你的模组中:

neoforge.mods.toml 中声明依赖

如果你的模组使用 StalAPI 的披风系统,建议使用 必需依赖 (type="required")。这可以确保披风与你的模组直接关联,并保证在加载你的模组时 StalAPI 始终可用。

[[dependencies.{yourmodid}]]
    modId = "stalapi"
    type = "required"
    versionRange = "[1.0.0,)"
    ordering = "AFTER"
    side = "CLIENT"

{yourmodid} 替换为你自己的模组 ID。 如果 StalAPI 对你的模组并非必需,也可以使用可选依赖 (type="optional"),但当你的模组披风系统依赖于 StalAPI 时,推荐使用 required

如何为你的模组添加自己的披风:

将你的 GitHub 仓库添加到已验证列表

只需调用一次公共的 CapeRepository.register(...) API,通常在你的模组构造函数或通用设置阶段调用:

import leroidesafk.stalapi.capes.CapeRepository;
import net.neoforged.fml.ModList;

// 仅在启动时调用一次(模组构造函数、通用设置等)
if (ModList.get().isLoaded("stalapi")) {
   CapeRepository.register("YourGitHubUsername", "your-cape-repository");
// 或者指定特定分支:
// CapeRepository.register("YourGitHubUsername", "your-cape-repository", "main");
}

ModList.get().isLoaded("stalapi") 检查仅在您使用可选依赖时才需要。 如果 StalAPI 声明为 required,则保证在加载你的模组时它可用。

添加并整理你的披风

注册仓库后,你可以使用以下文件夹结构将披风添加到你的 GitHub 仓库中:

your-repository/
├── data.json             ← 可选:全局/团队部分,始终会被检查
├── <capeName>.png        ← 属于全局部分的披风
├── <capeName>.png.mcmeta ← 可选:动画
├── <modId>/              ← 可选:每个兼容模组一个文件夹。
│ │                         此文件夹中的披风仅在
│ │                         安装了对应模组时可用。
│ ├── data.json
│ ├── <capeName>.png
│ └── <capeName>.png.mcmeta ← 可选:动画
└── <anotherModId>/
    ├── data.json
    └── ...

data.json 格式

无论文件位于仓库根目录还是模组特定文件夹中,都使用相同的 data.json 格式:

{
    "global_name": "Section Name",
    "players": {
        "<player-uuid>": ["capeName1", "capeName2"]
    },
    "capes": {
        "capeName1": {
            "name": "Displayed Name",
            "rarity": "legendary"
        },
        "capeName2": {
            "name": "Another Name",
            "rarity": "rare"
        }
    }
}
  • global_name - 仅在根目录的 data.json 中使用和读取。它定义了界面中显示的全局/团队部分的名称。对于特定模组的 data.json,此字段将被忽略;部分名称取自模组名称。
  • players - 将玩家的 UUID(带连字符)映射到其拥有的披风名称列表。
  • capes - 包含每个披风的元数据,包括其显示的 name 和可选的 rarity

支持的稀有度值为: commonuncommonrareepiclegendarymythic。 如果未指定稀有度,则使用默认颜色。

与原版披风不同,披风纹理支持透明度、可变分辨率和动画。

关键要点

  • StalAPI 的默认仓库 (Leroidesafk/stalapi-data) 除了你自己的仓库外,始终会被检查。
  • 如果多个模组(或错误地同一个模组)注册了完全相同的 owner/repository/branch 组合,则只会被检查一次,以防止重复。
  • <modId> 文件夹必须与对应模组的 ID 完全匹配。
  • 根目录中的 data.json 始终会被检查,可用于全局/团队披风。
  • 特定于模组的披风应放置在匹配该模组 ID 的文件夹中。
  • 动画披风可以选择性地包含一个 .png.mcmeta 文件。
  • 该模组使用你的 Mojang 披风以及任何其他添加披风的模组的披风作为默认披风,以避免披风冲突。
  • 你有两个可以同时激活的选项,用于将披风预览为鞘翅,或查看披风的 360 度版本。

Github 示例

示例:

示例图片1 示例图片2 示例图片3 示例图片4 示例图片5


你也可以看看我的其他模组

Create Sabers 图标 Gifty Present 图标 StalAPI 图标