Compare commits
11 Commits
b8689fb78f
...
main
Author | SHA1 | Date | |
---|---|---|---|
97acc9b466 | |||
dc7d2c54f0 | |||
c277dc9623 | |||
b9dc5a5d35 | |||
da57201c78 | |||
55fb28ee19 | |||
fe01e1935c | |||
76e47dffbd | |||
aa855105b2 | |||
0ead4d6084 | |||
46f9ef0df6 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,2 +1,3 @@
|
|||||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||||
*.png filter=lfs diff=lfs merge=lfs -text
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
@@ -80,6 +80,18 @@ Total:
|
|||||||
- 1 Diamond
|
- 1 Diamond
|
||||||
- 13 Glass
|
- 13 Glass
|
||||||
|
|
||||||
|
### Early EU machines
|
||||||
|
Get the following:
|
||||||
|
- Plate Bending Machine
|
||||||
|
- Singularity Compressor
|
||||||
|
- Induction Furnace
|
||||||
|
- Rotary Macerator
|
||||||
|
|
||||||
|
Also needed:
|
||||||
|
- Alloy Furnace for brass
|
||||||
|
|
||||||
|
For more details see [here](./calculations/early_machines.md)
|
||||||
|
|
||||||
### Early Necessary MF Machines
|
### Early Necessary MF Machines
|
||||||
- MV Consumer
|
- MV Consumer
|
||||||
- Energy Bridge
|
- Energy Bridge
|
||||||
@@ -98,7 +110,7 @@ Total:
|
|||||||
- ~3 Farms needed at the end
|
- ~3 Farms needed at the end
|
||||||
|
|
||||||
### Autospawner Mob Farm
|
### Autospawner Mob Farm
|
||||||
**Wichtige Mobs**
|
**Important Mobs**
|
||||||
- Ghast (for Safari Nets, find the small ghasts in the twilight forest, take magic map, icon is the cactus-looking white symbol)
|
- Ghast (for Safari Nets, find the small ghasts in the twilight forest, take magic map, icon is the cactus-looking white symbol)
|
||||||
- Enderman
|
- Enderman
|
||||||
- Witch (get by transformation powder on skeleton druid in the twilight forest)
|
- Witch (get by transformation powder on skeleton druid in the twilight forest)
|
||||||
@@ -114,19 +126,22 @@ Total:
|
|||||||
|
|
||||||
### ME Automation
|
### ME Automation
|
||||||
|
|
||||||
**5x5x5 Crafter**:
|
**4x4x5 ME crafting cube**
|
||||||
- 44 Containment Walls
|
- 6 pattern provider
|
||||||
- 54 Heat Vents
|
- 6 crafting cpus
|
||||||
- 18 Crafting CPUs
|
- 32 heat vent
|
||||||
- 9 Pattern Provider
|
- 36 containment walls
|
||||||
|
|
||||||
*probably balance more towards more crafting CPUs, fewer pattern providers*
|
**Total resources**:
|
||||||
|
- 96 quartz
|
||||||
|
- 56 quartz dust (32 for silicone -> 12 adv. + 20. basic circuits)
|
||||||
|
- 164 gold
|
||||||
|
- 12 diamonds
|
||||||
|
|
||||||
**Total**:
|
- 416 iron
|
||||||
- 160 Quartz
|
- 176 redstone
|
||||||
- 96 Quartz Dust
|
- 12 glowstone
|
||||||
- 27 Diamonds
|
- 48 glass
|
||||||
- 235 Gold
|
|
||||||
|
|
||||||
### Blast Furnace
|
### Blast Furnace
|
||||||
34x Blocks
|
34x Blocks
|
||||||
@@ -144,6 +159,8 @@ total 32x Blast Furnaces, 4x2x4:
|
|||||||
### Power Upgrade
|
### Power Upgrade
|
||||||
- +1 stack geothermal generators
|
- +1 stack geothermal generators
|
||||||
|
|
||||||
|
For details see [here](./calculations/geothermial_power.md).
|
||||||
|
|
||||||
### Plate-Bender setups:
|
### Plate-Bender setups:
|
||||||
- 4x Iron plates, limit 2048
|
- 4x Iron plates, limit 2048
|
||||||
- 2x Steel plates, limit 512
|
- 2x Steel plates, limit 512
|
||||||
@@ -172,7 +189,7 @@ to run per layer (32 boilers):
|
|||||||
- 4 bioreactors
|
- 4 bioreactors
|
||||||
- produce 5600EU/t
|
- produce 5600EU/t
|
||||||
|
|
||||||
In 3x3 Chunk Fläche:
|
In 3x3 Chunk Area:
|
||||||
- 2 x 16 boilers per layer
|
- 2 x 16 boilers per layer
|
||||||
- ~4 layers -> 128 boilers
|
- ~4 layers -> 128 boilers
|
||||||
|
|
||||||
@@ -200,28 +217,40 @@ In 3x3 Chunk Fläche:
|
|||||||
|
|
||||||
## Mid Game
|
## Mid Game
|
||||||
|
|
||||||
|
### Lava centrifuges
|
||||||
|
At some point, start building centrifuges for lava producing copper and tin! Start with 32 or 64, then expand later.
|
||||||
|
|
||||||
|
For more details [see here](./calculations/lava_calcs.md).
|
||||||
|
|
||||||
### Frame Quarry
|
### Frame Quarry
|
||||||
- 144 Support Frames (+32-64 later)
|
|
||||||
|
This material list is optimized for running in a eternal day, Meadow single biome, flat Mystcraft world.
|
||||||
|
It's not protected against falling gravel or flowing liquids from above.
|
||||||
|
|
||||||
|
- 128 Support Frames
|
||||||
- 120 Redstone Tube Frames
|
- 120 Redstone Tube Frames
|
||||||
- 16 Tube Frames
|
- 16 Tube Frames
|
||||||
|
|
||||||
**Other Mats**:
|
**Other Mats**:
|
||||||
48 Mining Wells
|
- 48 Mining Wells
|
||||||
24 Deployer
|
- 16 Deployer
|
||||||
80 Block Breaker
|
- 81 Block Breaker
|
||||||
8 Item Tesseracts
|
- 9 Item Tesseracts
|
||||||
8 Energy Tesseracts
|
- 9 Energy Tesseracts
|
||||||
64 Red Alloy Wire
|
- 64 Red Alloy Wire
|
||||||
2 Repeater
|
- 3 Repeater
|
||||||
1 Timer
|
- 1 Timer
|
||||||
2 Frame Motors
|
- 1 Lever
|
||||||
9 Solar Panels
|
- 2 Frame Motors
|
||||||
1 Battery Box
|
- 8 Solar Panels
|
||||||
1 Wireless Receiver
|
- 1 Battery Box
|
||||||
1 Wireless Transmitter
|
- 17 Jacketed Wire
|
||||||
20 Jacketed Wire
|
- ca. 128 Cobblestone Panel
|
||||||
1 Ender Chest
|
- ca. 128 Cobblestone Cover
|
||||||
3 Control Tracks
|
- 2 Cobblestone Cover Strip
|
||||||
|
- 1 Ender Chest / Item Tesseract
|
||||||
|
- 1 Chunk Loader
|
||||||
|
- 1 Screwdriver
|
||||||
|
|
||||||
### Industrial Blast
|
### Industrial Blast
|
||||||
|
|
||||||
@@ -277,19 +306,19 @@ Keep enough for Assemblers making Data Control Circuits etc.
|
|||||||
- 1 stack of centrifuges for platinum dust
|
- 1 stack of centrifuges for platinum dust
|
||||||
- Keep ~300 platinum for circuit boards for the fusion
|
- Keep ~300 platinum for circuit boards for the fusion
|
||||||
|
|
||||||
More details [here](./material%20calculations/iridium_calcs.md)
|
More details [here](./calculations/iridium_calcs.md)
|
||||||
|
|
||||||
### For Chrome (need 526)
|
### For Chrome (need 526)
|
||||||
- 4 IBFs for chrome dust -> chrome ingots
|
- 4 IBFs for chrome dust -> chrome ingots
|
||||||
- 4 electrolyzers on ruby dust -> chrome dust
|
- 4 electrolyzers on ruby dust -> chrome dust
|
||||||
- 3 stacks centrifuges for redstone -> ruby dust
|
- 3 stacks centrifuges for redstone -> ruby dust
|
||||||
|
|
||||||
More details [here](./material%20calculations/chrome_calcs.md)
|
More details [here](./calculations/chrome_calcs.md)
|
||||||
|
|
||||||
### For Titanium (need 280)
|
### For Titanium (need 280)
|
||||||
- 16 electrolyzers on bauxite dust
|
- 16 electrolyzers on bauxite dust
|
||||||
|
|
||||||
More details [here](./material%20calculations/titanium_calcs.md)
|
More details [here](./calculations/titanium_calcs.md)
|
||||||
|
|
||||||
### For Beryllium (need 264)
|
### For Beryllium (need 264)
|
||||||
- 4 electrolyzers on ender pearl dust
|
- 4 electrolyzers on ender pearl dust
|
||||||
@@ -358,4 +387,3 @@ Total of 57 Superconductors required (15 recipes of 4):
|
|||||||
## Charging the Reactor:
|
## Charging the Reactor:
|
||||||
- Assuming full throughput, the 4 Energy Injectors can accept 32768EU/t, taking about 1 minute to fully charge the required 40 million EU.
|
- Assuming full throughput, the 4 Energy Injectors can accept 32768EU/t, taking about 1 minute to fully charge the required 40 million EU.
|
||||||
- This would require 64 boiler pairs (4 layers) with at least partially charged MFSUs, or 85 boiler pairs without any buffer dedicated to the charging.
|
- This would require 64 boiler pairs (4 layers) with at least partially charged MFSUs, or 85 boiler pairs without any buffer dedicated to the charging.
|
||||||
|
|
26
calculations/early_machines.md
Normal file
26
calculations/early_machines.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# Early EU machines
|
||||||
|
|
||||||
|
Assuming a geothermal generator already exists
|
||||||
|
|
||||||
|
## Suggested Crafting order:
|
||||||
|
|
||||||
|
### First
|
||||||
|
- Craft 9 electronic circuits, one of them to advanced
|
||||||
|
- Craft 1 battery
|
||||||
|
- Craft 7 machine blocks
|
||||||
|
- Craft 3 compressors
|
||||||
|
- Craft plate bending machine
|
||||||
|
|
||||||
|
### Second
|
||||||
|
- Use leftover cable to connect compressor and plate bending machine to power
|
||||||
|
- Make invar through dust mixing (2 iron + 1 nickel/ferrous)
|
||||||
|
- Make brass in alloy furnace (3 copper ingots + 1 tin ingot)
|
||||||
|
- Make 6 mixed metal ingots from 3 invar plates + 3 brass plates + 3 tin plates
|
||||||
|
- Make 6 carbon plates from 48 coal dust
|
||||||
|
|
||||||
|
### Third
|
||||||
|
- Take the compressor
|
||||||
|
- Craft singularity compressor
|
||||||
|
- Craft rotary macerator
|
||||||
|
- Craft induction furnace
|
||||||
|
- Put levers on them
|
31
calculations/geothermial_power.md
Normal file
31
calculations/geothermial_power.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Power from lava in geothermial generators
|
||||||
|
|
||||||
|
## Production
|
||||||
|
|
||||||
|
1 Geothermal Generator produces 20EU/t with lava and consumes 1 bucket of lava in 50s at max capacity. 32 Generators produce 640EU/t and 64 produce 1280EU/t.
|
||||||
|
|
||||||
|
## Cost
|
||||||
|
|
||||||
|
1 Geothermal Generator needs:
|
||||||
|
- 10 refined iron
|
||||||
|
- 6 tin
|
||||||
|
- 4 glass
|
||||||
|
- 2 redstone
|
||||||
|
- 1/2 copper
|
||||||
|
- 1 rubber
|
||||||
|
|
||||||
|
32 need:
|
||||||
|
- 5 stacks of iron (320)
|
||||||
|
- 3 stacks of tin (192)
|
||||||
|
- 2 stacks of glass (128)
|
||||||
|
- 1 stack of redstone (64)
|
||||||
|
- 18 copper -> 36x cable
|
||||||
|
- 36 rubber -> 36x cable
|
||||||
|
|
||||||
|
64 need:
|
||||||
|
- 10 stacks of iron (640)
|
||||||
|
- 6 stacks of tin (384)
|
||||||
|
- 4 stacks of glass (256)
|
||||||
|
- 2 stacks of redstone (128)
|
||||||
|
- 33 copper -> 66x cable
|
||||||
|
- 66 rubber -> 66x cable
|
29
calculations/lava_calcs.md
Normal file
29
calculations/lava_calcs.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Lava centrifuging to Copper and Tin
|
||||||
|
|
||||||
|
## Production
|
||||||
|
|
||||||
|
One centrifuge converts 16 Lava buckets to 4 Copper Ingots, 2 Tin Ingots, 1 Electrum Ingot and 2 tiny piles of Tungsten in 500 seconds, using 5EU/t.
|
||||||
|
|
||||||
|
| Item | 1 centrifuge | 64 | 128 | 192 | 256 | 6 stacks | 8 stacks | 10 stacks |
|
||||||
|
|------|--------------|----|-----|-----|-----|----------|----------|-----------|
|
||||||
|
| Lava per Minute | 1.92 | 123 | 246 | 369 | 492 | 737 | 983 | 1229 |
|
||||||
|
| Copper per Minute | 0.48 | 31 | 61 | 92 | 123 | 184 | 246 | 307 |
|
||||||
|
| Tin per Minute | 0.24 | 15 | 31 | 46 | 61 | 92 | 123 | 154 |
|
||||||
|
| Electrum per Minute | 0.12 | 7.7 | 15 | 23 | 31 | 46 | 61 | 77 |
|
||||||
|
| EU/t | 5 | 320 | 640 | 960 | 1280 | 1920 | 2560 | 3200 |
|
||||||
|
|
||||||
|
Roughly one pair of boilers needed per stack of centrifuges, or 16 Geothermal Generators.
|
||||||
|
|
||||||
|
## Centrifuge cost
|
||||||
|
|
||||||
|
| Item | For 1 Centrifuge | For 1 Stack | For 3 Stacks |
|
||||||
|
---|---|---|---
|
||||||
|
refined iron | 31 | 1984 | 5952
|
||||||
|
redstone | 14 | 896 | 2688
|
||||||
|
copper | 9 | 576 | 1728
|
||||||
|
rubber | 18 | 1152 | 3456
|
||||||
|
glowstone | 4 | 256 | 768
|
||||||
|
lapis | 4 | 256 | 768
|
||||||
|
advanced alloys | 4 | 256 | 768
|
||||||
|
coal dust (for carbon plates) | 32 | 2048 | 6144
|
||||||
|
planks | 20 | 1280 | 3840
|
BIN
images/centrifuge_turtle_setup.png
(Stored with Git LFS)
Normal file
BIN
images/centrifuge_turtle_setup.png
(Stored with Git LFS)
Normal file
Binary file not shown.
6
original_code/README.md
Normal file
6
original_code/README.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Original Programs
|
||||||
|
|
||||||
|
The code in this directory is not written by me and only here for reference.
|
||||||
|
|
||||||
|
## quarry program
|
||||||
|
`quarry -oreQuarry true -enderChest 16 -doRefuel false -dumpCompareItems false -invert false -rednet false -dim 16 16 70`
|
21
soulcage_statistics/data.csv
Normal file
21
soulcage_statistics/data.csv
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
spawners,redstone,glowstone,sugar,sticks,bottles,gunpowder,eyes
|
||||||
|
1,134,128,175,324,135,149,170
|
||||||
|
2,313,339,333,575,339,322,279
|
||||||
|
3,466,468,506,940,469,504,463
|
||||||
|
4,627,620,599,1171,558,644,601
|
||||||
|
5,773,710,791,1451,736,782,741
|
||||||
|
6,768,815,800,1735,863,889,854
|
||||||
|
7,976,890,963,2054,966,951,916
|
||||||
|
8,997,977,1015,2102,1024,1071,1078
|
||||||
|
9,1089,1053,1112,2137,1093,1057,1052
|
||||||
|
10,1084,1052,1108,2226,1143,1128,1128
|
||||||
|
11,1154,1152,1223,2342,1194,1150,1130
|
||||||
|
12,1232,1188,1151,2236,1215,1190,1135
|
||||||
|
13,1292,1232,1273,2432,1264,1273,1223
|
||||||
|
14,1358,1308,1360,2536,1284,1350,1357
|
||||||
|
15,1251,1356,1236,2742,1233,1334,1263
|
||||||
|
16,1321,1395,1393,2768,1345,1440,1346
|
||||||
|
17,1495,1379,1472,2764,1440,1456,1408
|
||||||
|
18,1506,1496,1382,2829,1450,1528,1416
|
||||||
|
19,1526,1314,1455,2988,1574,1453,1469
|
||||||
|
20,1559,1602,1471,2942,1531,1577,1531
|
|
BIN
soulcage_statistics/individual_items_rates.pdf
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/individual_items_rates.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/individual_items_rates.png
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/individual_items_rates.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/item_ratios.pdf
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/item_ratios.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/item_ratios.png
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/item_ratios.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/items_per_tower.pdf
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/items_per_tower.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/items_per_tower.png
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/items_per_tower.png
(Stored with Git LFS)
Normal file
Binary file not shown.
105
soulcage_statistics/main.jl
Normal file
105
soulcage_statistics/main.jl
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
using Plots
|
||||||
|
using CSV
|
||||||
|
using DataFrames
|
||||||
|
|
||||||
|
df = CSV.read("data.csv", DataFrame)
|
||||||
|
|
||||||
|
@. df.total = (df.redstone + df.glowstone + df.sugar + df.sticks + df.bottles + df.gunpowder + df.eyes)
|
||||||
|
@. df.total_rate = df.total / 5
|
||||||
|
|
||||||
|
scatter(
|
||||||
|
df.spawners,
|
||||||
|
df.total_rate,
|
||||||
|
title="Total items per minute",
|
||||||
|
label="Single drop tower",
|
||||||
|
xlabel="Spawners",
|
||||||
|
ylabel="Items per Minute",
|
||||||
|
ylim=(0, :auto),
|
||||||
|
xticks=[1, 4, 8, 12, 16, 20]
|
||||||
|
)
|
||||||
|
savefig("total.pdf")
|
||||||
|
savefig("total.png")
|
||||||
|
|
||||||
|
@. df.per_spawner = df.total_rate / df.spawners
|
||||||
|
|
||||||
|
scatter(
|
||||||
|
df.spawners,
|
||||||
|
df.per_spawner,
|
||||||
|
title="Items per minute per spawner",
|
||||||
|
label="Single drop tower",
|
||||||
|
xlabel="Spawners",
|
||||||
|
ylabel="Items per Minute",
|
||||||
|
ylim=(0, :auto),
|
||||||
|
xticks=[1, 4, 8, 12, 16, 20]
|
||||||
|
)
|
||||||
|
savefig("per_spawner.pdf")
|
||||||
|
savefig("per_spawner.png")
|
||||||
|
|
||||||
|
@. df.redstone_rate_per_spawner = df.redstone / df.spawners / 5
|
||||||
|
@. df.glowstone_rate_per_spawner = df.glowstone / df.spawners / 5
|
||||||
|
@. df.bottles_rate_per_spawner = df.bottles / df.spawners / 5
|
||||||
|
@. df.sugar_rate_per_spawner = df.sugar / df.spawners / 5
|
||||||
|
@. df.gunpowder_rate_per_spawner = df.gunpowder / df.spawners / 5
|
||||||
|
@. df.sticks_rate_per_spawner = df.sticks / df.spawners / 5
|
||||||
|
@. df.eyes_rate_per_spawner = df.eyes / df.spawners / 5
|
||||||
|
|
||||||
|
scatter(
|
||||||
|
df.spawners,
|
||||||
|
[df.redstone_rate_per_spawner df.glowstone_rate_per_spawner df.bottles_rate_per_spawner df.sugar_rate_per_spawner df.gunpowder_rate_per_spawner df.sticks_rate_per_spawner df.eyes_rate_per_spawner],
|
||||||
|
title="Individual items per minute per spawner",
|
||||||
|
label=["Redstone" "Glowstone" "Bottles" "Sugar" "Gunpowder" "Sticks" "Eyes"],
|
||||||
|
xlabel="Spawners",
|
||||||
|
ylabel="Items per minute per spawner",
|
||||||
|
ylim=(0, :auto),
|
||||||
|
xticks=[1, 4, 8, 12, 16, 20]
|
||||||
|
)
|
||||||
|
|
||||||
|
savefig("individual_items_rates.pdf")
|
||||||
|
savefig("individual_items_rates.png")
|
||||||
|
|
||||||
|
@. df.redstone_ratio = df.redstone / df.total * 100
|
||||||
|
@. df.glowstone_ratio = df.glowstone / df.total * 100
|
||||||
|
@. df.bottles_ratio = df.bottles / df.total * 100
|
||||||
|
@. df.sugar_ratio = df.sugar / df.total * 100
|
||||||
|
@. df.gunpowder_ratio = df.gunpowder / df.total * 100
|
||||||
|
@. df.sticks_ratio = df.sticks / df.total * 100
|
||||||
|
@. df.eyes_ratio = df.eyes / df.total * 100
|
||||||
|
|
||||||
|
scatter(
|
||||||
|
df.spawners,
|
||||||
|
[df.redstone_ratio df.glowstone_ratio df.bottles_ratio df.sugar_ratio df.gunpowder_ratio df.sticks_ratio df.eyes_ratio],
|
||||||
|
title="Item share",
|
||||||
|
label=["Redstone" "Glowstone" "Bottles" "Sugar" "Gunpowder" "Sticks" "Eyes"],
|
||||||
|
xlabel="Spawners",
|
||||||
|
ylabel="Percentage",
|
||||||
|
ylim=(0, :auto),
|
||||||
|
xticks=[1, 4, 8, 12, 16, 20]
|
||||||
|
)
|
||||||
|
|
||||||
|
savefig("item_ratios.pdf")
|
||||||
|
savefig("item_ratios.png")
|
||||||
|
|
||||||
|
@. df.redstone_rate = df.redstone / 5
|
||||||
|
@. df.glowstone_rate = df.glowstone / 5
|
||||||
|
@. df.bottles_rate = df.bottles / 5
|
||||||
|
@. df.sugar_rate = df.sugar / 5
|
||||||
|
@. df.gunpowder_rate = df.gunpowder / 5
|
||||||
|
@. df.sticks_rate = df.sticks / 5
|
||||||
|
@. df.eyes_rate = df.eyes / 5
|
||||||
|
|
||||||
|
@. df.low_rate_items_rate = (df.redstone_rate + df.glowstone_rate + df.bottles_rate + df.sugar_rate + df.gunpowder_rate + df.eyes_rate) / 6
|
||||||
|
@. df.high_rate_items_rate = df.sticks_rate
|
||||||
|
|
||||||
|
scatter(
|
||||||
|
df.spawners,
|
||||||
|
[df.low_rate_items_rate df.high_rate_items_rate],
|
||||||
|
title="Items per tower",
|
||||||
|
label=["Low rate items" "High rate items"],
|
||||||
|
xlabel="Spawners",
|
||||||
|
ylabel="Items per minute per tower",
|
||||||
|
ylim=(0, :auto),
|
||||||
|
xticks=[1, 4, 8, 12, 16, 20]
|
||||||
|
)
|
||||||
|
|
||||||
|
savefig("items_per_tower.pdf")
|
||||||
|
savefig("items_per_tower.png")
|
BIN
soulcage_statistics/per_spawner.pdf
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/per_spawner.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/per_spawner.png
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/per_spawner.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/total.pdf
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/total.pdf
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
soulcage_statistics/total.png
(Stored with Git LFS)
Normal file
BIN
soulcage_statistics/total.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -1,3 +1,24 @@
|
|||||||
|
## grindstone turtle
|
||||||
|
|
||||||
|
Place an engineering turtle (turtle with crescent hammer, 3 iron + 1 silver) facing the crank of a grindstone
|
||||||
|
|
||||||
|
**execute commands**:
|
||||||
|
- `pastebin get pRPJkvnv startup`
|
||||||
|
- `startup`
|
||||||
|
|
||||||
|
same for the killing turtles in xp farm
|
||||||
|
|
||||||
|
## lava refuel setup
|
||||||
|
|
||||||
|
- place at edge of lava lake in the nether
|
||||||
|
- place 1 bucket of lava in first slot
|
||||||
|
|
||||||
|
**execute commands**:
|
||||||
|
- `label set <name>`
|
||||||
|
- `pastebin get nFSUKiYE lava`
|
||||||
|
- `refuel`
|
||||||
|
- `lava 10`
|
||||||
|
|
||||||
## miner setup
|
## miner setup
|
||||||
- place one ender chest, then 4 turtles facing away from it around it, with fuel and preferably labels set, like this:
|
- place one ender chest, then 4 turtles facing away from it around it, with fuel and preferably labels set, like this:
|
||||||
|
|
||||||
@@ -14,6 +35,7 @@
|
|||||||
## boiler builder
|
## boiler builder
|
||||||
|
|
||||||
- **give the turtle fuel beforehand**
|
- **give the turtle fuel beforehand**
|
||||||
|
- give the turtle a **resupply module on its right side**
|
||||||
- place turtle infront (facing away) from a resupply station like this:
|
- place turtle infront (facing away) from a resupply station like this:
|
||||||
|
|
||||||

