<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.fabricmc.net/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.fabricmc.net/feed.php">
        <title>Fabric Wiki zh_cn:tutorial</title>
        <description></description>
        <link>https://wiki.fabricmc.net/</link>
        <image rdf:resource="https://wiki.fabricmc.net/_media/favicon.ico" />
       <dc:date>2026-04-04T03:48:07+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:accesswideners?rev=1723435900&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:adding_to_loot_tables?rev=1683198917&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:armor?rev=1724419442&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:biomes_old?rev=1724592604&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:blockappearance?rev=1749573617&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:blockentity?rev=1743510003&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:blockentityrenderers?rev=1724733762&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:blockentity_modify_data?rev=1749657732&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:blockentity_sync_itemstack?rev=1724726900&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:blocks?rev=1743556300&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:blockstate?rev=1743499262&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:callbacks?rev=1683198117&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:chunkgenerator?rev=1717825687&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:colorprovider?rev=1743509478&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:commands?rev=1751785822&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:command_argument_types?rev=1713165843&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:command_examples?rev=1681989837&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:command_exceptions?rev=1713162903&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:command_redirects?rev=1713163581&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:command_suggestions?rev=1720076830&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:concepts?rev=1659930481&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:crops?rev=1743509136&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:cursegradle?rev=1627648549&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:custom_model?rev=1724733263&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:custom_portals?rev=1702350065&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:custom_resources?rev=1627294806&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:data-generator-introduction?rev=1651669225&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datafixer?rev=1647836341&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_advancements?rev=1676040586&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_language?rev=1717521084&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_loot?rev=1743556526&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_model?rev=1744988116&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_recipe?rev=1720581844&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_setup?rev=1742863325&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_tags?rev=1677237665&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:dimensionconcepts?rev=1660792740&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:directionalblock?rev=1743499323&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_block_rendering?rev=1700296849&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_model_generation?rev=1660790894&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_recipe_generation?rev=1660790994&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:enchantments?rev=1724421238&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:entity?rev=1673745805&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:events?rev=1683198836&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:extendedscreenhandler?rev=1644499922&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:ext_gh_commit?rev=1627649512&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:ext_lang?rev=1627151041&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:features?rev=1660793879&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:fluids?rev=1683199908&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:gamerule?rev=1664448435&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:global_data?rev=1703299954&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:hotswapping?rev=1765648114&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:interface_injection?rev=1760019537&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:introduction?rev=1762898033&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:inventory?rev=1724727793&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:itemgroup?rev=1724418396&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:items?rev=1768568538&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:items_docs?rev=1700294457&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:jigsaw_old?rev=1724593410&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:keybinds?rev=1704191803&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:kotlin?rev=1721181468&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:lang?rev=1724596712&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:loader04x?rev=1704191628&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mappings?rev=1713142659&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:migratemappings?rev=1675602613&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mining_levels?rev=1664428491&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:minotaur?rev=1687328369&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_accessors?rev=1651226154&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_examples?rev=1702865981&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_export?rev=1630245995&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_hotswaps?rev=1724595939&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_injects?rev=1702864213&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_introduction?rev=1702865890&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_redirectors?rev=1634443746&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_redirectors_methods?rev=1630208230&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_registration?rev=1660791030&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_tips?rev=1660491328&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:modding_tips?rev=1713147942&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:model_predicate_providers?rev=1743567595&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:networking?rev=1720177129&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:ores?rev=1716285654&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:particles?rev=1716868147&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:persistent_states?rev=1720582286&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:pixel_raycast?rev=1633743380&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:primer?rev=1762866247&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:propertydelegates?rev=1675761701&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:publishing_mods_using_github_actions?rev=1676645053&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:reading_mc_code?rev=1765639648&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:recipes?rev=1743495502&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:recipe_type?rev=1673498483&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:recipe_types_introduction?rev=1681990416&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:reflection?rev=1651666790&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:registry?rev=1765647667&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:registry_types?rev=1724735352&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:screen?rev=1702863640&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:screenhandler?rev=1724734207&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:setup?rev=1765645346&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:shield?rev=1692603214&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:side?rev=1765647212&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:sidebar?rev=1743497639&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:spawn_egg?rev=1673746423&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:start?rev=1762813339&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:status_effects?rev=1673507287&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:structures_old?rev=1724593923&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:tags?rev=1724511090&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:terms?rev=1724587834&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:tools?rev=1724419567&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:tooltip?rev=1743495327&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:trees?rev=1660794001&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:updating_fabric_using_multimc_launcher?rev=1627170934&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:vscode_setup?rev=1686630937&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.fabricmc.net/zh_cn:tutorial:waterloggable?rev=1730041194&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.fabricmc.net/_media/favicon.ico">
        <title>Fabric Wiki</title>
        <link>https://wiki.fabricmc.net/</link>
        <url>https://wiki.fabricmc.net/_media/favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:accesswideners?rev=1723435900&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-12T04:11:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>访问加宽</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:accesswideners?rev=1723435900&amp;do=diff</link>
        <description>访问加宽

访问加宽（Access wideners）提供了一种放宽类、方法、字段访问权限的方式。访问加宽类似于著名的 Access Transformers。

访问加宽可代替 Mixin。目前有以下两种情景 Mixin 无法做到：

	*</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:adding_to_loot_tables?rev=1683198917&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-04T11:15:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>向已有的战利品表中添加物品</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:adding_to_loot_tables?rev=1683198917&amp;do=diff</link>
        <description>向已有的战利品表中添加物品

介绍

有时你需要往 战利品表 中添加物品，比如给原版的方块或者实体添加自己的掉落物。替换战利品表文件是最简单的方法，但是会破坏其他模组——如果其他模组也需要修改这个战利品表呢？所以我们来看看，怎样给战利品表添加物品，而不覆盖整个表。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:armor?rev=1724419442&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-23T13:24:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加盔甲</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:armor?rev=1724419442&amp;do=diff</link>
        <description>:!: 本页已过时，请看上面的 Fabric Docs 教程。

添加盔甲

介绍

盔甲是比一般的方块或者物品更复杂一点的实现，但是只要了解了，实现还是很简单的。如需添加盔甲，需要先实现 CustomArmorMaterial 类，然后注册物品。我们还需要看看如何为盔甲提供纹理。本文最后有一个解释如何添加击退的特殊章节，因为此方法只能通过Mixin访问（对于 1.16.3）。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:biomes_old?rev=1724592604&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-25T13:30:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加生物群系（1.16.3）</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:biomes_old?rev=1724592604&amp;do=diff</link>
        <description>添加生物群系（1.16.3）

	&quot; :!: 本教程仅适用于旧版本！对于 1.18 以上的版本，生物群系是完全使用 JSON 完成的，更多信息请参见 Minecraft Wiki 页面。&quot;

添加生物群系有以下三个步骤：

	*  创建生物群系
	*  注册生物群系</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:blockappearance?rev=1749573617&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-10T16:40:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>操纵方块的外观</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:blockappearance?rev=1749573617&amp;do=diff</link>
        <description>操纵方块的外观

这是教程的 1.15+ 版本。如需 1.14 版本，请参考操纵方块的外观（1.14）（英文）。

使方块透明或半透明

你可能已经注意到，即使方块的纹理是透明或半透明的，看起来仍是不透明的。如需解决，请将方块的渲染层设为 cutout 或 transparent。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:blockentity?rev=1743510003&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T12:20:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加方块实体</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:blockentity?rev=1743510003&amp;do=diff</link>
        <description>添加方块实体

介绍

