diff --git a/common/Turtles.lua b/common/Turtles.lua index 0b6c37c..f27a004 100644 --- a/common/Turtles.lua +++ b/common/Turtles.lua @@ -309,7 +309,7 @@ function page.statusBar:draw() local t = self.parent.turtle if t then self.values.status = t.status - self.values.distance = Util.round(t.distance, 2) + self.values.distance = t.distance and Util.round(t.distance, 2) self.values.fuel = Util.toBytes(t.fuel) end UI.StatusBar.draw(self) diff --git a/milo/apis/storage.lua b/milo/apis/storage.lua index e107685..142ec3d 100644 --- a/milo/apis/storage.lua +++ b/milo/apis/storage.lua @@ -522,11 +522,13 @@ function Storage:import(source, slot, count, item) end -- find a chest locked with this item + local doVoid + for node in self:onlineAdapters() do if node.lock and node.lock[key] then insert(node.adapter, item) if count > 0 and node.void then - return total + self:trash(source, slot, count, item) + doVoid = true end end if count <= 0 then @@ -534,6 +536,10 @@ function Storage:import(source, slot, count, item) end end + if doVoid then + return total + self:trash(source, slot, count, item) + end + -- is this item in some chest if self.cache[key] then for node, adapter in self:onlineAdapters() do diff --git a/neural/Sensor.lua b/neural/Sensor.lua index 7dc726e..d926c05 100644 --- a/neural/Sensor.lua +++ b/neural/Sensor.lua @@ -72,7 +72,7 @@ local detail = UI.Page { local function getPoint() local pt = { gps.locate() } - return { + return pt[1] and { x = pt[1], y = pt[2], z = pt[3], @@ -84,6 +84,10 @@ local function project(entities) local pos = getPoint() local pts = { } + if not pos then + return + end + if not offset then offset = pos end diff --git a/neural/mobPickup.lua b/neural/mobPickup.lua index 66e9023..e74343a 100644 --- a/neural/mobPickup.lua +++ b/neural/mobPickup.lua @@ -20,12 +20,16 @@ neural.assertModules({ local function dropOff() print('dropping') - local b = Util.find(neural.scan(), 'name', 'minecraft:hopper') + local hoppers = Util.filter(neural.scan(), function(h) + return h.name == 'minecraft:hopper' and h.y == -1 + end) + + local _, b = next(hoppers) if b then neural.walkTo({ x = b.x, y = 0, z = b.z }, 2) - b = Util.find(neural.scan(), 'name', 'minecraft:hopper') - if b and math.abs(b.x) < 1 and math.abs(b.z) < 1 then + b = neural.getBlockMeta(0, -1, 0) + if b.name == 'minecraft:hopper' then print('dropped') neural.getEquipment().drop(1) neural.getEquipment().drop(2)