User Tools

Site Tools


zh_cn:tutorial:setup

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:setup [2021/08/25 09:04] – [手动步骤] solidblockzh_cn:tutorial:setup [2024/10/29 14:34] (current) – [前置] solidblock
Line 1: Line 1:
 +~~REDIRECT>https://docs.fabricmc.net/zh_cn/develop/getting-started/setting-up-a-development-environment~~
 +
 ====== 配置模组开发环境 ====== ====== 配置模组开发环境 ======
  
 ===== 前置 ===== ===== 前置 =====
- +   Java 21(推荐用于 1.20.5)的 JDK(即用于开发 Java 的工具,安装器可参考 [[https://adoptium.net/releases.html]])。 
-   * JDK(即用于开发 Java 的工具,推荐使用由 AdoptOpenJDK 提供的 Java 8 及以上版本的 JDK [[https://adoptopenjdk.net/]])+       * 专业用户可以从 [[http://jdk.java.net/]] 获取JDK,注意需要手动解压并设置系统变量。
    * 任意 IDE(集成开发环境):如 [[https://www.jetbrains.com/idea/download/#section=windows|IntelliJ IDEA]] 和 [[https://www.eclipse.org/downloads/|Eclipse]],也可使用任何可编辑代码的文本编辑器,如 [[https://code.visualstudio.com/|Visual Studio Code]]。    * 任意 IDE(集成开发环境):如 [[https://www.jetbrains.com/idea/download/#section=windows|IntelliJ IDEA]] 和 [[https://www.eclipse.org/downloads/|Eclipse]],也可使用任何可编辑代码的文本编辑器,如 [[https://code.visualstudio.com/|Visual Studio Code]]。
 +       * 如果对这些不熟悉,推荐使用 Intellij IDEA,绝大多数开发者都用这个编写模组。
  
 ===== 配置步骤 ===== ===== 配置步骤 =====
Line 10: Line 13:
  
 部分地区的用户可能会发现,由于网速原因,构建 Gradle 速度可能比较慢。对于中国内地用户,可参考[[https://fabricmc.cn/2021/06/28/%E5%A6%82%E4%BD%95%E5%8A%A0%E9%80%9FFabric%E6%A8%A1%E7%BB%84%E7%9A%84%E6%9E%84%E5%BB%BA/|加快 Fabric 模组构建速度的教程]]和[[https://www.mcbbs.net/forum.php?mod=viewthread&tid=1239261|加速 Fabric 模组依赖拉取以及环境搭建教程]]。 部分地区的用户可能会发现,由于网速原因,构建 Gradle 速度可能比较慢。对于中国内地用户,可参考[[https://fabricmc.cn/2021/06/28/%E5%A6%82%E4%BD%95%E5%8A%A0%E9%80%9FFabric%E6%A8%A1%E7%BB%84%E7%9A%84%E6%9E%84%E5%BB%BA/|加快 Fabric 模组构建速度的教程]]和[[https://www.mcbbs.net/forum.php?mod=viewthread&tid=1239261|加速 Fabric 模组依赖拉取以及环境搭建教程]]。
 +如果你已经打开代理,但是下载速度仍然比较慢,可以检查一下 IDE 的网络代理设置是否处于关闭状态。对于 IntelliJ IDEA ,你可以在 File -> Settings -> Appearance & Behavior -> System Settings -> HTTP Proxy 找到该设置选项卡,如果勾选的是 "No proxy" ,要切换至 "Auto-detect proxy settings"
  
 ==== 手动步骤 ==== ==== 手动步骤 ====
-   - 复制 [[https://github.com/FabricMC/fabric-example-mod/|fabric-example-mod]] 中的初始文件(Kotlin 用户也可使用 [[https://github.com/natanfudge/fabric-example-mod-kotlin|Kotlin 版]],此外,若因网速原因而构建时间较长的,也可以使用 [[https://github.com/FabricMCCN/fabric-example-mod-cn|使用其他下载源构建的 fabric-example-mod]]),并删除 ''LICENSE''(许可证)及 ''README.md''(简介)文件,因为它们只应用于模板自身,而非你的模组。+   - 复制 [[https://github.com/FabricMC/fabric-example-mod/|fabric-example-mod]] 中的初始文件(Kotlin 用户或需要其他功能的也可使用 [[https://fabricmc.net/develop/template/|the template generator|模板生成器]]),并删除 ''LICENSE''(许可证)及 ''README.md''(简介)文件,因为它们只应用于模板自身,而非你的模组。
    - 编辑 ''gradle.properties'':    - 编辑 ''gradle.properties'':
-       更改 ''archives_base_name'' 和 ''maven_group'':''archives_base_name'' 被用于区分同一个组中的不同项目,将其改为你的模组名即可。''maven_group'' 是一个把你所有的模组组织在一起的“组名”(即 Maven 中的 GroupId),所以最好把你所有模组的 ''maven_group'' 设成同一个值。(''maven_group'' 也应当遵从 Java 包名的命名规范:域名倒序 + 模块名 + 小模块名... ,如 ''net.minecraft.client.gui.screen'' +       确保将 ''archives_base_name'' 和 ''maven_group'' 为你喜欢的值。 
-       将 MC 版本改成你模组的目标版本,而命名映射(如 Yarn)和 Loader 的版本改成目标版本对应的最新版本(通过[[https://modmuss50.me/fabric.html|这个网站]]查询具体的版本)。 +       确保更新 Minecraft、映射、加载器和 loom 的版本——以在[[https://fabricmc.net/develop/]]查询。 
-   - 在 ''build.gradle''加入任何需要的其他第三方库(一般会在模组页面/代码库上给出方法)+       * 添加你需要在 ''build.gradle''使用的其他依赖
    - 将 ''build.gradle'' 导入到你的 IDE 中(各 IDE 操作各有不同,具体见下)    - 将 ''build.gradle'' 导入到你的 IDE 中(各 IDE 操作各有不同,具体见下)
    - 配置完成!祝武运昌隆(bushi    - 配置完成!祝武运昌隆(bushi
  
-你也可以生成MC的文件来作为参考(不过 IDEA 已经自带反编译功,所以生成生成都随意): +如有需要,可以在 ''gradle.properties'' 中设置镜像。镜像源可有时可用,或者内容更新滞后,如需使用官方源,可暂时将相关内容注释掉即可。BMCLAPI 镜像缓慢时,可使用官方源,或参考[[https://mirrors.cernet.edu.cn/list/bmclapi|校园网联合镜像站]]。 
-运行 Gradle 任务 ''genSources''(生成源文件),如果的 IDE 不集成 Gradle 支持话则需要在控制台/终端/命令提示符中输入 ''gradlew genSources''(在 Linux 或 macOS 上则是 ''./gradlew genSources''+ 
 +<code properties> 
 +loom_libraries_base=https://bmclapi2.bangbang93.com/maven/ 
 +loom_resources_base=https://bmclapi2.bangbang93.com/assets/ 
 +loom_version_manifests=https://bmclapi2.bangbang93.com/mc/game/version_manifest.json 
 +loom_experimental_versions=https://maven.fabricmc.net/net/minecraft/experimental_versions.json 
 +loom_fabric_repository=https://repository.hanbings.io/proxy/ 
 +</code> 
 + 
 +=== Fabric 模组ID变化 === 
 +从 1.19.2 开始,Fabric API 的模组ID由 ''fabric'' 变为 ''fabric-api''如果需要将 1.19.2 项目向后移植到旧版本,需要在 ''fabric.mod.json'' 的 ''depends'' 部分进行相应变更。
        
 === IntelliJ IDEA === === IntelliJ IDEA ===
-如果你使用的是 IntelliJ IDEA,请遵循以下步骤(注:中文文本可能会因为 IDEA 或中文插件的版本不同而不同) +如果你使用的是 JetBrains 的 IntelliJ IDEA,请遵循以下步骤(注:中文文本可能会因为 IDEA 或中文插件的版本不同而不同) 
-    - 在 IDEA 的主菜单里选择“打开或导入...(Import Project)”(如果已经打开了一个项目,选择位于顶端的“文件->打开...”) +    - 在 IDEA 的主菜单里选择“打开或导入...(Import Project)”(如果已经打开了一个项目,选择位于顶端的“文件->打开...”) 
-    - 选择项目的 ''build.gradle'' 文件以导入项目+    - 选择项目的 ''build.gradle'' 文件以导入项目
     - 在 Gradle 配置完成后,关闭并重新加载项目,否则有些运行配置可能无法正常显示。     - 在 Gradle 配置完成后,关闭并重新加载项目,否则有些运行配置可能无法正常显示。
     - (如果运行配置还没有出现,试试在 Gradle 页面里重新导入项目。)     - (如果运行配置还没有出现,试试在 Gradle 页面里重新导入项目。)
  
 //可选,但推荐做的一件事// //可选,但推荐做的一件事//
-IDEA 默认使用 Gradle 来构建你的项目,而这在 Fabric 是不必要的,而且会导致构建时间变长以及热换(hotswapping)相关的种种问题。以下是让 IDEA 使用默认编译器的步骤:+IDEA 默认使用 Gradle 来构建你的项目,而这在 Fabric 是不必要的,而且会导致构建时间变长以及热换(hotswapping)相关的种种问题。以下是让 IDEA 使用默认编译器的步骤:
     - 在 Gradle 页面里打开“Gradle 设置(Gradle Settings)”     - 在 Gradle 页面里打开“Gradle 设置(Gradle Settings)”
     - 将“使用此工具构建和运行(Build and run using)”和“使用此工具运行测试(Run tests using)”选项改成“IntelliJ IDEA”。     - 将“使用此工具构建和运行(Build and run using)”和“使用此工具运行测试(Run tests using)”选项改成“IntelliJ IDEA”。
-    - 进入 文件(File)-> 项目结构...(Project Structure...)-> 项目(Project)然后将模块编译输出路径(Project compiler output)改成''$PROJECT_DIR$/out'' 
  
-不幸的是目前还不能给“使用此工具构建和运行”和“使用此工具运行测试”设置一个全 IDE 内的默认值,所以这些每创建一个新项目都得重复上述步骤。+不幸的是目前还不能给“使用此工具构建和运行”和“使用此工具运行测试”设置一个全 IDE 内的默认值,所以这些每创建一个新项目都得重复上述步骤。
  
-**注:*千万* **不要运行''./gradlew idea''因为它会与 Gradle 冲突并破坏整个开发环境。+**注**不要运行 ''idea'' 的 gradle 任务已知它会破坏开发环境。 
 + 
 +如果你使用 IntelliJ IDEA,你可以使用 [[https://plugins.jetbrains.com/plugin/8327|MinecraftDev 插件]]。该插件支持自动生成 Fabric 项目以及一些与 Mixin 有关的功能,如检查、生成访问器(accessor)和影子(shadow)字段、复制 Mixin 目标参考(JVM 描述符)。你可以在文件(File) → 设置(Settings) → 插件(Plugins)中打开内部插件浏览器,找到并安装这个插件,只需要在搜索框里搜索“Minecraft”,选择第一个结果安装即可。  
 + 
 +**注**:MCDev 插件中的模板会直接使用 loom 的最新不稳定版本,请小心使用
  
 === Eclipse === === Eclipse ===
-如果你使用的是 Eclipse,并且想要生成IDE的运行设置,请运行 ''gradlew eclipse''+如果你使用的是 Eclipse,并且想要生成 IDE 的运行设置,请运行 ''gradlew eclipse''。然后,项目就可以作为普通的(非 gradle)的 Eclipse 项目导入你的工作区内,方法就是“文件” — “导入…”菜单,然后“通用” -> “已存在的项目导入工作区”
  
 === Visual Studio Code === === Visual Studio Code ===
 如果你使用的是 Visual Studio Code,请参照[[zh_cn:tutorial:vscode_setup|这篇教程]]。 如果你使用的是 Visual Studio Code,请参照[[zh_cn:tutorial:vscode_setup|这篇教程]]。
  
-==== MinecraftDev IntelliJ IDEA插件 ==== +===== 生成 Minecraft 源代码 ===== 
-IntelliJ IDEA 用户可以使用 MinecraftDev 插件来自动生成 Fabric 模组项目该插件还有其他与 Mixin 相关的功能如审视(inspections即高亮当用法)、生成访问器(accessors)及影子成员(shadow members)以及自动填出目标引用(target descriptors,即 JVM 的方法描述符)。 +阅读 Minecraft 源代码是编写模组时的重要一部分但是我们能发布 Minecraft 的源代码因为这违反了 Minecraft 的最终户许可协议EULA)。你需要自己生成 Minecraft 源代码
-这个插件可以在[[https://plugins.jetbrains.com/plugin/8327|IntelliJ的插件库]]中找到,所以也可以通过位于文件(File)->设置(Settings)->插件(Plugins)的内部插件浏览器找到并安装这个插件,只需要在搜索框里搜索“Minecraft”,选择第一个结果安装即可+
  
-==== 代码生成器 ==== +要生成 Minecrat 源代码,运行 gradle 任务 ''genSources''如果你的 IDE 有嵌入 gradle,在终端内运行以下命令''./gradlew genSources''反编译可能需要一段时间,决于计算机能力。你可能要在运行任务之后刷新 gradle。 
-如果你没法使用 MinecraftDev 插件或 [[https://github.com/FabricMC/fabric-example-mod/|fabric-example-mod]] 模板的话也可以使用 ExtraCraTX 制作的 [[https://github.com/ExtraCrafTX/GeneratorFabricMod|GeneratorFabricMod]],一个用于自动生成 Fabric 模组的工具。请遵循以下步骤: + 
-  - [[https://github.com/ExtraCrafTX/GeneratorFabricMod/releases|这里]]下载 GeneratorFabricMod 并解压。 +如何阅读源代码,参考[[zh_cn:tutorial:reading_mc_code|阅读 Minecraft 源代码]]
-  - 创建一个新目录,并打开一个新的终端/命令提示符窗口并输入 ''//到/GeneratorFabricMod/的/路径///bin/GeneratorFabricMod'' +
-  - 在它获完所有前置项后,按照屏幕上的指示输入所的信息。 +
-  - 完成之后用你的 IDE 打开即完成安装+
  
 ===== 新手入门 ===== ===== 新手入门 =====
-入门可以先尝试[[zh_cn:tutorial:items|添加一些物品]]和[[zh_cn:tutorial:blocks|方块]]。另外,建议了解一下如何[[zh_cn:tutorial:applychanges|在不重启 Minecraft 的情况下应用更改]],以便调试。+入门可以先尝试[[zh_cn:tutorial:items|添加一些物品]]和[[zh_cn:tutorial:blocks|方块]]。另外,建议了解一下如何[[zh_cn:tutorial:hotswapping|在不重启 Minecraft 的情况下应用更改]],以便调试。
  
 ===== 建议 ===== ===== 建议 =====
-  * 虽然 Fabric API 并不是必需的,但其最首要的目标是提供MC游戏引擎所不提供的跨模组兼容性和 hooks,所以我们**强烈**推荐多使用 Fabric API。(Wiki 上的许多教程也会默认使用 Fabric API 的 :D)+  * 虽然 Fabric API 并不是必需的,但其最首要的目标是提供游戏引擎所不提供的跨模组兼容性和接口,所以我们**强烈**推荐多使用 Fabric API。本 wiki 上的许多教程也会默认使用 Fabric API
   * 随着 fabric-loom(我们的Gradle构建插件)的开发和改动,有些时候你可能会遇上一些通过重置 Gradle 缓存才能解决的问题。使用 ''gradlew cleanloom'' 便能清理缓存,而 ''gradlew %%--%%stop'' 则能帮助你解决一些其他疑难杂症。   * 随着 fabric-loom(我们的Gradle构建插件)的开发和改动,有些时候你可能会遇上一些通过重置 Gradle 缓存才能解决的问题。使用 ''gradlew cleanloom'' 便能清理缓存,而 ''gradlew %%--%%stop'' 则能帮助你解决一些其他疑难杂症。
 +  * 保持跟进到最新的 Loom 版本(Loom 版本是在 ''build.gradle'' 中定义的),以及 Fabric Loader 和 Fabric API 的版本(这是在 ''build.gradle'' 或者 ''gradle.properties'' 中定义的)。最新的版本可以在 [[https://fabricmc.net/develop/]] 中找到。即使是旧的 Minecraft 版本,最新的 Loom 和 Fabric Loader 也会支持。
 +  * 保持跟进到最新的 Gradle 版本,这是在 ''gradle/wrapper/gradle-wrapper.properties'' 中定义的。最新的 Gradle 也可以用于开发旧的 Minecraft 版本。
 +    * 不同的 Gradle 版本依赖不同的 Java 版本。
 +  * 如果你在为旧版本开发 Minecraft,除了修改 ''gradle.properties'' 外,你还需要修改 ''build.gradle'' 和 mixin 配置中更改 Java 兼容性版本。
   * 问问题不要犹豫,有问题就问,总有人会帮你解决的。(笑   * 问问题不要犹豫,有问题就问,总有人会帮你解决的。(笑
  
 ===== 故障诊断 ===== ===== 故障诊断 =====
 +
 +==== "no usages" on every method ====
 +在运行 Intellij IDEA 的 ''genSources'' gradle 任务后,检查源代码是否被正确添加。打开一个 Minecraft .class 文件,点击屏幕右上方的“选择源……”按钮。选择在结尾有“-sources”的jar。
  
 ==== 缺少声音 ==== ==== 缺少声音 ====
 有时当 IDE 在导入 Gradle 项目的时候有些游戏素材不会正常下载。如果遇到这种情况则要手动运行 ''downloadAssets'' 任务——既可以使用 IDE 的自带菜单也可以直接执行 ''gradlew downloadAssets'' 有时当 IDE 在导入 Gradle 项目的时候有些游戏素材不会正常下载。如果遇到这种情况则要手动运行 ''downloadAssets'' 任务——既可以使用 IDE 的自带菜单也可以直接执行 ''gradlew downloadAssets''
  
 +==== 错误: 找不到或无法加载主类 net.fabricmc.devlaunchinjector.Main / 启动配置中“没有指定 SDK” ====
 +这可能是 Intellij IDEA 自近期更新 2023.2 后的一个 bug。要修复这个问题,删除整个 `.idea` 文件夹然后重启 Intellij IDEA 即可。模块会重新构建。你可能需要再次指定 Java 版本。如果重启之后没有运行配置,你可以运行 `gradle ideaSyncTask` 然后再检查一下。
 +
 +==== java.lang.ClassNotFoundException: net.fabricmc.loader.impl.launch.knot.KnotClient / java.lang.TypeNotPresentException: Type net/minecraft/util/Identifier not present / java.lang.RuntimeException: Minecraft game provider couldn't locate the game! The game may be absent from the class path, lacks some expected files, suffers from jar corruption or is of an unsupported variety/version. ====
 +这可能是因为项目路径有中文字符或其他可能造成编码不兼容的字符造成的。可以尝试将项目移到不含中文的路径中,或者在启动参数中(编辑配置),将“Minecraft Client”和“Minecraft Server”启动配置的“缩短命令行”(Shorten command line)由“@argfile (Java 9+)”设为“无”。
 +
 +另一个可能的解决办法,是在 Windows 的设置或控制面板中找到“区域设置”,并勾选“Beta 版:使用 Unicode UTF-8 提供全球语言支持”,然后重启。
 +==== Gradle 无法下载 ====
 +部分地区的用户在下载 Gradle 时,可能遇到 Connection Reset 的问题。这种情况下可以使用镜像源下载 Gradle。例如,在 ''gradle/wrapper/gradle-wrapper.properties'' 文件中,将 ''distributionUrl'' 的值设置为镜像地址,例如:
 +<code properties>
 +# 修改前
 +distributionUrl=https://services.gradle.org/distributions/gradle-8.7-bin.zip
 +
 +# 修改后
 +distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.7-bin.zip
 +</code>
 +注:Gradle 的镜像不止腾讯。
 +===== 接下来? =====
 +创建你的第一个[[items|物品]]。
zh_cn/tutorial/setup.1629882247.txt.gz · Last modified: 2021/08/25 09:04 by solidblock