-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoreProc.lua
149 lines (124 loc) · 4.12 KB
/
oreProc.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
local component = require('component')
local sides = require('sides')
local oreList = require('oreList')
local transposers = {}
local transposerSides = {}
local orientation = 'West'
local targetInv
-- ==================== SETUP =====================
local function findTransposers()
for address in component.list('transposer') do
table.insert(transposers, component.proxy(component.get(address)))
end
end
local function setSides()
if orientation == 'North' then
transposerSides[1] = sides.north
transposerSides[2] = sides.west
transposerSides[3] = sides.south
transposerSides[4] = sides.south
transposerSides[5] = sides.east
transposerSides[6] = sides.north
-- transposerSides[7] = sides.up
-- transposerSides[8] = sides.up
transposerSides['work'] = {sides.east, sides.west}
elseif orientation == 'South' then
transposerSides[1] = sides.south
transposerSides[2] = sides.east
transposerSides[3] = sides.north
transposerSides[4] = sides.north
transposerSides[5] = sides.west
transposerSides[6] = sides.south
-- transposerSides[7] = sides.up
-- transposerSides[8] = sides.up
transposerSides['work'] = {sides.west, sides.east}
elseif orientation == 'East' then
transposerSides[1] = sides.east
transposerSides[2] = sides.north
transposerSides[3] = sides.west
transposerSides[4] = sides.west
transposerSides[5] = sides.south
transposerSides[6] = sides.east
-- transposerSides[7] = sides.up
-- transposerSides[8] = sides.up
transposerSides['work'] = {sides.south, sides.north}
elseif orientation == 'West' then
transposerSides[1] = sides.east
transposerSides[2] = sides.south
transposerSides[3] = sides.west
transposerSides[4] = sides.up
transposerSides[5] = sides.east
transposerSides[6] = sides.north
transposerSides[7] = sides.west
transposerSides[8] = sides.up
transposerSides['work'] = {sides.north, sides.south}
end
end
-- =================== LOOPING ====================
local function checkInventory(inventory)
local item
local toUse
-- No Transposers Found
if transposers[1] == nil or transposers[2] == nil then
return nil
end
-- Look at Working Inventory
if inventory == 0 then
item = transposers[1].getStackInSlot(transposerSides['work'][1], 1)
-- print(output)
-- Look at Target Inventory with Transposer 1
elseif inventory <= 4 then
item = transposers[1].getStackInSlot(transposerSides[inventory], 1)
toUse = 1
-- Look at Target Inventory with Transposer 2
else
item = transposers[2].getStackInSlot(transposerSides[inventory], 1)
toUse = 2
end
-- An Item is Present
return {item, toUse}
end
local function searchFilter(keyword)
for ID, entry in pairs(oreList) do
if entry.name == keyword then
return ID
end
end
return false
end
local function checkDatabase()
-- Check Working Inventory
local item, _ = table.unpack(checkInventory(0))
-- If Item is Present and in Filter
local F = searchFilter(item.label)
if item and F then
return oreList[F].filter
elseif item then
print(string.format('No Filter: %s', item.label))
return 8
end
return false
end
local function moveItem(targetInv)
local used, toUse = table.unpack(checkInventory(targetInv))
if not used then
transposers[toUse].transferItem(transposerSides['work'][toUse], transposerSides[targetInv])
return true
end
return false
end
-- ===================== MAIN =====================
local function init()
findTransposers()
setSides()
end
local function main()
init()
while true do
targetInv = checkDatabase()
if targetInv then
moveItem(targetInv)
end
end
end
main()