SHOW:
|
|
- or go back to the newest paste.
| 1 | ----------------- | |
| 2 | --Name: miningLIB | |
| 3 | --Version: 1.0.0 | |
| 4 | --Requires: riewestLIB | |
| 5 | --By: Riewest (AKA Riewest14) | |
| 6 | ----------------- | |
| 7 | ||
| 8 | os.loadAPI("riewestLIB")
| |
| 9 | lib = riewestLIB | |
| 10 | ||
| 11 | --junk item array | |
| 12 | junkItems = {"stone", "gravel", "dirt", "sand"}
| |
| 13 | ||
| 14 | function test() | |
| 15 | --strip(10, true, false, 15) | |
| 16 | branchMine(10, 2, 2, true, 16, 15, true) | |
| 17 | --lib.turnAround() | |
| 18 | --dropJunk() | |
| 19 | end | |
| 20 | ||
| 21 | --Veinmine the block in front | |
| 22 | --Returning to the starting position | |
| 23 | function veinMine() | |
| 24 | --TODO | |
| 25 | end | |
| 26 | ||
| 27 | --Does a branch mine | |
| 28 | --Length: length of the mine | |
| 29 | --spaceBet: space between branches | |
| 30 | --branchLength: length of branches | |
| 31 | --retStart: returns to start if true | |
| 32 | --chestSlot: if not nil will dump items | |
| 33 | -- into that chest | |
| 34 | --fuelSlot: slot to attempt refueling | |
| 35 | -- from if not nil | |
| 36 | ||
| 37 | function branchMine(length, spaceBet, branchLength, retStart, fuelSlot, chestSlot, dropjunk) | |
| 38 | if not length then | |
| 39 | length = 15 | |
| 40 | end | |
| 41 | if not spaceBet then | |
| 42 | spaceBet = 1 | |
| 43 | end | |
| 44 | if not branchLength then | |
| 45 | branchLength = 5 | |
| 46 | end | |
| 47 | if not retStart then | |
| 48 | retStart = false | |
| 49 | end | |
| 50 | if not fuelSlot then | |
| 51 | fuelSlot = false | |
| 52 | end | |
| 53 | if not chestSlot then | |
| 54 | chestSlot = false | |
| 55 | end | |
| 56 | local count = 0 | |
| 57 | local lengthLeft = length | |
| 58 | for i = 1, length do | |
| 59 | if count > 100 then | |
| 60 | count = 0 | |
| 61 | end | |
| 62 | if lengthLeft < spaceBet then | |
| 63 | strip(lengthLeft, false, fuelSlot, chestSlot) | |
| 64 | break | |
| 65 | end | |
| 66 | local moved = strip(spaceBet + 1, false, fuelSlot, chestSlot) | |
| 67 | i = i + moved | |
| 68 | count = count + math.fmod(moved, 100) | |
| 69 | lengthLeft = lengthLeft - moved | |
| 70 | turtle.turnLeft() | |
| 71 | local s1 = strip(branchLength, true, fuelSlot, false) | |
| 72 | local s2 = strip(branchLength, true, fuelSlot, false) | |
| 73 | count = count + (math.fmod(s1, 100) + math.fmod(s2, 100)) | |
| 74 | print("Count: " .. count)
| |
| 75 | doChestG(chestSlot, count, 100, fuelSlot, dropjunk) | |
| 76 | turtle.turnRight() | |
| 77 | end | |
| 78 | if retStart then | |
| 79 | lib.turnAround() | |
| 80 | lib.tMoveF(length) | |
| 81 | end | |
| 82 | end | |
| 83 | ||
| 84 | --Drops junk items | |
| 85 | function dropJunk(fuelSlot, chestSlot) | |
| 86 | local slotsToKeep = {}
| |
| 87 | if fuelSlot then | |
| 88 | table.insert(fuelSlot) | |
| 89 | end | |
| 90 | if chestSlot then | |
| 91 | table.insert(chestSlot) | |
| 92 | end | |
| 93 | for k, v in pairs(junkItems) do | |
| 94 | lib.dropItem(v, slotsToKeep, "bottom") | |
| 95 | end | |
| 96 | end | |
| 97 | ||
| 98 | --Method to check if chest should be | |
| 99 | --placed above and empty the inventory | |
| 100 | --chestSlot: slot the chest is in if nil | |
| 101 | -- will not empty inventory | |
| 102 | --dist: Distance the turtle has traveled | |
| 103 | --interval: interval inventory should | |
| 104 | -- be checked | |
| 105 | --fuelSlot: optional fuelslot | |
| 106 | --dropjunk: drops the junk items | |
| 107 | function doChest(chestSlot, dist, interval, fuelSlot, dropjunk) | |
| 108 | if chestSlot and (math.fmod(dist, interval) == 0) and (turtle.getItemCount(chestSlot) > 0 ) then | |
| 109 | local oldSlot = turtle.getSelectedSlot() | |
| 110 | turtle.select(chestSlot) | |
| 111 | local chestData = turtle.getItemDetail() | |
| 112 | lib.tMoveU() | |
| 113 | turtle.digUp() | |
| 114 | lib.tMoveD() | |
| 115 | while not turtle.placeUp() do | |
| 116 | turtle.digUp() | |
| 117 | sleep(.1) | |
| 118 | end | |
| 119 | local slotsToKeep = {chestSlot}
| |
| 120 | if fuelSlot then | |
| 121 | lib.sortItem(fuelSlot) | |
| 122 | table.insert(slotsToKeep, fuelSlot) | |
| 123 | end | |
| 124 | if dropjunk then | |
| 125 | dropJunk() | |
| 126 | end | |
| 127 | lib.emptyInvExcept(slotsToKeep, "top") | |
| 128 | turtle.select(chestSlot) | |
| 129 | if not (chestData.name == "minecraft:chest") then | |
| 130 | while not turtle.digUp() do | |
| 131 | sleep(.1) | |
| 132 | end | |
| 133 | end | |
| 134 | turtle.select(oldSlot) | |
| 135 | end | |
| 136 | end | |
| 137 | ||
| 138 | --Slight variation on do chest where | |
| 139 | -- it does the function if blocks | |
| 140 | -- moved is greater than chest interval | |
| 141 | -- takes same parameters | |
| 142 | function doChestG(chestSlot, dist, interval, fuelSlot, dropjunk) | |
| 143 | if not chestSlot then | |
| 144 | return | |
| 145 | end | |
| 146 | if dist > interval then | |
| 147 | dist = interval | |
| 148 | end | |
| 149 | doChest(chestSlot, dist, interval, fuelSlot, dropjunk) | |
| 150 | end | |
| 151 | ||
| 152 | --Mine a 1b wide 3b tall tunnel | |
| 153 | --for length passed. Returns to | |
| 154 | -- the start if retStart is true | |
| 155 | -- chestSlot: if not nil will dump items | |
| 156 | -- into that chest | |
| 157 | -- fuelSlot: if not nill will refuel from | |
| 158 | -- that slot. | |
| 159 | function strip(length, retStart, fuelSlot, chestSlot, dropjunk) | |
| 160 | if not length then | |
| 161 | length = 5 | |
| 162 | end | |
| 163 | if not retStart then | |
| 164 | retStart = false | |
| 165 | end | |
| 166 | if not chestSlot then | |
| 167 | chestSlot = false | |
| 168 | end | |
| 169 | if not fuelSlot then | |
| 170 | fuelSlot = false | |
| 171 | end | |
| 172 | ||
| 173 | for i = 1, length do | |
| 174 | lib.tMoveF() | |
| 175 | turtle.digUp() | |
| 176 | turtle.digDown() | |
| 177 | if fuelSlot then | |
| 178 | lib.tRefuel(fuelSlot) | |
| 179 | end | |
| 180 | doChest(chestSlot, i, 100, fuelSlot, dropjunk) | |
| 181 | end | |
| 182 | if retStart then | |
| 183 | lib.turnAround() | |
| 184 | lib.tMoveF(length) | |
| 185 | end | |
| 186 | return length | |
| 187 | end | |
| 188 | ||
| 189 | ||
| 190 | ||
| 191 | ||
| 192 | test() |