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
Last revisionBoth sides next revision
zh_cn:tutorial:introduction [2019/12/19 02:29] lightcolourzh_cn:tutorial:introduction [2022/10/22 11:30] – [覆写] solidblock
Line 1: Line 1:
 ====== Fabric 编写入门 ====== ====== Fabric 编写入门 ======
  
-这是对制作Fabric模组时可以使用的一些常用技术的快速介绍。 +这是对制作 Fabric 模组时可以使用的一些常用技术的快速介绍。 
-要为Minecraft制作mod,通常必须以非标准的方式与Minecraft的代码进行交互。 +要为 Minecraft 制作模组,通常必须以非标准的方式与 Minecraft 的代码进行交互。 
-尽管Minecraft变得越来越灵活,可以适应变化,但它并不是天生就可以进行修改的。+尽管 Minecraft 变得越来越灵活,可以适应变化,但它并不是天生就可以进行修改的。
  
 与其他改装API不同,Fabric Loader不会覆盖Minecraft的类文件以添加更多功能。 与其他改装API不同,Fabric Loader不会覆盖Minecraft的类文件以添加更多功能。
-而是使用[[https://github.com/SpongePowered/Mixin/wiki|The Mixin库]]注入代码。+而是使用[[https://github.com/SpongePowered/Mixin/wiki|Mixin库]]注入代码。
 但是,大多数时候您不会直接使用此库。 但是,大多数时候您不会直接使用此库。
  
Line 19: Line 19:
 本文将按优先顺序介绍影响Minecraft的所有方法。 本文将按优先顺序介绍影响Minecraft的所有方法。
  
 +===== Minecraft 自带 API =====
 +如果 Minecraft 已经允许您执行某些操作,请不要重新造轮子。一个很好的例子是“net.minecraft.util.registry.Registry”类,它使您无需修改 Minecraft 的代码即可添加方块、物品等。
  
-===== Native Minecraft APIs ===== +Minecraft 还将 JSON 数据文件用于各种数据驱动功能。您可以将 JSON 文件添加到您的模组中,Fabric API 注入这些文件。例如,块模型和战利品表是通过 JSON 文件实现的。 
-如果Minecraft已经允许您执行某些操作,请不要重新发明轮子。 +===== Fabric API =====
-一个很好的例子是“ Registry”类,它使您无需修改Minecraft的代码即可添加块和项目。 +
- +
-Minecraft还将JSON数据文件用于各种数据驱动功能。 +
-您可以将JSON文件添加到您的mod中,然后由Fabric API注入这些文件。 +
-例如,块模型和战利品表是通过JSON文件实现的。 +
-===== The Fabric API =====+
 安装在客户端中的Fabric本身分为两个部分。 安装在客户端中的Fabric本身分为两个部分。
  
-   -Fabric Loader用于加载您的mod并调用您的入口点。 +  * Fabric Loader用于加载您的mod并调用您的入口点。 
-   -Fabric API这是一个可选的库,提供一些常用的API+  Fabric API这是一个可选的库,提供一些常用的接口
  
 故意将API保持相对较小,以使Fabric可以更快地移植到新的Minecraft版本。 故意将API保持相对较小,以使Fabric可以更快地移植到新的Minecraft版本。
Line 38: Line 34:
 Fabric API包含许多常见的事件挂钩,以及用于联网和渲染之类的通用实用程序。 Fabric API包含许多常见的事件挂钩,以及用于联网和渲染之类的通用实用程序。
  
 +===== 第三方API =====
  
-===== Third Party APIs ===== +由于Fabric API为方便维护,体量较小且覆盖范围较小,因此存在第三方API来填补空白。 
- +Mixins允许任何第三方库以与核心Fabric API相同的方式修改Minecraft的代码。
-由于Fabric API故意保持较小且集中,因此存在第三方API来填补空白。 +
-Mixins允许任何第三方库以与核心Fabric API相同的方式影响Minecraft的代码。+
 您应尽可能使用这些而不是编写自己的mixin,以最大程度地减少发生冲突的可能性。 您应尽可能使用这些而不是编写自己的mixin,以最大程度地减少发生冲突的可能性。
  
-您可以在此Wiki上找到[[documentation:libraries |第三方库]]的不完整列表。 +您可以在此Wiki上找到[[zh_cn:tutorial:libraries|第三方库]]的不完整列表。 
-===== Mixins =====+===== Mixin =====
  
-最后,您可以使用mixins。 +最后,您可以使用 mixin。 
-Mixins是一项强大的功能,可让您更改Minecraft自己的任何代码。 +Mixin 功能强大,可让您更改 Minecraft 自己的代码。 
-某些mixin可能会引起冲突,但是负责任地使用这些是为mod添加行为的关键。+某些 mixin 可能会冲突,但是若能负责任地使用这些是为模组添加特的关键。
  
-Mixins有多种口味,按优先顺序排列:+Mixin 有多种,按优先顺序排列:
  
-  * 添加 Interfaces +  * 添加接口 
-  * 回调 Injectors +  * 回调注入 
-  * 重定向 Injectors +  * 重定向注入 
-  * Overwrites, you should never use these +  * 覆写 
-完整列表是快速概述。 + 
-这里省略了一些混合类型。 +此列表一定完整,是快速概述。 
-==== 添加 Interfaces ====+ 
 +==== 添加接口 ====
  
 这可能是使用mixin的最安全方法之一。 这可能是使用mixin的最安全方法之一。
Line 67: Line 63:
 这不会改变类的任何内容,只会增加新的内容,因此极不可能发生冲突。 这不会改变类的任何内容,只会增加新的内容,因此极不可能发生冲突。
  
-需要注意的是,您插入的函数签名(名称+参数类型)必须是唯一的。 因此,如果您使用常见的参数类型,请确保为其指定一个非常独特的名称。+需要注意的是,您插入的函数签名(名称+类型)必须是唯一的。 因此,如果您使用常见的参数类型,请确保指定独特的名称。
  
-==== 回调 Injectors ==== +==== 回调注入 ==== 
-回调注入器使您可以向现有方法以及该方法中的特定方法调用添加回调挂钩。+回调注入器 @Inject 使您可以向现有方法以及该方法中的特定方法调用添加回调挂钩。
 它们还使您可以拦截和更改方法的返回值,并尽早返回。 它们还使您可以拦截和更改方法的返回值,并尽早返回。
-回调注入可能会堆叠,因此不太可能引起mod之间的冲突。 +回调注入可堆叠,因此不太可能引起模组之间的冲突。
- +
- +
-==== 重新定向 Injectors ====+
  
-通过重定向,您可以使用自己的代码在目标方法内包装方法调用或变量访问。 +==== 重定向注入 ====
-非常谨慎地使用这些功能,目标调用或访问只能在所有mod之间重定向一次。 +
-如果两个mod重定向相同的值,将导致冲突。 +
-首先考虑回调注入+
  
 +通过 @Redirect,您可以使用自己的代码在目标方法内包装方法调用或变量访问。
 +使用这些功能时需要谨慎,目标调用或访问只能在所有模组之间重定向一次。
 +如果两个模组重定向相同的值,将导致冲突。
 +优先考虑回调注入。
  
-==== Overwrite ==== +==== 覆写 ==== 
-避免完全盖。 +避免使用写,因为替换了一个方法,删除了所有现有代码,并与该方法上的任何其他类型的mixin发生冲突。 
-它们完全替换了一个方法,删除了所有现有代码,并与该方法上的任何其他类型的mixin发生冲突。 +覆写极有可能不仅与其他模组冲突,而且与Minecraft本身的更改冲突。
-它们极有可能不仅与其他mod冲突,而且与Minecraft本身的更改冲突。+
 您极有可能不需要覆盖来完成您想做的事情,请使用其他方法。 您极有可能不需要覆盖来完成您想做的事情,请使用其他方法。
zh_cn/tutorial/introduction.txt · Last modified: 2023/01/15 01:39 by solidblock