foreign keyboards
This commit is contained in:
@@ -5,7 +5,7 @@ LUA MODULE
|
|||||||
compress.deflatelua - deflate (and gunzip/zlib) implemented in Lua.
|
compress.deflatelua - deflate (and gunzip/zlib) implemented in Lua.
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
|
|
||||||
local DEFLATE = require 'compress.deflatelua'
|
local DEFLATE = require 'compress.deflatelua'
|
||||||
-- uncompress gzip file
|
-- uncompress gzip file
|
||||||
local fh = assert(io.open'foo.txt.gz', 'rb')
|
local fh = assert(io.open'foo.txt.gz', 'rb')
|
||||||
@@ -13,12 +13,12 @@ SYNOPSIS
|
|||||||
DEFLATE.gunzip {input=fh, output=ofh}
|
DEFLATE.gunzip {input=fh, output=ofh}
|
||||||
fh:close(); ofh:close()
|
fh:close(); ofh:close()
|
||||||
-- can also uncompress from string including zlib and raw DEFLATE formats.
|
-- can also uncompress from string including zlib and raw DEFLATE formats.
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
|
||||||
This is a pure Lua implementation of decompressing the DEFLATE format,
|
This is a pure Lua implementation of decompressing the DEFLATE format,
|
||||||
including the related zlib and gzip formats.
|
including the related zlib and gzip formats.
|
||||||
|
|
||||||
Note: This library only supports decompression.
|
Note: This library only supports decompression.
|
||||||
Compression is not currently implemented.
|
Compression is not currently implemented.
|
||||||
|
|
||||||
@@ -34,9 +34,9 @@ API
|
|||||||
Decompresses input stream `fh` in the DEFLATE format
|
Decompresses input stream `fh` in the DEFLATE format
|
||||||
while writing to output stream `ofh`.
|
while writing to output stream `ofh`.
|
||||||
DEFLATE is detailed in http://tools.ietf.org/html/rfc1951 .
|
DEFLATE is detailed in http://tools.ietf.org/html/rfc1951 .
|
||||||
|
|
||||||
DEFLATE.gunzip {input=fh, output=ofh, disable_crc=disable_crc}
|
DEFLATE.gunzip {input=fh, output=ofh, disable_crc=disable_crc}
|
||||||
|
|
||||||
Decompresses input stream `fh` with the gzip format
|
Decompresses input stream `fh` with the gzip format
|
||||||
while writing to output stream `ofh`.
|
while writing to output stream `ofh`.
|
||||||
`disable_crc` (defaults to `false`) will disable CRC-32 checking
|
`disable_crc` (defaults to `false`) will disable CRC-32 checking
|
||||||
@@ -44,15 +44,15 @@ API
|
|||||||
gzip is detailed in http://tools.ietf.org/html/rfc1952 .
|
gzip is detailed in http://tools.ietf.org/html/rfc1952 .
|
||||||
|
|
||||||
DEFLATE.inflate_zlib {input=fh, output=ofh, disable_crc=disable_crc}
|
DEFLATE.inflate_zlib {input=fh, output=ofh, disable_crc=disable_crc}
|
||||||
|
|
||||||
Decompresses input stream `fh` with the zlib format
|
Decompresses input stream `fh` with the zlib format
|
||||||
while writing to output stream `ofh`.
|
while writing to output stream `ofh`.
|
||||||
`disable_crc` (defaults to `false`) will disable CRC-32 checking
|
`disable_crc` (defaults to `false`) will disable CRC-32 checking
|
||||||
to increase speed.
|
to increase speed.
|
||||||
zlib is detailed in http://tools.ietf.org/html/rfc1950 .
|
zlib is detailed in http://tools.ietf.org/html/rfc1950 .
|
||||||
|
|
||||||
DEFLATE.adler32(byte, crc) --> rcrc
|
DEFLATE.adler32(byte, crc) --> rcrc
|
||||||
|
|
||||||
Returns adler32 checksum of byte `byte` (number 0..255) appended
|
Returns adler32 checksum of byte `byte` (number 0..255) appended
|
||||||
to string with adler32 checksum `crc`. This is internally used by
|
to string with adler32 checksum `crc`. This is internally used by
|
||||||
`inflate_zlib`.
|
`inflate_zlib`.
|
||||||
@@ -63,9 +63,9 @@ COMMAND LINE UTILITY
|
|||||||
A `gunziplua` command line utility (in folder `bin`) is also provided.
|
A `gunziplua` command line utility (in folder `bin`) is also provided.
|
||||||
This mimicks the *nix `gunzip` utility but is a pure Lua implementation
|
This mimicks the *nix `gunzip` utility but is a pure Lua implementation
|
||||||
that invokes this library. For help do
|
that invokes this library. For help do
|
||||||
|
|
||||||
gunziplua -h
|
gunziplua -h
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
|
|
||||||
Requires 'digest.crc32lua' (used for optional CRC-32 checksum checks).
|
Requires 'digest.crc32lua' (used for optional CRC-32 checksum checks).
|
||||||
@@ -75,13 +75,13 @@ DEPENDENCIES
|
|||||||
is not that critical for this library but is required by digest.crc32lua.
|
is not that critical for this library but is required by digest.crc32lua.
|
||||||
|
|
||||||
'pythonic.optparse' is only required by the optional `gunziplua`
|
'pythonic.optparse' is only required by the optional `gunziplua`
|
||||||
command-line utilty for command line parsing.
|
command-line utilty for command line parsing.
|
||||||
https://github.com/davidm/lua-pythonic-optparse
|
https://github.com/davidm/lua-pythonic-optparse
|
||||||
|
|
||||||
INSTALLATION
|
INSTALLATION
|
||||||
|
|
||||||
Copy the `compress` directory into your LUA_PATH.
|
Copy the `compress` directory into your LUA_PATH.
|
||||||
|
|
||||||
REFERENCES
|
REFERENCES
|
||||||
|
|
||||||
[1] DEFLATE Compressed Data Format Specification version 1.3
|
[1] DEFLATE Compressed Data Format Specification version 1.3
|
||||||
@@ -811,7 +811,7 @@ function M.gunzip(t)
|
|||||||
if not disable_crc and data_crc32 then
|
if not disable_crc and data_crc32 then
|
||||||
if data_crc32 ~= expected_crc32 then
|
if data_crc32 ~= expected_crc32 then
|
||||||
runtime_error('invalid compressed data--crc error')
|
runtime_error('invalid compressed data--crc error')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if bs:read() then
|
if bs:read() then
|
||||||
warn 'trailing garbage ignored'
|
warn 'trailing garbage ignored'
|
||||||
@@ -833,11 +833,11 @@ function M.inflate_zlib(t)
|
|||||||
local outbs = get_obytestream(t.output)
|
local outbs = get_obytestream(t.output)
|
||||||
local disable_crc = t.disable_crc
|
local disable_crc = t.disable_crc
|
||||||
if disable_crc == nil then disable_crc = false end
|
if disable_crc == nil then disable_crc = false end
|
||||||
|
|
||||||
local window_size_ = parse_zlib_header(bs)
|
local window_size_ = parse_zlib_header(bs)
|
||||||
|
|
||||||
local data_adler32 = 1
|
local data_adler32 = 1
|
||||||
|
|
||||||
inflate{input=bs, output=
|
inflate{input=bs, output=
|
||||||
disable_crc and outbs or
|
disable_crc and outbs or
|
||||||
function(byte)
|
function(byte)
|
||||||
@@ -847,7 +847,7 @@ function M.inflate_zlib(t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bs:read(bs:nbits_left_in_byte())
|
bs:read(bs:nbits_left_in_byte())
|
||||||
|
|
||||||
local b3 = bs:read(8)
|
local b3 = bs:read(8)
|
||||||
local b2 = bs:read(8)
|
local b2 = bs:read(8)
|
||||||
local b1 = bs:read(8)
|
local b1 = bs:read(8)
|
||||||
@@ -859,7 +859,7 @@ function M.inflate_zlib(t)
|
|||||||
if not disable_crc then
|
if not disable_crc then
|
||||||
if data_adler32 ~= expected_adler32 then
|
if data_adler32 ~= expected_adler32 then
|
||||||
runtime_error('invalid compressed data--crc error')
|
runtime_error('invalid compressed data--crc error')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if bs:read() then
|
if bs:read() then
|
||||||
warn 'trailing garbage ignored'
|
warn 'trailing garbage ignored'
|
||||||
|
|||||||
@@ -1172,9 +1172,8 @@ function input:translate(event, code, p1, p2)
|
|||||||
end
|
end
|
||||||
|
|
||||||
elseif event == 'char' then
|
elseif event == 'char' then
|
||||||
if not self.pressed[keys.leftAlt] and
|
if not self.fired then
|
||||||
not self.pressed[keys.rightAlt] then
|
self.fired = true
|
||||||
self.fired = true
|
|
||||||
return code -- input:toCode(code)
|
return code -- input:toCode(code)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ local GPS = require('gps')
|
|||||||
local itemDB = require('core.itemDB')
|
local itemDB = require('core.itemDB')
|
||||||
local Point = require('point')
|
local Point = require('point')
|
||||||
local Socket = require('socket')
|
local Socket = require('socket')
|
||||||
|
local Sound = require('sound')
|
||||||
local Util = require('util')
|
local Util = require('util')
|
||||||
local UI = require('ui')
|
local UI = require('ui')
|
||||||
|
|
||||||
@@ -21,11 +22,37 @@ local scanner = device['plethora:scanner'] or
|
|||||||
-- hud
|
-- hud
|
||||||
local canvas = glasses and glasses.canvas()
|
local canvas = glasses and glasses.canvas()
|
||||||
if canvas then
|
if canvas then
|
||||||
|
local lh
|
||||||
|
|
||||||
|
local function addText(x, y, text, color)
|
||||||
|
local th = canvas.group.addText({ x, y }, text, color or 0xa0a0a0FF)
|
||||||
|
lh = lh or th.getLineHeight()
|
||||||
|
th.setShadow(true)
|
||||||
|
th.setScale(.75)
|
||||||
|
return th
|
||||||
|
end
|
||||||
|
|
||||||
canvas.group = canvas.addGroup({ 4, 90 })
|
canvas.group = canvas.addGroup({ 4, 90 })
|
||||||
canvas.bg = canvas.group.addRectangle(0, 0, 60, 24, 0x00000033)
|
canvas.group.bg = canvas.group.addRectangle(0, 0, 80, 10, 0x40404080)
|
||||||
canvas.text = canvas.group.addText({ 4, 5 }, '') -- , 0x202020FF)
|
canvas.group.addLines(
|
||||||
canvas.text.setShadow(true)
|
{ 0, 0 },
|
||||||
canvas.text.setScale(.75)
|
{ 80, 0 },
|
||||||
|
{ 80, 10 },
|
||||||
|
{ 0, 10 },
|
||||||
|
{ 0, 0 },
|
||||||
|
0x202020FF,
|
||||||
|
2)
|
||||||
|
addText(20, 2, 'Swarm Miner', 0xc0c0c0FF)
|
||||||
|
|
||||||
|
local y = 15
|
||||||
|
addText(3, y, 'Turtles')
|
||||||
|
canvas.turtles = addText(60, y, '')
|
||||||
|
canvas.group.addLine({ 0, y + lh - 2 }, { 80, y + lh - 2 }, 0x404040FF, 4)
|
||||||
|
|
||||||
|
y = y + lh + 5
|
||||||
|
addText(3, y, 'Queue')
|
||||||
|
canvas.queue = addText(60, y, '')
|
||||||
|
canvas.group.addLine({ 0, y + lh - 2 }, { 80, y + lh - 2 }, 0x404040FF, 4)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- container
|
-- container
|
||||||
@@ -512,9 +539,14 @@ function page:eventHandler(event)
|
|||||||
UI.Page.eventHandler(self, event)
|
UI.Page.eventHandler(self, event)
|
||||||
end
|
end
|
||||||
|
|
||||||
Event.onInterval(3, function()
|
Event.onInterval(1, function()
|
||||||
if not abort and not paused then
|
if not abort and not paused then
|
||||||
page:scan()
|
|
||||||
|
local meta = scanner.getMetaOwner()
|
||||||
|
if meta.isSneaking then
|
||||||
|
page:scan()
|
||||||
|
Sound.play('entity.bobber.throw', .6)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -541,9 +573,8 @@ Event.onInterval(1, function()
|
|||||||
page.info:sync()
|
page.info:sync()
|
||||||
|
|
||||||
if canvas then
|
if canvas then
|
||||||
local text = string.format('Turtles: %s\nQueue: %s',
|
canvas.turtles.setText(tostring(Util.size(turtles)))
|
||||||
Util.size(turtles), Util.size(queue))
|
canvas.queue.setText(tostring(Util.size(queue)))
|
||||||
canvas.text.setText(text)
|
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
77
ignore/mobPickup.lua
Normal file
77
ignore/mobPickup.lua
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
local Point = require('point')
|
||||||
|
local Util = require('util')
|
||||||
|
|
||||||
|
local device = _G.device
|
||||||
|
local os = _G.os
|
||||||
|
|
||||||
|
local scanner = device['plethora:scanner']
|
||||||
|
local sensor = device['plethora:sensor']
|
||||||
|
|
||||||
|
local id = sensor.getID()
|
||||||
|
|
||||||
|
local function dropOff()
|
||||||
|
local blocks = scanner.scan()
|
||||||
|
local b = Util.find(blocks, 'name', 'minecraft:hopper')
|
||||||
|
print(not not b)
|
||||||
|
if b then
|
||||||
|
print('walking ', b.x, b.y + 1, b.z)
|
||||||
|
os.sleep(1)
|
||||||
|
sensor.walk(b.x, b.y + 1, b.z)
|
||||||
|
os.sleep(2)
|
||||||
|
repeat until not sensor.isWalking()
|
||||||
|
print('done walking')
|
||||||
|
|
||||||
|
blocks = scanner.scan()
|
||||||
|
b = Util.find(blocks, 'name', 'minecraft:hopper')
|
||||||
|
if b then
|
||||||
|
print(b.x, b.z)
|
||||||
|
end
|
||||||
|
if b and math.abs(b.x) < 1 and math.abs(b.z) < 1 then
|
||||||
|
print('dropped')
|
||||||
|
sensor.getEquipment().drop(1)
|
||||||
|
os.sleep(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
while true do
|
||||||
|
local sensed = Util.reduce(sensor.sense(), function(acc, s)
|
||||||
|
s.y = Util.round(s.y)
|
||||||
|
|
||||||
|
if s.y == 0 and s.id ~= id then
|
||||||
|
--s.x = Util.round(s.x)
|
||||||
|
--s.z = Util.round(s.z)
|
||||||
|
acc[s.id] = s
|
||||||
|
end
|
||||||
|
return acc
|
||||||
|
end, { })
|
||||||
|
|
||||||
|
local pt = { x = 0, y = 0, z = 0 }
|
||||||
|
while true do
|
||||||
|
local b = Point.closest(pt, sensed)
|
||||||
|
if not b then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
sensed[b.id] = nil
|
||||||
|
b = sensor.getMetaByID(b.id)
|
||||||
|
if b then
|
||||||
|
print('picking up ', b.x, b.y, b.z)
|
||||||
|
sensor.walk(b.x, b.y, b.z)
|
||||||
|
os.sleep(2)
|
||||||
|
repeat until not sensor.isWalking()
|
||||||
|
print('done goto')
|
||||||
|
os.sleep(.5)
|
||||||
|
pt = b
|
||||||
|
local amount = sensor.getEquipment().suck(1)
|
||||||
|
print('sucked: ' .. amount)
|
||||||
|
if amount == 0 then
|
||||||
|
print('dropping')
|
||||||
|
dropOff()
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
os.sleep(5)
|
||||||
|
end
|
||||||
|
|
||||||
@@ -11,10 +11,11 @@ local parallel = _G.parallel
|
|||||||
local STARTUP_FILE = 'usr/autorun/fly.lua'
|
local STARTUP_FILE = 'usr/autorun/fly.lua'
|
||||||
|
|
||||||
if not modules.launch or not modules.getMetaOwner then
|
if not modules.launch or not modules.getMetaOwner then
|
||||||
error([[Required:
|
print([[Required:
|
||||||
* Kinetic augment
|
* Kinetic augment
|
||||||
* Entity sensor
|
* Entity sensor
|
||||||
* Introspection module]])
|
* Introspection module]])
|
||||||
|
error('missing required item')
|
||||||
end
|
end
|
||||||
|
|
||||||
if not fs.exists(STARTUP_FILE) then
|
if not fs.exists(STARTUP_FILE) then
|
||||||
|
|||||||
@@ -41,17 +41,17 @@ local function getPoint()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local targets = {
|
local targets = {
|
||||||
["minecraft:emerald_ore"] = 0x46FF26AA,
|
["minecraft:emerald_ore"] = { "minecraft:emerald", 0 },
|
||||||
["minecraft:diamond_ore"] = 0x50F8FFAA,
|
["minecraft:diamond_ore"] = { "minecraft:diamond", 0 },
|
||||||
["minecraft:gold_ore"] = 0xFFDF50AA,
|
["minecraft:gold_ore"] = { "minecraft:gold_ingot", 0 },
|
||||||
["minecraft:redstone_ore"] = 0xCC121566,
|
["minecraft:redstone_ore"] = { "minecraft:redstone", 0 },
|
||||||
["minecraft:lit_redstone_ore"] = 0xCC121566,
|
["minecraft:lit_redstone_ore"] = { "minecraft:redstone", 0 },
|
||||||
["minecraft:iron_ore"] = 0xFFAC8766,
|
["minecraft:iron_ore"] = { "minecraft:iron_ingot", 0 },
|
||||||
["minecraft:lapis_ore"] = 0x0A107F66,
|
["minecraft:lapis_ore"] = { "minecraft:dye", 4 },
|
||||||
["minecraft:coal_ore"] = 0x20202066,
|
["minecraft:coal_ore"] = { "minecraft:coal", 0 },
|
||||||
["quark:biotite_ore"] = 0x02051C66,
|
--["quark:biotite_ore"] = 0x02051C66,
|
||||||
["minecraft:quartz_ore"] = 0xCCCCCC66,
|
["minecraft:quartz_ore"] = { "minecraft:quartz", 0 },
|
||||||
["minecraft:glowstone"] = 0xFFDFA166
|
["minecraft:glowstone"] = { "minecraft:glowstone_dust", 0 },
|
||||||
}
|
}
|
||||||
local projecting = { }
|
local projecting = { }
|
||||||
local offset = getPoint() or showRequirements('GPS')
|
local offset = getPoint() or showRequirements('GPS')
|
||||||
@@ -90,21 +90,21 @@ local function update()
|
|||||||
for _, b in pairs(blocks) do
|
for _, b in pairs(blocks) do
|
||||||
if not projecting[b.id] then
|
if not projecting[b.id] then
|
||||||
projecting[b.id] = b
|
projecting[b.id] = b
|
||||||
--[[
|
|
||||||
b.box = canvas.addFrame({
|
b.box = canvas.addFrame({
|
||||||
pos.x - offset.x + b.x + -(pos.x % 1) + .5,
|
pos.x - offset.x + b.x + -(pos.x % 1),
|
||||||
pos.y - offset.y + b.y + -(pos.y % 1) + .5,
|
pos.y - offset.y + b.y + -(pos.y % 1),
|
||||||
pos.z - offset.z + b.z + -(pos.z % 1) + .5,
|
pos.z - offset.z + b.z + -(pos.z % 1),
|
||||||
})
|
})
|
||||||
b.box.setDepthTested(false)
|
b.box.setDepthTested(false)
|
||||||
b.box.addItem({ 0, 0 }, b.name, b.damage, 2)
|
local target = targets[b.name]
|
||||||
--]]
|
b.box.addItem({ .25, .25 }, target[1], target[2], 2)
|
||||||
|
--[[
|
||||||
b.box = canvas.addItem({
|
b.box = canvas.addItem({
|
||||||
pos.x - offset.x + b.x + -(pos.x % 1) + .5,
|
pos.x - offset.x + b.x + -(pos.x % 1) + .5,
|
||||||
pos.y - offset.y + b.y + -(pos.y % 1) + .5,
|
pos.y - offset.y + b.y + -(pos.y % 1) + .5,
|
||||||
pos.z - offset.z + b.z + -(pos.z % 1) + .5,
|
pos.z - offset.z + b.z + -(pos.z % 1) + .5,
|
||||||
}, b.name, b.damage, .5)
|
}, b.name, b.damage, .5)
|
||||||
|
--]]
|
||||||
b.box.setDepthTested(false)
|
b.box.setDepthTested(false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user