User Tools

Site Tools


zh_cn:tutorial:introduction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
zh_cn:tutorial:introduction [2022/03/20 15:58] – ↷ Links adapted because of a move operation 171.44.120.4zh_cn:tutorial:introduction [2025/11/11 21:53] (current) sinoaakira
Line 1: Line 1:
-====== Fabric 编写入门 ======+====== Fabric Mod 开发入门 ======
  
-这是对制作Fabric模组可以使用的一些常用术的快速介绍。 +本文简要介绍一些制作 Fabric Mod 用的技。 
-为Minecraft制作mod,通常必须以非标准的方式与Minecraft的代码进行交互。 +要制作 Minecraft Mod通常需要以非标准的方式与 Minecraft 的代码进行交互。 
-尽管Minecraft变得越来越灵活,可以适应变化,但它并不是天生就可以进行修改的+虽然 Minecraft 对修改的兼容性越来越,但它本身非为 Mod 设计
  
-与其他改装API不同,Fabric Loader不会覆盖Minecraft的类文件添加更多功能。 +与其他 Mod Loader 不同,Fabric Loader 不会覆盖 Minecraft 的类文件添加更多功能。 
-而是使用[[https://github.com/SpongePowered/Mixin/wiki|Mixin库]]注入代码。 +相反,它使用 Mixin 库注入代码。 
-但是,大多数时候您不会直接使用库。+不过,大多数情况下不会直接使用这个库。
  
-Mixins可能很脆弱,有时会引起冲突。 +Mixin 可能实现的不同的 Mixin 有时导致冲突。 
-因此,Fabric API已经为您实现了一些常用功能。 +因此,Fabric API 已经为您实现了一些常用功能。 
-如果核心Fabric API中不存在它那么通常它将存第三方库中。 +如果 Fabric API 中没有您需要的功能,通常可以在第三方库中找到。 
-几乎每种情况下,与自己实现mixin相比,最好使用Fabric API或第三方库。+几乎在所有情况下,使用 Fabric API 或第三方库都比自己实现 Mixin 更可取
  
-但是有时候,您不需要任何这些。 +不过有时候,您根本不需要这些。 
-尽管Minecraft并非改装而设计,但它仍然包含许多功能,您无需进行任何其他更改即可访问它们+虽然 Minecraft 并非为 Mod 设计,但它仍然包含许多无需任何额外修改即可使用的功能
  
-本文将按优先顺序介绍影响Minecraft的所有方法。+本文将按优先顺序介绍所有可以影响 Minecraft 的方法。 
 + 
 + 
 +===== 原生 Minecraft API ===== 
 + 
 +如果 Minecraft 已经允许你做某件事,就不要重复造轮子。 
 +一个很好的例子是 "<yarn class_2378>" 类,它允许你在不修改 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 Loader:用于加载您mod并调用您的入口点。 +安装到客户端后的 Fabric 本体分为两部分
-  * Fabric API这是一个可选的库,提供一些常用的接口。+
  
-故意将API保持相对较小以使Fabric可以更快地移植到新Minecraft版本+  - Fabric Loader用于加载您的 Mod 并调用 Mod 入口点。 
 +  - Fabric API,一个选库,提供一些常用实用 API
  
-您可以通过查看[[https://github.com/FabricMC/fabric |其GitHub上的源代码]]来Fabric API中包含内容。 +更快地将 Fabric 移植到较新的 Minecraft 版本,Fabric API 的设计有意保持相对精简
-Fabric API包含许多常见的事件挂钩,以及用于联网和渲染之类通用实用程序+
  
 +您可以通过查看 GitHub 上的 [[https://github.com/FabricMC/fabric|Fabric 源代码]] 来了解 Fabric API 包含哪些内容。
 +Fabric API 包含许多常用的事件钩子和通用工具,例如用于网络通信和渲染的工具。
  
-===== 第三方API ===== 
  
-由于Fabric API为方便维护,体量较小且覆盖范围较小,因此存在第三方API来填补空白。 +===== 第三方 API =====
-Mixins允许任何第三方库以与核心Fabric API相同的方式修改Minecraft的代码。 +
-您应尽可能使用这些而不是编写自己的mixin,以最大程度地减少发生冲突的可能性。+
  
-您可以在Wiki找到[[zh_cn:tutorial:libraries|第三方库]]不完整列表。 +由于 Fabric API 的设计初衷是保持精简和专注,因需要第三方 API 来弥补其功能的不足。 
-===== Mixins =====+Mixin 允许任何第三方库以与 Fabric API 相同方式影响 Minecraft 的代码。 
 +为了最大程度地减少冲突的可能性,您应该尽可能使用 Fabric API 和第三方 API,而不是编写自己的 Mixin。
  
-最后,您可以使用mixins。 +您可以在 Fabric Wiki 上找到一个 [[zh_cn:community:library_mods|第三方库]] 不完整列表。 
-Mixins功能强大,可让您更改Minecraft自己代码(不能修改别的库!) +===== Mixin =====
-某些mixin可能会冲突,但是若能负责任地使用,这些是为mod添加特性的关键。+
  
-Mixins有多种按优先顺序排列:+最后你可以使用 Mixin 库。 
 +Mixin 是一项强大的功能,允许你修改 Minecraft 的任何代码。 
 +某些 Mixin 可能会导致冲突,但如果使用得当,它们是为你的 Mod 添加独特行为的关键。
  
-  * 添加接口并实现方法 +Mixin 有多种类型,大致按优先级排序如下:
-  * @Inject 回调注入 +
-  * @Redirect 重定向注入 +
-  * @Overwrite 覆写+
  
-此列表不一定完整,只是快速概述。 +  * 添加接口 
-==== 添加接口并实现方法 ====+  * 回调注入 
 +  * 重定向注入 
 +  * 覆盖
  
-这可能是使用mixin的最安全方法之一。 +这并非完整列表,而是一个简要概述。 
-新的接口实现可以添加到任何Minecraft类。 +此处省略了一些 Mixin 类型。 
-然后,可以通过将类强制转换为接口来访问该接口。 +==== 添加接口 ==== 
-这不会改变类的任何内容,只会加新的内容,因此不可能发生冲突。+ 
 +这可能是最安全的 Mixin。 
 +可以任何 Minecraft 类添加新的接口实现。 
 +然后,可以通过将类强制转换为接口来访问。 
 +这不会改变类的任何属性,只会加新的功能,因此几乎不可能发生冲突。 
 + 
 +需要注意的是,您注入的函数签名 (函数名 + 参数类型) 必须是唯一的。因此,如果您使用常见的参数类型,请务必给它起一个非常独特的名字
  
-需要注意的是,您插入的函数名称+描述符(参数类型+返回类型)必须是唯一的。 因此,如果您使用常见的参数类型,请确保为其指定一个非常独特的名称。 
  
 ==== 回调注入 ==== ==== 回调注入 ====
-回调注入器 @Inject 使可以向现有方法以及该方法的特定方法调用添加回调钩。 + 
-使可以拦截更改方法的返回值,并尽早返回。 +Mixin 允许现有方法以及该方法内部的特定方法调用添加回调钩。 
-回调注入可能会堆叠,因此不太可能引起mod之间的冲突。+它还允许您拦截更改方法的返回值,并提前返回。 
 +回调注入可,因此不太可能导致 Mod 之间的冲突。 
  
 ==== 重定向注入 ==== ==== 重定向注入 ====
  
-通过 @Redirect,您可以使用自己的代码目标方法内包装方法调用或变量访问。 +Mixin 允许你用自定义代码重定向目标方法中的方法调用或变量访问。 
-非常谨慎使用这些功能,目标调用或访问只能在所有mod之间重定向一次。 +谨慎使用重定向所有模块中,同一个目标调用或变量访问只能重定向一次。 
-如果两个mod重定向相同的值,导致冲突。 +如果两个模块重定向相同的值,就会导致冲突。 
-优先考虑回调注入。+优先考虑回调注入。 
 + 
 + 
 +==== 重写方法 ==== 
 + 
 + 
 +重写方法时务必格外小心。 
 +使用 Mixin 重写方法本质上是完全替换方法,移除所有现有代码,并可能与该方法上的其他 Mixin 冲突。 
 +重写方法极有可能不仅与其他模组冲突,还会与 Minecraft 本身冲突。 
 +您很可能不需要重写方法来实现您想要的功能
  
-==== 覆写 ==== 
-避免使用 @Overwrite。 
-它们完全替换了一个方法,删除了所有现有代码,并与该方法上的任何其他类型的mixin发生冲突。 
-它们极有可能不仅与其他mod冲突,而且与Minecraft本身的更改冲突。 
-您极有可能不需要覆盖来完成您想做的事情,请使用其他方法。 
zh_cn/tutorial/introduction.1647791913.txt.gz · Last modified: 2022/03/20 15:58 by 171.44.120.4