Compare commits

...

6 Commits

Author SHA1 Message Date
97acc9b466 Update Frame Quarry requirements (#5)
The requirements for the frame quarry were pretty outdated, some items were only used when we did the runs on the Bedcraft server with TickThreading.

This updates the requirements to the latest version of the Mystcraft-based (eternal day, Meadow single biome, flat) frame quarry.

I haven't figured out a good design for overworld frame quarries that are protected against falling blocks or liquids from above, so this must do for now.

Co-authored-by: ThePixelbrain <19214217+ThePixelbrain@users.noreply.github.com>
Reviewed-on: #5
Co-authored-by: Pixelbrain <pixelbrain@noreply.localhost>
Co-committed-by: Pixelbrain <pixelbrain@noreply.localhost>
2024-08-11 14:50:19 +02:00
dc7d2c54f0 Update crafting cube resources 2024-05-24 20:12:09 +02:00
c277dc9623 Fix centrifuge distribution code 2024-05-19 19:55:18 +02:00
b9dc5a5d35 Fix file links in README 2024-05-18 19:01:55 +02:00
da57201c78 Fix soulcage stats 2024-05-10 20:28:46 +02:00
55fb28ee19 Add spawner statistics and plots 2024-05-04 01:35:42 +02:00
16 changed files with 243 additions and 55 deletions

1
.gitattributes vendored
View File

@@ -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

View File

@@ -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.

View 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
1 spawners redstone glowstone sugar sticks bottles gunpowder eyes
2 1 134 128 175 324 135 149 170
3 2 313 339 333 575 339 322 279
4 3 466 468 506 940 469 504 463
5 4 627 620 599 1171 558 644 601
6 5 773 710 791 1451 736 782 741
7 6 768 815 800 1735 863 889 854
8 7 976 890 963 2054 966 951 916
9 8 997 977 1015 2102 1024 1071 1078
10 9 1089 1053 1112 2137 1093 1057 1052
11 10 1084 1052 1108 2226 1143 1128 1128
12 11 1154 1152 1223 2342 1194 1150 1130
13 12 1232 1188 1151 2236 1215 1190 1135
14 13 1292 1232 1273 2432 1264 1273 1223
15 14 1358 1308 1360 2536 1284 1350 1357
16 15 1251 1356 1236 2742 1233 1334 1263
17 16 1321 1395 1393 2768 1345 1440 1346
18 17 1495 1379 1472 2764 1440 1456 1408
19 18 1506 1496 1382 2829 1450 1528 1416
20 19 1526 1314 1455 2988 1574 1453 1469
21 20 1559 1602 1471 2942 1531 1577 1531

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

105
soulcage_statistics/main.jl Normal file
View 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

Binary file not shown.

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

Binary file not shown.

BIN
soulcage_statistics/total.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -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()

View File

@@ -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()