<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://mdtwiki.top/index.php?action=history&amp;feed=atom&amp;title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89</id>
	<title>JSON模组教程-工厂（GenericCrafter） - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://mdtwiki.top/index.php?action=history&amp;feed=atom&amp;title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89"/>
	<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89&amp;action=history"/>
	<updated>2026-05-21T10:43:27Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89&amp;diff=3737&amp;oldid=prev</id>
		<title>火星人076：​/* 视觉与声音 */</title>
		<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89&amp;diff=3737&amp;oldid=prev"/>
		<updated>2026-04-27T12:59:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;视觉与声音&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;2026年4月27日 (一) 20:59的版本&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-l111&quot;&gt;第111行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第111行：&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;动画相关的三个进度值也值得理解：&amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt; 是 0~1 的合成进度，完成后会归零；&amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt; 会随 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 持续累积，适合驱动持续旋转或循环效果；&amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 是平滑后的运转热度，用来避免动画忽快忽慢。很多 &amp;lt;code&amp;gt;DrawBlock&amp;lt;/code&amp;gt;（如 &amp;lt;code&amp;gt;DrawWeave&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DrawSmelt&amp;lt;/code&amp;gt;）默认使用这些值，所以你在自定义 &amp;lt;code&amp;gt;DrawPart&amp;lt;/code&amp;gt; 时可以按“短周期用 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;、长周期用 &amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt;、节奏用 &amp;lt;code&amp;gt;warmup&amp;lt;/code&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;动画相关的三个进度值也值得理解：&amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt; 是 0~1 的合成进度，完成后会归零；&amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt; 会随 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 持续累积，适合驱动持续旋转或循环效果；&amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 是平滑后的运转热度，用来避免动画忽快忽慢。很多 &amp;lt;code&amp;gt;DrawBlock&amp;lt;/code&amp;gt;（如 &amp;lt;code&amp;gt;DrawWeave&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DrawSmelt&amp;lt;/code&amp;gt;）默认使用这些值，所以你在自定义 &amp;lt;code&amp;gt;DrawPart&amp;lt;/code&amp;gt; 时可以按“短周期用 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;、长周期用 &amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt;、节奏用 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;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; 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;在157及更新的版本中，可用 &amp;lt;code&amp;gt;DrawBlockParts&amp;lt;/code&amp;gt;来为建筑绘制单位、武器、炮塔等同款的部件，例如 &amp;lt;code&amp;gt;RegionPart&amp;lt;/code&amp;gt;和 &amp;lt;code&amp;gt;ShapePart&amp;lt;/code&amp;gt;等，使得Json模组也能独自设计出有更复杂外观和动效的建筑。其中，已知部件可用的、与建筑自身相关的 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;包含 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt;（建筑启动进度，满足入料条件后从0线性增长到1；对于有效率值的建筑，例如热能发电机和合金坩埚，效率在0-100%间时warmup的最大值等于效率值，但效率超过100%时warmup不会超出1）、 &amp;lt;code&amp;gt;reload&amp;lt;/code&amp;gt;（建筑生产进度，即工厂和发电机消耗一次物品的倒计时进度，每次消耗后瞬间变为1，再线性减小到0）。&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;在157及更新的版本中，可用 &amp;lt;code&amp;gt;DrawBlockParts&amp;lt;/code&amp;gt;来为建筑绘制单位、武器、炮塔等同款的部件，例如 &amp;lt;code&amp;gt;RegionPart&amp;lt;/code&amp;gt;和 &amp;lt;code&amp;gt;ShapePart&amp;lt;/code&amp;gt;等，使得Json模组也能独自设计出有更复杂外观和动效的建筑。其中，已知部件可用的、与建筑自身相关的 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;包含 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt;（建筑启动进度，满足入料条件后从0线性增长到1；对于有效率值的建筑，例如热能发电机和合金坩埚，效率在0-100%间时warmup的最大值等于效率值，但效率超过100%时warmup不会超出1）、 &amp;lt;code&amp;gt;reload&amp;lt;/code&amp;gt;（建筑生产进度，即工厂和发电机消耗一次物品的倒计时进度，每次消耗后瞬间变为1，再线性减小到0）。 &amp;lt;code&amp;gt;DrawBlockParts&amp;lt;/code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;的加入也使 &lt;/ins&gt;&amp;lt;code&amp;gt;EffectSpawnerPart&amp;lt;/code&amp;gt;在建筑上可用，不使用上文提到的 &amp;lt;code&amp;gt;updateEffect&amp;lt;/code&amp;gt;等接口也能写建筑工作特效，还能进一步自定义特效出现的时期和具体位置等。&lt;/div&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;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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; &lt;/del&gt;&amp;lt;code&amp;gt;DrawBlockParts&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;的加入使 &lt;/del&gt;&amp;lt;code&amp;gt;EffectSpawnerPart&amp;lt;/code&amp;gt;在建筑上可用，不使用上文提到的 &amp;lt;code&amp;gt;updateEffect&amp;lt;/code&amp;gt;等接口也能写建筑工作特效，还能进一步自定义特效出现的时期和具体位置等。&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;== 产量与平衡的直觉 ==&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;!-- diff cache key mdtwiki_stnglove:diff:1.41:old-3736:rev-3737:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>火星人076</name></author>
	</entry>
	<entry>
		<id>https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89&amp;diff=3736&amp;oldid=prev</id>
		<title>火星人076：​/* 视觉与声音 */</title>
		<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89&amp;diff=3736&amp;oldid=prev"/>
		<updated>2026-04-27T12:58:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;视觉与声音&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;2026年4月27日 (一) 20:58的版本&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-l110&quot;&gt;第110行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第110行：&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;动画相关的三个进度值也值得理解：&amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt; 是 0~1 的合成进度，完成后会归零；&amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt; 会随 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 持续累积，适合驱动持续旋转或循环效果；&amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 是平滑后的运转热度，用来避免动画忽快忽慢。很多 &amp;lt;code&amp;gt;DrawBlock&amp;lt;/code&amp;gt;（如 &amp;lt;code&amp;gt;DrawWeave&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DrawSmelt&amp;lt;/code&amp;gt;）默认使用这些值，所以你在自定义 &amp;lt;code&amp;gt;DrawPart&amp;lt;/code&amp;gt; 时可以按“短周期用 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;、长周期用 &amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt;、节奏用 &amp;lt;code&amp;gt;warmup&amp;lt;/code&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;动画相关的三个进度值也值得理解：&amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt; 是 0~1 的合成进度，完成后会归零；&amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt; 会随 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 持续累积，适合驱动持续旋转或循环效果；&amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 是平滑后的运转热度，用来避免动画忽快忽慢。很多 &amp;lt;code&amp;gt;DrawBlock&amp;lt;/code&amp;gt;（如 &amp;lt;code&amp;gt;DrawWeave&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DrawSmelt&amp;lt;/code&amp;gt;）默认使用这些值，所以你在自定义 &amp;lt;code&amp;gt;DrawPart&amp;lt;/code&amp;gt; 时可以按“短周期用 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;、长周期用 &amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt;、节奏用 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;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;在157及更新的版本中，可用 &amp;lt;code&amp;gt;DrawBlockParts&amp;lt;/code&amp;gt;来为建筑绘制单位、武器、炮塔等同款的部件，例如 &amp;lt;code&amp;gt;RegionPart&amp;lt;/code&amp;gt;和 &amp;lt;code&amp;gt;ShapePart&amp;lt;/code&amp;gt;等，使得Json模组也能独自设计出有更复杂外观和动效的建筑。其中，已知部件可用的、与建筑自身相关的 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;包含 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt;（建筑启动进度，满足入料条件后从0线性增长到1；对于有效率值的建筑，例如热能发电机和合金坩埚，效率在0-100%间时warmup的最大值等于效率值，但效率超过100%时warmup不会超出1）、 &amp;lt;code&amp;gt;reload&amp;lt;/code&amp;gt;（建筑生产进度，即工厂和发电机消耗一次物品的倒计时进度，每次消耗后瞬间变为1，再线性减小到0）。&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; &amp;lt;code&amp;gt;DrawBlockParts&amp;lt;/code&amp;gt;的加入使 &amp;lt;code&amp;gt;EffectSpawnerPart&amp;lt;/code&amp;gt;在建筑上可用，不使用上文提到的 &amp;lt;code&amp;gt;updateEffect&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;== 产量与平衡的直觉 ==&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;!-- diff cache key mdtwiki_stnglove:diff:1.41:old-2582:rev-3736:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>火星人076</name></author>
	</entry>
	<entry>
		<id>https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89&amp;diff=2582&amp;oldid=prev</id>
		<title>硫缺铅：​创建页面，内容为“&lt;span id=&quot;工厂genericcrafter&quot;&gt;&lt;/span&gt; = 工厂（GenericCrafter） =  在 JSON 模组里，最常见的生产方块就是 &lt;code&gt;GenericCrafter&lt;/code&gt;。它是“把输入变成输出”的基础模板：消耗物品、液体或电力，经过一段 &lt;code&gt;craftTime&lt;/code&gt; 后产出物品或液体。原版的“石墨压缩机”“硅冶炼厂”“相织布编织器”“相织布合成机”都属于这一类，所以学会 &lt;code&gt;GenericCrafter&lt;/code&gt;，基…”</title>
		<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E5%B7%A5%E5%8E%82%EF%BC%88GenericCrafter%EF%BC%89&amp;diff=2582&amp;oldid=prev"/>
		<updated>2026-02-01T13:32:54Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;lt;span id=&amp;quot;工厂genericcrafter&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = 工厂（GenericCrafter） =  在 JSON 模组里，最常见的生产方块就是 &amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt;。它是“把输入变成输出”的基础模板：消耗物品、液体或电力，经过一段 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 后产出物品或液体。原版的“石墨压缩机”“硅冶炼厂”“相织布编织器”“相织布合成机”都属于这一类，所以学会 &amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt;，基…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;工厂genericcrafter&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= 工厂（GenericCrafter） =&lt;br /&gt;
