Compare commits
8 Commits
2eadeb404a
...
b8689fb78f
Author | SHA1 | Date | |
---|---|---|---|
b8689fb78f | |||
21b85d9b13 | |||
f86998cb72 | |||
|
c13f0817c3 | ||
69d7165497 | |||
1f595c299d | |||
f8c96811fe | |||
70f63b2270 |
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
@ -97,7 +97,7 @@ function forcePlace()
|
||||
while not turtle.place() do
|
||||
turtle.dig()
|
||||
turtle.attack()
|
||||
enda
|
||||
end
|
||||
end
|
||||
|
||||
function forcePlaceDown()
|
||||
|
424
New Attempts/Centrifuges.lua
Normal file
424
New Attempts/Centrifuges.lua
Normal file
@ -0,0 +1,424 @@
|
||||
|
||||
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)
|
||||
turtle.select(slot)
|
||||
while (turtle.getItemCount(slot) < num) do
|
||||
turtle.suck(num - 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)
|
||||
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)
|
||||
|
||||
-- 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()
|
||||
while true do
|
||||
print("Resupplying...")
|
||||
resupplyAll()
|
||||
|
||||
-- go to first centrifuge and wait to start
|
||||
moveTo(1, 0)
|
||||
turtle.select(16)
|
||||
while turtle.suckUp() do
|
||||
putBack = turtle.getItemCount(16)
|
||||
turtle.dropUp(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 redstoneLoop()
|
||||
print("Supplying Redstone Centrifuges")
|
||||
setupSlots(4, 10, 1, 5, 1, 3) -- 4 slots cells, 10 slots redstone
|
||||
print("Starting in 5s...")
|
||||
sleep(5)
|
||||
|
||||
enterSupplyLoop()
|
||||
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")
|
||||
|
||||
redstoneLoop()
|
@ -1,21 +1,33 @@
|
||||
## 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
|
||||

|
||||
|
||||
- give each turtle compare blocks before starting the program like this
|
||||
|
||||

|
||||
|
||||
**execute commands**:
|
||||
- pastebin get gGy2HWcF mine
|
||||
- mine
|
||||
- `pastebin get gGy2HWcF mine`
|
||||
- `mine`
|
||||
|
||||
## boiler builder
|
||||
|
||||
- place turtle infront (facing away) from a resupply station
|
||||
- provide low pressure boilers, liquid fueled fireboxes and liquiducts in the resupply station
|
||||
- follow the instructions of the turtle after placing it and starting the program
|
||||
- give the turtle fuel beforehand
|
||||
- **give the turtle fuel beforehand**
|
||||
- place turtle infront (facing away) from a resupply station like this:
|
||||
|
||||

|
||||
- the boilers are built infront of the turtle to the right, make sure the ground is even and is at least 2 blocks deep for the water
|
||||
- provide low pressure boilers, liquid fueled fireboxes and liquiducts in the resupply station like this:
|
||||
|
||||

|
||||
- follow the instructions of the turtle after placing it and starting the program, required items will look like this:
|
||||
|
||||

|
||||
|
||||
**execute commands**:
|
||||
- pastebin get ZJt5uwjW boiler
|
||||
- boiler
|
||||
- `pastebin get ZJt5uwjW boiler`
|
||||
- `boiler`
|
||||
|
||||
## lava refuel setup
|
||||
|
||||
@ -23,16 +35,39 @@
|
||||
- place 1 bucket of lava in first slot
|
||||
|
||||
**execute commands**:
|
||||
- label set <name>
|
||||
- pastebin get nFSUKiYE lava
|
||||
- refuel
|
||||
- lava 10
|
||||
- `label set <name>`
|
||||
- `pastebin get nFSUKiYE lava`
|
||||
- `refuel`
|
||||
- `lava 10`
|
||||
|
||||
## IBF Distribution turtle
|
||||
|
||||
- **give the turtle fuel beforehand**
|
||||
- place above me interface, set the interface to keep 4 dust (titanium/chrome/tungsten)
|
||||
|
||||
Like this:
|
||||
|
||||

|
||||
|
||||
**execute commands**:
|
||||
- `pastebin get iq0Xe2KF ibf`
|
||||
- `ibf`
|
||||
|
||||
## IBF Distribution turtle
|
||||
|
||||
- place above me interface with the dust to smelt set to 4
|
||||
|
||||
**execute commands**:
|
||||
- pastebin get iq0Xe2KF ibf
|
||||
- ibf
|
||||
|
||||
## 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 grind
|
||||
- grind
|
||||
- `pastebin get pRPJkvnv startup`
|
||||
- `startup`
|
||||
|
||||
same for the killing turtles in xp farm
|
||||
|
||||
|
206
New Attempts/IBF.lua
Normal file
206
New Attempts/IBF.lua
Normal file
@ -0,0 +1,206 @@
|
||||
xRelPos = 0 -- "positive = forward"
|
||||
yRelPos = 0 -- "positive = right"
|
||||
zRelPos = 0 -- "positive = upwards"
|
||||
|
||||
facing = {
|
||||
x = 1,
|
||||
y = 0
|
||||
}
|
||||
|
||||
slot_dust = 1
|
||||
slot_empty = 2
|
||||
num_dust = 4
|
||||
|
||||
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)
|
||||
turtle.select(slot)
|
||||
while (turtle.getItemCount(slot) < num) do
|
||||
sleep(1)
|
||||
turtle.suckDown(num - turtle.getItemCount(slot))
|
||||
end
|
||||
end
|
||||
|
||||
print("Industrial Blast Furnace even item distribution program")
|
||||
|
||||
while true do
|
||||
resupplyItem(slot_dust, num_dust)
|
||||
|
||||
for i = 1, 4 do
|
||||
forceForward(); forceForward()
|
||||
|
||||
-- check if anything is still in the furnace
|
||||
-- use different slot than dust slot since the item type may have changed
|
||||
turtle.select(slot_empty)
|
||||
while turtle.suckDown() do
|
||||
turtle.dropDown()
|
||||
sleep(5)
|
||||
end
|
||||
|
||||
turtle.select(slot_dust)
|
||||
turtle.dropDown(1)
|
||||
|
||||
forceForward(); forceForward()
|
||||
turnLeft()
|
||||
end
|
||||
end
|
106
Notes.md
106
Notes.md
@ -228,11 +228,11 @@ In 3x3 Chunk Fläche:
|
||||
- 34x Reinforced Machine Casings (54x Steel (plates), 9x Advanced Machine Blocks, 18x Advanced Circuits)
|
||||
- 2x Lava inside
|
||||
|
||||
End setup: 4 Stacked on top of each other
|
||||
End setup: 3 Stacked on top of each other
|
||||
- 4x Titanium
|
||||
- 7x Chrome (keep an eye on balancing, logistic pipes?)
|
||||
- 4x Tungsten (need 16x kanthal heating coils, no nichrome)
|
||||
- 1x Aluminium (if using aluminium for the mixed metal ingots, otherwise 1 is fine)
|
||||
- 4x Chrome
|
||||
- 1x Tungsten (need 4x kanthal heating coils, no nichrome) (only 30 total tungsten are needed, 1 IBF takes less than an hour to make those)
|
||||
- 3x Aluminium (if using aluminium for the mixed metal ingots, otherwise 1 is fine)
|
||||
|
||||
### Drop Mob Farms
|
||||
|
||||
@ -271,37 +271,91 @@ Keep enough for Assemblers making Data Control Circuits etc.
|
||||
|
||||
## End Game
|
||||
|
||||
### For Chrome (need 498)
|
||||
4 Electrolyzers on ruby dust -> chrome dust
|
||||
2+ stacks centrifuges for redstone -> ruby dust
|
||||
### For Iridium (need 200)
|
||||
- Mine 5-6 stacks of Sheldonite Ore
|
||||
- 2 Grinders for Sheldonite and Ferrous with Mercury Cells
|
||||
- 1 stack of centrifuges for platinum dust
|
||||
- Keep ~300 platinum for circuit boards for the fusion
|
||||
|
||||
### For Titanium (need 252)
|
||||
16 Electrolyzers on bauxite dust
|
||||
More details [here](./material%20calculations/iridium_calcs.md)
|
||||
|
||||
### For Beryllium (need 256)
|
||||
4 Electrolyzers on ender pearl dust
|
||||
### 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
|
||||
|
||||
### For Helium (need 63)
|
||||
16 Centrifuges on end stone dust (make with tome of alkahest)
|
||||
More details [here](./material%20calculations/chrome_calcs.md)
|
||||
|
||||
### For Titanium (need 280)
|
||||
- 16 electrolyzers on bauxite dust
|
||||
|
||||
More details [here](./material%20calculations/titanium_calcs.md)
|
||||
|
||||
### For Beryllium (need 264)
|
||||
- 4 electrolyzers on ender pearl dust
|
||||
|
||||
### For Helium (need 45)
|
||||
- 16 centrifuges on end stone dust (make with tome of alkahest)
|
||||
|
||||
|
||||
## Items for Fusion:
|
||||
|
||||
33 Fusion Coils:
|
||||
157 Energy Flow Circuits
|
||||
132 Chrome Plates
|
||||
132 Titanium Plates
|
||||
66 Chrome Ingots
|
||||
- 132 Energy Flow Circuits
|
||||
- 33 Superconductors
|
||||
- 132 Chrome Plates
|
||||
- 66 Chrome Ingots
|
||||
- 132 Titanium Plates
|
||||
- 33 Iridium Plates
|
||||
- 264 Beryllium Cells
|
||||
- 1056 Dense Copper Plates
|
||||
- 4224 Coal Dust
|
||||
- 4224 Tin Dust
|
||||
|
||||
120 Advanced Machine Casings (32 (below) + 30 (above) + 24 (inner) + 34 (outer)):
|
||||
- 60 Data Control Circuits
|
||||
- 300 Chrome Plates
|
||||
- 120 Titanium Plates
|
||||
|
||||
1 Fusion Control Computer (not including the fusion coil):
|
||||
- 4 Data Orbs
|
||||
- 10 Energy Flow Circuits
|
||||
|
||||
4 Fusion Energy Injectors
|
||||
- 24 Superconductors
|
||||
- 32 Energy Flow Circuits
|
||||
- 16 Chrome Plates
|
||||
- 16 Titanium Plates
|
||||
- 2 Iridium Plates
|
||||
- 16 Lapotron Crystals
|
||||
|
||||
2 Fusion Material Injectors
|
||||
- 6 Energy Flow Circuits
|
||||
- 8 Chrome Plates
|
||||
- 8 Titanium Plates
|
||||
|
||||
1 Fusion Material Extractor
|
||||
- 3 Energy Flow Circuits
|
||||
- 4 Chrome Plates
|
||||
- 4 Titanium Plates
|
||||
|
||||
Total of 57 Superconductors required (15 recipes of 4):
|
||||
- 45 Helium cells
|
||||
- 30 Tungsten Plates
|
||||
- 15 Iridium Plates
|
||||
- 45 Energy Flow Circuits
|
||||
|
||||
|
||||
120 Advanced Machine Casings:
|
||||
60 Data Control Circuits
|
||||
300 Chrome Plates
|
||||
120 Titanium Plates
|
||||
**Important Base Material Totals**:
|
||||
- 228 Energy Flow Circuits -> 228 Lapotron Crystals, 228 Platinum, 9576 Redstone (including redstone to lapis), 2052 Copper, 4104 Rubber
|
||||
- 526 Chrome
|
||||
- 280 Titanium
|
||||
- 50 Iridium Plates / 200 Iridium Ingots -> Maximum of 360 or ~6 Stacks of Sheldonite necessary!!
|
||||
- 264 Beryllium Cells
|
||||
- 1056 Dense Copper Plates
|
||||
- 289 Platinum Plates (including the ones for energy flow circuits)
|
||||
|
||||
Other compos:
|
||||
60 Energy Flow Circuit
|
||||
4 Data Orb
|
||||
## 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.
|
||||
|
||||
|
||||
63 Helium Cells
|
||||
|
BIN
images/boiler_turtle_required_items.png
(Stored with Git LFS)
Normal file
BIN
images/boiler_turtle_required_items.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
images/boiler_turtle_resupply_station.png
(Stored with Git LFS)
Normal file
BIN
images/boiler_turtle_resupply_station.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
images/boiler_turtle_station_setup.png
(Stored with Git LFS)
Normal file
BIN
images/boiler_turtle_station_setup.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
images/ibf_setup.png
(Stored with Git LFS)
Normal file
BIN
images/ibf_setup.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
images/mining_setup.png
(Stored with Git LFS)
Normal file
BIN
images/mining_setup.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
images/mining_turtle_compare_blocks.png
(Stored with Git LFS)
Normal file
BIN
images/mining_turtle_compare_blocks.png
(Stored with Git LFS)
Normal file
Binary file not shown.
49
material calculations/chrome_calcs.md
Normal file
49
material calculations/chrome_calcs.md
Normal file
@ -0,0 +1,49 @@
|
||||
# Chrome Production Calculations
|
||||
|
||||
**526 total chrome needed**
|
||||
|
||||
## Chrome Ingots from Chrome Dust
|
||||
|
||||
1 chrome dust in an IBF takes 40 seconds. For 526 chrome that would take ~5:50h. 4 IBF (one circle around a casing) take 1:27h.
|
||||
|
||||
Power consumption is 128EU/t per IBF.
|
||||
|
||||
## Chrome Dust from Ruby Dust
|
||||
|
||||
9 ruby dust make 1 chrome dust in an electrolyzer in 25 seconds. For 526 chrome dust, 4734 ruby dust are necessary. In one electrolyzer, this would take ~3:39h. 4 electrolyzers need 55 minutes.
|
||||
|
||||
Power consumption is 50EU/t per electrolyzer.
|
||||
|
||||
## Ruby Dust from Redstone Dust
|
||||
|
||||
10 redstone dust make 1 ruby dust in a centrifuge in 350 seconds. A stack of centrifuges produces 1 ruby dust every 5.47s or 0.183 ruby dust per second. For 4734 ruby dust, a stack of centrifuges needs 7:11h. Two stacks need 3:36h, 3 stacks 2:24h, 4 stacks 1:48h, 5 stacks 1:26h.
|
||||
|
||||
Note that extra rubies will be found by the mining turtles/quarry.
|
||||
|
||||
Each stack of centrifuges consumes 1.8 redstone per second or 110 redstone per minute. For the entire 526 chrome, 47.34k redstone are necessary.
|
||||
|
||||
Power consumption is 320EU/t per stack of centrifuges.
|
||||
|
||||
## Suggestion
|
||||
|
||||
- 4 IBFs on chrome -> 1:27h, 512EU/t
|
||||
- 4 electrolyzers -> 0:55h, 200EU/t
|
||||
- 3 stacks of redstone centrifuges -> 2:24h, 1280EU/t
|
||||
|
||||
In 1:27h, the centrifuges would produce 2865 ruby dust, so quarries would need to supplement 1868.
|
||||
|
||||
Total power: ~2000EU/t, needs about 10 boilers
|
||||
|
||||
## 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
|
31
material calculations/iridium_calcs.md
Normal file
31
material calculations/iridium_calcs.md
Normal file
@ -0,0 +1,31 @@
|
||||
# Iridium Production Calculations
|
||||
|
||||
**200 total iridium ingots needed**
|
||||
|
||||
## Making Plates
|
||||
|
||||
*No iridium is needed in ingot form, everything can be converted to plates!*
|
||||
|
||||
50 Plates are needed for the Fusion Reactor. Nothing needed for anything else!
|
||||
|
||||
An Implosion Compressor makes 1 plate per second from Iridium Alloy Ingots. That takes a minute for all Iridium Plates needed in the run, using 32EU/t. Basically completely irrelevant other than having to place the machine once.
|
||||
|
||||
For 50 Iridium Plates, 400 Industrial TNT are needed.
|
||||
|
||||
## Making Iridium Alloy Ingots
|
||||
|
||||
Make in a rolling machine using 4 Iridium Ingots, 4 Advanced Alloys and 1 Diamond Dust. Takes 5 seconds per Plate. For 50 Plates that is about 4 minutes. Uses MJ.
|
||||
|
||||
## Making Ingots
|
||||
|
||||
From Ore: Compress 1 ore to 1 ingot.
|
||||
|
||||
From Sheldonite: Grind Sheldonite with mercury cells in the Industrial Grinder. Takes 5s per ore and 128EU/t. Produces 2 Iridium Nuggets and 3 Platinum Dust per ore. Platinum Dust can be centrifuged to Iridium Nuggets 1:1, so in total that is 5/9 Iridium Ingots per Sheldonite Ore. Compress the nuggets into ingots.
|
||||
|
||||
From Ferrous Ore: Grind Ferrous with mercury cells in the Industrial Grinder. Takes 5s per ore and 128EU/t. Produces 1 Platinum Dust per ore.
|
||||
|
||||
## Centrifuging Platinum Dust
|
||||
|
||||
1 Centrifuge takes 1 Platinum Dust (no cells) and makes 1 Iridium Nugget (and 1 tiny pile of Nickel Dust) in 150s using 5EU/t.
|
||||
|
||||
One stack of centrifuges produces 0.427 Iridium Nuggets per second, which is 0.047 Iridium Ingots per second or 2.84 Iridium Ingots per Minute.
|
17
material calculations/titanium_calcs.md
Normal file
17
material calculations/titanium_calcs.md
Normal file
@ -0,0 +1,17 @@
|
||||
# Titanium Production Calculations
|
||||
|
||||
**280 total titanium needed**
|
||||
|
||||
## Titanium Ingots from Titanium Dust
|
||||
|
||||
1 titanium dust in an IBF takes 50 seconds. For 280 titanium that would take 3:53h. 4 IBF (one circle around a casing) take 58.3 minutes.
|
||||
|
||||
Power consumption is 128EU/t per IBF.
|
||||
|
||||
## Titanium Dust from Bauxite Dust
|
||||
|
||||
12 Bauxite Dust make 0.5 (2 small piles) Titanium Dust in an electrolyzer in 100 seconds using 128EU/t. For 280 Titanium, 6720 Bauxite Dust are necessary. In one electrolyzer, this would take 15:33h. 4 electrolyzers take 3:53h, 16 electrolyzers take 58.3 minutes.
|
||||
|
||||
## Bauxite Dust from Bauxite Ore
|
||||
|
||||
1 Bauxite Ore can be macerated into 4 Bauxite Dust, so 1680 Bauxite Ore are needed.
|
Loading…
x
Reference in New Issue
Block a user