spaces->tab, equipper improvements, supertreefarm rewrite, follow improvements, sensor cleanup, milo multiple items allowed in recipes, remote canvas access
This commit is contained in:
@@ -11,154 +11,154 @@ local parallel = _G.parallel
|
||||
local STARTUP_FILE = 'usr/autorun/fly.lua'
|
||||
|
||||
if not modules.launch or not modules.getMetaOwner then
|
||||
print([[Required:
|
||||
print([[Required:
|
||||
* Kinetic augment
|
||||
* Entity sensor
|
||||
* Introspection module]])
|
||||
error('missing required item')
|
||||
error('missing required item')
|
||||
end
|
||||
|
||||
if not fs.exists(STARTUP_FILE) then
|
||||
Util.writeFile(STARTUP_FILE, [[os.sleep(1)
|
||||
Util.writeFile(STARTUP_FILE, [[os.sleep(1)
|
||||
shell.openHiddenTab('elytraFly.lua')]])
|
||||
print('Autorun program created: ' .. STARTUP_FILE)
|
||||
print('Autorun program created: ' .. STARTUP_FILE)
|
||||
end
|
||||
|
||||
local canvas = modules.canvas and modules.canvas()
|
||||
|
||||
local function dist(x, y, z)
|
||||
return math.sqrt(
|
||||
math.pow(x, 2) +
|
||||
math.pow(y, 2) +
|
||||
math.pow(z, 2))
|
||||
return math.sqrt(
|
||||
math.pow(x, 2) +
|
||||
math.pow(y, 2) +
|
||||
math.pow(z, 2))
|
||||
end
|
||||
|
||||
local function display(meta)
|
||||
if canvas then
|
||||
if not canvas.group then
|
||||
canvas.group = canvas.addGroup({ 4, 90 })
|
||||
canvas.group.addRectangle(0, 0, 70, 30, 0x00000033)
|
||||
canvas.pitch = canvas.group.addText({ 4, 5 }, '') -- , 0x202020FF)
|
||||
canvas.pitch.setShadow(true)
|
||||
canvas.pitch.setScale(.75)
|
||||
canvas.group.addItem({ 5, 30 }, 'minecraft:elytra')
|
||||
canvas.group2 = canvas.addGroup({ 80, 10 })
|
||||
canvas.group2.addLines(
|
||||
{ 0, 0 },
|
||||
{ 0, 180 },
|
||||
{ 5, 180 },
|
||||
{ 5, 0 },
|
||||
0x202020FF,
|
||||
2)
|
||||
canvas.meter = canvas.group2.addRectangle(0, 0, 5, 1)
|
||||
end
|
||||
local size = math.abs(meta.pitch) -- math.ceil(math.abs(meta.pitch) / 9)
|
||||
local y = 0
|
||||
local color = 0x202020FF
|
||||
if meta.pitch < 0 then
|
||||
y = size
|
||||
color = 0x808080FF
|
||||
end
|
||||
canvas.meter.setPosition(0, 90 - y)
|
||||
canvas.meter.setSize(5, size)
|
||||
canvas.meter.setColor(color)
|
||||
canvas.pitch.setText(string.format('Pitch: %s\nMotion Y: %s\nSpeed: %s m/s',
|
||||
math.floor(-meta.pitch),
|
||||
Util.round(meta.motionY, 2),
|
||||
Util.round(dist(meta.motionX, meta.motionY, meta.motionZ) * 20, 2)))
|
||||
end
|
||||
if canvas then
|
||||
if not canvas.group then
|
||||
canvas.group = canvas.addGroup({ 4, 90 })
|
||||
canvas.group.addRectangle(0, 0, 70, 30, 0x00000033)
|
||||
canvas.pitch = canvas.group.addText({ 4, 5 }, '') -- , 0x202020FF)
|
||||
canvas.pitch.setShadow(true)
|
||||
canvas.pitch.setScale(.75)
|
||||
canvas.group.addItem({ 5, 30 }, 'minecraft:elytra')
|
||||
canvas.group2 = canvas.addGroup({ 80, 10 })
|
||||
canvas.group2.addLines(
|
||||
{ 0, 0 },
|
||||
{ 0, 180 },
|
||||
{ 5, 180 },
|
||||
{ 5, 0 },
|
||||
0x202020FF,
|
||||
2)
|
||||
canvas.meter = canvas.group2.addRectangle(0, 0, 5, 1)
|
||||
end
|
||||
local size = math.abs(meta.pitch) -- math.ceil(math.abs(meta.pitch) / 9)
|
||||
local y = 0
|
||||
local color = 0x202020FF
|
||||
if meta.pitch < 0 then
|
||||
y = size
|
||||
color = 0x808080FF
|
||||
end
|
||||
canvas.meter.setPosition(0, 90 - y)
|
||||
canvas.meter.setSize(5, size)
|
||||
canvas.meter.setColor(color)
|
||||
canvas.pitch.setText(string.format('Pitch: %s\nMotion Y: %s\nSpeed: %s m/s',
|
||||
math.floor(-meta.pitch),
|
||||
Util.round(meta.motionY, 2),
|
||||
Util.round(dist(meta.motionX, meta.motionY, meta.motionZ) * 20, 2)))
|
||||
end
|
||||
end
|
||||
|
||||
local function clearDisplay()
|
||||
if canvas and canvas.group then
|
||||
canvas.group.remove()
|
||||
canvas.group = nil
|
||||
canvas.group2.remove()
|
||||
end
|
||||
if canvas and canvas.group then
|
||||
canvas.group.remove()
|
||||
canvas.group = nil
|
||||
canvas.group2.remove()
|
||||
end
|
||||
end
|
||||
|
||||
local function run()
|
||||
local launchCounter = 0
|
||||
local launchCounter = 0
|
||||
|
||||
while true do
|
||||
local meta = modules.getMetaOwner()
|
||||
while true do
|
||||
local meta = modules.getMetaOwner()
|
||||
|
||||
if meta.isOnLadder then
|
||||
os.sleep(0.5)
|
||||
if meta.isOnLadder then
|
||||
os.sleep(0.5)
|
||||
|
||||
elseif not meta.isSneaking and meta.isElytraFlying then
|
||||
elseif not meta.isSneaking and meta.isElytraFlying then
|
||||
|
||||
if meta.isInWater then
|
||||
display(meta)
|
||||
os.sleep(0.5)
|
||||
if meta.isInWater then
|
||||
display(meta)
|
||||
os.sleep(0.5)
|
||||
|
||||
elseif meta.pitch < 0 then -- looking up
|
||||
modules.launch(meta.yaw, meta.pitch, -meta.pitch / 22.5)
|
||||
Sound.play('entity.bobber.throw', .6)
|
||||
display(meta)
|
||||
os.sleep(0.1)
|
||||
elseif meta.pitch < 0 then -- looking up
|
||||
modules.launch(meta.yaw, meta.pitch, -meta.pitch / 22.5)
|
||||
Sound.play('entity.bobber.throw', .6)
|
||||
display(meta)
|
||||
os.sleep(0.1)
|
||||
|
||||
elseif meta.motionY < -0.5 then -- falling fast
|
||||
modules.launch(0, 270, math.min(-meta.motionY + 1, 4))
|
||||
Sound.play('entity.bat.takeoff')
|
||||
display(meta)
|
||||
os.sleep(0)
|
||||
elseif meta.motionY < -0.5 then -- falling fast
|
||||
modules.launch(0, 270, math.min(-meta.motionY + 1, 4))
|
||||
Sound.play('entity.bat.takeoff')
|
||||
display(meta)
|
||||
os.sleep(0)
|
||||
|
||||
else
|
||||
display(meta)
|
||||
os.sleep(0.1)
|
||||
end
|
||||
else
|
||||
display(meta)
|
||||
os.sleep(0.1)
|
||||
end
|
||||
|
||||
elseif meta.isSneaking and not meta.isElytraFlying and meta.pitch == -90 then
|
||||
if launchCounter < 2 then
|
||||
launchCounter = launchCounter + 1
|
||||
Sound.play('block.note.pling', .5)
|
||||
os.sleep(0.5)
|
||||
elseif meta.isSneaking and not meta.isElytraFlying and meta.pitch == -90 then
|
||||
if launchCounter < 2 then
|
||||
launchCounter = launchCounter + 1
|
||||
Sound.play('block.note.pling', .5)
|
||||
os.sleep(0.5)
|
||||
|
||||
else
|
||||
Sound.play('entity.bobber.throw', 1)
|
||||
modules.launch(0, 270, 4)
|
||||
os.sleep(0.2)
|
||||
end
|
||||
else
|
||||
Sound.play('entity.bobber.throw', 1)
|
||||
modules.launch(0, 270, 4)
|
||||
os.sleep(0.2)
|
||||
end
|
||||
|
||||
elseif not meta.isSneaking and meta.motionY < -0.8 then
|
||||
print('falling...')
|
||||
modules.launch(0, 270, -meta.motionY + 1)
|
||||
Sound.play('entity.bat.takeoff')
|
||||
os.sleep(0)
|
||||
elseif not meta.isSneaking and meta.motionY < -0.8 then
|
||||
print('falling...')
|
||||
modules.launch(0, 270, -meta.motionY + 1)
|
||||
Sound.play('entity.bat.takeoff')
|
||||
os.sleep(0)
|
||||
|
||||
elseif meta and meta.isElytraFlying and meta.isSneaking then
|
||||
display(meta)
|
||||
os.sleep(0.1)
|
||||
elseif meta and meta.isElytraFlying and meta.isSneaking then
|
||||
display(meta)
|
||||
os.sleep(0.1)
|
||||
|
||||
else
|
||||
clearDisplay()
|
||||
--display(meta)
|
||||
launchCounter = 0
|
||||
os.sleep(0.4)
|
||||
end
|
||||
end
|
||||
else
|
||||
clearDisplay()
|
||||
--display(meta)
|
||||
launchCounter = 0
|
||||
os.sleep(0.4)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
parallel.waitForAny(
|
||||
function()
|
||||
print('\nFlight control initialized')
|
||||
print('\nSneak and look straight up for launch')
|
||||
print('Sneak to deactivate during flight')
|
||||
print('\nPress any key to exit')
|
||||
os.pullEvent('char')
|
||||
end,
|
||||
function()
|
||||
while true do
|
||||
local _, m = pcall(run)
|
||||
if m then
|
||||
print(m)
|
||||
end
|
||||
print('Waiting for 5 seconds before restarting')
|
||||
os.sleep(5)
|
||||
modules = _G.peripheral.wrap('back')
|
||||
canvas = modules and modules.canvas and modules.canvas()
|
||||
end
|
||||
end)
|
||||
function()
|
||||
print('\nFlight control initialized')
|
||||
print('\nSneak and look straight up for launch')
|
||||
print('Sneak to deactivate during flight')
|
||||
print('\nPress any key to exit')
|
||||
os.pullEvent('char')
|
||||
end,
|
||||
function()
|
||||
while true do
|
||||
local _, m = pcall(run)
|
||||
if m then
|
||||
print(m)
|
||||
end
|
||||
print('Waiting for 5 seconds before restarting')
|
||||
os.sleep(5)
|
||||
modules = _G.peripheral.wrap('back')
|
||||
canvas = modules and modules.canvas and modules.canvas()
|
||||
end
|
||||
end)
|
||||
|
||||
clearDisplay()
|
||||
|
||||
Reference in New Issue
Block a user