方块实体主要用于在方块内存储数据。创建之前，您需要一个方块。本教程将介绍 BlockEntity 类的创建及其注册。

创建方块实体

最简单的方块实体仅继承 BlockEntity，并使用默认构造函数。这是完全有效的，但不会给予方块任何特殊功能。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:blockentityrenderers?rev=1724733762&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T04:42:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用方块实体渲染器动态渲染方块和物品</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:blockentityrenderers?rev=1724733762&amp;do=diff</link>
        <description>使用方块实体渲染器动态渲染方块和物品

这是本教程的 1.15 以上版本。对于 1.14 版本，请参见使用方块实体渲染器动态渲染方块和物品（1.14）（英文）。

阅读本教程之前，请确保您已添加方块实体！

介绍

方块本身并不是那么有趣，只是在某个位置和某个大小保持静止直到损坏。我们可以使用</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:blockentity_modify_data?rev=1749657732&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-11T16:02:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>修改方块实体数据</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:blockentity_modify_data?rev=1749657732&amp;do=diff</link>
        <description>修改方块实体数据

在之前的教程，我们创建了方块实体，但是这些方块实体太无聊了，没有任何数据。所以我们尝试给它添加一些数据，并定义了序列化和反序列化数据的方块。

关于 NbtCompound 的注意事项</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:blockentity_sync_itemstack?rev=1724726900&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T02:48:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>将方块实体数据同步至物品堆</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:blockentity_sync_itemstack?rev=1724726900&amp;do=diff</link>
        <description>将方块实体数据同步至物品堆

介绍

创建有方块实体的方块时，可能需要旗下有来自你的 BlockItem 的 ItemStack 的预先定义的 NBT 数据，或者在破坏方块后存在 BlockEntity 数据至 ItemStack。

本教程，我们假定你已经创建了</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:blocks?rev=1743556300&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-02T01:11:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加方块</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:blocks?rev=1743556300&amp;do=diff</link>
        <description>添加方块

将方块添加到你的模组过程与添加物品类似。你可以创建 Block 或自定义类的实例，然后将其注册到 Registries.BLOCK（1.19.3 以上版本）或 Registry.BLOCK（1.19.2 以下）注册表。你还需要提供纹理和方块状态或模型文件以提供方块外观。如需了解方块模型格式的更多信息，请参考</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:blockstate?rev=1743499262&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T09:21:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>赋予方块状态</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:blockstate?rev=1743499262&amp;do=diff</link>
        <description>赋予方块状态

Minecraft 中的每种类型的方块都由一个单独的 Block 实例表示。这样就无法仅通过更改 Block 实例的状态来更改特定方块的状态，因为该类型的其他所有方块都会受到影响！但是，如果您想给出一个单一的方块状态，以便它可以根据某些条件改变，该怎么办？这就是方块状态的目的。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:callbacks?rev=1683198117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-04T11:01:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>监听事件</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:callbacks?rev=1683198117&amp;do=diff</link>
        <description>监听事件

在本教程中，你会学到：

	*  理解事件和回调
	*  对已有的事件注册回调

事件

事件是用存储并调用回调的 net.fabricmc.fabric.api.event.Event 的实例代表的，通常回调有单个事件实例，存储在回调接口的</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:chunkgenerator?rev=1717825687&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-06-08T05:48:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>自定义区块生成器</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:chunkgenerator?rev=1717825687&amp;do=diff</link>
        <description>自定义区块生成器

区块生成器 是游戏生成世界的机制。它们处理地形塑造，表面构建以及生物群落的放置。

原版我的世界的 噪声区块生成器 非常强大并且可配置。使用好 DensityFunction 以及</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:colorprovider?rev=1743509478&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T12:11:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>颜色提供器</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:colorprovider?rev=1743509478&amp;do=diff</link>
        <description>颜色提供器

有没有想过，草和树叶如何根据生物群系而改变色调的？皮革盔甲如何具有看似无限的颜色模式？答案是颜色提供器，这个可以允许你根据位置、NBT、方块状态等属性为方块或物品的模型纹理设置色调或者着色。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:commands?rev=1751785822&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-06T07:10:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>创建命令</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:commands?rev=1751785822&amp;do=diff</link>
        <description>条款：本文中的代码适用于“Creative Commons Zero v1.0 Universial”条款，允许您将文中的代码示例用于自己的模组中。

注： 本文翻译自英文版commands。

创建命令

创建命令允许模组开发者添加可以使用命令实现的功能。本教程将会教你如何注册命令，以及 Brigadier 的基本命令结构。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:command_argument_types?rev=1713165843&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-15T07:24:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>命令参数类型</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:command_argument_types?rev=1713165843&amp;do=diff</link>
        <description>命令参数类型

Brigadier 支持自定义的参数类型，本页会展示如何创建一个简单的参数类型。

注意：自定义的参数类型要求客户端也正确注册，如果是服务器的插件，请考虑使用已存在的参数类型和一个自定义的建议提供器。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:command_examples?rev=1681989837&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-20T11:23:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>命令示例</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:command_examples?rev=1681989837&amp;do=diff</link>
        <description>命令示例

这些例子使用 CC Attribution-Noncommercial-Share Alike 4.0 International 版权协议，即本 wiki 其他文章使用的版权协议。

发送一个消息