|

|
||||||
@@ -29,18 +51,7 @@
|
|||||||
- `pastebin get ZJt5uwjW boiler`
|
- `pastebin get ZJt5uwjW boiler`
|
||||||
- `boiler`
|
- `boiler`
|
||||||
|
|
||||||
## lava refuel setup
|
## IBF distribution turtle
|
||||||
|
|
||||||
- place at edge of lava lake in the nether
|
|
||||||
- place 1 bucket of lava in first slot
|
|
||||||
|
|
||||||
**execute commands**:
|
|
||||||
- `label set <name>`
|
|
||||||
- `pastebin get nFSUKiYE lava`
|
|
||||||
- `refuel`
|
|
||||||
- `lava 10`
|
|
||||||
|
|
||||||
## IBF Distribution turtle
|
|
||||||
|
|
||||||
- **give the turtle fuel beforehand**
|
- **give the turtle fuel beforehand**
|
||||||
- place above me interface, set the interface to keep 4 dust (titanium/chrome/tungsten)
|
- place above me interface, set the interface to keep 4 dust (titanium/chrome/tungsten)
|
||||||
@@ -53,23 +64,19 @@ Like this:
|
|||||||
- `pastebin get iq0Xe2KF ibf`
|
- `pastebin get iq0Xe2KF ibf`
|
||||||
- `ibf`
|
- `ibf`
|
||||||
|
|
||||||
## IBF Distribution turtle
|
## centrifuge turtle
|
||||||
|
|
||||||
- place above me interface with the dust to smelt set to 4
|
Place a turtle with an **inventory module** connected on the right like in the following image:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The leftmost interface should have a stack of cells, the middle one a stack of ingredients, e.g., redstone dust, and the rightmost should be empty.
|
||||||
|
|
||||||
|
This program **does not** survive reboots/unloading! Keep it chunk-loaded and do not restart the server after starting the turtle.
|
||||||
|
|
||||||
|
Make sure the turtle always has enough resources to keep going. If it has to wait too long, it will break eventually!! If this happens, manually take out all products from the centrifuges to fix it.
|
||||||
|
|
||||||
**execute commands**:
|
**execute commands**:
|
||||||
- pastebin get iq0Xe2KF ibf
|
- `pastebin get 1reqCa4x cent` (for **redstone**)
|
||||||
- ibf
|
- `pastebin get 793PtXnD cent` (for **platinum**)
|
||||||
|
- `cent`
|
||||||
## grindstone turtle
|
|
||||||
|
|
||||||
Place an engineering turtle (turtle with crescent hammer, 3 iron + 1 silver) facing the crank of a grindstone
|
|
||||||
|
|
||||||
**execute commands**:
|
|
||||||
- `pastebin get pRPJkvnv startup`
|
|
||||||
- `startup`
|
|
||||||
|
|
||||||
same for the killing turtles in xp farm
|
|
||||||
|
|
||||||
# quarry program
|
|
||||||
quarry -oreQuarry true -enderChest 16 -doRefuel false -dumpCompareItems false -invert false -rednet false -dim 16 16 70
|
|
425
turtle_code/centrifuges_platinum.lua
Normal file
425
turtle_code/centrifuges_platinum.lua
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
|
||||||
|
xRelPos = 0 -- "positive = forward"
|
||||||
|
yRelPos = 0 -- "positive = right"
|
||||||
|
zRelPos = 0 -- "positive = upwards"
|
||||||
|
|
||||||
|
facing = {
|
||||||
|
x = 1,
|
||||||
|
y = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
cells_drop = 0
|
||||||
|
slot_cells_min = 0
|
||||||
|
slot_cells_max = 0
|
||||||
|
slot_cells_cur = 0
|
||||||
|
|
||||||
|
input_drop = 0
|
||||||
|
slot_input_min = 0
|
||||||
|
slot_input_max = 0
|
||||||
|
slot_input_cur = 0
|
||||||
|
|
||||||
|
output_1_take = 0
|
||||||
|
slot_output_1_min = 0
|
||||||
|
slot_output_1_max = 0
|
||||||
|
slot_output_1_cur = 0
|
||||||
|
|
||||||
|
output_2_take = 0
|
||||||
|
slot_output_2_min = 0
|
||||||
|
slot_output_2_max = 0
|
||||||
|
slot_output_2_cur = 0
|
||||||
|
|
||||||
|
output_3_take = 0
|
||||||
|
slot_output_3_min = 0
|
||||||
|
slot_output_3_max = 0
|
||||||
|
slot_output_3_cur = 0
|
||||||
|
|
||||||
|
output_4_take = 0
|
||||||
|
slot_output_4_min = 0
|
||||||
|
slot_output_4_max = 0
|
||||||
|
slot_output_4_cur = 0
|
||||||
|
|
||||||
|
function printPos()
|
||||||
|
print("At (", xRelPos, ", ", yRelPos, ", ", zRelPos, ") facing (", facing.x, ", ", facing.y, ")")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- helper functions for movement
|
||||||
|
function forward()
|
||||||
|
xRelPos = xRelPos + facing.x
|
||||||
|
yRelPos = yRelPos + facing.y
|
||||||
|
|
||||||
|
if turtle.forward() then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
xRelPos = xRelPos - facing.x
|
||||||
|
yRelPos = yRelPos - facing.y
|
||||||
|
|
||||||
|
turtle.dig()
|
||||||
|
turtle.attack()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function forceForward()
|
||||||
|
-- try moving forward until it works
|
||||||
|
while not forward() do end
|
||||||
|
end
|
||||||
|
|
||||||
|
function upwards()
|
||||||
|
zRelPos = zRelPos + 1
|
||||||
|
if turtle.up() then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
zRelPos = zRelPos - 1
|
||||||
|
turtle.digUp()
|
||||||
|
turtle.attackUp()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function forceUpwards()
|
||||||
|
-- try moving upwards until it works
|
||||||
|
while not upwards() do end
|
||||||
|
end
|
||||||
|
|
||||||
|
function downwards()
|
||||||
|
zRelPos = zRelPos - 1
|
||||||
|
if turtle.down() then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
zRelPos = zRelPos + 1
|
||||||
|
turtle.digDown()
|
||||||
|
turtle.attackDown()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function forceDownwards()
|
||||||
|
-- try moving upwards until it works
|
||||||
|
while not downwards() do end
|
||||||
|
end
|
||||||
|
|
||||||
|
function forcePlace()
|
||||||
|
-- try placing until it works
|
||||||
|
while not turtle.place() do
|
||||||
|
turtle.dig()
|
||||||
|
turtle.attack()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function forcePlaceDown()
|
||||||
|
-- try placing until it works
|
||||||
|
while not turtle.placeDown() do
|
||||||
|
turtle.digDown()
|
||||||
|
turtle.attackDown()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function forcePlaceUp()
|
||||||
|
-- try placing until it works
|
||||||
|
while not turtle.placeUp() do
|
||||||
|
turtle.digUp()
|
||||||
|
turtle.attackUp()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function turnRight()
|
||||||
|
if facing.x == 1 and facing.y == 0 then -- facing forward
|
||||||
|
facing.x = 0
|
||||||
|
facing.y = 1
|
||||||
|
elseif facing.x == 0 and facing.y == 1 then -- facing right
|
||||||
|
facing.x = -1
|
||||||
|
facing.y = 0
|
||||||
|
elseif facing.x == -1 and facing.y == 0 then -- facing backward
|
||||||
|
facing.x = 0
|
||||||
|
facing.y = -1
|
||||||
|
elseif facing.x == 0 and facing.y == -1 then -- facing left
|
||||||
|
facing.x = 1
|
||||||
|
facing.y = 0
|
||||||
|
else
|
||||||
|
print("turnRight: This should never happen")
|
||||||
|
end
|
||||||
|
turtle.turnRight()
|
||||||
|
end
|
||||||
|
|
||||||
|
function turnLeft()
|
||||||
|
if facing.x == 1 and facing.y == 0 then -- facing forward
|
||||||
|
facing.x = 0
|
||||||
|
facing.y = -1
|
||||||
|
elseif facing.x == 0 and facing.y == 1 then -- facing right
|
||||||
|
facing.x = 1
|
||||||
|
facing.y = 0
|
||||||
|
elseif facing.x == -1 and facing.y == 0 then -- facing backward
|
||||||
|
facing.x = 0
|
||||||
|
facing.y = 1
|
||||||
|
elseif facing.x == 0 and facing.y == -1 then -- facing left
|
||||||
|
facing.x = -1
|
||||||
|
facing.y = 0
|
||||||
|
else
|
||||||
|
print("turnLeft: This should never happen")
|
||||||
|
end
|
||||||
|
turtle.turnLeft()
|
||||||
|
end
|
||||||
|
|
||||||
|
function faceTo(x, y)
|
||||||
|
if (x == facing.x) and (y == facing.y) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if (x == 1 and facing.x == -1) or (x == -1 and facing.x == 1) or (y == 1 and facing.y == -1) or (y == -1 and facing.y == 1) then
|
||||||
|
turnRight()
|
||||||
|
turnRight()
|
||||||
|
elseif (facing.y == -1 and x == 1) or (facing.y == 1 and x == -1) or (facing.x == 1 and y == 1) or (facing.x == -1 and y == -1) then
|
||||||
|
turnRight()
|
||||||
|
elseif (facing.y == -1 and x == -1) or (facing.y == 1 and x == 1) or (facing.x == 1 and y == -1) or (facing.x == -1 and y == 1) then
|
||||||
|
turnLeft()
|
||||||
|
else
|
||||||
|
print("faceTo: This should never happen")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function moveTo(x, y)
|
||||||
|
if (yRelPos > y) then
|
||||||
|
faceTo(0, -1)
|
||||||
|
while yRelPos > y do
|
||||||
|
forward()
|
||||||
|
end
|
||||||
|
elseif (yRelPos < y) then
|
||||||
|
faceTo(0, 1)
|
||||||
|
while yRelPos < y do
|
||||||
|
forward()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (xRelPos > x) then
|
||||||
|
faceTo(-1, 0)
|
||||||
|
while xRelPos > x do
|
||||||
|
forward()
|
||||||
|
end
|
||||||
|
elseif (xRelPos < x) then
|
||||||
|
faceTo(1, 0)
|
||||||
|
while xRelPos < x do
|
||||||
|
forward()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function resupplyItem(slot, num)
|
||||||
|
module = peripheral.wrap("right")
|
||||||
|
|
||||||
|
turtle.select(slot)
|
||||||
|
items = turtle.getItemCount(slot)
|
||||||
|
while (items < num) do
|
||||||
|
module.suckSneaky(1, num - items)
|
||||||
|
sleep(1)
|
||||||
|
items = turtle.getItemCount(slot)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function resupplyAll()
|
||||||
|
-- reset current slot numbers
|
||||||
|
slot_output_1_cur = slot_output_1_min
|
||||||
|
slot_output_2_cur = slot_output_2_min
|
||||||
|
slot_output_3_cur = slot_output_3_min
|
||||||
|
slot_output_4_cur = slot_output_4_min
|
||||||
|
|
||||||
|
-- clean entire inventory
|
||||||
|
moveTo(0, 2); faceTo(-1, 0)
|
||||||
|
for i = 1, 16 do
|
||||||
|
while turtle.getItemCount(i) > 0 do
|
||||||
|
turtle.select(i)
|
||||||
|
turtle.drop()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- get ingredient
|
||||||
|
moveTo(0, 1); faceTo(-1, 0)
|
||||||
|
slot_input_cur = slot_input_min
|
||||||
|
for i = slot_input_min, slot_input_max do
|
||||||
|
if (turtle.getItemCount(i) < 64) then
|
||||||
|
resupplyItem(i, 64)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- get cells
|
||||||
|
moveTo(0, 0); faceTo(-1, 0)
|
||||||
|
slot_cells_cur = slot_cells_min
|
||||||
|
for i = slot_cells_min, slot_cells_max do
|
||||||
|
if (turtle.getItemCount(i) < 64) then
|
||||||
|
resupplyItem(i, 64)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function supplyCentrifuge()
|
||||||
|
module = peripheral.wrap("right")
|
||||||
|
|
||||||
|
-- drop cells from below (side 0)
|
||||||
|
if (cells_drop > 0) then
|
||||||
|
turtle.select(slot_cells_cur)
|
||||||
|
drop = cells_drop
|
||||||
|
if (turtle.getItemCount(slot_cells_cur) < drop) then
|
||||||
|
drop = drop - turtle.getItemCount(slot_cells_cur)
|
||||||
|
module.dropSneakyUp(0)
|
||||||
|
slot_cells_cur = slot_cells_cur + 1
|
||||||
|
turtle.select(slot_cells_cur)
|
||||||
|
end
|
||||||
|
module.dropSneakyUp(0, drop)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- drop input from above (side 1)
|
||||||
|
turtle.select(slot_input_cur)
|
||||||
|
drop = input_drop
|
||||||
|
if (turtle.getItemCount(slot_input_cur) < drop) then
|
||||||
|
drop = drop - turtle.getItemCount(slot_input_cur)
|
||||||
|
module.dropSneakyUp(1)
|
||||||
|
slot_input_cur = slot_input_cur + 1
|
||||||
|
turtle.select(slot_input_cur)
|
||||||
|
end
|
||||||
|
module.dropSneakyUp(1, drop)
|
||||||
|
end
|
||||||
|
|
||||||
|
function emptyCentrifuge()
|
||||||
|
module = peripheral.wrap("right")
|
||||||
|
|
||||||
|
-- get output 1
|
||||||
|
turtle.select(slot_output_1_cur)
|
||||||
|
take = output_1_take
|
||||||
|
if (turtle.getItemCount(slot_output_1_cur) + take > 64) then
|
||||||
|
take_now = 64 - turtle.getItemCount(slot_output_1_cur)
|
||||||
|
take = take - take_now
|
||||||
|
module.suckSneakyUp(2, take_now)
|
||||||
|
slot_output_1_cur = slot_output_1_cur + 1
|
||||||
|
turtle.select(slot_output_1_cur)
|
||||||
|
end
|
||||||
|
-- if no input is ready, move on immediately
|
||||||
|
if module.suckSneakyUp(2, take) == false then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- get output 2
|
||||||
|
turtle.select(slot_output_2_cur)
|
||||||
|
take = output_2_take
|
||||||
|
if (turtle.getItemCount(slot_output_2_cur) + take > 64) then
|
||||||
|
take_now = 64 - turtle.getItemCount(slot_output_2_cur)
|
||||||
|
take = take - take_now
|
||||||
|
module.suckSneakyUp(2, take_now)
|
||||||
|
slot_output_2_cur = slot_output_2_cur + 1
|
||||||
|
turtle.select(slot_output_2_cur)
|
||||||
|
end
|
||||||
|
module.suckSneakyUp(2, take)
|
||||||
|
|
||||||
|
-- get output 3
|
||||||
|
turtle.select(slot_output_3_cur)
|
||||||
|
take = output_3_take
|
||||||
|
if (turtle.getItemCount(slot_output_3_cur) + take > 64) then
|
||||||
|
take_now = 64 - turtle.getItemCount(slot_output_3_cur)
|
||||||
|
take = take - take_now
|
||||||
|
module.suckSneakyUp(2, take_now)
|
||||||
|
slot_output_3_cur = slot_output_3_cur + 1
|
||||||
|
turtle.select(slot_output_3_cur)
|
||||||
|
end
|
||||||
|
module.suckSneakyUp(2, take)
|
||||||
|
|
||||||
|
-- get output 4
|
||||||
|
turtle.select(slot_output_4_cur)
|
||||||
|
take = output_4_take
|
||||||
|
if (turtle.getItemCount(slot_output_4_cur) + take > 64) then
|
||||||
|
take_now = 64 - turtle.getItemCount(slot_output_4_cur)
|
||||||
|
take = take - take_now
|
||||||
|
module.suckSneakyUp(2, take_now)
|
||||||
|
slot_output_4_cur = slot_output_4_cur + 1
|
||||||
|
turtle.select(slot_output_4_cur)
|
||||||
|
end
|
||||||
|
module.suckSneakyUp(2, take)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- sets up slot numbers with <cells> slots for cells and <input> slots for input ingredient, and output 1 through 4 numbers of slots
|
||||||
|
function setupSlots(cells, input, output_1, output_2, output_3, output_4)
|
||||||
|
slot_cells_min = 1
|
||||||
|
slot_cells_max = cells
|
||||||
|
slot_cells_cur = slot_cells_min
|
||||||
|
cells_drop = cells
|
||||||
|
|
||||||
|
slot_input_min = slot_cells_max + 1
|
||||||
|
slot_input_max = slot_input_min + input - 1
|
||||||
|
slot_input_cur = slot_input_min
|
||||||
|
input_drop = input
|
||||||
|
|
||||||
|
slot_output_1_min = 1
|
||||||
|
slot_output_1_max = output_1
|
||||||
|
slot_output_1_cur = slot_output_1_min
|
||||||
|
output_1_take = output_1
|
||||||
|
|
||||||
|
slot_output_2_min = slot_output_1_max + 1
|
||||||
|
slot_output_2_max = slot_output_2_min + output_2 - 1
|
||||||
|
slot_output_2_cur = slot_output_2_min
|
||||||
|
output_2_take = output_2
|
||||||
|
|
||||||
|
slot_output_3_min = slot_output_2_max + 1
|
||||||
|
slot_output_3_max = slot_output_3_min + output_3 - 1
|
||||||
|
slot_output_3_cur = slot_output_3_min
|
||||||
|
output_3_take = output_3
|
||||||
|
|
||||||
|
slot_output_4_min = slot_output_3_max + 1
|
||||||
|
slot_output_4_max = slot_output_4_min + output_4 - 1
|
||||||
|
slot_output_4_cur = slot_output_4_min
|
||||||
|
output_4_take = output_4
|
||||||
|
end
|
||||||
|
|
||||||
|
function enterSupplyLoop()
|
||||||
|
module = peripheral.wrap("right")
|
||||||
|
|
||||||
|
while true do
|
||||||
|
print("Resupplying...")
|
||||||
|
resupplyAll()
|
||||||
|
|
||||||
|
-- go to first centrifuge and wait to start (by checking ingredient)
|
||||||
|
moveTo(1, 0)
|
||||||
|
turtle.select(16)
|
||||||
|
while module.suckSneakyUp(1, input_drop) do
|
||||||
|
putBack = turtle.getItemCount(16)
|
||||||
|
sleep(1)
|
||||||
|
module.dropSneakyUp(1, putBack)
|
||||||
|
sleep(5)
|
||||||
|
end
|
||||||
|
|
||||||
|
print("Putting cells and ingredient in the centrifuges...")
|
||||||
|
-- putting in ingredients on the way there
|
||||||
|
for i = 1, 7, 2 do
|
||||||
|
for j = 0, 7, 1 do -- moving right
|
||||||
|
moveTo(i, j)
|
||||||
|
supplyCentrifuge()
|
||||||
|
end
|
||||||
|
for j = 7, 0, -1 do -- moving left
|
||||||
|
moveTo(i + 1, j)
|
||||||
|
supplyCentrifuge()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sleep(5)
|
||||||
|
-- wait a little so all centrifuges are ready for having their outputs taken
|
||||||
|
|
||||||
|
print("Getting outputs from the centrifuges...")
|
||||||
|
-- getting outputs out on the way back
|
||||||
|
for i = 7, 1, -2 do
|
||||||
|
for j = 0, 7, 1 do -- moving right
|
||||||
|
moveTo(i + 1, j)
|
||||||
|
emptyCentrifuge()
|
||||||
|
end
|
||||||
|
for j = 7, 0, -1 do -- moving left
|
||||||
|
moveTo(i, j)
|
||||||
|
emptyCentrifuge()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function platinumLoop()
|
||||||
|
print("Supplying Platinum Dust Centrifuges")
|
||||||
|
setupSlots(0, 1, 1, 1, 0, 0) -- 0 slots cells, 1 slot platinum dust
|
||||||
|
print("Starting in 5s...")
|
||||||
|
sleep(5)
|
||||||
|
|
||||||
|
enterSupplyLoop()
|
||||||
|
end
|
||||||
|
|
||||||
|
print("Centrifuges even item distribution program")
|
||||||
|
|
||||||
|
redstoneLoop()
|
@@ -201,9 +201,14 @@ function moveTo(x, y)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function resupplyItem(slot, num)
|
function resupplyItem(slot, num)
|
||||||
|
module = peripheral.wrap("right")
|
||||||
|
|
||||||
turtle.select(slot)
|
turtle.select(slot)
|
||||||
while (turtle.getItemCount(slot) < num) do
|
items = turtle.getItemCount(slot)
|
||||||
turtle.suck(num - turtle.getItemCount(slot))
|
while (items < num) do
|
||||||
|
module.suckSneaky(1, num - items)
|
||||||
|
sleep(1)
|
||||||
|
items = turtle.getItemCount(slot)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -246,15 +251,17 @@ function supplyCentrifuge()
|
|||||||
module = peripheral.wrap("right")
|
module = peripheral.wrap("right")
|
||||||
|
|
||||||
-- drop cells from below (side 0)
|
-- drop cells from below (side 0)
|
||||||
turtle.select(slot_cells_cur)
|
if (cells_drop > 0) then
|
||||||
drop = cells_drop
|
|
||||||
if (turtle.getItemCount(slot_cells_cur) < drop) then
|
|
||||||
drop = drop - turtle.getItemCount(slot_cells_cur)
|
|
||||||
module.dropSneakyUp(0)
|
|
||||||
slot_cells_cur = slot_cells_cur + 1
|
|
||||||
turtle.select(slot_cells_cur)
|
turtle.select(slot_cells_cur)
|
||||||
end
|
drop = cells_drop
|
||||||
module.dropSneakyUp(0, drop)
|
if (turtle.getItemCount(slot_cells_cur) < drop) then
|
||||||
|
drop = drop - turtle.getItemCount(slot_cells_cur)
|
||||||
|
module.dropSneakyUp(0)
|
||||||
|
slot_cells_cur = slot_cells_cur + 1
|
||||||
|
turtle.select(slot_cells_cur)
|
||||||
|
end
|
||||||
|
module.dropSneakyUp(0, drop)
|
||||||
|
end
|
||||||
|
|
||||||
-- drop input from above (side 1)
|
-- drop input from above (side 1)
|
||||||
turtle.select(slot_input_cur)
|
turtle.select(slot_input_cur)
|
||||||
@@ -357,16 +364,19 @@ function setupSlots(cells, input, output_1, output_2, output_3, output_4)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function enterSupplyLoop()
|
function enterSupplyLoop()
|
||||||
|
module = peripheral.wrap("right")
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
print("Resupplying...")
|
print("Resupplying...")
|
||||||
resupplyAll()
|
resupplyAll()
|
||||||
|
|
||||||
-- go to first centrifuge and wait to start
|
-- go to first centrifuge and wait to start (by checking ingredient)
|
||||||
moveTo(1, 0)
|
moveTo(1, 0)
|
||||||
turtle.select(16)
|
turtle.select(16)
|
||||||
while turtle.suckUp() do
|
while module.suckSneakyUp(1, input_drop) do
|
||||||
putBack = turtle.getItemCount(16)
|
putBack = turtle.getItemCount(16)
|
||||||
turtle.dropUp(putBack)
|
sleep(1)
|
||||||
|
module.dropSneakyUp(1, putBack)
|
||||||
sleep(5)
|
sleep(5)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -410,15 +420,6 @@ function redstoneLoop()
|
|||||||
enterSupplyLoop()
|
enterSupplyLoop()
|
||||||
end
|
end
|
||||||
|
|
||||||
function platinumLoop()
|
|
||||||
print("Supplying Platinum Dust Centrifuges")
|
|
||||||
setupSlots(0, 1, 1, 0, 0, 0) -- 0 slots cells, 1 slot platinum dust
|
|
||||||
print("Starting in 5s...")
|
|
||||||
sleep(5)
|
|
||||||
|
|
||||||
enterSupplyLoop()
|
|
||||||
end
|
|
||||||
|
|
||||||
print("Centrifuges even item distribution program")
|
print("Centrifuges even item distribution program")
|
||||||
|
|
||||||
redstoneLoop()
|
redstoneLoop()
|
Reference in New Issue
Block a user