<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://mcbbs.wiki/index.php?action=history&amp;feed=atom&amp;title=%E7%94%A8%E6%88%B7%3AMashKJo%2F1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B%2F6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97</id>
	<title>用户:MashKJo/1.21.1模组开发教程/6.1.第一个方块 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://mcbbs.wiki/index.php?action=history&amp;feed=atom&amp;title=%E7%94%A8%E6%88%B7%3AMashKJo%2F1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B%2F6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97"/>
	<link rel="alternate" type="text/html" href="https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;action=history"/>
	<updated>2026-05-01T19:11:15Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.3</generator>
	<entry>
		<id>https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55294&amp;oldid=prev</id>
		<title>MashKJo：​/* blockstates和模型文件 */</title>
		<link rel="alternate" type="text/html" href="https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55294&amp;oldid=prev"/>
		<updated>2025-09-07T13:50:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;blockstates和模型文件&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025年9月7日 (日) 21:50的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l50&quot;&gt;第50行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第50行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;事实上，任何物品都可以通过模型文件继承方块模型来获得一个方块的外观。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;事实上，任何物品都可以通过模型文件继承方块模型来获得一个方块的外观。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== 数据生成 ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;对应的DataProvider实现类为BlockStateProvider，同样提供了大量辅助方法如#simpleBlock、#simpleBlockWithItem等，思路和物品模型datagen类似，这里就不赘述了，读者可自行翻阅BlockStateProvider的源码。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 方块类型（MapCodec&amp;lt;? extends Block&amp;gt;） ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 方块类型（MapCodec&amp;lt;? extends Block&amp;gt;） ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mcbbs_wiki:diff::1.12:old-55292:rev-55294 --&gt;
&lt;/table&gt;</summary>
		<author><name>MashKJo</name></author>
	</entry>
	<entry>
		<id>https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55292&amp;oldid=prev</id>
		<title>2025年9月7日 (日) 11:54 MashKJo</title>
		<link rel="alternate" type="text/html" href="https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55292&amp;oldid=prev"/>
		<updated>2025-09-07T11:54:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025年9月7日 (日) 19:54的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;第11行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第11行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public static final DeferredItem&amp;lt;BlockItem&amp;gt; EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(MyBlockClass.EXAMPLE_BLOCK);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public static final DeferredItem&amp;lt;BlockItem&amp;gt; EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(MyBlockClass.EXAMPLE_BLOCK);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;方块的本地化键名格式是block&lt;/del&gt;.&amp;lt;modid&amp;gt;.&amp;lt;registry_name&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;，如上述示例代码中注册的EXAMPLE_BLOCK的本地化键名为block&lt;/del&gt;.tutorialmod.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;example_block。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;方块的本地化键名格式是&amp;lt;code&amp;gt;block&lt;/ins&gt;.&amp;lt;modid&amp;gt;.&amp;lt;registry_name&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;，如上述示例代码中注册的EXAMPLE_BLOCK的本地化键名为&amp;lt;code&amp;gt;block&lt;/ins&gt;.tutorialmod.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;example_block&amp;lt;/code&amp;gt;。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== blockstates和模型文件 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== blockstates和模型文件 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mcbbs_wiki:diff::1.12:old-55291:rev-55292 --&gt;
