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