&lt;br /&gt;
在 JSON 模组里，最常见的生产方块就是 &amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt;。它是“把输入变成输出”的基础模板：消耗物品、液体或电力，经过一段 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 后产出物品或液体。原版的“石墨压缩机”“硅冶炼厂”“相织布编织器”“相织布合成机”都属于这一类，所以学会 &amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt;，基本就掌握了大部分生产链。&lt;br /&gt;
&lt;br /&gt;
== 一个最小示例 ==&lt;br /&gt;
&lt;br /&gt;
先从一个最简单的把“煤炭”压成“石墨”的工厂开始：&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;文件：content/blocks/tutorial-graphite-press.json&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;示例石墨压制机&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;把煤炭压成石墨的演示工厂。&amp;quot;,&lt;br /&gt;
    &amp;quot;size&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;health&amp;quot;: 180,&lt;br /&gt;
    &amp;quot;category&amp;quot;: &amp;quot;crafting&amp;quot;,&lt;br /&gt;
    &amp;quot;requirements&amp;quot;: [&lt;br /&gt;
        &amp;quot;copper/80&amp;quot;,&lt;br /&gt;
        &amp;quot;lead/40&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 60,&lt;br /&gt;
    &amp;quot;consumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;items&amp;quot;: [&lt;br /&gt;
            &amp;quot;coal/2&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;power&amp;quot;: 1.2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;outputItem&amp;quot;: {&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;graphite&amp;quot;,&lt;br /&gt;
        &amp;quot;amount&amp;quot;: 1&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;research&amp;quot;: &amp;quot;graphite-press&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
这里的 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 单位是刻（tick），&amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; 约等于 1 秒。&amp;lt;code&amp;gt;outputItem&amp;lt;/code&amp;gt; 表示每完成一次制造输出多少物品，输入则写在 &amp;lt;code&amp;gt;consumes&amp;lt;/code&amp;gt; 里。这个结构就是 &amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt; 的骨架，其他生产方块只是在这个骨架上添加了更多字段和效果。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;运转逻辑进度效率与消耗&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 运转逻辑：进度、效率与消耗 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt; 的核心逻辑是“进度条”。每帧都会按 &amp;lt;code&amp;gt;efficiency * delta / craftTime&amp;lt;/code&amp;gt; 增加 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;，当进度达到 1 时触发一次 &amp;lt;code&amp;gt;craft()&amp;lt;/code&amp;gt;。&amp;lt;code&amp;gt;efficiency&amp;lt;/code&amp;gt; 来自消耗器：电力不足、输入缺失时 &amp;lt;code&amp;gt;efficiency&amp;lt;/code&amp;gt; 会降到 0，进度也就停住。你在数值上看到的只是 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt;，但真正决定产量的是 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;efficiency&amp;lt;/code&amp;gt; 的乘积。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;consumes&amp;lt;/code&amp;gt; 是特殊语法，它不只是字段，而是“运行时消耗器”。&amp;lt;code&amp;gt;items&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;liquids&amp;lt;/code&amp;gt; 支持字符串或对象写法，&amp;lt;code&amp;gt;power&amp;lt;/code&amp;gt; 表示持续耗电（单位仍以刻为基准，面板会按每秒显示）。如果你需要可选消耗或增益输入，就必须用对象形式，例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;consumes&amp;quot;: {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&amp;quot;item&amp;quot;: &amp;quot;sand&amp;quot;, &amp;quot;amount&amp;quot;: 2}],&lt;br /&gt;
    &amp;quot;liquid&amp;quot;: {&amp;quot;liquid&amp;quot;: &amp;quot;water&amp;quot;, &amp;quot;amount&amp;quot;: 0.1, &amp;quot;optional&amp;quot;: true, &amp;quot;booster&amp;quot;: true},&lt;br /&gt;
    &amp;quot;power&amp;quot;: 2.4&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
这种写法能表达“没水也能做，但有水就会被消耗”的可选输入，也能让面板把它显示为加速或辅助输入，避免字符串简写无法表达 &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;booster&amp;lt;/code&amp;gt; 的限制。&lt;br /&gt;
&lt;br /&gt;
物品、液体与电力的消耗时机并不一样。&amp;lt;code&amp;gt;consumes.items&amp;lt;/code&amp;gt; 是“结算式”消耗：进度条走满后才触发 &amp;lt;code&amp;gt;consume()&amp;lt;/code&amp;gt;，一次性扣掉所需物品，所以输入物品往往会先堆在缓冲里。&amp;lt;code&amp;gt;consumes.liquid&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;consumes.power&amp;lt;/code&amp;gt; 则是“流式”消耗，每帧按 &amp;lt;code&amp;gt;amount * delta&amp;lt;/code&amp;gt; 扣除，供给不足会把 &amp;lt;code&amp;gt;efficiency&amp;lt;/code&amp;gt; 拉到 0~1 之间，表现为“速度变慢”而不是直接停机。&amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; 只是把某个消耗从“必须”改成“可选”，它不会让 &amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt; 变快；如果想要“有水更快”的加速逻辑，需要换成自带加速的方块类型，或在 JS/Java 里自己把 &amp;lt;code&amp;gt;optionalEfficiency&amp;lt;/code&amp;gt; 乘进进度。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;输出与缓冲物品与液体的差异&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 输出与缓冲：物品与液体的差异 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;outputItem&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;outputItems&amp;lt;/code&amp;gt; 是互斥的。写了 &amp;lt;code&amp;gt;outputItem&amp;lt;/code&amp;gt; 时，系统会在初始化阶段把它转成单元素的 &amp;lt;code&amp;gt;outputItems&amp;lt;/code&amp;gt;，而 &amp;lt;code&amp;gt;outputItems&amp;lt;/code&amp;gt; 本身会覆盖 &amp;lt;code&amp;gt;outputItem&amp;lt;/code&amp;gt;。同理，&amp;lt;code&amp;gt;outputLiquid&amp;lt;/code&amp;gt; 会被转成 &amp;lt;code&amp;gt;outputLiquids&amp;lt;/code&amp;gt;，只要 &amp;lt;code&amp;gt;outputLiquids&amp;lt;/code&amp;gt; 存在，工厂就会被视为“液体输出工厂”。&lt;br /&gt;
&lt;br /&gt;
物品输出发生在 &amp;lt;code&amp;gt;craft()&amp;lt;/code&amp;gt;：先 &amp;lt;code&amp;gt;consume()&amp;lt;/code&amp;gt; 消耗输入，再对每个产物调用 &amp;lt;code&amp;gt;offload()&amp;lt;/code&amp;gt; 尝试向邻接建筑卸载，失败后才进入本机物品缓冲。也就是说，是否停机只取决于“本机缓冲是否还能容纳下一轮产出”，而不是外部传送带是否有空位。&lt;br /&gt;
&lt;br /&gt;
液体输出是“边生产边注入”。每帧根据进度，把 &amp;lt;code&amp;gt;outputLiquids&amp;lt;/code&amp;gt; 注入本机液体缓冲。&amp;lt;code&amp;gt;ignoreLiquidFullness&amp;lt;/code&amp;gt; 为 &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; 时，进度会受液体容量约束：&amp;lt;code&amp;gt;dumpExtraLiquid = false&amp;lt;/code&amp;gt; 表示“任意一种液体满了就停”，&amp;lt;code&amp;gt;dumpExtraLiquid = true&amp;lt;/code&amp;gt; 表示“只要有一种液体还有空间就继续”。&amp;lt;code&amp;gt;ignoreLiquidFullness = true&amp;lt;/code&amp;gt; 则完全忽略满格限制，进度照常但液体会被容量上限截断。&lt;br /&gt;
&lt;br /&gt;
这意味着：输出物品工厂更容易被“缓冲满”卡死，而输出液体工厂更容易被“管网满”拖慢。设计时要把 &amp;lt;code&amp;gt;itemCapacity&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;liquidCapacity&amp;lt;/code&amp;gt; 当作稳定器，容量越大，越能平滑短时堵塞。&lt;br /&gt;
&lt;br /&gt;
还有一点容易被忽略：物品产量与 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 强绑定，而液体产量与 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 没有直接关系。物品是“合成一次产出一次”，所以单位时间产量约等于 &amp;lt;code&amp;gt;outputItems.amount * 60 / craftTime&amp;lt;/code&amp;gt;；液体是“每刻注入”，所以把 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 调得更长并不会降低液体流量。想改液体产速，需要调 &amp;lt;code&amp;gt;outputLiquid&amp;lt;/code&amp;gt; 的 &amp;lt;code&amp;gt;amount&amp;lt;/code&amp;gt;，或让效率受输入限制。&lt;br /&gt;
&lt;br /&gt;
物品输出还有一个节奏字段 &amp;lt;code&amp;gt;dumpTime&amp;lt;/code&amp;gt;。&amp;lt;code&amp;gt;craft()&amp;lt;/code&amp;gt; 结束时只会 &amp;lt;code&amp;gt;offload()&amp;lt;/code&amp;gt; 一次，后续则由 &amp;lt;code&amp;gt;dumpOutputs()&amp;lt;/code&amp;gt; 按 &amp;lt;code&amp;gt;dumpTime&amp;lt;/code&amp;gt; 定时 &amp;lt;code&amp;gt;dump()&amp;lt;/code&amp;gt;，默认值是 5（每 5 刻尝试一次）。高产量工厂如果出口少，就会出现“内部堆满、传送带上断断续续”的表现。这时可以适当降低 &amp;lt;code&amp;gt;dumpTime&amp;lt;/code&amp;gt;，或增大 &amp;lt;code&amp;gt;itemCapacity&amp;lt;/code&amp;gt; 给物流更多缓冲。&lt;br /&gt;
&lt;br /&gt;
输入侧也需要考虑缓冲。&amp;lt;code&amp;gt;itemCapacity&amp;lt;/code&amp;gt; 决定了工厂能够提前囤多少物品，它直接影响“断供多久才会停机”。如果你希望工厂在物流波动时仍能稳定运转，就应该把 &amp;lt;code&amp;gt;itemCapacity&amp;lt;/code&amp;gt; 设为能覆盖至少一到两轮合成的物品量；反之，如果你希望它对输入更敏感，让玩家必须精确供给，就把容量压小。&lt;br /&gt;
&lt;br /&gt;
多输入配方还要注意“最稀缺物品”的占比。如果某个物品供应断断续续，它会让其他物品在缓冲里越堆越多，最终反向堵住工厂，所以容量设置要考虑最慢输入的节奏。尤其是高消耗配方，输入波动会被放大，越晚期越明显。&lt;br /&gt;
&lt;br /&gt;
== 方向与液体排放 ==&lt;br /&gt;
&lt;br /&gt;
当你同时输出多种液体时，需要用 &amp;lt;code&amp;gt;liquidOutputDirections&amp;lt;/code&amp;gt; 指定排放方向。方向是相对方块旋转的：0 表示右（东），1 表示上（北），2 表示左（西），3 表示下（南），&amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; 表示任意方向。如果数组长度短于 &amp;lt;code&amp;gt;outputLiquids&amp;lt;/code&amp;gt;，超出的部分默认按 &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; 处理。方向写对了，建造预览里会显示对应液体图标，这能让玩家一眼看出管道该怎么接。&lt;br /&gt;
&lt;br /&gt;
当你使用 &amp;lt;code&amp;gt;outputLiquids&amp;lt;/code&amp;gt; 输出多种液体时，系统会把第一项写回 &amp;lt;code&amp;gt;outputLiquid&amp;lt;/code&amp;gt;，主要用于逻辑传感器（如 &amp;lt;code&amp;gt;totalLiquids&amp;lt;/code&amp;gt;）的读取，所以顺序也会影响传感器结果。&amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt; 还会根据输出自动打开 &amp;lt;code&amp;gt;hasItems&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;hasLiquids&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;consumes&amp;lt;/code&amp;gt; 里的物品和电力也会自动启用 &amp;lt;code&amp;gt;acceptsItems&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;hasPower&amp;lt;/code&amp;gt;，因此很多模组里写的 &amp;lt;code&amp;gt;hasItems&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;hasLiquids&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;outputsLiquid&amp;lt;/code&amp;gt; 只是冗余提示，除非你要做特殊逻辑，否则可以省略。&lt;br /&gt;
&lt;br /&gt;
== 简写与对象的选择 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;outputItem&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;outputLiquid&amp;lt;/code&amp;gt; 支持字符串简写，例如 &amp;lt;code&amp;gt;&amp;amp;quot;graphite/2&amp;amp;quot;&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;&amp;amp;quot;cryofluid/0.3&amp;amp;quot;&amp;lt;/code&amp;gt;。简写很快，但当你需要更清晰的语义或要配合工具生成文档时，对象写法更稳。下面是“硝化反应器”的核心字段，它用字符串写法直接表达液体流量，同时在 &amp;lt;code&amp;gt;drawer&amp;lt;/code&amp;gt; 里指定 &amp;lt;code&amp;gt;drawLiquid&amp;lt;/code&amp;gt; 让液体颜色更醒目：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;硝化反应器&amp;quot;,&lt;br /&gt;
    &amp;quot;outputLiquid&amp;quot;: &amp;quot;硝化重油/0.3&amp;quot;,&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 60,&lt;br /&gt;
    &amp;quot;liquidCapacity&amp;quot;: 30,&lt;br /&gt;
    &amp;quot;consumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;power&amp;quot;: 5,&lt;br /&gt;
        &amp;quot;items&amp;quot;: [&amp;quot;spore-pod/1&amp;quot;],&lt;br /&gt;
        &amp;quot;liquid&amp;quot;: &amp;quot;oil/0.3&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;drawer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;DrawMulti&amp;quot;,&lt;br /&gt;
        &amp;quot;drawers&amp;quot;: [&lt;br /&gt;
            {&amp;quot;type&amp;quot;: &amp;quot;DrawRegion&amp;quot;, &amp;quot;suffix&amp;quot;: &amp;quot;-bottom&amp;quot;},&lt;br /&gt;
            {&amp;quot;type&amp;quot;: &amp;quot;DrawLiquidTile&amp;quot;, &amp;quot;drawLiquid&amp;quot;: &amp;quot;硝化重油&amp;quot;},&lt;br /&gt;
            &amp;quot;DrawDefault&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
简写与对象写法在功能上等价，关键是保持一致。对于大型模组，建议在同一章节里尽量使用同一种风格，避免读者在不同写法之间频繁切换。&lt;br /&gt;
&lt;br /&gt;
== 视觉与声音 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt; 的视觉表现由 &amp;lt;code&amp;gt;craftEffect&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;updateEffect&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;updateEffectChance&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;drawer&amp;lt;/code&amp;gt; 共同决定。&amp;lt;code&amp;gt;craftEffect&amp;lt;/code&amp;gt; 在每次合成完成时触发，&amp;lt;code&amp;gt;updateEffect&amp;lt;/code&amp;gt; 则在运转时按概率触发。&amp;lt;code&amp;gt;updateEffectChance&amp;lt;/code&amp;gt; 是“每帧概率”，值太大容易堆效果，值太小又看不出工作状态。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drawer&amp;lt;/code&amp;gt; 决定贴图叠层与动画形式，常见的组合是 &amp;lt;code&amp;gt;DrawMulti&amp;lt;/code&amp;gt;，再叠加 &amp;lt;code&amp;gt;DrawFlame&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DrawWeave&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DrawLiquidTile&amp;lt;/code&amp;gt; 等。&amp;lt;code&amp;gt;warmupSpeed&amp;lt;/code&amp;gt; 只影响动画进度，不直接改变产量，但它会驱动 &amp;lt;code&amp;gt;DrawPart&amp;lt;/code&amp;gt; 的 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 进度，因此会改变“看起来的节奏”。&amp;lt;code&amp;gt;ambientSound&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;ambientSoundVolume&amp;lt;/code&amp;gt; 则负责“运转中的持续声”，适合让高能工厂有明显存在感。&lt;br /&gt;
&lt;br /&gt;
动画相关的三个进度值也值得理解：&amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt; 是 0~1 的合成进度，完成后会归零；&amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt; 会随 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 持续累积，适合驱动持续旋转或循环效果；&amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt; 是平滑后的运转热度，用来避免动画忽快忽慢。很多 &amp;lt;code&amp;gt;DrawBlock&amp;lt;/code&amp;gt;（如 &amp;lt;code&amp;gt;DrawWeave&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;DrawSmelt&amp;lt;/code&amp;gt;）默认使用这些值，所以你在自定义 &amp;lt;code&amp;gt;DrawPart&amp;lt;/code&amp;gt; 时可以按“短周期用 &amp;lt;code&amp;gt;progress&amp;lt;/code&amp;gt;、长周期用 &amp;lt;code&amp;gt;totalProgress&amp;lt;/code&amp;gt;、节奏用 &amp;lt;code&amp;gt;warmup&amp;lt;/code&amp;gt;”的思路选择驱动量。&lt;br /&gt;
&lt;br /&gt;
== 产量与平衡的直觉 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GenericCrafter&amp;lt;/code&amp;gt; 的平衡点通常由“每秒产量”和“每秒消耗”决定。假设效率为 1，那么每秒产量大约等于 &amp;lt;code&amp;gt;60 / craftTime * 输出数量&amp;lt;/code&amp;gt;，每秒物品消耗也按同样比例计算。电力消耗是持续性的，所以 &amp;lt;code&amp;gt;consumes.power&amp;lt;/code&amp;gt; 越大，电网压力越明显。如果你的工厂设计为“高爆发低持续”，可以把 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 拉长、&amp;lt;code&amp;gt;outputItem.amount&amp;lt;/code&amp;gt; 拉高；如果想要“稳定持续”，就缩短 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 并减少单次产量。&lt;br /&gt;
&lt;br /&gt;
除了产量本身，&amp;lt;code&amp;gt;requirements&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;research&amp;lt;/code&amp;gt; 也决定了玩家实际感受到的强度。高输出工厂如果仍然放在 “crafting” 分类且造价便宜，会直接掐断原版进度；相反，把成本拉高、把 &amp;lt;code&amp;gt;research&amp;lt;/code&amp;gt; 指向更晚的节点，就能让它成为真正的“科技升级”。&amp;lt;code&amp;gt;research&amp;lt;/code&amp;gt; 既可以是字符串（引用父节点内部名），也可以是对象，附带额外的解锁条件，这对大型模组尤其重要。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例饱和火力-3.3.0-的归中编织器&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：饱和火力 3.3.0 的“归中编织器” ==&lt;br /&gt;
&lt;br /&gt;
“归中编织器”是一个典型的高阶物品工厂。它通过 &amp;lt;code&amp;gt;DrawMulti&amp;lt;/code&amp;gt; 叠加 &amp;lt;code&amp;gt;DrawWeave&amp;lt;/code&amp;gt;，同时把 &amp;lt;code&amp;gt;outputItem&amp;lt;/code&amp;gt; 的产量拉高，让玩家感觉到“这是更快更强的相织布生产线”&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;归中编织器&amp;quot;,&lt;br /&gt;
    &amp;quot;outputItem&amp;quot;: {&amp;quot;item&amp;quot;: &amp;quot;phase-fabric&amp;quot;, &amp;quot;amount&amp;quot;: 4},&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 60,&lt;br /&gt;
    &amp;quot;consumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;power&amp;quot;: 8.75,&lt;br /&gt;
        &amp;quot;items&amp;quot;: {&amp;quot;items&amp;quot;: [&amp;quot;thorium/4&amp;quot;, &amp;quot;sand/20&amp;quot;, &amp;quot;裂位能/1&amp;quot;]}&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;drawer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;DrawMulti&amp;quot;,&lt;br /&gt;
        &amp;quot;drawers&amp;quot;: [&amp;quot;DrawWeave&amp;quot;, &amp;quot;DrawDefault&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
这个片段展示了“高产量 + 高消耗 + 高视觉”的组合方式，适合用来做中后期升级版本。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例饱和火力-3.3.0-的激活液化器&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：饱和火力 3.3.0 的“激活液化器” ==&lt;br /&gt;
&lt;br /&gt;
“激活液化器”展示了 &amp;lt;code&amp;gt;outputLiquid&amp;lt;/code&amp;gt; 与多输入的组合。它同时消耗物品与液体，并持续输出更高级的液体，同时用 &amp;lt;code&amp;gt;DrawLiquidTile&amp;lt;/code&amp;gt; 与旋转贴图强化“液体工厂”的视觉特征：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;激活液化器&amp;quot;,&lt;br /&gt;
    &amp;quot;outputLiquid&amp;quot;: &amp;quot;纳米流体/0.9&amp;quot;,&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 120,&lt;br /&gt;
    &amp;quot;liquidCapacity&amp;quot;: 120,&lt;br /&gt;
    &amp;quot;consumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;power&amp;quot;: 24,&lt;br /&gt;
        &amp;quot;items&amp;quot;: [&amp;quot;纳米核/9&amp;quot;],&lt;br /&gt;
        &amp;quot;liquid&amp;quot;: &amp;quot;water/1.2&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;drawer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;DrawMulti&amp;quot;,&lt;br /&gt;
        &amp;quot;drawers&amp;quot;: [&amp;quot;DrawLiquidTile&amp;quot;, &amp;quot;DrawDefault&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
这类结构非常适合做“液体升级链”，同时也能很好地考验玩家的管道与电网布局。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例多物品输出的写法&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：多物品输出的写法 ==&lt;br /&gt;
&lt;br /&gt;
“激发放射塔”使用了 &amp;lt;code&amp;gt;outputItems&amp;lt;/code&amp;gt;，一次合成会同时产出两种物品。这类写法常用于“副产物”设计，让生产线既输出主产物，也输出少量附带资源：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;激发放射塔&amp;quot;,&lt;br /&gt;
    &amp;quot;outputItems&amp;quot;: [&amp;quot;thorium/2&amp;quot;, &amp;quot;裂位能/12&amp;quot;],&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 60&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
当你需要“输出两种物品但只算一次合成周期”时，&amp;lt;code&amp;gt;outputItems&amp;lt;/code&amp;gt; 是最直接的工具。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例饱和火力-3.3.0-的大型冷冻机&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：饱和火力 3.3.0 的“大型冷冻机” ==&lt;br /&gt;
&lt;br /&gt;
“大型冷冻机”可以看作是原版“冷冻液混合器”的强化版本。它用 &amp;lt;code&amp;gt;outputLiquid&amp;lt;/code&amp;gt; 的对象写法输出“冷冻液”，并把 &amp;lt;code&amp;gt;updateEffect&amp;lt;/code&amp;gt; 设为 &amp;lt;code&amp;gt;freezing&amp;lt;/code&amp;gt; 来强化冰冷感。由于液体是连续产出，它还把 &amp;lt;code&amp;gt;liquidCapacity&amp;lt;/code&amp;gt; 拉高，保证短时间堵管不至于直接停机。下面是字段节选：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;大型冷冻机&amp;quot;,&lt;br /&gt;
    &amp;quot;outputLiquid&amp;quot;: {&amp;quot;liquid&amp;quot;: &amp;quot;cryofluid&amp;quot;, &amp;quot;amount&amp;quot;: 0.61},&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 60,&lt;br /&gt;
    &amp;quot;liquidCapacity&amp;quot;: 60,&lt;br /&gt;
    &amp;quot;updateEffect&amp;quot;: &amp;quot;freezing&amp;quot;,&lt;br /&gt;
    &amp;quot;consumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;power&amp;quot;: 4,&lt;br /&gt;
        &amp;quot;items&amp;quot;: [&amp;quot;titanium/1&amp;quot;],&lt;br /&gt;
        &amp;quot;liquid&amp;quot;: &amp;quot;water/0.61&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;drawer&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;DrawMulti&amp;quot;,&lt;br /&gt;
        &amp;quot;drawers&amp;quot;: [&lt;br /&gt;
            {&amp;quot;type&amp;quot;: &amp;quot;DrawRegion&amp;quot;, &amp;quot;suffix&amp;quot;: &amp;quot;-bottom&amp;quot;},&lt;br /&gt;
            {&amp;quot;type&amp;quot;: &amp;quot;DrawLiquidTile&amp;quot;, &amp;quot;drawLiquid&amp;quot;: &amp;quot;cryofluid&amp;quot;},&lt;br /&gt;
            &amp;quot;DrawDefault&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
这个例子强调了“流量式液体输出”的直觉：工厂不靠 &amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 控制流量，而是直接通过 &amp;lt;code&amp;gt;outputLiquid.amount&amp;lt;/code&amp;gt; 来调节产速。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例饱和火力-3.3.0-的爆破冲压炉&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：饱和火力 3.3.0 的“爆破冲压炉” ==&lt;br /&gt;
&lt;br /&gt;
“爆破冲压炉”主打高产量与强反馈。它一次性产出大量“硅”，&amp;lt;code&amp;gt;craftTime&amp;lt;/code&amp;gt; 很短，但 &amp;lt;code&amp;gt;consumes.power&amp;lt;/code&amp;gt; 与物品消耗极高，同时用 &amp;lt;code&amp;gt;craftEffect&amp;lt;/code&amp;gt; 叠加粒子与波纹，再配上 &amp;lt;code&amp;gt;ambientSound&amp;lt;/code&amp;gt; 形成持续压迫感。下面只摘取和节奏相关的字段：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;爆破冲压炉&amp;quot;,&lt;br /&gt;
    &amp;quot;outputItem&amp;quot;: {&amp;quot;item&amp;quot;: &amp;quot;silicon&amp;quot;, &amp;quot;amount&amp;quot;: 10},&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 30,&lt;br /&gt;
    &amp;quot;consumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;power&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;items&amp;quot;: [&amp;quot;blast-compound/1&amp;quot;, &amp;quot;sand/10&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;craftEffect&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;MultiEffect&amp;quot;,&lt;br /&gt;
        &amp;quot;effects&amp;quot;: [&lt;br /&gt;
            {&amp;quot;type&amp;quot;: &amp;quot;ParticleEffect&amp;quot;, &amp;quot;particles&amp;quot;: 8, &amp;quot;sizeFrom&amp;quot;: 8, &amp;quot;sizeTo&amp;quot;: 0, &amp;quot;length&amp;quot;: 35, &amp;quot;lifetime&amp;quot;: 35},&lt;br /&gt;
            {&amp;quot;type&amp;quot;: &amp;quot;WaveEffect&amp;quot;, &amp;quot;lifetime&amp;quot;: 10, &amp;quot;sizeFrom&amp;quot;: 0, &amp;quot;sizeTo&amp;quot;: 45, &amp;quot;strokeFrom&amp;quot;: 3, &amp;quot;strokeTo&amp;quot;: 0}&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;ambientSound&amp;quot;: &amp;quot;explosion&amp;quot;,&lt;br /&gt;
    &amp;quot;ambientSoundVolume&amp;quot;: 0.5&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
这个配置展示了“数值 + 反馈一起拉满”的思路：如果你的工厂定位是“高强度、高风险”，就要用视觉和音效把它的强度表现出来。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例饱和火力-3.3.0-的纳米打印机&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：饱和火力 3.3.0 的“纳米打印机” ==&lt;br /&gt;
&lt;br /&gt;
“纳米打印机”展示了 &amp;lt;code&amp;gt;outputItem&amp;lt;/code&amp;gt; 的字符串简写和 &amp;lt;code&amp;gt;research&amp;lt;/code&amp;gt; 的对象写法。它把产物直接写成 &amp;lt;code&amp;gt;&amp;amp;quot;纳米核/1&amp;amp;quot;&amp;lt;/code&amp;gt;，并在 &amp;lt;code&amp;gt;research&amp;lt;/code&amp;gt; 里附加解锁条件，用来限制玩家必须完成某些战役内容后才可建造。对于大型模组来说，这种做法比单纯挂在某个父节点更精细。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GenericCrafter&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;纳米打印机&amp;quot;,&lt;br /&gt;
    &amp;quot;outputItem&amp;quot;: &amp;quot;纳米核/1&amp;quot;,&lt;br /&gt;
    &amp;quot;craftTime&amp;quot;: 20,&lt;br /&gt;
    &amp;quot;consumes&amp;quot;: {&lt;br /&gt;
        &amp;quot;power&amp;quot;: 15,&lt;br /&gt;
        &amp;quot;items&amp;quot;: [&amp;quot;titanium/1&amp;quot;, &amp;quot;silicon/1&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;research&amp;quot;: {&lt;br /&gt;
        &amp;quot;parent&amp;quot;: &amp;quot;纳米组装机&amp;quot;,&lt;br /&gt;
        &amp;quot;objectives&amp;quot;: [&lt;br /&gt;
            {&amp;quot;type&amp;quot;: &amp;quot;SectorComplete&amp;quot;, &amp;quot;preset&amp;quot;: &amp;quot;火山岛&amp;quot;}&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
== 常见问题的理解方式 ==&lt;br /&gt;
&lt;br /&gt;
如果工厂没有输出，优先检查“输出口是否通畅 + 本机缓冲是否已满”。如果一直不动，通常是 &amp;lt;code&amp;gt;consumes&amp;lt;/code&amp;gt; 写错、输入不足或电力不够。如果液体排不出去，除了管道问题，还要检查 &amp;lt;code&amp;gt;outputLiquids&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;liquidOutputDirections&amp;lt;/code&amp;gt; 的数量是否匹配，以及是否把方向写成了绝对方向而不是相对方向。理解这些机制后，排错就会变得很快。&lt;br /&gt;
&lt;br /&gt;
如果工厂能动但速度忽快忽慢，先看 &amp;lt;code&amp;gt;consumes.liquid&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;consumes.power&amp;lt;/code&amp;gt;。它们是按帧扣除的，液体或电力不足会把 &amp;lt;code&amp;gt;efficiency&amp;lt;/code&amp;gt; 压低，所以看起来像“产线抖动”。另一个容易误判的点是 &amp;lt;code&amp;gt;dumpTime&amp;lt;/code&amp;gt;：即便已经完成合成，物品也可能因为 &amp;lt;code&amp;gt;dumpTime&amp;lt;/code&amp;gt; 的节奏而间歇式输出，这种“断续”并不一定是停机。&lt;/div&gt;</summary>
		<author><name>硫缺铅</name></author>
	</entry>
</feed>