• API
• FAQ
• Tools
• Archive
SHARE
TWEET

a guest Jan 20th, 2013 2,517 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. --[[ Code by NeverCast
2.      This should be loaded like a typical api
3.      Feel free to name it what you like
4. --]]
5. local directions = { [0]=0,[1]=1,[2]=2,[3]=3,[4]=4,[5]=5,["down"] = 0, ["up"] = 1, ["-Z"] = 2, ["+Z"] = 3, ["-X"] = 4, ["+X"] = 5, ["+Y"] = 1, ["-Y"] = 0}
6. directions.south = directions["+Z"]
7. directions.east = directions["+X"]
8. directions.north = directions["-Z"]
9. directions.west = directions["-X"]
10.
11. -- Gets the Unique ID based on the ID and Meta
12. function getID(id, meta)
13.   if meta == nil then
14.     meta = 27268
15.   else
16.     meta = bit.bxor(meta, 0x6E6C)
17.   end
18.   local uuid = bit.bxor(id, 0x4F89) * 0x8000 + bit.bxor(meta, 0x3A69)
19.   return uuid
20. end
21.
22. -- Get a stack table from a single uuid and amount
23. -- This does all the math to reverse the unique ID algorithm that RG wrote.
24. -- Valid for version 2.3
25. function getStack(uuid, c)
26.         -- Reverse RG's fancy math
27.         local subt = bit.band(uuid, 0x7fff)
28.         local dexorm = bit.bxor(subt, 0x3a69)
30.         if dexorm ~= 28262 then -- item takes dmg
32.         end
33.         local id = bit.bxor((uuid-subt)/0x8000, 0x4f89)
34.         -- put it in to a nice table
35.         local stack = {}
36.         stack.amount = c
37.         stack.id = id
39.         return stack
40. end
41.
42. -- Get stacks from an Interactive Sorter
43. -- direction   : the direction of the Interactive Sorter Peripheral
44. -- invDirection: the direction of the inventory from the peripheral
45. -- valid options for invDirection are 0,1,2,3,4,5 ( original values),
46. -- north, south, east, west, up, down, and the +/-X,Y,Z strings.
47. -- (see directions variable)
48. function getStacks(direction, invDirection)
49.         if not peripheral.isPresent(direction) then
50.                 return false, "No Peripheral"
51.         end
52.         if peripheral.getType(direction) ~= "interactiveSorter" then
53.                 return false, "Not a sorter"
54.         end
55.         local stacks = {}
56.         for uuid,count in pairs(peripheral.call(direction, "list", directions[invDirection])) do
57.                 table.insert(stacks, getStack(uuid, count))
58.         end
59.         return true, stacks
60. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
Top