zh_cn:tutorial:introduction
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| zh_cn:tutorial:introduction [2024/08/25 11:51] – [Fabric 编写的介绍] solidblock | zh_cn:tutorial:introduction [2025/11/11 21:53] (current) – sinoaakira | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Fabric | + | ====== Fabric |
| - | 这是对制作 Fabric | + | 本文简要介绍一些制作 Fabric |
| - | 要为 Minecraft | + | 要制作 |
| - | 尽管 | + | 虽然 |
| - | 与其他改装 API 不同,Fabric Loader 不会覆盖 Minecraft 的类文件以添加更多功能, | + | 与其他 |
| - | 而是使用[[https:// | + | 相反,它使用 Mixin 库注入代码。 |
| - | 但是,大多数时候您不会直接使用此库。 | + | 不过,大多数情况下您并不会直接使用这个库。 |
| - | Mixins | + | Mixin 可能实现的很糟,不同的 Mixin 有时还会导致冲突。 |
| 因此,Fabric API 已经为您实现了一些常用功能。 | 因此,Fabric API 已经为您实现了一些常用功能。 | ||
| - | 如果核心 | + | 如果 Fabric API 中没有您需要的功能,通常可以在第三方库中找到。 |
| - | 在几乎每种情况下,与自己实现 mixin 相比,最好使用 Fabric API 或第三方库。 | + | 几乎在所有情况下,使用 Fabric API 或第三方库都比自己实现 Mixin 更可取。 |
| - | 但是有时候,您不需要任何这些。 | + | 不过有时候,您根本不需要这些。 |
| - | 尽管 | + | 虽然 |
| - | 本文将按优先顺序介绍影响 Minecraft 的所有方法。 | + | 本文将按优先顺序介绍所有可以影响 Minecraft 的方法。 |
| + | |||
| + | |||
| + | ===== 原生 Minecraft API ===== | ||
| + | |||
| + | 如果 Minecraft 已经允许你做某件事,就不要重复造轮子。 | ||
| + | 一个很好的例子是 "< | ||
| + | |||
| + | Minecraft 也使用 JSON 数据文件来实现各种数据驱动功能。 | ||
| + | 您可以将 JSON 文件添加到您的模组中,这些文件随后会通过 Fabric API 注入。 | ||
| + | 例如,方块模型和战利品表都是通过 JSON 文件实现的。 | ||
| - | ===== Minecraft 自带 API ===== | ||
| - | 如果 Minecraft 已经允许您执行某些操作,请不要重新造轮子。一个很好的例子是“net.minecraft.util.registry.Registry”类,它使您无需修改 Minecraft 的代码即可添加方块、物品等。 | ||
| - | Minecraft 还将 JSON 数据文件用于各种数据驱动功能。您可以将 JSON 文件添加到您的模组中,Fabric API 会注入这些文件。例如,方块模型和战利品表是通过 JSON 文件实现的。 | ||
| ===== Fabric API ===== | ===== Fabric API ===== | ||
| - | 安装在客户端中的 Fabric 本身分为两个部分。 | ||
| - | * Fabric | + | 安装到客户端后的 |
| - | * Fabric API:这是一个可选的库,提供一些常用的接口。 | + | |
| - | 故意将 API 保持相对较小,以使 | + | - Fabric Loader,用于加载您的 Mod 并调用 Mod 入口点。 |
| + | - Fabric | ||
| + | |||
| + | 为了更快地将 Fabric | ||
| + | |||
| + | 您可以通过查看 GitHub 上的 [[https:// | ||
| + | Fabric API 包含许多常用的事件钩子和通用工具,例如用于网络通信和渲染的工具。 | ||
| - | 您可以通过查看[[https:// | ||
| - | Fabric API 包含许多常见的事件挂钩,以及用于联网和渲染之类的通用实用程序。 | ||
| ===== 第三方 API ===== | ===== 第三方 API ===== | ||
| - | 由于 Fabric API 为方便维护,体量较小且覆盖范围较小,因此存在第三方 API 来填补空白。 | + | 由于 Fabric API 的设计初衷是保持精简和专注,因此需要第三方 API 来弥补其功能上的不足。 |
| - | Mixin 允许任何第三方库以与核心 | + | Mixin 允许任何第三方库以与 Fabric API 相同的方式影响 |
| - | 您应尽可能使用这些而不是编写自己的 | + | 为了最大程度地减少冲突的可能性,您应该尽可能使用 |
| - | 您可以在此 wiki 上找到[[zh_cn: | + | 您可以在 |
| ===== Mixin ===== | ===== Mixin ===== | ||
| - | 最后,您可以使用 | + | 最后,你可以使用 |
| - | Mixin 功能强大,可让您更改 Minecraft | + | Mixin 是一项强大的功能,允许你修改 Minecraft 的任何代码。 |
| - | 某些 | + | 某些 |
| - | Mixin 有多种,按优先顺序排列: | + | Mixin 有多种类型,大致按优先级排序如下: |
| * 添加接口 | * 添加接口 | ||
| * 回调注入 | * 回调注入 | ||
| * 重定向注入 | * 重定向注入 | ||
| - | * 覆写 | + | * 覆盖 |
| - | + | ||
| - | 此列表不一定完整,只是快速概述。 | + | |
| + | 这并非完整列表,而是一个简要概述。 | ||
| + | 此处省略了一些 Mixin 类型。 | ||
| ==== 添加接口 ==== | ==== 添加接口 ==== | ||
| - | 这可能是使用 mixin 的最安全方法之一。 | + | 这可能是最安全的 Mixin。 |
| - | 新的接口实现可以添加到任何 Minecraft 类中。 | + | 您可以向任何 Minecraft 类添加新的接口实现。 |
| - | 然后,可以通过将类强制转换为接口来访问该接口。 | + | 然后,您可以通过将类强制转换为该接口来访问它。 |
| - | 这不会改变类的任何内容,只会增加新的内容,因此极不可能发生冲突。 | + | 这不会改变类的任何属性,只会添加新的功能,因此几乎不可能发生冲突。 |
| + | |||
| + | 需要注意的是,您注入的函数签名 (函数名 + 参数类型) 必须是唯一的。因此,如果您使用常见的参数类型,请务必给它起一个非常独特的名字。 | ||
| - | 需要注意的是,您插入的函数签名(名称+类型)必须是唯一的。 因此,如果您使用常见的参数类型,请确保指定独特的名称。 | ||
| ==== 回调注入 ==== | ==== 回调注入 ==== | ||
| - | 回调注入器 @Inject 使您可以向现有方法以及该方法中的特定方法调用添加回调挂钩。 | + | |
| - | 它们还使您可以拦截和更改方法的返回值,并尽早返回。 | + | Mixin 允许您为现有方法以及该方法内部的特定方法调用添加回调钩子。 |
| - | 回调注入可以堆叠,因此不太可能引起模组之间的冲突。 | + | 它还允许您拦截并更改方法的返回值,并提前返回。 |
| + | 回调注入可以叠加,因此不太可能导致 Mod 之间的冲突。 | ||
| ==== 重定向注入 ==== | ==== 重定向注入 ==== | ||
| - | 通过 @Redirect,您可以使用自己的代码在目标方法内包装方法调用或变量访问。 | + | Mixin 允许你用自定义代码重定向目标方法中的方法调用或变量访问。 |
| - | 使用这些功能时需要谨慎,目标调用或访问只能在所有模组之间重定向一次。 | + | 请谨慎使用重定向,所有模块中,同一个目标调用或变量访问只能重定向一次。 |
| - | 如果两个模组重定向相同的值,将导致冲突。 | + | 如果两个模块重定向了相同的值,就会导致冲突。 |
| - | 优先考虑回调注入。 | + | 请优先考虑回调注入。 |
| + | |||
| + | |||
| + | ==== 重写方法 ==== | ||
| + | |||
| + | |||
| + | 重写方法时务必格外小心。 | ||
| + | 使用 Mixin 重写方法本质上是完全替换方法,移除所有现有代码,并可能与该方法上的其他 Mixin 冲突。 | ||
| + | 重写方法极有可能不仅与其他模组冲突,还会与 Minecraft 本身冲突。 | ||
| + | 您很可能不需要重写方法来实现您想要的功能。 | ||
| - | ==== 覆写 ==== | ||
| - | 避免使用覆写,因为替换了一个方法,删除了所有现有代码,并与该方法上的任何其他类型的 mixin 发生冲突。 | ||
| - | 覆写极有可能不仅与其他模组冲突,而且与 Minecraft 本身的更改冲突。 | ||
| - | 您极有可能不需要覆盖来完成您想做的事情,请使用其他方法。 | ||
zh_cn/tutorial/introduction.1724586718.txt.gz · Last modified: 2024/08/25 11:51 by solidblock