Skip to content

Instantly share code, notes, and snippets.

@Lupus590
Last active April 4, 2021 15:25
Show Gist options
  • Save Lupus590/5d11b18fc1f16ea78270ca6bb9d237e2 to your computer and use it in GitHub Desktop.
Save Lupus590/5d11b18fc1f16ea78270ca6bb9d237e2 to your computer and use it in GitHub Desktop.
A module that patches turtle.dig in my computercraft challenge.

Usage:

  1. Load the module like a normal module with require.
  2. Either use the dig methods exposed by the module
  3. or use the injectIntoTurtleApi function and then use the normal turtle functions.
local oldturtle = {
dig = turtle.dig,
digUp = turtle.digUp,
digDown = turtle.digDown,
place = turtle.place,
placeUp = turtle.placeUp,
placeDown = turtle.placeDown,
}
local function dig(side)
local ok, err
repeat
ok, err = oldturtle.dig(side)
until ok or err ~= "Cannot break protected block"
return ok, err
end
local function digUp(side)
local ok, err
repeat
ok, err = oldturtle.digUp(side)
until ok or err ~= "Cannot break protected block"
return ok, err
end
local function digDown(side)
local ok, err
repeat
ok, err = oldturtle.digDown(side)
until ok or err ~= "Cannot break protected block"
return ok, err
end
local function place(text)
local ok, err
repeat
ok, err = oldturtle.place(text)
until ok or err ~= "Cannot place block here" or turtle.detect()
return ok, err
end
local function placeUp(text)
local ok, err
repeat
ok, err = oldturtle.placeUp(text)
until ok or err ~= "Cannot place block here" or turtle.detect()
return ok, err
end
local function placeDown(text)
local ok, err
repeat
ok, err = oldturtle.placeDown(text)
until ok or err ~= "Cannot place block here" or turtle.detect()
return ok, err
end
turtle._kubejs_workaround_injected = false
local function injectIntoTurtleApi()
if not turtle._kubejs_workaround_injected then
turtle._kubejs_workaround_injected = true
turtle.digDown = digDown
turtle.digUp = digUp
turtle.dig = dig
turtle.placeDown = placeDown
turtle.placeUp = placeUp
turtle.place = place
end
end
return {
injectIntoTurtleApi = injectIntoTurtleApi,
dig = dig,
digUp = digUp,
digDown = digDown,
placeDown = placeDown,
placeUp = placeUp,
place = place,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment