View difference between Paste ID: MrzGBPZB and jkiwXzuR
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