Rename things

This commit is contained in:
Anton Reinhard 2024-04-30 18:02:26 +02:00
parent b8689fb78f
commit 46f9ef0df6
14 changed files with 417 additions and 10 deletions

View File

3
original_code/README.md Normal file
View File

@ -0,0 +1,3 @@
# Original Programs
The code in this directory is not by me and only here for reference.

View File

@ -0,0 +1,414 @@
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 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")
platinumLoop()

View File

@ -410,15 +410,5 @@ function redstoneLoop()
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()