SHOW:
|
|
- or go back to the newest paste.
| 1 | -- NOT FOR USE | |
| 2 | -- THIS IS MY WORK IN PROGRESS | |
| 3 | ||
| 4 | os.loadAPI("button")
| |
| 5 | local m = peripheral.wrap("right")
| |
| 6 | local rsOut = {}
| |
| 7 | local c = peripheral.wrap("container_chest_0")
| |
| 8 | local a = peripheral.wrap("tt_magnet_0")
| |
| 9 | local s = peripheral.wrap("tile_mfr_machine_autospawner_name_0")
| |
| 10 | m.clear() | |
| 11 | local mobArray = {}
| |
| 12 | local buttonColors = {}
| |
| 13 | local attractorStatus = "" | |
| 14 | local page = 1 | |
| 15 | local pages = 0 | |
| 16 | local currMob = "" | |
| 17 | ||
| 18 | function fillMainTable() | |
| 19 | getCurrMob() | |
| 20 | checkExact() | |
| 21 | getAttractorStatus() | |
| 22 | m.clear() | |
| 23 | button.clearTable() | |
| 24 | button.setTable("Lights", lights, "", 4, 17, 2, 4)
| |
| 25 | button.setTable("Door", door, "", 20, 33, 2, 4)
| |
| 26 | button.setTable("Grinders", grinders, "", 4, 17, 6, 8)
| |
| 27 | button.setTable("DrawBridge", drawBridge, "", 20, 33, 6, 8)
| |
| 28 | button.setTable("Attractor", attractorToggle, "", 4, 17, 10, 12)
| |
| 29 | button.setTable(attractorStatus, togglePush, "", 20, 33, 10, 12) | |
| 30 | button.setTable("Mob Selector", mobSelect, "", 20, 33, 14, 16)
| |
| 31 | button.setTable("Spawner", spawner, "", 4, 17, 14, 16)
| |
| 32 | --button.setTable("Refresh", refresh, "", 15, 35, 19, 19)
| |
| 33 | print("Filled")
| |
| 34 | button.screen() | |
| 35 | for i,j in pairs(buttonColors) do | |
| 36 | if not rsOut[j] then button.toggleButton(i) end | |
| 37 | end | |
| 38 | button.toggleButton("Attractor")
| |
| 39 | button.label(1, 19, "Current Mob: "..currMob) | |
| 40 | button.label(30, 19, "Exact: "..currExact) | |
| 41 | end | |
| 42 | ||
| 43 | function getAttractorStatus() | |
| 44 | if a.isPulling() then | |
| 45 | attractorStatus = "Pulling" | |
| 46 | else | |
| 47 | attractorStatus = "Pushing" | |
| 48 | end | |
| 49 | end | |
| 50 | ||
| 51 | function togglePush() | |
| 52 | button.flash(attractorStatus) | |
| 53 | a.setPulling(not a.isPulling()) | |
| 54 | fillMainTable() | |
| 55 | end | |
| 56 | ||
| 57 | function fillTable() | |
| 58 | checkMobs() | |
| 59 | checkExact() | |
| 60 | getCurrMob() | |
| 61 | m.clear() | |
| 62 | button.clearTable() | |
| 63 | local totalrows = 0 | |
| 64 | local npp = 12 --names per page | |
| 65 | local numNames = 0 | |
| 66 | local col = 2 | |
| 67 | local row = 12 | |
| 68 | local countRow = 1 | |
| 69 | local currName = 0 | |
| 70 | for i,j in pairs(mobArray) do | |
| 71 | totalrows = totalrows+1 | |
| 72 | end | |
| 73 | pages = math.ceil(totalrows/npp) | |
| 74 | print(totalrows) | |
| 75 | for name,slot in pairs(mobArray) do | |
| 76 | currName = currName + 1 | |
| 77 | if currName > npp*(page-1) and currName < npp*page+1 then | |
| 78 | row = 4+(countRow) | |
| 79 | button.setTable(string.sub(name, 0, 17), insertMob, slot, col, col+17 , row, row) | |
| 80 | if col == 21 then | |
| 81 | col = 2 | |
| 82 | countRow = countRow + 2 | |
| 83 | else | |
| 84 | col = col+19 | |
| 85 | end | |
| 86 | end | |
| 87 | end | |
| 88 | button.setTable("Next Page", nextPage, "", 27, 38, 1, 1)
| |
| 89 | button.setTable("Prev Page", prevPage, "", 2, 13, 1, 1)
| |
| 90 | button.setTable("Main Menu", goMainMenu, "", 15, 25, 1, 1)
| |
| 91 | button.setTable("Exact: "..currExact, switchExact, "", 21, 38, 18, 19)
| |
| 92 | button.setTable("Remove Mob", removeMob, "", 2, 19, 18, 19)
| |
| 93 | button.screen() | |
| 94 | button.label(15,3, "Page: "..tostring(page).." of "..tostring(pages)) | |
| 95 | button.label(12, 16, "Current Mob: "..currMob) | |
| 96 | end | |
| 97 | ||
| 98 | function getCurrMob() | |
| 99 | data = s.getStackInSlot(1) | |
| 100 | if data then | |
| 101 | currMob = data.captured | |
| 102 | else | |
| 103 | currMob = "None" | |
| 104 | end | |
| 105 | end | |
| 106 | ||
| 107 | function goMainMenu() | |
| 108 | fillMainTable() | |
| 109 | -- refresh() | |
| 110 | end | |
| 111 | ||
| 112 | function checkExact() | |
| 113 | if s.getSpawnExact() then | |
| 114 | currExact = "Yes" | |
| 115 | else | |
| 116 | currExact = "No" | |
| 117 | end | |
| 118 | end | |
| 119 | ||
| 120 | function switchExact() | |
| 121 | s.setSpawnExact(not s.getSpawnExact()) | |
| 122 | fillTable() | |
| 123 | end | |
| 124 | ||
| 125 | function nextPage() | |
| 126 | if page+1 <= pages then | |
| 127 | page = page+1 | |
| 128 | end | |
| 129 | fillTable() | |
| 130 | sleep(0.25) | |
| 131 | end | |
| 132 | ||
| 133 | function prevPage() | |
| 134 | if page-1 >= 1 then page = page-1 end | |
| 135 | fillTable() | |
| 136 | sleep(0.25) | |
| 137 | end | |
| 138 | ||
| 139 | function getMobs() | |
| 140 | mobArray = {}
| |
| 141 | for i = 1,27 do | |
| 142 | if c.getStackInSlot(i) then | |
| 143 | data = c.getStackInSlot(i) | |
| 144 | --print(i..":"..data.captured) | |
| 145 | mobArray[data.captured] = i | |
| 146 | end | |
| 147 | end | |
| 148 | end | |
| 149 | ||
| 150 | function findEmptySlot() | |
| 151 | for i = 1,27 do | |
| 152 | if not c.getStackInSlot(i) then | |
| 153 | return(i) | |
| 154 | end | |
| 155 | end | |
| 156 | end | |
| 157 | ||
| 158 | function removeMob() | |
| 159 | local slot = findEmptySlot() | |
| 160 | c.pullItem("down", 1, 1, slot)
| |
| 161 | end | |
| 162 | ||
| 163 | function insertMob(info) | |
| 164 | removeMob() | |
| 165 | c.pushItem("down", info, 1, 1)
| |
| 166 | fillTable() | |
| 167 | end | |
| 168 | ||
| 169 | function checkMobs() | |
| 170 | getMobs() | |
| 171 | --fillTable() | |
| 172 | end | |
| 173 | ||
| 174 | function initRS() | |
| 175 | rsOut[colors.white] = false | |
| 176 | rsOut[colors.orange] = true | |
| 177 | rsOut[colors.magenta] = false | |
| 178 | rsOut[colors.lightBlue] = true | |
| 179 | rsOut[colors.yellow] = false | |
| 180 | rsOut[colors.lime] = true | |
| 181 | buttonColors["Lights"] = colors.white | |
| 182 | buttonColors["Spawner"] = colors.orange | |
| 183 | buttonColors["Grinders"] = colors.magenta | |
| 184 | buttonColors["DrawBridge"] = colors.lightBlue | |
| 185 | buttonColors["Attractor"] = colors.yellow | |
| 186 | buttonColors["Door"] = colors.lime | |
| 187 | end | |
| 188 | ||
| 189 | function setRS() | |
| 190 | local colorOutput = 0 | |
| 191 | for i,j in pairs(rsOut) do | |
| 192 | if j then colorOutput = colorOutput + i end | |
| 193 | end | |
| 194 | rs.setBundledOutput("left", colorOutput)
| |
| 195 | end | |
| 196 | ||
| 197 | function lights() | |
| 198 | button.toggleButton("Lights")
| |
| 199 | rsOut[colors.white] = not rsOut[colors.white] | |
| 200 | setRS() | |
| 201 | end | |
| 202 | ||
| 203 | function door() | |
| 204 | button.toggleButton("Door")
| |
| 205 | rsOut[colors.lime] = not rsOut[colors.lime] | |
| 206 | setRS() | |
| 207 | end | |
| 208 | ||
| 209 | function spawner() | |
| 210 | button.toggleButton("Spawner")
| |
| 211 | rsOut[colors.orange] = not rsOut[colors.orange] | |
| 212 | setRS() | |
| 213 | end | |
| 214 | ||
| 215 | function grinders() | |
| 216 | button.toggleButton("Grinders")
| |
| 217 | rsOut[colors.magenta] = not rsOut[colors.magenta] | |
| 218 | setRS() | |
| 219 | end | |
| 220 | ||
| 221 | function drawBridge() | |
| 222 | button.toggleButton("DrawBridge")
| |
| 223 | rsOut[colors.lightBlue] = not rsOut[colors.lightBlue] | |
| 224 | setRS() | |
| 225 | end | |
| 226 | ||
| 227 | function attractorToggle() | |
| 228 | button.toggleButton("Attractor")
| |
| 229 | rsOut[colors.yellow] = not rsOut[colors.yellow] | |
| 230 | setRS() | |
| 231 | end | |
| 232 | ||
| 233 | function mobSelect() | |
| 234 | fillTable() | |
| 235 | -- refresh() | |
| 236 | -- getClick() | |
| 237 | end | |
| 238 | ||
| 239 | function getClick() | |
| 240 | local event,side,x,y = os.pullEvent() | |
| 241 | if event=="monitor_touch" then | |
| 242 | button.checkxy(x,y) | |
| 243 | end | |
| 244 | end | |
| 245 | ||
| 246 | function refresh() | |
| 247 | m.clear() | |
| 248 | print("Refreshed")
| |
| 249 | button.screen() | |
| 250 | end | |
| 251 | ||
| 252 | initRS() | |
| 253 | setRS() | |
| 254 | fillMainTable() | |
| 255 | --refresh() | |
| 256 | while true do getClick() end |