XFEstudio/MCIndustry
优化磁铜传送带逻辑
9d46527
代码差异
2 个文件
+29
-12
@@ -2,6 +2,6 @@
2
2
name:磁铜工业
3
3
author:XFEstudio
4
4
"description":"[purple]磁铜工业,适合度过前期,以及为后期增加各类工厂工业制造模块,方便传输,增加新炮塔及工厂,全工业基于磁铜,持续测试中"
5
version:"2.50"
5
version:"2.51"
6
6
minGameVersion:136
7
7
}
@@ -1,26 +1,43 @@
1
1
// StackConveyor 的标称速度是“整组容量 × 每秒移动组数”。原版装载端仍然
2
2
// 等待相邻建筑逐件 dump,所以单个物品源会先被 100/s 的输出上限卡住。
3
// 磁铜传送带在装载状态下从相邻 ItemSource 补满一组,使 25 件物品可以真正
3
// 磁铜传送带在装载状态下从相邻 ItemSource 或 Drill 补满一组,使 25 件物品可以真正
4
4
// 每 3 tick 向前移动一次,即 25 × 60 / 3 = 500 件/秒。
5
5
function pullFrom(magneticConveyor, build, source, room){
6
6
if(source == null || source == build.front() || source.team != build.team){
7
7
return 0;
8
8
}
9
9
10
// 只对无限物品源做主动补组。普通工厂、核心和仓库仍沿用原版输入
11
// 规则,避免传送带错误抽走配方原料或绕过卸载器。
12
if(!(source.block instanceof ItemSource)){
13
return 0;
10
if(source.block instanceof ItemSource){
11
// ItemSource 没有持久库存;outputItem 就是无限供应的配置物品。
12
const item = source.outputItem;
13
if(item == null || (build.items.any() && !build.items.has(item)) || !source.canDump(build, item)){
14
return 0;
15
}
16
17
build.handleStack(item, room, source);
18
return room;
14
19
}
15
20
16
// ItemSource 没有持久库存;它的 outputItem 就是无限供应的配置物品。
17
const item = source.outputItem;
18
if(item == null || (build.items.any() && !build.items.has(item)) || !source.canDump(build, item)){
19
return 0;
21
if(source.block instanceof Drill){
22
// 钻头只会产出 dominantItem,因此可以安全地批量取走该物品;不能
23
// 使用 items.first(),否则将来扩展钻头时可能误取其他内部物品。
24
const item = source.dominantItem;
25
if(item == null || (build.items.any() && !build.items.has(item)) ||
26
!source.items.has(item) || !source.canDump(build, item)){
27
return 0;
28
}
29
30
const amount = Math.min(room, source.items.get(item));
31
const removed = source.removeStack(item, amount);
32
if(removed > 0){
33
build.handleStack(item, removed, source);
34
}
35
return removed;
20
36
}
21
37
22
build.handleStack(item, room, source);
23
return room;
38
// 普通工厂、核心和仓库仍沿用原版输入规则,避免传送带错误抽走
39
// 配方原料或绕过卸载器。
40
return 0;
24
41
}
25
42
26
43
function fillLoadingDock(magneticConveyor, build){