<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.teammoeg.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=120.231.138.216</id>
	<title>TeamMoeg官方WIKI - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.teammoeg.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=120.231.138.216"/>
	<link rel="alternate" type="text/html" href="http://wiki.teammoeg.com/index.php?title=%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/120.231.138.216"/>
	<updated>2026-04-04T02:46:33Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=8001</id>
		<title>机械动力机器数值分析</title>
		<link rel="alternate" type="text/html" href="http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=8001"/>
		<updated>2023-01-28T15:24:14Z</updated>

		<summary type="html">&lt;p&gt;120.231.138.216：/* 辊压机 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;冬季救援整合包里面的应力相对来说获取困难。为了极致地利用应力以及做好机器匹配，我查阅了相关代码并对其进行了分析。由于本人代码水平也不是很好，也没有编写java的经验，难免有解读错误的地方，望大佬继续补充。&lt;br /&gt;
&lt;br /&gt;
== 开始 ==&lt;br /&gt;
&lt;br /&gt;
=== 1 基础 ===&lt;br /&gt;
1秒是20gametick（20t）&lt;br /&gt;
&lt;br /&gt;
=== 2 粉碎轮 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
粉碎轮速度相关的代码为&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime = recipe.isPresent() ? recipe.get().getProcessingDuration() : 100;&lt;br /&gt;
&lt;br /&gt;
crushingspeed = compound.getFloat(&amp;quot;Speed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
float speed = crushingspeed * 4;&lt;br /&gt;
&lt;br /&gt;
float processingSpeed =Mth.clamp((speed) / (!inventory.appliedRecipe ? Mth.log2(inventory.getStackInSlot(0).getCount()) : 1), .25f, 20);&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime -= processingSpeed;&lt;br /&gt;
&lt;br /&gt;
其中crushingspeed就是我们给的'''转速/12.5'''，这个速度取速度慢的轮，所以我们统一按两轮等速讨论&lt;br /&gt;
&lt;br /&gt;
每次处理所需要的总进度如果配方有写就按配方，没有就是100（一般都是100）&lt;br /&gt;
&lt;br /&gt;
首先看条件，假如已经吸入了物品（即不是掉落物形态），除数为log2（物品数量），否则按1&lt;br /&gt;
&lt;br /&gt;
但实际上这个没啥用，因为我们都采用溜槽等方式直接跳过了吸入过程，去除了吸入所需时间，因此我们直接按着已吸入计算即可&lt;br /&gt;
&lt;br /&gt;
clamp的作用是限定范围，高于最大值就等于最大值，小于最小值就等于最小值，这里的上下限是0.25和20&lt;br /&gt;
&lt;br /&gt;
为了方便讨论，我们提出一个问题，假设我要总共处理a个物品，可用应力为定值b，单个机器单次处理y个，转速x，求处理总用时t&lt;br /&gt;
&lt;br /&gt;
已知单个机器（两个粉碎轮）rpm为16，由此可以得可用机器数量k=b/16x&lt;br /&gt;
&lt;br /&gt;
我们先假设clamp函数不起作用，不难列出如下公式&lt;br /&gt;
[[文件:FGS01.png|无|缩略图|PS:其实是y&amp;gt;e才单调减，但我懒]]&lt;br /&gt;
其中a,b,T=100为问题一开始就确立的定值，可操作变量为x,y&lt;br /&gt;
&lt;br /&gt;
易得处理总时在一定的总应力下与转速无关，单个机器单次处理量越大处理总需时越小&lt;br /&gt;
&lt;br /&gt;
在这个结论的基础上我们再讨论clamp函数的影响&lt;br /&gt;
&lt;br /&gt;
易知单个机器处理初始速度为&lt;br /&gt;
[[文件:Gs01.png|无|缩略图]]&lt;br /&gt;
另v分别等于0.25与20，我们可以得出，上方公式的适用范围&lt;br /&gt;
[[文件:01FF.png|无|缩略图]]&lt;br /&gt;
高于红线则转速无效，低于蓝线则有增益&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;br /&gt;
在确定总应力下，处理耗时只与单次处理量有关&lt;br /&gt;
&lt;br /&gt;
直接用智能溜槽喂64是最佳选择&lt;br /&gt;
&lt;br /&gt;
粉碎轮转速调成1即可&lt;br /&gt;
&lt;br /&gt;
单位时间产量与转速成正比，1速64堆叠下粉碎轮每秒可处理3.2个物品&lt;br /&gt;
&lt;br /&gt;
=== 3 辊压机 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
public static final int CYCLE = 240;&lt;br /&gt;
&lt;br /&gt;
prevRunningTicks = runningTicks;&lt;br /&gt;
&lt;br /&gt;
runningTicks += (int) Mth.lerp(Mth.clamp(Math.abs(speed) / 512f, 0, 1), 1, 60);&lt;br /&gt;
&lt;br /&gt;
if (prevRunningTicks &amp;lt; CYCLE / 2 &amp;amp;&amp;amp; runningTicks &amp;gt;= CYCLE / 2) &lt;br /&gt;
&lt;br /&gt;
runningTicks = CYCLE / 2;&lt;br /&gt;
&lt;br /&gt;
if(runningTicks &amp;gt; CYCLE)&lt;br /&gt;
&lt;br /&gt;
完成（）&lt;br /&gt;
&lt;br /&gt;
这里的speed就直接是转速了&lt;br /&gt;
&lt;br /&gt;
lerp函数作用是将0-1小数等比放大到一定范围内&lt;br /&gt;
&lt;br /&gt;
由于cycle很小，mc又按t计算，因此处理速度是阶跃的&lt;br /&gt;
&lt;br /&gt;
观察易得其为两个120的阶跃进度，因此处理速度需要为120的因数才最好，用excel可轻松求出阶跃转速&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;br /&gt;
下表转速为最佳转速，自行选取即可&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|转速&lt;br /&gt;
|增速&lt;br /&gt;
|需时(tick)&lt;br /&gt;
|筛选&lt;br /&gt;
|产量(每秒)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|120&lt;br /&gt;
|120&lt;br /&gt;
|0.166666667&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|60&lt;br /&gt;
| -60&lt;br /&gt;
|0.333333333&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|3&lt;br /&gt;
|40&lt;br /&gt;
| -20&lt;br /&gt;
|0.5&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|4&lt;br /&gt;
|30&lt;br /&gt;
| -10&lt;br /&gt;
|0.666666667&lt;br /&gt;
|-&lt;br /&gt;
|35&lt;br /&gt;
|5&lt;br /&gt;
|24&lt;br /&gt;
| -6&lt;br /&gt;
|0.833333333&lt;br /&gt;
|-&lt;br /&gt;
|44&lt;br /&gt;
|6&lt;br /&gt;
|20&lt;br /&gt;
| -4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|53&lt;br /&gt;
|7&lt;br /&gt;
|18&lt;br /&gt;
| -2&lt;br /&gt;
|1.111111111&lt;br /&gt;
|-&lt;br /&gt;
|61&lt;br /&gt;
|8&lt;br /&gt;
|15&lt;br /&gt;
| -3&lt;br /&gt;
|1.333333333&lt;br /&gt;
|-&lt;br /&gt;
|70&lt;br /&gt;
|9&lt;br /&gt;
|14&lt;br /&gt;
| -1&lt;br /&gt;
|1.428571429&lt;br /&gt;
|-&lt;br /&gt;
|79&lt;br /&gt;
|10&lt;br /&gt;
|12&lt;br /&gt;
| -2&lt;br /&gt;
|1.666666667&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|11&lt;br /&gt;
|11&lt;br /&gt;
| -1&lt;br /&gt;
|1.818181818&lt;br /&gt;
|-&lt;br /&gt;
|96&lt;br /&gt;
|12&lt;br /&gt;
|10&lt;br /&gt;
| -1&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|113&lt;br /&gt;
|14&lt;br /&gt;
|9&lt;br /&gt;
| -1&lt;br /&gt;
|2.222222222&lt;br /&gt;
|-&lt;br /&gt;
|122&lt;br /&gt;
|15&lt;br /&gt;
|8&lt;br /&gt;
| -1&lt;br /&gt;
|2.5&lt;br /&gt;
|-&lt;br /&gt;
|148&lt;br /&gt;
|18&lt;br /&gt;
|7&lt;br /&gt;
| -1&lt;br /&gt;
|2.857142857&lt;br /&gt;
|-&lt;br /&gt;
|165&lt;br /&gt;
|20&lt;br /&gt;
|6&lt;br /&gt;
| -1&lt;br /&gt;
|3.333333333&lt;br /&gt;
|-&lt;br /&gt;
|200&lt;br /&gt;
|24&lt;br /&gt;
|5&lt;br /&gt;
| -1&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|252&lt;br /&gt;
|30&lt;br /&gt;
|4&lt;br /&gt;
| -1&lt;br /&gt;
|5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4 鼓风机 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
public final ConfigInt fanPushDistance = i(20, 5, &amp;quot;fanPushDistance&amp;quot;, Comments.fanPushDistance);&lt;br /&gt;
&lt;br /&gt;
public final ConfigInt fanRotationArgmax = i(256, 64, &amp;quot;fanRotationArgmax&amp;quot;, Comments.rpm, Comments.fanRotationArgmax);&lt;br /&gt;
&lt;br /&gt;
float distanceFactor = Math.min(speed / config.fanRotationArgmax.get(), 1);&lt;br /&gt;
&lt;br /&gt;
float pushDistance = Mth.lerp(distanceFactor, 3, config.fanPushDistance.get());&lt;br /&gt;
&lt;br /&gt;
这上面4是控制距离的，阅读易得距离k=speed/256*17+3&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
float sneakModifier = entity.isShiftKeyDown() ? 4096f : 512f;&lt;br /&gt;
&lt;br /&gt;
float speed = Math.abs(source.getSpeed());&lt;br /&gt;
&lt;br /&gt;
float acceleration = (float) (speed / sneakModifier / (entityDistance / maxDistance));&lt;br /&gt;
&lt;br /&gt;
这3控制吹生物速度，没啥用&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
public final ConfigInt inWorldProcessingTime = i(150, 0, &amp;quot;inWorldProcessingTime&amp;quot;, Comments.inWorldProcessingTime);&lt;br /&gt;
&lt;br /&gt;
int timeModifierForStackSize = ((entity.getItem().getCount() - 1) / 16) + 1;&lt;br /&gt;
&lt;br /&gt;
int processingTime = (int) (AllConfigs.SERVER.kinetics.inWorldProcessingTime.get() * timeModifierForStackSize) + 1;&lt;br /&gt;
&lt;br /&gt;
int value = processing.getInt(&amp;quot;Time&amp;quot;) - 1;&lt;br /&gt;
&lt;br /&gt;
processing.putInt(&amp;quot;Time&amp;quot;, value);&lt;br /&gt;
&lt;br /&gt;
这堆是控制处理时间的，一叠物品的总处理时间是... (（数量-1）/16+1)*150... tick&lt;br /&gt;
&lt;br /&gt;
将处理时间乘处理数量即为处理效率，使用excel轻松得&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;/div&gt;</summary>
		<author><name>120.231.138.216</name></author>
	</entry>
	<entry>
		<id>http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=8000</id>
		<title>机械动力机器数值分析</title>
		<link rel="alternate" type="text/html" href="http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=8000"/>
		<updated>2023-01-28T14:28:10Z</updated>

		<summary type="html">&lt;p&gt;120.231.138.216：/* 人话 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;冬季救援整合包里面的应力相对来说获取困难。为了极致地利用应力以及做好机器匹配，我查阅了相关代码并对其进行了分析。由于本人代码水平也不是很好，也没有编写java的经验，难免有解读错误的地方，望大佬继续补充。&lt;br /&gt;
&lt;br /&gt;
== 开始 ==&lt;br /&gt;
&lt;br /&gt;
=== 基础 ===&lt;br /&gt;
1秒是20gametick（20t）&lt;br /&gt;
&lt;br /&gt;
=== 粉碎轮 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
粉碎轮速度相关的代码为&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime = recipe.isPresent() ? recipe.get().getProcessingDuration() : 100;&lt;br /&gt;
&lt;br /&gt;
crushingspeed = compound.getFloat(&amp;quot;Speed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
float speed = crushingspeed * 4;&lt;br /&gt;
&lt;br /&gt;
float processingSpeed =Mth.clamp((speed) / (!inventory.appliedRecipe ? Mth.log2(inventory.getStackInSlot(0).getCount()) : 1), .25f, 20);&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime -= processingSpeed;&lt;br /&gt;
&lt;br /&gt;
其中crushingspeed就是我们给的'''转速/12.5'''，这个速度取速度慢的轮，所以我们统一按两轮等速讨论&lt;br /&gt;
&lt;br /&gt;
每次处理所需要的总进度如果配方有写就按配方，没有就是100（一般都是100）&lt;br /&gt;
&lt;br /&gt;
首先看条件，假如已经吸入了物品（即不是掉落物形态），除数为log2（物品数量），否则按1&lt;br /&gt;
&lt;br /&gt;
但实际上这个没啥用，因为我们都采用溜槽等方式直接跳过了吸入过程，去除了吸入所需时间，因此我们直接按着已吸入计算即可&lt;br /&gt;
&lt;br /&gt;
clamp的作用是限定范围，高于最大值就等于最大值，小于最小值就等于最小值，这里的上下限是0.25和20&lt;br /&gt;
&lt;br /&gt;
为了方便讨论，我们提出一个问题，假设我要总共处理a个物品，可用应力为定值b，单个机器单次处理y个，转速x，求处理总用时t&lt;br /&gt;
&lt;br /&gt;
已知单个机器（两个粉碎轮）rpm为16，由此可以得可用机器数量k=b/16x&lt;br /&gt;
&lt;br /&gt;
我们先假设clamp函数不起作用，不难列出如下公式&lt;br /&gt;
[[文件:FGS01.png|无|缩略图|PS:其实是y&amp;gt;e才单调减，但我懒]]&lt;br /&gt;
其中a,b,T=100为问题一开始就确立的定值，可操作变量为x,y&lt;br /&gt;
&lt;br /&gt;
易得处理总时在一定的总应力下与转速无关，单个机器单次处理量越大处理总需时越小&lt;br /&gt;
&lt;br /&gt;
在这个结论的基础上我们再讨论clamp函数的影响&lt;br /&gt;
&lt;br /&gt;
易知单个机器处理初始速度为&lt;br /&gt;
[[文件:Gs01.png|无|缩略图]]&lt;br /&gt;
另v分别等于0.25与20，我们可以得出，上方公式的适用范围&lt;br /&gt;
[[文件:01FF.png|无|缩略图]]&lt;br /&gt;
高于红线则转速无效，低于蓝线则有增益&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;br /&gt;
在确定总应力下，处理耗时只与单次处理量有关&lt;br /&gt;
&lt;br /&gt;
直接用智能溜槽喂64是最佳选择&lt;br /&gt;
&lt;br /&gt;
粉碎轮转速调成1即可&lt;br /&gt;
&lt;br /&gt;
单位时间产量与转速成正比，1速64堆叠下粉碎轮每秒可处理3.2个物品&lt;br /&gt;
&lt;br /&gt;
=== 辊压机 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
public static final int CYCLE = 240;&lt;br /&gt;
&lt;br /&gt;
prevRunningTicks = runningTicks;&lt;br /&gt;
&lt;br /&gt;
runningTicks += (int) Mth.lerp(Mth.clamp(Math.abs(speed) / 512f, 0, 1), 1, 60);&lt;br /&gt;
&lt;br /&gt;
if (prevRunningTicks &amp;lt; CYCLE / 2 &amp;amp;&amp;amp; runningTicks &amp;gt;= CYCLE / 2) &lt;br /&gt;
&lt;br /&gt;
runningTicks = CYCLE / 2;&lt;br /&gt;
&lt;br /&gt;
if(runningTicks &amp;gt; CYCLE)&lt;br /&gt;
&lt;br /&gt;
完成（）&lt;br /&gt;
&lt;br /&gt;
这里的speed就直接是转速了&lt;br /&gt;
&lt;br /&gt;
lerp函数作用是将0-1小数等比放大到一定范围内&lt;br /&gt;
&lt;br /&gt;
由于cycle很小，mc又按t计算，因此处理速度是阶跃的&lt;br /&gt;
&lt;br /&gt;
观察易得其为两个120的阶跃进度，因此处理速度需要为120的因数才最好，用excel可轻松求出阶跃转速&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;br /&gt;
下表转速为最佳转速，自行选取即可&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|转速&lt;br /&gt;
|增速&lt;br /&gt;
|需时(tick)&lt;br /&gt;
|筛选&lt;br /&gt;
|产量(每秒)&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|120&lt;br /&gt;
|120&lt;br /&gt;
|0.166666667&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|2&lt;br /&gt;
|60&lt;br /&gt;
| -60&lt;br /&gt;
|0.333333333&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|3&lt;br /&gt;
|40&lt;br /&gt;
| -20&lt;br /&gt;
|0.5&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|4&lt;br /&gt;
|30&lt;br /&gt;
| -10&lt;br /&gt;
|0.666666667&lt;br /&gt;
|-&lt;br /&gt;
|35&lt;br /&gt;
|5&lt;br /&gt;
|24&lt;br /&gt;
| -6&lt;br /&gt;
|0.833333333&lt;br /&gt;
|-&lt;br /&gt;
|44&lt;br /&gt;
|6&lt;br /&gt;
|20&lt;br /&gt;
| -4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|53&lt;br /&gt;
|7&lt;br /&gt;
|18&lt;br /&gt;
| -2&lt;br /&gt;
|1.111111111&lt;br /&gt;
|-&lt;br /&gt;
|61&lt;br /&gt;
|8&lt;br /&gt;
|15&lt;br /&gt;
| -3&lt;br /&gt;
|1.333333333&lt;br /&gt;
|-&lt;br /&gt;
|70&lt;br /&gt;
|9&lt;br /&gt;
|14&lt;br /&gt;
| -1&lt;br /&gt;
|1.428571429&lt;br /&gt;
|-&lt;br /&gt;
|79&lt;br /&gt;
|10&lt;br /&gt;
|12&lt;br /&gt;
| -2&lt;br /&gt;
|1.666666667&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|11&lt;br /&gt;
|11&lt;br /&gt;
| -1&lt;br /&gt;
|1.818181818&lt;br /&gt;
|-&lt;br /&gt;
|96&lt;br /&gt;
|12&lt;br /&gt;
|10&lt;br /&gt;
| -1&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|113&lt;br /&gt;
|14&lt;br /&gt;
|9&lt;br /&gt;
| -1&lt;br /&gt;
|2.222222222&lt;br /&gt;
|-&lt;br /&gt;
|122&lt;br /&gt;
|15&lt;br /&gt;
|8&lt;br /&gt;
| -1&lt;br /&gt;
|2.5&lt;br /&gt;
|-&lt;br /&gt;
|148&lt;br /&gt;
|18&lt;br /&gt;
|7&lt;br /&gt;
| -1&lt;br /&gt;
|2.857142857&lt;br /&gt;
|-&lt;br /&gt;
|165&lt;br /&gt;
|20&lt;br /&gt;
|6&lt;br /&gt;
| -1&lt;br /&gt;
|3.333333333&lt;br /&gt;
|-&lt;br /&gt;
|200&lt;br /&gt;
|24&lt;br /&gt;
|5&lt;br /&gt;
| -1&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|252&lt;br /&gt;
|30&lt;br /&gt;
|4&lt;br /&gt;
| -1&lt;br /&gt;
|5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>120.231.138.216</name></author>
	</entry>
	<entry>
		<id>http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7995</id>
		<title>机械动力机器数值分析</title>
		<link rel="alternate" type="text/html" href="http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7995"/>
		<updated>2023-01-28T13:03:15Z</updated>

		<summary type="html">&lt;p&gt;120.231.138.216：/* 分析 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;冬季救援整合包里面的应力相对来说获取困难。为了极致地利用应力以及做好机器匹配，我查阅了相关代码并对其进行了分析。由于本人代码水平也不是很好，也没有编写java的经验，难免有解读错误的地方，望大佬继续补充。&lt;br /&gt;
&lt;br /&gt;
=== 粉碎轮 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
粉碎轮速度相关的代码为&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime = recipe.isPresent() ? recipe.get().getProcessingDuration() : 100;&lt;br /&gt;
&lt;br /&gt;
crushingspeed = compound.getFloat(&amp;quot;Speed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
float speed = crushingspeed * 4;&lt;br /&gt;
&lt;br /&gt;
float processingSpeed =Mth.clamp((speed) / (!inventory.appliedRecipe ? Mth.log2(inventory.getStackInSlot(0).getCount()) : 1), .25f, 20);&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime -= processingSpeed;&lt;br /&gt;
&lt;br /&gt;
其中crushingspeed就是我们给的'''转速/12.5'''，这个速度取速度慢的轮，所以我们统一按两轮等速讨论&lt;br /&gt;
&lt;br /&gt;
每次处理所需要的总进度如果配方有写就按配方，没有就是100（一般都是100）&lt;br /&gt;
&lt;br /&gt;
首先看条件，假如已经吸入了物品（即不是掉落物形态），除数为log2（物品数量），否则按1&lt;br /&gt;
&lt;br /&gt;
但实际上这个没啥用，因为我们都采用溜槽等方式直接跳过了吸入过程，去除了吸入所需时间，因此我们直接按着已吸入计算即可&lt;br /&gt;
&lt;br /&gt;
clamp的作用是限定范围，高于最大值就等于最大值，小于最小值就等于最小值，这里的上下限是0.25和20&lt;br /&gt;
&lt;br /&gt;
为了方便讨论，我们提出一个问题，假设我要总共处理a个物品，可用应力为定值b，单个机器单次处理y个，转速x，求处理总用时t&lt;br /&gt;
&lt;br /&gt;
已知单个机器（两个粉碎轮）rpm为16，由此可以得可用机器数量k=b/16x&lt;br /&gt;
&lt;br /&gt;
我们先假设clamp函数不起作用，不难列出如下公式&lt;br /&gt;
[[文件:FGS01.png|无|缩略图|PS:其实是y&amp;gt;e才单调减，但我懒]]&lt;br /&gt;
其中a,b,T=100为问题一开始就确立的定值，可操作变量为x,y&lt;br /&gt;
&lt;br /&gt;
易得处理总时在一定的总应力下与转速无关，单个机器单次处理量越大处理总需时越小&lt;br /&gt;
&lt;br /&gt;
在这个结论的基础上我们再讨论clamp函数的影响&lt;br /&gt;
&lt;br /&gt;
易知单个机器处理初始速度为&lt;br /&gt;
[[文件:Gs01.png|无|缩略图]]&lt;br /&gt;
另v分别等于0.25与20，我们可以得出，上方公式的适用范围&lt;br /&gt;
&lt;br /&gt;
高于红线则转速无效(，低于蓝线则有增益&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;br /&gt;
在确定总应力下，处理耗时只与单次处理量有关&lt;br /&gt;
&lt;br /&gt;
直接用智能溜槽喂64是最佳选择&lt;br /&gt;
&lt;br /&gt;
粉碎轮转速不得过高，在64堆叠处理下速度不应超过30速&lt;/div&gt;</summary>
		<author><name>120.231.138.216</name></author>
	</entry>
	<entry>
		<id>http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7994</id>
		<title>机械动力机器数值分析</title>
		<link rel="alternate" type="text/html" href="http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7994"/>
		<updated>2023-01-28T12:57:21Z</updated>

		<summary type="html">&lt;p&gt;120.231.138.216：/* 分析 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;冬季救援整合包里面的应力相对来说获取困难。为了极致地利用应力以及做好机器匹配，我查阅了相关代码并对其进行了分析。由于本人代码水平也不是很好，也没有编写java的经验，难免有解读错误的地方，望大佬继续补充。&lt;br /&gt;
&lt;br /&gt;
=== 粉碎轮 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
粉碎轮速度相关的代码为&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime = recipe.isPresent() ? recipe.get().getProcessingDuration() : 100;&lt;br /&gt;
&lt;br /&gt;
crushingspeed = compound.getFloat(&amp;quot;Speed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
float speed = crushingspeed * 4;&lt;br /&gt;
&lt;br /&gt;
float processingSpeed =Mth.clamp((speed) / (!inventory.appliedRecipe ? Mth.log2(inventory.getStackInSlot(0).getCount()) : 1), .25f, 20);&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime -= processingSpeed;&lt;br /&gt;
&lt;br /&gt;
其中crushingspeed就是我们给的'''转速/100'''，这个速度取速度慢的轮，所以我们统一按两轮等速讨论&lt;br /&gt;
&lt;br /&gt;
每次处理所需要的总进度是一样的，都是100，与物品种类无关&lt;br /&gt;
&lt;br /&gt;
首先看条件，假如已经吸入了物品（即不是掉落物形态），除数为log2（物品数量），否则按1&lt;br /&gt;
&lt;br /&gt;
但实际上这个没啥用，因为我们都采用溜槽等方式直接跳过了吸入过程，去除了吸入所需时间，因此我们直接按着已吸入计算即可&lt;br /&gt;
&lt;br /&gt;
clamp的作用是限定范围，高于最大值就等于最大值，小于最小值就等于最小值，这里的上下限是0.25和20&lt;br /&gt;
&lt;br /&gt;
为了方便讨论，我们提出一个问题，假设我要总共处理a个物品，可用应力为定值b，单个机器单次处理y个，转速x，求处理总用时t&lt;br /&gt;
&lt;br /&gt;
已知单个机器（两个粉碎轮）rpm为16，由此可以得可用机器数量k=b/16x&lt;br /&gt;
&lt;br /&gt;
我们先假设clamp函数不起作用，不难列出如下公式&lt;br /&gt;
[[文件:FGS01.png|无|缩略图]]&lt;br /&gt;
其中a,b,T=100为问题一开始就确立的定值，可操作变量为x,y&lt;br /&gt;
&lt;br /&gt;
易得处理总时在一定的总应力下与转速无关，单个机器单次处理量越大处理总需时越小&lt;br /&gt;
&lt;br /&gt;
在这个结论的基础上我们再讨论clamp函数的影响&lt;br /&gt;
&lt;br /&gt;
易知单个机器处理初始速度为&lt;br /&gt;
[[文件:Gs01.png|无|缩略图]]&lt;br /&gt;
另v分别等于0.25与20，我们可以得出，上方公式的适用范围&lt;br /&gt;
[[文件:01F.png|无|缩略图|纵坐标转速，横坐标处理量]]&lt;br /&gt;
高于红线则转速无效(，低于蓝线则有增益&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;br /&gt;
在确定总应力下，处理耗时只与单次处理量有关&lt;br /&gt;
&lt;br /&gt;
直接用智能溜槽喂64是最佳选择&lt;br /&gt;
&lt;br /&gt;
粉碎轮转速不得过高，在64堆叠处理下速度不应超过30速&lt;/div&gt;</summary>
		<author><name>120.231.138.216</name></author>
	</entry>
	<entry>
		<id>http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7992</id>
		<title>机械动力机器数值分析</title>
		<link rel="alternate" type="text/html" href="http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7992"/>
		<updated>2023-01-28T08:35:54Z</updated>

		<summary type="html">&lt;p&gt;120.231.138.216：/* 分析 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;冬季救援整合包里面的应力相对来说获取困难。为了极致地利用应力以及做好机器匹配，我查阅了相关代码并对其进行了分析。由于本人代码水平也不是很好，也没有编写java的经验，难免有解读错误的地方，望大佬继续补充。&lt;br /&gt;
&lt;br /&gt;
=== 粉碎轮 ===&lt;br /&gt;
&lt;br /&gt;
==== 分析 ====&lt;br /&gt;
粉碎轮速度相关的代码为&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime = recipe.isPresent() ? recipe.get().getProcessingDuration() : 100;&lt;br /&gt;
&lt;br /&gt;
crushingspeed = compound.getFloat(&amp;quot;Speed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
float speed = crushingspeed * 4;&lt;br /&gt;
&lt;br /&gt;
float processingSpeed =Mth.clamp((speed) / (!inventory.appliedRecipe ? Mth.log2(inventory.getStackInSlot(0).getCount()) : 1), .25f, 20);&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime -= processingSpeed;&lt;br /&gt;
&lt;br /&gt;
其中crushingspeed就是我们给的速度，这个速度我不是很清楚是取速度快还是慢的轮，所以我们统一按两轮等速讨论&lt;br /&gt;
&lt;br /&gt;
每次处理所需要的总进度是一样的，都是100，与物品种类无关&lt;br /&gt;
&lt;br /&gt;
首先看条件，假如已经吸入了物品（即不是掉落物形态），除数为log2（物品数量），否则按1&lt;br /&gt;
&lt;br /&gt;
但实际上这个没啥用，因为我们都采用溜槽等方式直接跳过了吸入过程，去除了吸入所需时间，因此我们直接按着已吸入计算即可&lt;br /&gt;
&lt;br /&gt;
clamp的作用是限定范围，高于最大值就等于最大值，小于最小值就等于最小值，这里的上下限是0.25和20&lt;br /&gt;
&lt;br /&gt;
为了方便讨论，我们提出一个问题，假设我要总共处理a个物品，可用应力为定值b，单个机器单次处理y个，转速x，求处理总用时t&lt;br /&gt;
&lt;br /&gt;
已知单个机器（两个粉碎轮）rpm为16，由此可以得可用机器数量k=b/16x&lt;br /&gt;
&lt;br /&gt;
我们先假设clamp函数不起作用，不难列出如下公式&lt;br /&gt;
[[文件:FGS01.png|无|缩略图]]&lt;br /&gt;
其中a,b,T=100为问题一开始就确立的定值，可操作变量为x,y&lt;br /&gt;
&lt;br /&gt;
易得处理总时在一定的总应力下与转速无关，单个机器单次处理量越大处理总需时越小&lt;br /&gt;
&lt;br /&gt;
在这个结论的基础上我们再讨论clamp函数的影响&lt;br /&gt;
&lt;br /&gt;
易知单个机器处理初始速度为&lt;br /&gt;
[[文件:Gs01.png|无|缩略图]]&lt;br /&gt;
另v分别等于0.25与20，我们可以得出，上方公式的适用范围&lt;br /&gt;
[[文件:01F.png|无|缩略图|纵坐标转速，横坐标处理量]]&lt;br /&gt;
高于红线则转速无效，低于蓝线则有增益（但是0.3速）&lt;br /&gt;
&lt;br /&gt;
==== 人话 ====&lt;br /&gt;
在确定总应力下，处理耗时只与单次处理量有关&lt;br /&gt;
&lt;br /&gt;
直接用智能溜槽喂64是最佳选择&lt;br /&gt;
&lt;br /&gt;
粉碎轮转速不得过高，在64堆叠处理下速度不应超过30速&lt;/div&gt;</summary>
		<author><name>120.231.138.216</name></author>
	</entry>
	<entry>
		<id>http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7985</id>
		<title>机械动力机器数值分析</title>
		<link rel="alternate" type="text/html" href="http://wiki.teammoeg.com/index.php?title=%E6%9C%BA%E6%A2%B0%E5%8A%A8%E5%8A%9B%E6%9C%BA%E5%99%A8%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90&amp;diff=7985"/>
		<updated>2023-01-28T07:08:42Z</updated>

		<summary type="html">&lt;p&gt;120.231.138.216：创建页面，内容为“冬季救援整合包里面的应力相对来说获取困难。为了极致地利用应力以及做好机器匹配，我查阅了相关代码并对其进行了分析…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;冬季救援整合包里面的应力相对来说获取困难。为了极致地利用应力以及做好机器匹配，我查阅了相关代码并对其进行了分析。由于本人代码水平也不是很好，也没有编写java的经验，难免有解读错误的地方，望大佬继续补充。&lt;br /&gt;
&lt;br /&gt;
=== 粉碎轮 ===&lt;br /&gt;
粉碎轮速度相关的代码为&lt;br /&gt;
&lt;br /&gt;
crushingspeed = compound.getFloat(&amp;quot;Speed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
float speed = crushingspeed * 4;&lt;br /&gt;
&lt;br /&gt;
float processingSpeed =Mth.clamp((speed) / (!inventory.appliedRecipe ? Mth.log2(inventory.getStackInSlot(0).getCount()) : 1), .25f, 20);&lt;br /&gt;
&lt;br /&gt;
inventory.remainingTime -= processingSpeed;&lt;br /&gt;
&lt;br /&gt;
其中crushingspeed就是我们给的速度，这个速度我不是很清楚是取速度快还是慢的轮，所以我们统一按两轮等速讨论&lt;br /&gt;
&lt;br /&gt;
首先看条件，假如已经吸入了物品（即不是掉落物形态），除数为log2（物品数量），否则按1&lt;br /&gt;
&lt;br /&gt;
但实际上这个没啥用，因为我们都采用溜槽等方式直接跳过了吸入过程，去除了吸入所需时间，因此我们直接按着已吸入计算即可&lt;br /&gt;
&lt;br /&gt;
clamp的作用是限定范围，高于最大值就等于最大值，小于最小值就等于最小值，这里的上下限是0.25和20&lt;br /&gt;
&lt;br /&gt;
为了方便讨论，我们将公式整理为如下形式&lt;/div&gt;</summary>
		<author><name>120.231.138.216</name></author>
	</entry>
</feed>