Advertisement
Doob

cb_Rubik's_cube

Dec 3rd, 2014
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.30 KB | None | 0 0
  1. local commandBlock = peripheral.wrap('top')
  2.  
  3. tCube = {['s1'] = {}, ['s2'] = {}, ['s3'] = {}, ['s4'] = {}, ['s5'] = {}, ['s6'] = {}}
  4.  
  5. local tCell = {'~-1 ', '~ ', '~1 ', '~2 ', '~-2 '}
  6.  
  7. local tCoord = {
  8.   ['s1'] = {
  9.     {3, 4, 1}, {3, 4, 2}, {3, 4, 3},
  10.     {2, 4, 1}, {2, 4, 2}, {2, 4, 3},
  11.     {1, 4, 1}, {1, 4, 2}, {1, 4, 3}},
  12.   ['s2'] = {
  13.     {1, 3, 4}, {2, 3, 4}, {3, 3, 4},
  14.     {1, 2, 4}, {2, 2, 4}, {3, 2, 4},
  15.     {1, 1, 4}, {2, 1, 4}, {3, 1, 4}},
  16.   ['s3'] = {
  17.     {4, 3, 3}, {4, 3, 2}, {4, 3, 1},
  18.     {4, 2, 3}, {4, 2, 2}, {4, 2, 1},
  19.     {4, 1, 3}, {4, 1, 2}, {4, 1, 1}},
  20.   ['s4'] = {
  21.     {3, 3, 5}, {2, 3, 5}, {1, 3, 5},
  22.     {3, 2, 5}, {2, 2, 5}, {1, 2, 5},
  23.     {3, 1, 5}, {2, 1, 5}, {1, 1, 5}},
  24.   ['s5'] = {
  25.     {5, 3, 1}, {5, 3, 2}, {5, 3, 3},
  26.     {5, 2, 1}, {5, 2, 2}, {5, 2, 3},
  27.     {5, 1, 1}, {5, 1, 2}, {5, 1, 3}},
  28.   ['s6'] = {
  29.     {1, 5, 1}, {1, 5, 2}, {1, 5, 3},
  30.     {2, 5, 1}, {2, 5, 2}, {2, 5, 3},
  31.     {3, 5, 1}, {3, 5, 2}, {3, 5, 3}}}
  32.  
  33. local function reset()
  34.   for i = 1, 9 do
  35.     tCube['s1'][i] = 14
  36.     tCube['s2'][i] = 0
  37.     tCube['s3'][i] = 13
  38.     tCube['s4'][i] = 4
  39.     tCube['s5'][i] = 11
  40.     tCube['s6'][i] = 1
  41.   end
  42. end
  43.  
  44. local function drawCube()
  45.   for pG = 1, 9 do
  46.     for eS = 1, 6 do
  47.       commandBlock.setCommand('setblock '..
  48.         tCell[tCoord['s'..eS][pG][1]]..
  49.         tCell[tCoord['s'..eS][pG][2]]..
  50.         tCell[tCoord['s'..eS][pG][3]]..
  51.         'wool '..
  52.         tCube['s'..eS][pG])
  53.       commandBlock.runCommand()
  54.     end
  55.   end
  56. end
  57.  
  58. local function abracadabra(side, rule)
  59.   if rule == '01' then
  60.     tCube[side][1], tCube[side][2], tCube[side][3], tCube[side][4], tCube[side][6], tCube[side][7], tCube[side][8], tCube[side][9] =
  61.     tCube[side][7], tCube[side][4], tCube[side][1], tCube[side][8], tCube[side][2], tCube[side][9], tCube[side][6], tCube[side][3]
  62.   elseif rule == '02' then
  63.     tCube[side][7], tCube[side][4], tCube[side][1], tCube[side][8], tCube[side][2], tCube[side][9], tCube[side][6], tCube[side][3] =
  64.     tCube[side][1], tCube[side][2], tCube[side][3], tCube[side][4], tCube[side][6], tCube[side][7], tCube[side][8], tCube[side][9]
  65.   end
  66. end
  67.  
  68. local function magic(sides, cells)
  69.   tCube[sides[1]][cells[1]],
  70.   tCube[sides[2]][cells[2]],
  71.   tCube[sides[3]][cells[3]],
  72.   tCube[sides[4]][cells[4]],
  73.   tCube[sides[1]][cells[5]],
  74.   tCube[sides[2]][cells[6]],
  75.   tCube[sides[3]][cells[7]],
  76.   tCube[sides[4]][cells[8]],
  77.   tCube[sides[1]][cells[9]],
  78.   tCube[sides[2]][cells[10]],
  79.   tCube[sides[3]][cells[11]],
  80.   tCube[sides[4]][cells[12]] =
  81.   tCube[sides[5]][cells[13]],
  82.   tCube[sides[6]][cells[14]],
  83.   tCube[sides[7]][cells[15]],
  84.   tCube[sides[8]][cells[16]],
  85.   tCube[sides[5]][cells[17]],
  86.   tCube[sides[6]][cells[18]],
  87.   tCube[sides[7]][cells[19]],
  88.   tCube[sides[8]][cells[20]],
  89.   tCube[sides[5]][cells[21]],
  90.   tCube[sides[6]][cells[22]],
  91.   tCube[sides[7]][cells[23]],
  92.   tCube[sides[8]][cells[24]]
  93. end
  94.  
  95. local function rotate(V)
  96.   if V == '01' then
  97.     magic({'s2', 's3', 's4', 's5', 's3', 's4', 's5', 's2'}, {1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,})
  98.     abracadabra('s1', '01')
  99.  
  100.   elseif V == '02' then
  101.     magic({'s2', 's3', 's4', 's5', 's3', 's4', 's5', 's2'}, {4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,})
  102.  
  103.   elseif V == '03' then
  104.     magic({'s2', 's3', 's4', 's5', 's3', 's4', 's5', 's2'}, {7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,})
  105.     abracadabra('s6', '02')
  106.  
  107.   elseif V == '04' then
  108.     magic({'s1', 's5', 's6', 's3', 's5', 's6', 's3', 's1'}, {1, 1, 1, 9, 4, 4, 4, 6, 7, 7, 7, 3, 1, 1, 9, 1, 4, 4, 6, 4, 7, 7, 3, 7})
  109.     abracadabra('s4', '02')
  110.  
  111.   elseif V == '05' then
  112.     magic({'s1', 's5', 's6', 's3', 's5', 's6', 's3', 's1'}, {2, 2, 2, 8, 5, 5, 5, 5, 8, 8, 8, 2, 2, 2, 8, 2, 5, 5, 5, 5, 8, 8, 2, 8})
  113.  
  114.   elseif V == '06' then
  115.     magic({'s1', 's5', 's6', 's3', 's5', 's6', 's3', 's1'}, {3, 3, 3, 7, 6, 6, 6, 4, 9, 9, 9, 1, 3, 3, 7, 3, 6, 6, 4, 6, 9, 9, 1, 9})
  116.     abracadabra('s2', '01')
  117.  
  118.   elseif V == '07' then
  119.     magic({'s1', 's4', 's6', 's2', 's4', 's6', 's2', 's1'}, {3, 1, 7, 9, 2, 4, 8, 6, 1, 7, 9, 3, 1, 7, 9, 3, 4, 8, 6, 2, 7, 9, 3, 1,})
  120.     abracadabra('s3', '02')
  121.  
  122.   elseif V == '08' then
  123.     magic({'s1', 's4', 's6', 's2', 's4', 's6', 's2', 's1'}, {6, 2, 4, 8, 5, 5, 5, 5, 4, 8, 6, 2, 2, 4, 8, 6, 5, 5, 5, 5, 8, 6, 2, 4,})
  124.  
  125.   elseif V == '09' then
  126.     magic({'s1', 's4', 's6', 's2', 's4', 's6', 's2', 's1'}, {9, 3, 1, 7, 8, 6, 2, 4, 7, 9, 3, 1, 3, 1, 7, 9, 6, 2, 4, 8, 9, 3, 1, 7,})
  127.     abracadabra('s5', '01')
  128.    
  129.   elseif V == '11' then
  130.     magic({'s3', 's5', 's2', 's4', 's2', 's4', 's5', 's3'}, {1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,})
  131.     abracadabra('s1', '02')
  132.  
  133.   elseif V == '12' then
  134.     magic({'s3', 's5', 's2', 's4', 's2', 's4', 's5', 's3'}, {4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,})
  135.  
  136.   elseif V == '13' then
  137.     magic({'s3', 's5', 's2', 's4', 's2', 's4', 's5', 's3'}, {7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,})
  138.     abracadabra('s6', '01')
  139.  
  140.   elseif V == '14' then
  141.     magic({'s5', 's1', 's3', 's6', 's1', 's3', 's6', 's5'}, {1, 1, 9, 1, 4, 4, 6, 4, 7, 7, 3, 7, 1, 9, 1, 1, 4, 6, 4, 4, 7, 3, 7, 7})
  142.     abracadabra('s4', '01')
  143.  
  144.   elseif V == '15' then
  145.     magic({'s5', 's1', 's3', 's6', 's1', 's3', 's6', 's5'}, {2, 2, 8, 2, 5, 5, 5, 5, 8, 8, 2, 8, 2, 8, 2, 2, 5, 5, 5, 5, 8, 2, 8, 8})
  146.  
  147.   elseif V == '16' then
  148.     magic({'s5', 's1', 's3', 's6', 's1', 's3', 's6', 's5'}, {3, 3, 7, 3, 6, 6, 4, 6, 9, 9, 1, 9, 3, 7, 3, 3, 6, 4, 6, 6, 9, 1, 9, 9})
  149.     abracadabra('s2', '02')
  150.  
  151.   elseif V == '17' then
  152.     magic({'s4', 's1', 's2', 's6', 's1', 's2', 's6', 's4'}, {7, 1, 3, 9, 4, 2, 6, 8, 1, 3, 9, 7, 1, 3, 9, 7, 2, 6, 8, 4, 3, 9, 7, 1,})
  153.     abracadabra('s3', '01')
  154.  
  155.   elseif V == '18' then
  156.     magic({'s4', 's1', 's2', 's6', 's1', 's2', 's6', 's4'}, {8, 4, 2, 6, 5, 5, 5, 5, 2, 6, 8, 4, 4, 2, 6, 8, 5, 5, 5, 5, 6, 8, 4, 2,})
  157.  
  158.   elseif V == '19' then
  159.     magic({'s4', 's1', 's2', 's6', 's1', 's2', 's6', 's4'}, {9, 7, 1, 3, 6, 8, 4, 2, 3, 9, 7, 1, 7, 1, 3, 9, 8, 4, 2, 6, 9, 7, 1, 3,})
  160.     abracadabra('s5', '02')
  161.   end
  162. end
  163.  
  164. reset()
  165. drawCube()
  166.  
  167. while true do
  168.   if turtle.detect() then
  169.     local n = 0
  170.     local success, data = turtle.inspect()
  171.       if data.name == 'minecraft:stained_glass' then n = 1
  172.       elseif data.name == 'minecraft:stained_glass_pane' then n = 0
  173.       end
  174.     rotate(n..data.metadata)
  175.     drawCube()
  176.     turtle.dig()
  177.     sleep(0.1)
  178.   end
  179. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement