SHOW:
|
|
- or go back to the newest paste.
| 1 | - | p = peripheral.wrap("top")
|
| 1 | + | -- Labels and variables for the items we need for crystal growth |
| 2 | - | local destinations = {}
|
| 2 | + | -- Fluix Crystal |
| 3 | - | function getNames() |
| 3 | + | lblNetherQuartz = "Nether Quartz" |
| 4 | - | data = p.getAllStacks() |
| 4 | + | bNQ = false -- do we have Nether Quartz |
| 5 | - | for i,j in pairs(data[1]) do |
| 5 | + | lblRedstone = "Redstone" |
| 6 | - | print(i..";"..j) |
| 6 | + | bR = false -- do we have Redstone |
| 7 | - | end |
| 7 | + | lblChargedCertus = "Charged Certus Quartz Crystal" |
| 8 | - | end |
| 8 | + | bCC = false -- do we have Charged Certus |
| 9 | - | getNames() |
| 9 | + | -- Pure Certus Quartz |
| 10 | lblCertusSeed = "Certus Quartz Seed" | |
| 11 | bCS = false -- do we have Certus Quartz Seed | |
| 12 | -- Pure Fluix Crystal | |
| 13 | lblFluixSeed = "Fluix Seed" | |
| 14 | -- Pure Nether Quartz | |
| 15 | lblNQuartzSeed = "Nether Quartz Seed" | |
| 16 | bFS = false -- dw we have Fluix Seed | |
| 17 | -- Side of the turtle the chest is on | |
| 18 | -- This requires the chest to be in front of the turtle or on top of the turtle. | |
| 19 | -- Edit code in function fMoveOne (turtle.drop or turtle.dropUp) | |
| 20 | lblChest = "front" | |
| 21 | lblPushDir = "south" | |
| 22 | -- Side of the turtle used to turn off energy | |
| 23 | lblRS = "back" | |
| 24 | ||
| 25 | ||
| 26 | ||
| 27 | pChest = peripheral.wrap(lblChest) | |
| 28 | ||
| 29 | -- This function will scan the chest and detect what ingredients are located in it | |
| 30 | function fCheckChest() | |
| 31 | -- Start by setting all of the ingredients to false | |
| 32 | bNQ = false -- Nether Quartz | |
| 33 | bR = false -- Redstone | |
| 34 | bCC = false -- Charged Certus | |
| 35 | bCS = false -- Certus Seed | |
| 36 | bFS = false -- Fluix Seed | |
| 37 | bNQS = false -- Nether Quartz Seed | |
| 38 | cSize = pChest.size() -- number of slots in the chest | |
| 39 | --print("cSize = "..cSize)
| |
| 40 | for slot = 1, cSize do | |
| 41 | --print("slot = "..slot)
| |
| 42 | data = pChest.getItemMeta(slot) | |
| 43 | if data == nil then | |
| 44 | itemName = "No item in slot" | |
| 45 | else | |
| 46 | itemName = data["displayName"] | |
| 47 | print(itemName) | |
| 48 | end | |
| 49 | if itemName == lblNetherQuartz then | |
| 50 | bNQ = true | |
| 51 | print("Found Nether Quartz")
| |
| 52 | slotNQ = slot | |
| 53 | end -- if | |
| 54 | if itemName == lblRedstone then | |
| 55 | bR = true | |
| 56 | print("Found Redstone")
| |
| 57 | slotR = slot | |
| 58 | end -- if | |
| 59 | if itemName == lblChargedCertus then | |
| 60 | bCC = true | |
| 61 | print("Found Charged Certus")
| |
| 62 | slotCC = slot | |
| 63 | end -- if | |
| 64 | if itemName == lblCertusSeed then | |
| 65 | bCS = true | |
| 66 | print("Found Certus Seed")
| |
| 67 | slotCS = slot | |
| 68 | end -- if | |
| 69 | if itemName == lblFluixSeed then | |
| 70 | bFS = true | |
| 71 | print("Found Fluix Seed")
| |
| 72 | slotFS = slot | |
| 73 | end -- if | |
| 74 | if itemName == lblNQuartzSeed then | |
| 75 | bNQS = true | |
| 76 | print("Found Nether Quartz Seed")
| |
| 77 | slotNQS = slot | |
| 78 | end -- if | |
| 79 | end -- for | |
| 80 | end -- function | |
| 81 | ||
| 82 | -- This routine will drop the seeds and turn on the accelerators | |
| 83 | -- It will aslo check on the seed growth and turn off the accelerators when done | |
| 84 | function fGrowSeeds() | |
| 85 | turtle.dropDown() | |
| 86 | redstone.setAnalogOutput(lblRS, 15) | |
| 87 | os.sleep(30) -- wait 30 seconds | |
| 88 | while turtle.suckDown() do | |
| 89 | turtle.dropDown() | |
| 90 | os.sleep(30) | |
| 91 | end -- do | |
| 92 | redstone.setAnalogOutput(lblRS, 0) | |
| 93 | end -- function | |
| 94 | ||
| 95 | -- This routine will pull one item out of the chest and drop it into the water below | |
| 96 | function fMoveOne(moveSlot) | |
| 97 | pChest.drop(moveSlot, 1, "down") | |
| 98 | --pushItemIntoSlot(lblPushDir, moveSlot) | |
| 99 | end -- function | |
| 100 | ||
| 101 | -- This routine will check to see if we have a crafting operation to perform | |
| 102 | function fCheck4Work() | |
| 103 | if bFS then | |
| 104 | print("Make Pure Fluix")
| |
| 105 | pChest.drop(slotFS, 64, "down") | |
| 106 | fGrowSeeds() | |
| 107 | elseif bCS then | |
| 108 | print("Make Pure Certus")
| |
| 109 | pChest.drop(slotCS, 64, "down") | |
| 110 | fGrowSeeds() | |
| 111 | elseif bNQS then | |
| 112 | print("Make Pure Nether Quartz")
| |
| 113 | pChest.drop(slotNQS, 64, "down") | |
| 114 | fGrowSeeds() | |
| 115 | elseif (bNQ and bR and bCC) then | |
| 116 | print("Make Fluix")
| |
| 117 | fMoveOne(slotNQ) | |
| 118 | fMoveOne(slotR) | |
| 119 | fMoveOne(slotCC) | |
| 120 | -- else | |
| 121 | -- print("Nothing to make")
| |
| 122 | end -- if | |
| 123 | end -- function | |
| 124 | ||
| 125 | while true do | |
| 126 | fCheckChest() | |
| 127 | fCheck4Work() | |
| 128 | os.sleep(1) -- wait one seconds between checks | |
| 129 | end -- program |