&lt;/table&gt;</summary>
		<author><name>MashKJo</name></author>
	</entry>
	<entry>
		<id>https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55291&amp;oldid=prev</id>
		<title>MashKJo：​/* 方块类型（MapCodec） */</title>
		<link rel="alternate" type="text/html" href="https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55291&amp;oldid=prev"/>
		<updated>2025-09-07T11:54:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;方块类型（MapCodec）&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025年9月7日 (日) 19:54的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l54&quot;&gt;第54行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第54行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;你可能注意到了，原版的Block子类都定义了一个public static final的MapCodec字段（有关Codec和MapCodec，详见第10章），即所谓的“方块类型”；还覆写了#codec方法。并且这些方块类型都被注册进了注册表BuiltInRegistries.BLOCK_TYPE。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;你可能注意到了，原版的Block子类都定义了一个public static final的MapCodec字段（有关Codec和MapCodec，详见第10章），即所谓的“方块类型”；还覆写了#codec方法。并且这些方块类型都被注册进了注册表BuiltInRegistries.BLOCK_TYPE。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;由于方块目前仍是固有注册项，并未数据驱动化，因此这东西其实没啥用。不过为了和原版统一，你也可以为你的Block子类加上方块类型。如果你的方块子类的构造方法只接受一个BlockBehaviour.Properties，那么可以直接用#simpleCodec来得到一个MapCodec；如果构造方法不止这一个参数，你需要使用RecordCodecBuilder#&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mapCodec来创建MapCodec，方块属性的Codec可以通过BlockBehaviour&lt;/del&gt;#&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;propertiesCodec得到。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;由于方块目前仍是固有注册项，并未数据驱动化，因此这东西其实没啥用。不过为了和原版统一，你也可以为你的Block子类加上方块类型。如果你的方块子类的构造方法只接受一个BlockBehaviour.Properties，那么可以直接用#simpleCodec来得到一个MapCodec；如果构造方法不止这一个参数，你需要使用RecordCodecBuilder#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mapCodec来创建MapCodec，方块属性参数的Codec填BlockBehaviour&lt;/ins&gt;#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;propertiesCodec。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mcbbs_wiki:diff::1.12:old-55290:rev-55291 --&gt;
&lt;/table&gt;</summary>
		<author><name>MashKJo</name></author>
	</entry>
	<entry>
		<id>https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55290&amp;oldid=prev</id>
		<title>MashKJo：​创建页面，内容为“方块的基类是&lt;code&gt;net.minecraft.world.level.block.Block&lt;/code&gt;类，和物品一样，简单的方块可以直接new这个类；拥有额外的逻辑的则需要先继承再实例化。   public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(TutorialMod.MODID);    public static final DeferredBlock&lt;Block&gt; EXAMPLE_BLOCK = BLOCKS.registerSimpleBlock(&quot;example_block&quot;, BlockBehaviour.Properties.of(). ...);  Block类接受一个Block…”</title>
		<link rel="alternate" type="text/html" href="https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:MashKJo/1.21.1%E6%A8%A1%E7%BB%84%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B/6.1.%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%96%B9%E5%9D%97&amp;diff=55290&amp;oldid=prev"/>
		<updated>2025-09-07T11:51:10Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“方块的基类是&amp;lt;code&amp;gt;net.minecraft.world.level.block.Block&amp;lt;/code&amp;gt;类，和物品一样，简单的方块可以直接new这个类；拥有额外的逻辑的则需要先继承再实例化。   public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(TutorialMod.MODID);    public static final DeferredBlock&amp;lt;Block&amp;gt; EXAMPLE_BLOCK = BLOCKS.registerSimpleBlock(&amp;quot;example_block&amp;quot;, BlockBehaviour.Properties.of(). ...);  Block类接受一个Block…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;方块的基类是&amp;lt;code&amp;gt;net.minecraft.world.level.block.Block&amp;lt;/code&amp;gt;类，和物品一样，简单的方块可以直接new这个类；拥有额外的逻辑的则需要先继承再实例化。&lt;br /&gt;
&lt;br /&gt;
 public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(TutorialMod.MODID);&lt;br /&gt;
 &lt;br /&gt;
 public static final DeferredBlock&amp;lt;Block&amp;gt; EXAMPLE_BLOCK = BLOCKS.registerSimpleBlock(&amp;quot;example_block&amp;quot;, BlockBehaviour.Properties.of(). ...);&lt;br /&gt;
&lt;br /&gt;
Block类接受一个BlockBehaviour.Properties，这是方块的属性，和物品的Item.Properties类似，你可以在其中设置方块的硬度、音效、爆炸抗性等。如果有些数值你拿不准，可以去Blocks类下看看原版方块的数值都是怎么填的。&lt;br /&gt;
&lt;br /&gt;
注册完方块本身，我们还需要注册方块的物品形式（BlockItem）——没错，方块放在世界中才是方块，拿在手上的是方块的物品形式，本质上是ItemStack。&lt;br /&gt;
&lt;br /&gt;
 public static final DeferredItem&amp;lt;BlockItem&amp;gt; EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(MyBlockClass.EXAMPLE_BLOCK);&lt;br /&gt;
