mc-fabric-api · diff
v1.20.1 to v1.14.4
50 added, 75 removed. Audit A to A.
---
name: mc-fabric-api
- description: Fabric API 模块系统。fabric-command-api、fabric-item-api、fabric-screen-api等20+模块。触发词:Fabric API、fabric-api、modImplementation、fabric-networking
+ description: Fabric API 模块系统。fabric-command-api-v1、内容注册表、networking。触发词:Fabric API、fabric-api、modImplementation、fabric-networking
platform: fabric
- version: "1.20.1"
+ version: "1.14.4"
dependencies: []
mappings: yarn
---
- # Fabric API 模块(Fabric 1.20.1)
+ # Fabric API 模块(Fabric 1.14.4)
## 概述
- Fabric API 是模块化的官方扩展库,提供 20+ 独立模块。每个模块按需引入。
+ Fabric API 是模块化的官方扩展库。日常开发引入 **完整 `fabric-api`** 即可;模块名只作对照,**不要钉死**过期的单模块版本号。
## 添加依赖
```groovy
- // 引入完整 API(包含所有模块)
dependencies {
- modImplementation "net.fabric.sdk:fabric-api:0.91.0+1.20.1"
- }
-
- // 或选择性引入单个模块
- dependencies {
- modImplementation "net.fabric.sdk:fabric-api-base:0.4.29+1.20.1"
- modImplementation "net.fabric.sdk:fabric-command-api-v2:2.2.11+1.20.1"
- modImplementation "net.fabric.sdk:fabric-networking-api-v1:1.3.8+1.20.1"
- modImplementation "net.fabric.sdk:fabric-screen-api-v1:2.2.7+1.20.1"
+ modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
}
```
+ `fabric_api_version` 写在 `gradle.properties`,与当前 Minecraft 匹配。不要用 `net.fabric.sdk:`。需要传递给其它 mod 时再用 `modApi`。
+
## 常用模块
- ### fabric-command-api-v2(命令系统)
+ ### fabric-command-api-v1(命令系统)
```java
- // 注册命令
- CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> {
+ CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> {
dispatcher.register(
- LiteralArgumentBuilder.literal("mycommand")
- .then(ArgumentCommandBuilder.argument("player", EntityArgumentType.player())
- .executes(context -> {
- PlayerEntity player = EntityArgumentType.getPlayer(context, "player");
- player.sendMessage(Text.literal("Hello, " + player.getName().getString()));
+ CommandManager.literal("mycommand")
+ .then(CommandManager.argument("player", EntityArgumentType.player())
+ .executes(ctx -> {
+ ServerPlayerEntity player = EntityArgumentType.getPlayer(ctx, "player");
+ player.sendMessage(new LiteralText("Hello"));
return 1;
- })
- )
+ }))
);
});
```
- ### fabric-item-api-v1(物品 API)
+ 不要 `ArgumentCommandBuilder`;用 brigadier 的 `CommandManager.argument`。本版回调是 `(dispatcher, dedicated)`,不是 v2 三参。
+ ### 内容注册表(燃料 / 堆肥)
+
```java
- // 检查物品是否可堆叠到某物品栏
- if (FabricItemApi.INSTANCE.canStack(ItemStack.EMPTY, inventory)) {
- // ...
- }
+ FuelRegistry.INSTANCE.add(MY_ITEM, 200);
+ CompostingChanceRegistry.INSTANCE.add(MY_ITEM, 0.3f);
```
- ### fabric-screen-api-v1(Screen API)
+ 不要 `FabricItemApi.INSTANCE.canStack`(编造)。自定义物品行为用 `FabricItem` 接口(若本版模块有),不要假单例。
- ```groovy
- modImplementation "net.fabric.sdk:fabric-screen-api-v1:9.1.1+1.20.1"
- ```
+ ### fabric-screen-api / GUI
- ### fabric-networking-api-v1(网络 API)
+ Screen 注册与额外数据见 `10-gui.mdc` / `mc-gui`。不要在这里抄邻版 `ScreenRegistry` 或 `HandledScreens` 而不对版本。
- ```groovy
- modImplementation "net.fabric.sdk:fabric-networking-api-v1:1.3.8+1.20.1"
- ```
+ ### fabric-networking-api-v1
- ### fabric-object-builder-api-v1(对象构建器)
+ 包注册与收发见 `06-networking.mdc` / `mc-networking`。不要把 1.21 的 `PayloadTypeRegistry` 抄到 1.20.4 及更早,也不要把 26.1 Mojmap 抄到 Yarn 档。
- ```java
- // 使用 ObjectBuilder 创建复杂对象
- public class MyBuilder {
- public static Builder builder() { return new Builder(); }
+ ### fabric-object-builder-api-v1
- public static class Builder {
- private int value;
- public Builder value(int v) { this.value = v; return this; }
- public MyObject build() { return new MyObject(value); }
- }
- }
+ ```java
+ new Block(FabricBlockSettings.of(Material.STONE).hardness(1.5f).resistance(6.0f));
```
- ### fabric-loot-api-v2(Loot Table API)
+ ### 战利品 API
- ```groovy
- modImplementation "net.fabric.sdk:fabric-loot-api-v2:2.1.0+1.20.1"
- ```
+ fabric-loot-tables / loot-api **v1**(改现有表用 `LootTableLoadingCallback`,见 `05-events.mdc`)
- ### fabric-registry-sync-v0(Registry 同步)
+ ### fabric-registry-sync-v0
用于同步自定义 Registry。
- ### fabric-keybindings-api-v1(快捷键 API)
+ ### fabric-key-binding-api-v1
- ```groovy
- modImplementation "net.fabric.sdk:fabric-key-bindings-v0:1.0.0+1.20.1"
- ```
+ 快捷键见 `KeyBindingHelper`(以本版 loader-api 为准),不要钉死 `fabric-key-bindings-v0:1.0.0+1.20.1`。
- ## 模块版本参考(1.20.1)
+ ## 模块名备忘(1.14.4)
- | 模块 | 版本 | 用途 |
- |------|------|------|
- | fabric-api-base | 0.4.29+1.20.1 | 基础工具类 |
- | fabric-command-api-v2 | 2.2.11+1.20.1 | 命令注册 |
- | fabric-networking-api-v1 | 1.3.8+1.20.1 | 网络通信 |
- | fabric-screen-api-v1 | 2.2.7+1.20.1 | Screen 扩展 |
- | fabric-item-api-v1 | 1.5.3+1.20.1 | 物品 API |
- | fabric-object-builder-api-v1 | 1.0.1+1.20.1 | 对象构建器 |
- | fabric-loot-api-v2 | 2.1.0+1.20.1 | Loot Table |
- | fabric-datagen-api-v0 | 4.2.1+1.20.1 | 数据生成 |
- | fabric-rendering-v0 | 1.1.33+1.20.1 | 渲染基础 |
- | fabric-renderer-api-v1 | 2.2.0+1.20.1 | 渲染 API |
+ | 模块 | 用途 |
+ |------|------|
+ | fabric-api-base | 基础工具 |
+ | fabric-command-api-v1 | 命令注册 |
+ | fabric-networking-api-v1 | 网络通信 |
+ | fabric-object-builder-api-v1 | 方块/物品/实体设置 helper |
+ | fabric-datagen-api-v0 | 数据生成(1.17+;1.14/1.16 无) |
+ | fabric-renderer-api-v1 | 渲染 API |
+ 版本号随 `fabric-api` BOM,不要在规则里写死 `0.4.29+1.20.1` 这种邻版数字。
+
## 常见错误
- - ❌ 引入不存在的模块版本 — 检查 Fabric API 版本兼容性
- - ❌ `modImplementation` 用于需要传递的依赖 — API 应该用 `modApi`
- - ❌ 忘记在 `fabric.mod.json` 的 `depends` 中声明 `fabric-api` — 运行时找不到 API
+ - ❌ 引入不存在的模块版本 — 以 `gradle.properties` 的 fabric-api 为准
+ - ❌ group 写成 `net.fabric.sdk` — 正确是 `net.fabricmc.fabric-api`
+ - ❌ 忘记在 `fabric.mod.json` 的 `depends` 中声明 `fabric-api`
+ - ❌ `ArgumentCommandBuilder` / `FabricItemApi` — 编造 API
## 扩展点
| 配合 Skill | 协作说明 |
|-----------|---------|
| `mc-registry` | Fabric API 扩展注册能力 |
- | `mc-networking` | fabric-networking-api-v1 提供高级网络 |
- | `mc-gui` | fabric-screen-api-v1 扩展 Screen |
+ | `mc-networking` | fabric-networking-api-v1 |
+ | `mc-gui` | Screen / Menu |