Compare commits
6 Commits
fe01e1935c
...
main
Author | SHA1 | Date | |
---|---|---|---|
97acc9b466 | |||
dc7d2c54f0 | |||
c277dc9623 | |||
b9dc5a5d35 | |||
da57201c78 | |||
55fb28ee19 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,2 +1,3 @@
|
||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
|
65
README.md
65
README.md
@@ -126,19 +126,22 @@ For more details see [here](./calculations/early_machines.md)
|
||||
|
||||
### ME Automation
|
||||
|
||||
**5x5x5 Crafter**:
|
||||
- 44 Containment Walls
|
||||
- 54 Heat Vents
|
||||
- 18 Crafting CPUs
|
||||
- 9 Pattern Provider
|
||||
**4x4x5 ME crafting cube**
|
||||
- 6 pattern provider
|
||||
- 6 crafting cpus
|
||||
- 32 heat vent
|
||||
- 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**:
|
||||
- 160 Quartz
|
||||
- 96 Quartz Dust
|
||||
- 27 Diamonds
|
||||
- 235 Gold
|
||||
- 416 iron
|
||||
- 176 redstone
|
||||
- 12 glowstone
|
||||
- 48 glass
|
||||
|
||||
### Blast Furnace
|
||||
34x Blocks
|
||||
@@ -217,30 +220,37 @@ In 3x3 Chunk Area:
|
||||
### 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](./material_calculations/lava_calcs.md).
|
||||
For more details [see here](./calculations/lava_calcs.md).
|
||||
|
||||
### 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
|
||||
- 16 Tube Frames
|
||||
|
||||
**Other Mats**:
|
||||
- 48 Mining Wells
|
||||
- 24 Deployer
|
||||
- 80 Block Breaker
|
||||
- 8 Item Tesseracts
|
||||
- 8 Energy Tesseracts
|
||||
- 16 Deployer
|
||||
- 81 Block Breaker
|
||||
- 9 Item Tesseracts
|
||||
- 9 Energy Tesseracts
|
||||
- 64 Red Alloy Wire
|
||||
- 2 Repeater
|
||||
- 3 Repeater
|
||||
- 1 Timer
|
||||
- 1 Lever
|
||||
- 2 Frame Motors
|
||||
- 9 Solar Panels
|
||||
- 8 Solar Panels
|
||||
- 1 Battery Box
|
||||
- 1 Wireless Receiver
|
||||
- 1 Wireless Transmitter
|
||||
- 20 Jacketed Wire
|
||||
- 1 Ender Chest
|
||||
- 3 Control Tracks
|
||||
- 17 Jacketed Wire
|
||||
- ca. 128 Cobblestone Panel
|
||||
- ca. 128 Cobblestone Cover
|
||||
- 2 Cobblestone Cover Strip
|
||||
- 1 Ender Chest / Item Tesseract
|
||||
- 1 Chunk Loader
|
||||
- 1 Screwdriver
|
||||
|
||||
### Industrial Blast
|
||||
|
||||
@@ -296,19 +306,19 @@ Keep enough for Assemblers making Data Control Circuits etc.
|
||||
- 1 stack of centrifuges for platinum dust
|
||||
- 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)
|
||||
- 4 IBFs for chrome dust -> chrome ingots
|
||||
- 4 electrolyzers on ruby dust -> chrome 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)
|
||||
- 16 electrolyzers on bauxite dust
|
||||
|
||||
More details [here](./material%20calculations/titanium_calcs.md)
|
||||
More details [here](./calculations/titanium_calcs.md)
|
||||
|
||||
### For Beryllium (need 264)
|
||||
- 4 electrolyzers on ender pearl dust
|
||||
@@ -377,4 +387,3 @@ Total of 57 Superconductors required (15 recipes of 4):
|
||||
## 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.
|
||||
- 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.
|
||||
|
||||
|
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.
@@ -201,9 +201,14 @@ function moveTo(x, y)
|
||||
end
|
||||
|
||||
function resupplyItem(slot, num)
|
||||
module = peripheral.wrap("right")
|
||||
|
||||
turtle.select(slot)
|
||||
while (turtle.getItemCount(slot) < num) do
|
||||
turtle.suck(num - turtle.getItemCount(slot))
|
||||
items = turtle.getItemCount(slot)
|
||||
while (items < num) do
|
||||
module.suckSneaky(1, num - items)
|
||||
sleep(1)
|
||||
items = turtle.getItemCount(slot)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -246,15 +251,17 @@ function supplyCentrifuge()
|
||||
module = peripheral.wrap("right")
|
||||
|
||||
-- drop cells from below (side 0)
|
||||
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
|
||||
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
|
||||
module.dropSneakyUp(0, drop)
|
||||
|
||||
-- drop input from above (side 1)
|
||||
turtle.select(slot_input_cur)
|
||||
@@ -357,16 +364,19 @@ function setupSlots(cells, input, output_1, output_2, output_3, output_4)
|
||||
end
|
||||
|
||||
function enterSupplyLoop()
|
||||
module = peripheral.wrap("right")
|
||||
|
||||
while true do
|
||||
print("Resupplying...")
|
||||
resupplyAll()
|
||||
|
||||
-- go to first centrifuge and wait to start
|
||||
-- go to first centrifuge and wait to start (by checking ingredient)
|
||||
moveTo(1, 0)
|
||||
turtle.select(16)
|
||||
while turtle.suckUp() do
|
||||
while module.suckSneakyUp(1, input_drop) do
|
||||
putBack = turtle.getItemCount(16)
|
||||
turtle.dropUp(putBack)
|
||||
sleep(1)
|
||||
module.dropSneakyUp(1, putBack)
|
||||
sleep(5)
|
||||
end
|
||||
|
||||
@@ -411,4 +421,5 @@ function platinumLoop()
|
||||
end
|
||||
|
||||
print("Centrifuges even item distribution program")
|
||||
platinumLoop()
|
||||
|
||||
redstoneLoop()
|
||||
|
@@ -201,9 +201,14 @@ function moveTo(x, y)
|
||||
end
|
||||
|
||||
function resupplyItem(slot, num)
|
||||
module = peripheral.wrap("right")
|
||||
|
||||
turtle.select(slot)
|
||||
while (turtle.getItemCount(slot) < num) do
|
||||
turtle.suck(num - turtle.getItemCount(slot))
|
||||
items = turtle.getItemCount(slot)
|
||||
while (items < num) do
|
||||
module.suckSneaky(1, num - items)
|
||||
sleep(1)
|
||||
items = turtle.getItemCount(slot)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -246,15 +251,17 @@ function supplyCentrifuge()
|
||||
module = peripheral.wrap("right")
|
||||
|
||||
-- drop cells from below (side 0)
|
||||
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
|
||||
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
|
||||
module.dropSneakyUp(0, drop)
|
||||
|
||||
-- drop input from above (side 1)
|
||||
turtle.select(slot_input_cur)
|
||||
@@ -357,16 +364,19 @@ function setupSlots(cells, input, output_1, output_2, output_3, output_4)
|
||||
end
|
||||
|
||||
function enterSupplyLoop()
|
||||
module = peripheral.wrap("right")
|
||||
|
||||
while true do
|
||||
print("Resupplying...")
|
||||
resupplyAll()
|
||||
|
||||
-- go to first centrifuge and wait to start
|
||||
-- go to first centrifuge and wait to start (by checking ingredient)
|
||||
moveTo(1, 0)
|
||||
turtle.select(16)
|
||||
while turtle.suckUp() do
|
||||
while module.suckSneakyUp(1, input_drop) do
|
||||
putBack = turtle.getItemCount(16)
|
||||
turtle.dropUp(putBack)
|
||||
sleep(1)
|
||||
module.dropSneakyUp(1, putBack)
|
||||
sleep(5)
|
||||
end
|
||||
|
||||
@@ -411,4 +421,5 @@ function redstoneLoop()
|
||||
end
|
||||
|
||||
print("Centrifuges even item distribution program")
|
||||
|
||||
redstoneLoop()
|
||||
|
Reference in New Issue
Block a user