From c5a821f26463633015862fc5ab97cd0d1c14b25f Mon Sep 17 00:00:00 2001 From: "kepler155c@gmail.com" Date: Sun, 2 Dec 2018 14:35:58 -0500 Subject: [PATCH] manipulator :( --- sys/extensions/1.device.lua | 55 ++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/sys/extensions/1.device.lua b/sys/extensions/1.device.lua index 0bc80c3..9da4d3d 100644 --- a/sys/extensions/1.device.lua +++ b/sys/extensions/1.device.lua @@ -128,32 +128,43 @@ kernel.hook('monitor_touch', function(event, eventData) end end) -local function createDevice(name, devType, methods, parent) - methods.name = name - methods.side = name - methods.type = devType - device[name] = methods - - if not parent._children then - parent._children = { methods } - else - table.insert(parent._children, methods) +local function createDevice(name, devType, method, manipulator) + local dev = { + name = name, + side = name, + type = devType, + } + local methods = { + 'drop', 'getDocs', 'getItem', 'getItemMeta', 'getTransferLocations', + 'list', 'pullItems', 'pushItems', 'size', 'suck', + } + if manipulator[method] then + for _,k in pairs(methods) do + dev[k] = function(...) + return manipulator[method]()[k](...) + end + end + if not manipulator._children then + manipulator._children = { dev } + else + table.insert(manipulator._children, dev) + end + device[name] = dev end end drivers['manipulator'] = function(dev) - pcall(function() - local name = dev.getName() - if dev.getInventory then - createDevice(name .. ':inventory', 'inventory', dev.getInventory(), dev) - end - if dev.getEquipment then - createDevice(name .. ':equipment', 'equipment', dev.getEquipment(), dev) - end - if dev.getEnder then - createDevice(name .. ':enderChest', 'enderChest', dev.getEnder(), dev) - end - end) + local name = dev.getName() + if dev.getInventory then + createDevice(name .. ':inventory', 'inventory', 'getInventory', dev) + end + if dev.getEquipment then + createDevice(name .. ':equipment', 'equipment', 'getEquipment', dev) + end + if dev.getEnder then + createDevice(name .. ':enderChest', 'enderChest', 'getEnder', dev) + end + return dev._children end