public final class BroadCastCommand {
  public static void register(CommandDispatcher&lt;ServerCommandSource&gt; dispatcher){
      dispatcher.register(literal(&quot;broadcast&quot;)
          .requires(source -&gt; source.hasPermissionLevel(2)) // 只有管理员能够执行命令。命令不会对非操作员或低于 1 级权限的玩家显示在 tab-完成中，也不会让他们执行。
          .then(argument(&quot;color&quot;, ColorArgumentType.color())
              .then(argument(&quot;message&quot;, greedy…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:command_exceptions?rev=1713162903&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-15T06:35:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>命令异常</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:command_exceptions?rev=1713162903&amp;do=diff</link>
        <description>命令异常

Brigadier 支持命令异常，这些异常可用于结束命令，例如参数未正确解析或命令未能执行，以及更丰富的错误细节。

命令异常有以下两种类型：

	*  CommandSyntaxException：由 Brigadier 提供，需要先有一个异常类型，然后通过</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:command_redirects?rev=1713163581&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-15T06:46:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>命令重定向</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:command_redirects?rev=1713163581&amp;do=diff</link>
        <description>命令重定向

重定向是 Brigadier 的一种别称和子命令的形式。redirect 方法接收一个命令节点和一个可选的环境修饰。命令节点可以是在派发器注册后的一个特定的节点，或者就是根节点。

别称</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:command_suggestions?rev=1720076830&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-04T07:07:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>命令建议</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:command_suggestions?rev=1720076830&amp;do=diff</link>
        <description>关于协议：本文章的代码在“Creative Commons Zero v1.0”协议下共享，允许你在你自己的模组中使用本模组展示的代码示例。

命令建议

Brigadier 允许你为参数指定建议。在 Minecraft 中，这些建议会在玩家输入命令时发送至客户端。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:concepts?rev=1659930481&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-08T03:48:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>必要的 Minecraft 概念</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:concepts?rev=1659930481&amp;do=diff</link>
        <description>必要的 Minecraft 概念

本节旨在为初学者提供最基本的概述，涵盖在您开始第一个模组之前所需的基本概念和定义，作为一些背景知识。一些概念与游戏中可见的元素有关，另一些概念与修改时经常使用的文件或类有关。理解这些术语和概念有望使您更容易理解 wiki 的其他部分。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:crops?rev=1743509136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T12:05:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加自定义作物</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:crops?rev=1743509136&amp;do=diff</link>
        <description>添加自定义作物

本教程将教会您如何添加像小麦和胡萝卜那样的作物。创建自定义的作物时，需要做以下这些事情：

	*  自定义的种子物品
	*  作物方块和种子物品的注册表
	*  作物方块类</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:cursegradle?rev=1627648549&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-30T12:35:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用 CurseGradle 在 CurseForge 上发布 mod</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:cursegradle?rev=1627648549&amp;do=diff</link>
        <description>使用 CurseGradle 在 CurseForge 上发布 mod

要了解 CurseGradle，请先看 项目的官方 wiki。

注：在最新版本中，本文概述的更改似乎没有必要，甚至可能有害。

特定于 Fabric 的更改

(注：针对 Loom 0.2.5 进行了修订)</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:custom_model?rev=1724733263&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T04:34:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用自定义模型动态渲染方块和物品</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:custom_model?rev=1724733263&amp;do=diff</link>
        <description>使用自定义模型动态渲染方块和物品

可以通过方块模型 JSON 文件将模型添加到游戏，但也可以通过 Java 代码来渲染。本教程中，我们将会把一个四面熔炉模型添加到游戏。

注意模型会在区块被重建时渲染。如果需要更加动态的渲染，可以使用</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:custom_portals?rev=1702350065&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-12T03:01:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>创建一个自定义传送门用于访问你的新维度</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:custom_portals?rev=1702350065&amp;do=diff</link>
        <description>创建一个自定义传送门用于访问你的新维度

至此，你已经创建了一个新的维度，并为这个维度添加了群系、动物和一些看起来很棒的功能。

那生存玩家怎么访问这个新的维度呢？没错，创建一个传送门！</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:custom_resources?rev=1627294806&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-26T10:20:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>自定义数据包/资源包资源</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:custom_resources?rev=1627294806&amp;do=diff</link>
        <description>自定义数据包/资源包资源

前言

虽然说一般不必要，但是建议你先习惯了Fabric模组编写的基础以及json解析，再来钻研这些。走一遍添加配方类型的教程可以让你熟悉json的使用。

而且，本列表中的大多数例子都是处理数据包，但是处理资源包的过程差不多也是相同的。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:data-generator-introduction?rev=1651669225&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-04T13:00:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>数据生成器 — 介绍</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:data-generator-introduction?rev=1651669225&amp;do=diff</link>
        <description>数据生成器 — 介绍

说明：本教程翻译自 data-generator-introduction。

介绍

数据生成器是一种通过编写几行代码来生成 JSON 的方法。在这里，您看到如何准备好开发环境，以使用数据生成器。

build.gradle


sourceSets {
	main{
		resources {
			srcDirs += [
				&#039;src/main/generated&#039;
			]
		}
	}
}

loom {
	runs {
		datagen {
			server()

			name &quot;Minecraft Data&quot;
			vmArg &quot;-Dfabric-api.datagen&quot;
			vmArg &quot;-Dfabric-api.datagen.output-dir=${file(&quot;src/main/generated&quot;)}&quot;

			runDir &quot;build/datagen&quot;
		}
	}
}
assemble.dependsOn runDatagen…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datafixer?rev=1647836341&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-21T04:19:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>DataFixers</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datafixer?rev=1647836341&amp;do=diff</link>
        <description>DataFixers

这是链接到 DataFixer API 的所有 DataFixer 教程的主页。

建议依次阅读这些页面以免弄混。

注意这些文章仍在建设中。

教程

	*  第一节：简介
	*  第二节：构建器、架构和类型引用
	*  第三节：简单的 DataFixes
	*  第四节：为新版本的游戏添加架构更新
	*  第五节：修复自定义（方块）实体和 TypeReference Electric Boogaloo 2</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_advancements?rev=1676040586&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-10T14:49:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>进度生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datagen_advancements?rev=1676040586&amp;do=diff</link>
        <description>进度生成

有一个可以让 mod 更加融入 Minecraft 的方法叫做自定义进度。我们要怎么做呢？

在开始之前

请确认你已经阅读了 数据生成入门 的第一部分，有一个实现 DataGenerationEntrypoint 的类，并且了解在数据生成器发生任何修改后需要调用的 gradle 任务。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_language?rev=1717521084&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-06-04T17:11:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>语言文件生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datagen_language?rev=1717521084&amp;do=diff</link>
        <description>语言文件生成

您可以从支持翻译关键字的现有语言文件和类中生成翻译条目。

首先，创建一个继承 FabricLanguageProvider 的类，并实现如下基本方法：


private static class MyModEnglishLangProvider extends FabricLanguageProvider {
	private MyModEnglishLangProvider(FabricDataOutput dataGenerator) {
                // en_us 是可选参数，默认情况下该参数为 en_us
		super(dataGenerator, &quot;en_us&quot;);
	}

	@Override
	public void generateTranslations(TranslationBuilder translationBuilder) {
		
	}
}…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_loot?rev=1743556526&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-02T01:15:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>战利品表生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datagen_loot?rev=1743556526&amp;do=diff</link>
        <description>战利品表生成

在本教程，你将学习如何使用数据生成器为方块和其他内容生成战利品表。使用数据生成，就不再需要为每个方块写 JSON。在阅读本教程之前，请确认你已经阅读 开始了解数据生成，并且已经有一个实现了</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_model?rev=1744988116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-18T14:55:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>模型生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datagen_model?rev=1744988116&amp;do=diff</link>
        <description>模型生成

我们知道，几乎每个物品都需要对应的物品烘焙模型（item baked model，以下简称物品模型），从 1.21.4 开始还需要物品模型映射（item models definition）。每个方块都需要方块烘焙模型（block baked model，以下简称方块模型）和</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_recipe?rev=1720581844&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-10T03:24:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>配方生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datagen_recipe?rev=1720581844&amp;do=diff</link>
        <description>配方生成

在开始这一节之前，请务必确保您已经了解数据生成的相关知识，并已经准备好一个 DataGenerationEntrypoint 的实现类。

接下来我们开始。首先，创建一个继承了 FabricRecipeProvider 的类，并将其在您的数据生成入口点上注册。示例代码如下：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_setup?rev=1742863325&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-25T00:42:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>数据生成入门</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datagen_setup?rev=1742863325&amp;do=diff</link>
        <description>数据生成入门

数据生成是 Fabric API 中的新模块，允许动态生成配方、语言文件、战利品表、进度以及几乎所有带有自定义提供器的一切。每次你修改生成数据的代码，你都会需要运行 gradle 任务</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:datagen_tags?rev=1677237665&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-24T11:21:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>标签生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:datagen_tags?rev=1677237665&amp;do=diff</link>
        <description>标签生成

FabricTagProvider&lt;T&gt; 类可以让你生成标签的 JSON 文件。

本页面将会跟随你了解提供者（provider）的所有方面。

为了创建一个标签生成器，请创建一个类来继承（extends）FabricTagProvider&lt;T&gt;。其中 T 为你想要生成的标签的类型。然后在你的数据根入口（datagen entrypoint）像这样注册它：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:dimensionconcepts?rev=1660792740&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T03:19:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>维度概念</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:dimensionconcepts?rev=1660792740&amp;do=diff</link>
        <description>维度概念

创建维度是个高级的概念，需要一些努力才能够完全理解。简单的维度很容易创建，但是如果你深入下去，你可能会难以处理一大堆的类。本教程提供了创建维度需要的概念的概览。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:directionalblock?rev=1743499323&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T09:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>制作带朝向的方块</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:directionalblock?rev=1743499323&amp;do=diff</link>
        <description>制作带朝向的方块

使方块带有方向（朝向特定的方向）也是通过方块状态完成的。这个例子介绍了垂直版的安山岩台阶。




public class VerticalSlabBlock extends HorizontalFacingBlock {
	// codec 从 1.20.5 开始是必需的，但是还没有在 Minecraft 中实际使用。
	public static final MapCodec&lt;VerticalSlabBlock&gt; CODEC = Block.createCodec(VerticalSlabBlock::new);

	public VerticalSlabBlock(Settings settings) {
		super(settings);
		setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH));
	}

	@Override
	protected MapCodec&lt;? extends VerticalSlabBlock&gt; getCod…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_block_rendering?rev=1700296849&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-18T08:40:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>动态渲染方块和物品</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_block_rendering?rev=1700296849&amp;do=diff</link>
        <description>动态渲染方块和物品

有两种方式动态渲染方块和物品，取决于你需要做什么。

	*  自定义模型可以用于在重建区块网（chunk mesh）时动态渲染方块。这意味着，只有当区块更新或您强制更新时，模型才会重新生成。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_model_generation?rev=1660790894&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T02:48:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>动态模型生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_model_generation?rev=1660790894&amp;do=diff</link>
        <description>DELETEME 本页已被 Fabric Data Generation API 取代，请参见 此教程。

动态模型生成

动态生成的模型主要用于将模型添加到生成的物品和方块，或者需要为大量的物品、方块自动创建模型。我们先从注册新物品开始。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_recipe_generation?rev=1660790994&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T02:49:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>动态配方生成</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:dynamic_recipe_generation?rev=1660790994&amp;do=diff</link>
        <description>DELETEME  本页已被 Fabric Data Generation API 教程取代，请参见此处。

动态配方生成

动态添加的配方是通过代码而非.json文件添加的配方，可以用于，在特定模组与你的模组一同安装的情况下改变配方，或者使用其他模组的标签改变配方，</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:enchantments?rev=1724421238&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-23T13:53:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加附魔</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:enchantments?rev=1724421238&amp;do=diff</link>
        <description>添加附魔

自 1.21 版本之后添加附魔

从 1.21 开始，附魔都是数据驱动的，这意味着你需要在数据包中定义，而不是在代码中。详情请见 Minecraft Wiki 相关页面。

要在代码中使用这些附魔，只需要存在附魔的 RegistryKey</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:entity?rev=1673745805&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-15T01:23:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>创建一个实体</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:entity?rev=1673745805&amp;do=diff</link>
        <description>创建一个实体

本文的源码托管于 这个仓库 的 entity 分支.

实体（Entity）是游戏世界里的一种可以根据附加的逻辑移动的物体，包括：

	*  矿车
	*  箭
	*  船

生物实体（Living Entity）是拥有生命值，并且可以造成伤害的实体。
为了实现不同的功能，生物实体有着不同的分支类型，其中有：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:events?rev=1683198836&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-04T11:13:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>自定义事件</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:events?rev=1683198836&amp;do=diff</link>
        <description>自定义事件

Fabric API 提供一个允许模组对游戏内事件作出反应的系统。事件（events）是满足常见用例的钩子（hooks），同时也能在钩到代码相同区域的模组之间增强兼容性、改善性能。使用事件通常就能代替 mixin。Fabric</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:extendedscreenhandler?rev=1644499922&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-10T13:32:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>​使用扩展的 ScreenHandler 同步数据 ​</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:extendedscreenhandler?rev=1644499922&amp;do=diff</link>
        <description>​使用扩展的 ScreenHandler 同步数据 ​

在本教程中，我们将使用 ExtendedScreenHandler ​在 ScreenHandler 打开时将任意数据从服务器传输到客户端 ScreenHandler。

在我们的示例中，我们将用方块的位置作为容器的标题。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:ext_gh_commit?rev=1627649512&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-30T12:51:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用 GitHub Actions 来寻找你的模组中的问题</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:ext_gh_commit?rev=1627649512&amp;do=diff</link>
        <description>使用 GitHub Actions 来寻找你的模组中的问题

GitHub Actions 是一项非常有用的服务，免费提供给公共和私有存储库。
它允许你在事件发生时自动执行命令或 *actions* 。

为了查找错误，我们将会使用到</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:ext_lang?rev=1627151041&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-24T18:24:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用 CrowdinTranslate 提供实时的社区翻译</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:ext_lang?rev=1627151041&amp;do=diff</link>
        <description>使用 CrowdinTranslate 提供实时的社区翻译

Crowdin 是一个很爽很好很劲爆的翻译平台。更加爽的是，一个用户创建了一个开源库，你可以在你的 mod 中使用，它可以从 Crowdin 实时获取翻译，并在游戏启动时应用它们。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:features?rev=1660793879&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T03:37:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加地物 [1.17]</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:features?rev=1660793879&amp;do=diff</link>
        <description>FIXME 本页有一段时间没有更新了，可能在未来版本不可用。请参考英文页面进行更新。

添加地物 [1.17]

岩石、树木、矿石、池塘都是地物的例子，是对世界的简单补充生成，并根据配置的方式生成。本教程中，我们将研究如何随机生成简单的石头螺旋地物。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:fluids?rev=1683199908&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-04T11:31:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>创建流体</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:fluids?rev=1683199908&amp;do=diff</link>
        <description>创建流体

概述

在这里，我们将介绍自定义流体的创建。如果计划创建多个流体，建议创建一个抽象的基本流体类，在其中设置必要的默认值，这些默认值将在其子类中共享。我们还将使其像湖泊一样在世界中生成。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:gamerule?rev=1664448435&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-29T10:47:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加游戏规则</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:gamerule?rev=1664448435&amp;do=diff</link>
        <description>添加游戏规则

注册游戏规则

要创建游戏规则，使用 Fabric API 的 GameRuleRegistry 进行注册：


// 创建并注册布尔值的游戏规则，名称为 shouldPigsFly，默认为 true。
public static final GameRules.Key&lt;GameRules.BooleanRule&gt; SHOULD_PIGS_FLY =
GameRuleRegistry.register(&quot;shouldPigsFly&quot;, Category.MOBS, GameRuleFactory.createBooleanRule(true));</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:global_data?rev=1703299954&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-23T02:52:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>全局世界数据</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:global_data?rev=1703299954&amp;do=diff</link>
        <description>全局世界数据

全局世界数据是客户端间存储并同步的数据，例如掠夺者的袭击数据或 BOSS 数据。

Mojang 使用状态持久化(PersistentStates)来存储全局世界数据。您可以参阅 状态持久化 页面来了解有关如何保存游戏数据，以供不同游戏会话使用，或在服务器重启前后得以保存数据。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:hotswapping?rev=1765648114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-13T17:48:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>应用更改而无需重新启动 Minecraft</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:hotswapping?rev=1765648114&amp;do=diff</link>
        <description>应用更改而无需重新启动 Minecraft

重新启动 Minecraft 可能会花费大量时间。幸运的是，存在一些工具可以在游戏运行时应用某些更改。

重新加载更改的类

在 Eclipse 或 Intellij IDEA 中，以调试模式运行 Minecraft。要应用代码更改，在 Intellij IDEA 中点击“构建”项目按钮或在 Eclipse 中保存。注意：这仅允许您更改方法主体。如果进行任何其他类型的更改，则必须重新启动。但是，如果使用特殊的 JDK…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:interface_injection?rev=1760019537&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-09T14:18:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>接口注入</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:interface_injection?rev=1760019537&amp;do=diff</link>
        <description>接口注入

这是由 Loom 0.11 引入的新科技，可以将方法添加到指定的已存在的类。特别地，你可以创建一个接口，然后将这个接口注入类中。这个类将会拥有该接口的所有方法，就像一直拥有这些方法一样。注入接口是仅在编译时具有的功能，这意味着需要用到 Mixin 以将接口实现到目标类。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:introduction?rev=1762898033&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-11T21:53:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fabric Mod 开发入门</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:introduction?rev=1762898033&amp;do=diff</link>
        <description>Fabric Mod 开发入门

本文简要介绍一些制作 Fabric Mod 时常用的技巧。
要制作 Minecraft Mod，您通常需要以非标准的方式与 Minecraft 的代码进行交互。
虽然 Minecraft 对修改的兼容性越来越强，但它本身并非为 Mod 设计。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:inventory?rev=1724727793&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T03:03:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>在方块中存储物品</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:inventory?rev=1724727793&amp;do=diff</link>
        <description>在方块中存储物品

阅读本教程之前，请确保已经做好了方块实体。

将物品存储在 BlockEntity（方块实体）中的标准方法是使其成为 Inventory。这使得漏斗（或其他模组）无需任何额外的工作即可从您的 BlockEntity 放入和提取物品。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:itemgroup?rev=1724418396&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-23T13:06:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>物品组</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:itemgroup?rev=1724418396&amp;do=diff</link>
        <description>物品组

这是 1.20+ 版本的教程，对于 1.19 版本，请阅读创建物品组（1.19）（英文）。

现在，你可以使用命令 /give @s tutorial:custom_item 来获得你的物品。但是，不像原版物品，它还不存在于任何物品组中，你不能在创造模式轻易获取！有两种方式实现：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:items?rev=1768568538&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-16T13:02:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加物品</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:items?rev=1768568538&amp;do=diff</link>
        <description>添加物品

介绍

添加基本的物品是编写模组的第一步。你将需要创建 Item 对象，注册，并提供纹理。要向物品添加其他行为，你将需要自定义的 Item 类。在本教程以及以后的所有教程中，均使用</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:items_docs?rev=1700294457&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-18T08:00:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>物品</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:items_docs?rev=1700294457&amp;do=diff</link>
        <description>:!: 此页面已存档。

物品

物品是你物品栏中占据一个一个格子的内容。它们可以在右击的时候执行操作，食用，或生成实体。以下是整个Item（物品）类与其相关部件的简介。如果你需要一个可以边做边学的例子，请见我们</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:jigsaw_old?rev=1724593410&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-25T13:43:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>拼图</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:jigsaw_old?rev=1724593410&amp;do=diff</link>
        <description>拼图

拼图非常适合用于地牢和村庄等高级结构，并且可以让您花费更多的时间在实际构建内容上，而不是将其与程序生成代码搞混。

可以找到带有完成代码的存储库 here.

创建一个结构特征</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:keybinds?rev=1704191803&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-02T10:36:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>自定义按键绑定</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:keybinds?rev=1704191803&amp;do=diff</link>
        <description>自定义按键绑定

键盘绑定：直接从键盘输入

Minecraft 用按键绑定功能来处理从键盘和鼠标等外部设备获取的用户输入。按下 W，角色就会向前走，按下 E，物品栏就会打开。每个绑定也都可以在设置菜单中配置，所以你可以用箭头键替代 WASD 来移动。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:kotlin?rev=1721181468&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-17T01:57:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用 Kotlin 编写 Fabric 模组</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:kotlin?rev=1721181468&amp;do=diff</link>
        <description>使用 Kotlin 编写 Fabric 模组

敬告: 此教程已默认您十分熟悉 Java 的相关知识(以及一部分与 JVM 和 Gradle 相关的知识)。这不是 Kotlin 语言的教程。如需寻求与 Kotlin 语言相关的帮助，请访问 Kotlin 文档.

Kotlin 是一种非常强大的语言，它与 Java 高度集成，可以在 JVM 上执行（Kotlin 可被编译为 Java 字节码，相应地，您可以在一个项目中同时编写 Java 和 Kotlin 代码并进行互操作)。这意味着，您可以使用 Kotlin 编写 Fabric 模组！…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:lang?rev=1724596712&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-25T14:38:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>创建语言文件</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:lang?rev=1724596712&amp;do=diff</link>
        <description>创建语言文件

你有没有注意到，你的物品显示的名称比较奇怪，例如 item.tutorial.my_item？这是因为您的物品名称没有使用游戏选择的语言进行翻译。翻译用于为单个字符串支持多种不同的语言。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:loader04x?rev=1704191628&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-02T10:33:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>加载器 0.4.x 和你！</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:loader04x?rev=1704191628&amp;do=diff</link>
        <description>加载器 0.4.x 和你！

本教程列举了将模组更新到加载器 0.4.x（或更高版本）所需要做的事情。

架构更改

架构更改。在 0.04.x，支持架构版本 0，但不确保支持 0.5.x 或更高版本。

有用的资源：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mappings?rev=1713142659&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-15T00:57:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>映射</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mappings?rev=1713142659&amp;do=diff</link>
        <description>映射

定义

映射（mapping）定义了类、字段和方法的名称。在常规的 loom 环境中，使用的是 Yarn 映射，这是社区决定的，它为 Minecraft 的代码库提供了有意义的名称。Intermediary 也是 Fabric 使用的一个必要的映射类型。需要映射是因为 Minecraft 发布的混淆（obfuscation），这代表了多个挑战。重映射（remapping）是对编译的类或者源代码文件应用映射的过程。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:migratemappings?rev=1675602613&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-05T13:10:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>更新 Java 代码库中的 Yarn 映射</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:migratemappings?rev=1675602613&amp;do=diff</link>
        <description>更新 Java 代码库中的 Yarn 映射

Loom 能够半自动地升级 Java 代码库中使用的映射。因为 Yarn 经常改动，所以这个工具对于令代码库与最新的改动同步更新来讲非常有用。

注意：Mixin 和反射目前不能自动处理 ，需要手动更新。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mining_levels?rev=1664428491&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-29T05:14:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>挖掘等级</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mining_levels?rev=1664428491&amp;do=diff</link>
        <description>挖掘等级

介绍

自 1.17 以来，挖掘等级以及工具分配的方式发生了显著变化，只需要将方块添加到特定的标签中即可。

为您的方块设置可挖掘的工具

要定义使用哪种工具挖掘你的方块，你需要将方块的 id 添加到</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:minotaur?rev=1687328369&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-21T06:19:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用 Minotaur 在 Modrinth 上发布模组</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:minotaur?rev=1687328369&amp;do=diff</link>
        <description>使用 Minotaur 在 Modrinth 上发布模组

Minotaur 是一个和 CurseGradle 很相似的 Gradle 插件。
这个页面只是简单的介绍一下 Minotaur 的基础用法，然后你需要在它的文档中学习更加深入的知识。

基础

在此之前，添加 minotaur 插件到你的</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_accessors?rev=1651226154&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-29T09:55:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mixin 访问器和调用器</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_accessors?rev=1651226154&amp;do=diff</link>
        <description>Mixin 访问器和调用器

Mixin 访问器和调用器允许你访问不可见的（私有的）或者常量的字段以及调用方法。

访问器

@Accessor 允许你访问字段。假如要访问 MinecraftClient 类中的 itemUseCooldown 字段。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_examples?rev=1702865981&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-18T02:19:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mixin 示例</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_examples?rev=1702865981&amp;do=diff</link>
        <description>Mixin 示例

收录了较为常见的 Mixin 示例。此页面旨在帮助开发者快速学习 Mixin 的使用，建议在开始之前先查看 Mixin介绍。

注入到内部私有类的一个方法

使用 targets 参数并添加 $ 符号来指向内部类。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_export?rev=1630245995&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-29T14:06:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>导出 Mixin 类</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_export?rev=1630245995&amp;do=diff</link>
        <description>导出 Mixin 类

在调试 Mixin时，对于查看你的注入和修改的完成形态很有帮助。 Mixin 提供了下述参数允许你导出 Mixin:

-Dmixin.debug.export=true

应该将此参数置于 JVM 参数中. 一旦经过修改的类完成加载，它们将会被放在</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_hotswaps?rev=1724595939&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-25T14:25:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>热交换Mixins</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_hotswaps?rev=1724595939&amp;do=diff</link>
        <description>热交换Mixins

默认的 Fabric 环境下无法热交换 mixin。要启用此功能，需要在 VM 选项中指定 -javaagent 标记。

唯一的先决条件是，有一个 sponge mixin jar 的副本。Fabric 默认会这样做，所以你应该将其位于你的 Gradle 缓存文件夹。IDEA 用户可以看看屏幕左边的项目视图的底部来找到这个库：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_injects?rev=1702864213&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-18T01:50:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mixin注入</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_injects?rev=1702864213&amp;do=diff</link>
        <description>Mixin注入

介绍

注入（Injects）允许你在已存在的模组中的特定位置放置自定义的代码。关于工作实例可参考本页底部的段落。注入的标准如下：


@Inject(method = &quot;方法名称或签名&quot;, at = @At(&quot;注入点引用&quot;))
private void injectMethod(方法参数, CallbackInfo info) {

}</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_introduction?rev=1702865890&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-18T02:18:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mixin 介绍</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_introduction?rev=1702865890&amp;do=diff</link>
        <description>Mixin 介绍

Mixin 是 Fabric 生态系统中强大重要的工具，其主要用途是修改基本游戏中的已存在的代码，可以是通过注入自定义的逻辑、移除机制或者修改值。注意 Mixin 只能使用 Java 语言编写，即便你的项目使用 Kotlin 或者其他语言。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_redirectors?rev=1634443746&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T04:09:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mixin 重定向器</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_redirectors?rev=1634443746&amp;do=diff</link>
        <description>Mixin 重定向器

介绍

重定向器是能够取代方法调用、字段访问、对象创建以及 instanceof 检查的方法。重定向器由 @Redirect 注解声明，并看起来像这样：


@Redirect(method = &quot;${signatureOfMethodInWhichToRedirect}&quot;,
          at = @At(value = &quot;${injectionPointReference}&quot;, target = &quot;${signature}&quot;))
public ReturnType redirectSomeMethod(Arg0Type, arg0, Arg1Type arg1) {
    MyClass.doMyComputations();
  
    return computeSomethingElse();
}</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_redirectors_methods?rev=1630208230&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-29T03:37:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>方法重定向</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_redirectors_methods?rev=1630208230&amp;do=diff</link>
        <description>方法重定向

方法重定向器可以使用以下 注入点：

	*  INVOKE
	*  INVOKE_STRING

INVOKE

INVOKE 注入点用于对 方法 中的 目标 的调用，这意味着它可以用于在一个方法调用之前进行重定向。

重定向一个静态方法</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_registration?rev=1660791030&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T02:50:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>注册 Mixin</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_registration?rev=1660791030&amp;do=diff</link>
        <description>注册 Mixin

介绍

在这个教程中，你会学到如何通过 resources/fabric.mod.json 注册你的Mixin。

你的 fabric.mod.json 应该位于 resources 文件夹中。

使用此链接查看你的 Fabric 示例模组的资源文件夹：Fabric Example Mod Resources

fabric.mod.json</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:mixin_tips?rev=1660491328&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-14T15:35:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mixin 小提示</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:mixin_tips?rev=1660491328&amp;do=diff</link>
        <description>Mixin 小提示

为什么使用抽象类?

1. 防止实例化

这么说吧, 你永远不应该将一个Mixin类实例化, 主要是因为脱离Mixin环境, 它对于程序的其他部分是没有意义的, 况且还有许多其他方式来访问Mixin类中定义的方法.</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:modding_tips?rev=1713147942&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-15T02:25:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>模组编写技巧</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:modding_tips?rev=1713147942&amp;do=diff</link>
        <description>模组编写技巧

以下是与Fabric有关的编写模组的小技巧。这些技巧是从API的使用经验中积累的。

基本（API）

	*  由于 Fabric API 开发的基于注入的方法，我们不需要以用户可见的方式彻底修改类。发现一些你做不到的东西时，你有时只需要找原版类的 Fabric 扩展。比如：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:model_predicate_providers?rev=1743567595&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-02T04:19:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>模型谓词提供器（1.21.4 之前）</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:model_predicate_providers?rev=1743567595&amp;do=diff</link>
        <description>模型谓词提供器（1.21.4 之前）

:!: 模型谓词提供器从 1.21.4 开始就移除了。从 1.21.4 开始，请使用物品模型映射。详见 Minecraft Wiki。

介绍

模型谓词提供器用于给予 ItemStack 的数据动态改变物品的模型。一个简单的例子是弓，其在不同的拉伸度下会有不同的纹理。所有的提供器都会用在物品的模型文件中，位于</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:networking?rev=1720177129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-05T10:58:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>网络通信</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:networking?rev=1720177129&amp;do=diff</link>
        <description>注意：本页已经取代旧版页面。建议使用本页描述的新的网络API。旧的页面参见此处（英文）。

对于 1.20.5 引入的新的网络通信 API，请参见 。

网络通信

Minecraft 中的网络通信用于客户端与服务器相互通信。网络是个比较广泛的主题，所以本页分成了几个类别。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:ores?rev=1716285654&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-21T10:00:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>生成自定义的矿石 [1.19.3+]</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:ores?rev=1716285654&amp;do=diff</link>
        <description>如果你在找 1.19.3，矿石应该完全使用 json 完成。你可以了解到的有用的工具：Configured Features 和 Placed Features

生成自定义的矿石 [1.19.3+]

许多模组会添加自己的矿石，您需要找到一种方法以将其放置在现有生物群系中让玩家寻找。在本教程中，我们将研究将矿石添加到现有生物群系以及其他模组添加的生物群系。将矿石添加到生物群系需要2个步骤。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:particles?rev=1716868147&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-28T03:49:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加粒子效果</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:particles?rev=1716868147&amp;do=diff</link>
        <description>添加粒子效果

粒子效果是用于特殊事件和附加的视觉特效。它们被用在爆炸效果，火焰效果，滴水效果以及更多上！

添加简单的粒子效果

简单的粒子效果可以只用 Minecraft 原本的粒子工厂来实现。这意味着粒子所有的行为都必须和一个原版中已经存在的粒子相同。作为例子，我们将实现一个被用在火把上的粒子效果 -</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:persistent_states?rev=1720582286&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-10T03:31:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>持久状态</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:persistent_states?rev=1720582286&amp;do=diff</link>
        <description>持久状态

引言

通常情况下，我们的模组中带有与玩家相关的信息，或是在玩家死亡、服务器重启时我们希望保留的世界信息。

现在我们举个例子，我们的模组记录着一个玩家挖掘了多少泥土方块：</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:pixel_raycast?rev=1633743380&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-09T01:36:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>像素视线追踪</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:pixel_raycast?rev=1633743380&amp;do=diff</link>
        <description>像素视线追踪

假如你想知道你的屏幕的某个像素对应哪个方块或者实体，可以使用像素视线追踪。

这些都是客户端层面的。

有两种情况：中心像素（准星）和任意像素。

特例：中心像素</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:primer?rev=1762866247&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-11T13:04:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Minecraft Mod 开发入门</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:primer?rev=1762866247&amp;do=diff</link>
        <description>Minecraft Mod 开发入门

注意：本文假设您没有任何 Minecraft Mod 制作经验。但是，您需要熟练掌握 Java 编程语言才能修改 Minecraft 源码 (请参阅“准备工作”部分)。如果您是从其他 Mod Loader (例如 Forge) 转到 Fabric，那么本入门指南的内容可能更适合您。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:propertydelegates?rev=1675761701&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-07T09:21:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用 PropertyDelegates 同步整形数据</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:propertydelegates?rev=1675761701&amp;do=diff</link>
        <description>使用 PropertyDelegates 同步整形数据

PropertyDelegate：PropertyDelegate 是一种包含多个可读写的整型值的容器。

在这章教程中，我们将会同步客户端和服务器之间的整型值，比如原版熔炉熔炼进度。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:publishing_mods_using_github_actions?rev=1676645053&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-17T14:44:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>使用 MC-Publish 将模组发布到 Curseforge、Modrinth 和 Github</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:publishing_mods_using_github_actions?rev=1676645053&amp;do=diff</link>
        <description>使用 MC-Publish 将模组发布到 Curseforge、Modrinth 和 Github

:!: 本页翻译自 publishing_mods_using_github_actions，如有过时的地方可参考原文。

MC-Publish 是一个 GitHub action，由 Kir-Antipov 制作，可以在 GitHub、CurseForge 和 Modrinth API 中交互，以上传您的模组文件。本页面会大致描述基本的设置过程，你需要</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:reading_mc_code?rev=1765639648&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-13T15:27:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>阅读 Minecraft 源代码</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:reading_mc_code?rev=1765639648&amp;do=diff</link>
        <description>阅读 Minecraft 源代码

阅读 Minecraft 源代码是编写模组时的重要技巧，这是因为：

	*  Minecraft 的很多东西都没有文档
		*  文档和教程很容易过时

阅读 Minecraft 源代码，你首先需要生成源代码。请参考</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:recipes?rev=1743495502&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T08:18:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>合成配方</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:recipes?rev=1743495502&amp;do=diff</link>
        <description>合成配方

添加基本的合成配方

阅读本教程之前，请确保添加了物品，我们等下会要用到。

到目前为止，我们的物品可以通过创造模式菜单或者命令获得。要让它能够在生存模式获得到，我们需要为物品添加合成配方。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:recipe_type?rev=1673498483&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-12T04:41:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>创建自定义的合成配方类型</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:recipe_type?rev=1673498483&amp;do=diff</link>
        <description>创建自定义的合成配方类型

在此界面，我们将创建我们自己的合成配方，包括无序合成的版本！
我们将不使用任何原版的类型，创建一个完全自定义的合成配方类型！

你也可以尝试制作其他的配方类型。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:recipe_types_introduction?rev=1681990416&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-20T11:33:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>配方类型介绍</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:recipe_types_introduction?rev=1681990416&amp;do=diff</link>
        <description>配方类型介绍

什么是配方类型

配方类型与配方本身不一样。为便于理解，我们先看一个例子：


{
  &quot;type&quot;: &quot;minecraft:smelting&quot;,
  &quot;ingredient&quot;: {
    &quot;tag&quot;: &quot;minecraft:logs_that_burn&quot;
  },
  &quot;result&quot;: &quot;minecraft:charcoal&quot;,
  &quot;experience&quot;: 0.15,
  &quot;cookingtime&quot;: 200
}</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:reflection?rev=1651666790&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-04T12:19:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>反射</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:reflection?rev=1651666790&amp;do=diff</link>
        <description>反射

与常规的 Java 开发相比，由于 Minecraft 在官方（混淆）、中间名和映射的（yarn 或者 mojmap）名称之间重映射，因此，通过反射寻找特定的字段或者方法需要格外小心。如果类是由原始的字符串名称找到的，例如</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:registry?rev=1765647667&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-13T17:41:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>注册表介绍</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:registry?rev=1765647667&amp;do=diff</link>
        <description>注册表介绍

Minecraft 使用注册表系统处理游戏内的几乎所有内容，作为模组开发者，需要将添加到游戏的绝大多数内容注册进去，这样做的好处是：

	*  让游戏知道你的内容存在
	*  在客户端和服务器之间验证游戏内容</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:registry_types?rev=1724735352&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T05:09:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>标准注册表</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:registry_types?rev=1724735352&amp;do=diff</link>
        <description>标准注册表

DELETEME 过时页面，没有必要。

Minecraft拥有多种内容的注册表，比如方块、物品和实体的注册表。以下为原版注册表：

	&quot; :!: 页面过时。对于 1.19.3 以及以上的版本，请将 Registry 替换为</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:screen?rev=1702863640&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-18T01:40:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加屏幕</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:screen?rev=1702863640&amp;do=diff</link>
        <description>添加屏幕

屏幕是指的图形用户界面，其类继承了 Screen，允许用户进行交互并实现一些功能。屏幕一个例子是你的模组的配置屏幕。屏幕仅在客户端存在，因此可将相应的类注解为 @Environment(EnvType.CLIENT)</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:screenhandler?rev=1724734207&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T04:50:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>创建容器方块</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:screenhandler?rev=1724734207&amp;do=diff</link>
        <description>创建容器方块

这篇教程会创建一个类似发射器的简单存储方块，并解释如何使用 Fabric 和原版 Minecraft 中的 ScreenHandler API 构建用户界面。

先解释一些词汇：

Screenhandler：
ScreenHandler 是负责在客户端和服务器之间同步物品栏内容的类。它也可以同步额外的数值，比如熔炉烧炼进度，这将在下一个教程中展示。我们的子类会有以下两个构造器：一个将在服务器端使用，并将储存真正的…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:setup?rev=1765645346&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-13T17:02:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>配置模组开发环境</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:setup?rev=1765645346&amp;do=diff</link>
        <description>配置模组开发环境

前置

安装 JDK

要开发模组，需要 Java Development Kit（JDK），安装器可参考 &lt;https://adoptium.net/releases.html&gt;。专业用户可以从 &lt;http://jdk.java.net/&gt; 获取JDK，注意需要手动解压并设置系统变量。

	*  从 1.20.5 开始，需要 Java 21 以上版本。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:shield?rev=1692603214&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-21T07:33:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加盾牌</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:shield?rev=1692603214&amp;do=diff</link>
        <description>添加盾牌

[最高支持到1.19版本，对于1.14及以下版本，请参考英文原版wiki:&lt;https://fabricmc.net/wiki/tutorial:shield]&gt;

恭喜！在上一个教程中我们学会了如何创建自定义工具！想象一下，如果想要防御一把十分强大自定义的剑，常规的盾牌是不大起作用的。因此，我们将在这里尝试创建自定义的盾牌。
幸运的，CrimsonDawn45 已经为此制作了一个库来辅助创建自定义盾牌，如果没有他创建的库，我们甚至可能需要在这个教程中待上一个小时，感谢 CrimsonDawn45！…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:side?rev=1765647212&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-13T17:33:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>端</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:side?rev=1765647212&amp;do=diff</link>
        <description>端

Minecraft 使用 客户端/服务器模型（Client-server model），即用户安装游戏客户端（Client）并连接到服务器（Server）以玩游戏。 Fabric 允许模组既可以针对 Minecraft 客户端，也可以同时针对 Minecraft 服务器。

客户端/服务器（client/server）的概念在 Minecraft 中是不明确的，并可能指代物理或逻辑端。术语客户端/服务器有时用于区分的 Minecraft 的不同发行版（Minecraft 客户端和独立的 Minecraft 服务器），也就是“物理”端（…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:sidebar?rev=1743497639&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T08:53:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fabric 教程</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:sidebar?rev=1743497639&amp;do=diff</link>
        <description>← 返回首页

Fabric 教程

	*  关于教程的信息

基础

	*  Minecraft 模组编写基础
	*  使用 Fabric 开发模组的介绍
	*  建立开发环境
	*  阅读 Minecraft 代码
	*  使用 Kotlin 编写 Fabric 模组
	*  基本的约定和术语
	*  端
	*  注册表介绍
		*  标准注册表

	*  应用更改而无需重新启动 Minecraft
	*  创建语言文件

物品

	*  添加物品
		*  Fabric Documentation 上的物品教程

	*  为你的物品创建物品组
		*  Fabric Documentation 上的物品组教程

	*  为你的物品添加物品提示
	*  添加合成配方
	*  添加盔甲（新）
	*  添加盔甲（旧）
		*  添加盔甲纹饰

	*  添加工具（新）
	*  添加工具（旧）
	*  添加盾牌
	*  添加附魔（新）
	*  添加附魔
	*  添加模型谓词提供器（1.21.4 之前）

方块和方块实体

	*  添加方块
	*  赋予方块状态
		*  制作带朝向的方块
…</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:spawn_egg?rev=1673746423&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-15T01:33:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加一个自定义刷怪蛋</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:spawn_egg?rev=1673746423&amp;do=diff</link>
        <description>添加一个自定义刷怪蛋

当您终于完成了自定义实体的制作时，您一定不想每次需要用您的实体测试某些东西时都使用命令。
这就是刷怪蛋的用处，添加自定义刷怪蛋实际上比你想象的要容易得多（比创建实体容易得多）。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:start?rev=1762813339&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-10T22:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fabric Mod 开发教程</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:start?rev=1762813339&amp;do=diff</link>
        <description>← 返回首页

Fabric Mod 开发教程

这些页面包含使用 Fabric Loader 进行 Mod 开发的大部分教程，并且在大多数情况下也涵盖 Fabric API。
所有主题列表都可以在侧边栏找到，内容涵盖方块和物品、世界生成以及自定义实体等。侧边栏在桌面端位于左侧，在移动端则折叠成顶部的“侧边工具栏”。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:status_effects?rev=1673507287&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-12T07:08:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加药水效果</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:status_effects?rev=1673507287&amp;do=diff</link>
        <description>添加药水效果

为了添加药水效果到你的模组中，你需要：

	*  创建一个继承 StatusEffect 的类
	*  添加自定义功能
	*  注册你的药水效果
	*  给你的药水效果添加翻译和材质

创建药水效果类型</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:structures_old?rev=1724593923&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-25T13:52:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加结构地物 [1.16.3]</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:structures_old?rev=1724593923&amp;do=diff</link>
        <description>添加结构地物 [1.16.3]

:!: 对于 1.18 以上版本，Fabric Structure API 不再存在，结构可完全由数据包完成。请参阅 Minecraft Wiki 中的教程。 

:!: 本页的翻译质量不佳。如果需要给旧版本添加结构地物，可阅读英文版教程。

现在，往世界中注册并放置一些结构。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:tags?rev=1724511090&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-24T14:51:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>标签</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:tags?rev=1724511090&amp;do=diff</link>
        <description>标签

标签是一组有类似属性的方块、物品或者流体，可以用在配方中，使得不同物品可以在配方中等价。关于标签的更多表述，可参考中文 Minecraft Wiki。标签也可以用来分组不同模组的相同物品，以使得这些物品互相兼容。这些称为“常用标签”。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:terms?rev=1724587834&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-25T12:10:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>基本约定和术语</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:terms?rev=1724587834&amp;do=diff</link>
        <description>基本约定和术语

开始用 Fabric 写模组前，应当先了解以后的教程页面中使用的一些关键术语和短语，这很重要。最好也了解诸如包结构和 modid 命名之类的基本约定。尽早了解这些内容将有助于你更好地理解教程，并使你在需要时能提出更好的问题。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:tools?rev=1724419567&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-23T13:26:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加工具</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:tools?rev=1724419567&amp;do=diff</link>
        <description>添加工具

:!: 本教程自 1.20.5 之后可能已经过时，因为使用了物品组件。最新教程可见 Fabric Docs 上的对应页面。

创建工具材料

工具需要ToolMaterial来定义以下行为：

	*  耐久
	*  挖掘速度
	*</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:tooltip?rev=1743495327&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T08:15:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加物品提示</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:tooltip?rev=1743495327&amp;do=diff</link>
        <description>添加物品提示

物品的物品提示

在您的物品类中，像这样重写 appendTooltip（有关如何翻译提示，请参见lang）。

对于 1.18.2 及之前的版本：


对于 1.19 之后的版本：


对于 1.20.5 之后的版本：


	&quot; :!: 该方法自从 1.21.5 开始被弃用。要在 1.21.5 添加物品提示，请使用 Fabric API。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:trees?rev=1660794001&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-18T03:40:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>添加树木 [1.17]（高级）</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:trees?rev=1660794001&amp;do=diff</link>
        <description>FIXME 本文有一段时间没有更新了，可能对未来版本不起作用。请参考英文页面。

添加树木 [1.17]（高级）

阅读本文之前，建议先学习如何创建一个特征地形。

参见 features

树木是在你的 mod 中拓展原版世界生成的一个好方法。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:updating_fabric_using_multimc_launcher?rev=1627170934&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-24T23:55:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>更新现有的MultiMC实例</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:updating_fabric_using_multimc_launcher?rev=1627170934&amp;do=diff</link>
        <description>更新现有的MultiMC实例

----------

过期，仅使用MultiMC更新

----------

有新版本的Fabric加载器可用时，你可以更新现有的MultiMC实例到新版本。

第一步：验证当前安装的Fabric版本

在MultiMC中，右键单击需要更新的MultiMC实例的图标并选择“编辑实例”，或点击图标然后点击右侧垂直栏的“编辑实例”按钮以打开该实例的版本选项卡。</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:vscode_setup?rev=1686630937&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-13T04:35:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>在Fabric建立Visual Studio Code</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:vscode_setup?rev=1686630937&amp;do=diff</link>
        <description>在Fabric建立Visual Studio Code

注：本文翻译自英文版原页面。

推荐以下插件（plugins），以尽可能提高效率。您只需要安装其一。

	*  Language Support for Java(TM) by Red Hat
	*  Debugger for Java
	*  Java Extension Pack

注意插件“Language Support for Java(TM) by Red Hat”需要Java 11或更高版本。详情请参考</description>
    </item>
    <item rdf:about="https://wiki.fabricmc.net/zh_cn:tutorial:waterloggable?rev=1730041194&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-27T14:59:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>让方块可含水</title>
        <link>https://wiki.fabricmc.net/zh_cn:tutorial:waterloggable?rev=1730041194&amp;do=diff</link>
        <description>让方块可含水

要让方块可含水，实现 Waterloggable 接口并覆盖一些方法。


public class VerticalSlabBlock extends HorizontalFacingBlock implements Waterloggable {
    [...]
}


在本例中，我们将 Properties.WATERLOGGED 存储为类中的静态字段，然后你可以直接使用</description>
    </item>
</rdf:RDF>