&lt;br /&gt;
方块的本地化键名格式是block.&amp;lt;modid&amp;gt;.&amp;lt;registry_name&amp;gt;，如上述示例代码中注册的EXAMPLE_BLOCK的本地化键名为block.tutorialmod.example_block。&lt;br /&gt;
&lt;br /&gt;
== blockstates和模型文件 ==&lt;br /&gt;
我们的方块，现在放在世界中时，是一个六个面都是紫黑块的立方体。我们需要给它编写blockstates文件和模型文件。&lt;br /&gt;
&lt;br /&gt;
首先在路径&amp;lt;code&amp;gt;assets/&amp;lt;modid&amp;gt;/blockstates&amp;lt;/code&amp;gt;文件夹下以你的方块注册名为名创建JSON文件：&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;variants&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;quot;: {&lt;br /&gt;
            &amp;quot;model&amp;quot;: &amp;quot;&amp;lt;modid&amp;gt;:block/&amp;lt;name&amp;gt;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
我们的方块只有一种方块状态（有关方块状态，请见6.3节），所以用空字符串&amp;quot;&amp;quot;表示，该blockstates文件将这一唯一方块状态的模型映射到了文件&amp;lt;code&amp;gt;assets/&amp;lt;modid&amp;gt;/models/&amp;lt;name&amp;gt;.json&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
然后再创建这个模型文件：&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;minecraft:block/cube_all&amp;quot;,&lt;br /&gt;
    &amp;quot;textures&amp;quot;: {&lt;br /&gt;
        &amp;quot;all&amp;quot;: &amp;quot;&amp;lt;modid&amp;gt;:block/&amp;lt;name&amp;gt;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
由于我们创建的方块是一个满格的立方体，且六个面纹理相同，因此父模型设定为minecraft:block/cube_all；textures部分则将六个面的纹理映射到纹理文件&amp;lt;code&amp;gt;assets/&amp;lt;modid&amp;gt;/textures/block/&amp;lt;name&amp;gt;.png&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
当然，如果你不想让六个面纹理都相同，可以选择继承模型minecraft:block/cube，你可以分别指定东南西北上下六个面，以及粒子的纹理。&lt;br /&gt;
&lt;br /&gt;
把提前准备好的纹理放入指定的位置，如果你没出错的话，那么启动游戏后，方块被放在世界中时，已经显示为正常的纹理了。&lt;br /&gt;
&lt;br /&gt;
但是方块拿在手上时还是紫黑块，我们需要给方块的物品形式也创建一个模型文件，我们只需直接继承我们写好的方块模型即可：&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;&amp;lt;modid&amp;gt;:block/&amp;lt;name&amp;gt;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
事实上，任何物品都可以通过模型文件继承方块模型来获得一个方块的外观。&lt;br /&gt;
&lt;br /&gt;
== 方块类型（MapCodec&amp;lt;? extends Block&amp;gt;） ==&lt;br /&gt;
你可能注意到了，原版的Block子类都定义了一个public static final的MapCodec字段（有关Codec和MapCodec，详见第10章），即所谓的“方块类型”；还覆写了#codec方法。并且这些方块类型都被注册进了注册表BuiltInRegistries.BLOCK_TYPE。&lt;br /&gt;
&lt;br /&gt;
由于方块目前仍是固有注册项，并未数据驱动化，因此这东西其实没啥用。不过为了和原版统一，你也可以为你的Block子类加上方块类型。如果你的方块子类的构造方法只接受一个BlockBehaviour.Properties，那么可以直接用#simpleCodec来得到一个MapCodec；如果构造方法不止这一个参数，你需要使用RecordCodecBuilder#mapCodec来创建MapCodec，方块属性的Codec可以通过BlockBehaviour#propertiesCodec得到。&lt;/div&gt;</summary>
		<author><name>MashKJo</name></author>
	</entry>
</feed>