SHOW:
|
|
- or go back to the newest paste.
1 | - | if not fs.exists "json" then local a=http.get"https://raw.githubusercontent.com/rxi/json.lua/bee7ee3431133009a97257bde73da8a34e53c15c/json.lua"local b=fs.open("json","w")b.write(a.readAll())a.close()b.close() end |
1 | + | |
2 | - | local json = require "/json" |
2 | + | |
3 | local mon = peripheral.find "monitor" | |
4 | if mon then mon.setTextScale(0.5) term.redirect(mon) end | |
5 | ||
6 | local function fetch(url) | |
7 | local h = http.get(url) | |
8 | local o = h.readAll() | |
9 | h.close() | |
10 | return o | |
11 | end | |
12 | ||
13 | local target = ... | |
14 | local operator = "gollark" | |
15 | - | local worlds = { |
15 | + | local canvas3 = peripheral.call("back", "canvas3d").create() |
16 | - | world = "overworld", |
16 | + | setmetatable(canvas3, { |
17 | - | DIM1_the_end = "end", |
17 | + | __gc = function() canvas3.clear() end |
18 | - | DIM1 = "end", |
18 | + | }) |
19 | - | ["DIM-1"] = "nether", |
19 | + | --local box = canvas3.addBox(0, 0, 0) |
20 | - | ["DIM-11325"] = "deepdark" |
20 | + | local line = canvas3.addLine({0, 0, 0}, {0, 0, 0}) |
21 | - | } |
21 | + | line.setScale(4) |
22 | ||
23 | - | local function render_coords(player) |
23 | + | parallel.waitForAll(function() |
24 | - | return ("%0d %0d %0d"):format(player.x, player.y, player.z) |
24 | + | |
25 | local raw = fetch(API .. os.epoch "utc") | |
26 | local data = textutils.unserialiseJSON(raw) | |
27 | - | local function render_pos(player) |
27 | + | |
28 | - | local coords = render_coords(player) |
28 | + | local op |
29 | - | if player.x == 0 and player.y == 64 and player.z == 0 then coords = "[unknown]" end |
29 | + | local tplayer |
30 | - | return coords .. " " .. (worlds[player.world] or player.world) |
30 | + | for _, player in pairs(players) do |
31 | if player.name:match(target) then tplayer = player end | |
32 | if player.name == operator then op = player end | |
33 | - | local w, h = term.getSize() |
33 | + | |
34 | if tplayer then | |
35 | - | local function longest_by(t, k) |
35 | + | local tvec = vector.new(tplayer.x, tplayer.y, tplayer.z) |
36 | - | local sofar = 0 |
36 | + | local ovec = vector.new(op.x, op.y, op.z) |
37 | - | for _, v in pairs(t) do |
37 | + | local dirvec = (tvec - ovec):normalize() * 10 |
38 | - | if k then v = v[k] end |
38 | + | print(tostring(dirvec)) |
39 | - | if #v > sofar then |
39 | + | line.setPoint(2, dirvec.x, dirvec.y, dirvec.z) |
40 | - | sofar = #v |
40 | + | |
41 | - | end |
41 | + | sleep(1) |
42 | end end, function() while true do canvas3.recenter() sleep(0.1) end end) |