fraktal_maker.txt 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. event.load("block_place");
  2. event.load("block_break");
  3. event.load("item_air_click");
  4. event.load("inv_click");
  5. event.load("chat");
  6. decay_var = 3;
  7. iterations = 3;
  8. default_iterations = iterations;
  9. age = 0;
  10. default_age = age;
  11. Selected_Fractal = 1;
  12. default_Selected_Fractal = Selected_Fractal;
  13. Undo_List = list.new();
  14. Redo_List = list.new();
  15. Fractal_List = list.new();
  16. FractalHelp = array.new(9, 2);
  17. FractalHelp[0,0] = "§e§lFractal§6§lPlace";
  18. FractalHelp[0,1] = "to start placing the pattern";
  19. FractalHelp[1,0] = "§e§lFractal§6§lStart";
  20. FractalHelp[1,1] = "to start generating the fractal";
  21. FractalHelp[2,0] = "§e§lFractal§6§lBuildHere";
  22. FractalHelp[2,1] = "to place the fractal at current location";
  23. FractalHelp[3,0] = "§e§lFractal§6§lNew";
  24. FractalHelp[3,1] = "to start again";
  25. FractalHelp[4,0] = "§e§lFractal§6§lUndo";
  26. FractalHelp[4,1] = "to undo placing your last fractal";
  27. FractalHelp[5,0] = "§e§lFractal§6§lRedo";
  28. FractalHelp[5,1] = "to redo placing your last fractal";
  29. FractalHelp[6,0] = "§e§lFractal§6§lPause";
  30. FractalHelp[6,1] = "to stop fractal/fractal-pattern placement";
  31. FractalHelp[7,0] = "§e§lFractal§6§lResume";
  32. FractalHelp[7,1] = "to unpause";
  33. FractalHelp[8,0] = "§e§lFractal§6§lSettings";
  34. FractalHelp[8,1] = "open Fractal creation settings";
  35. Settings_Inv = array.new(25);
  36. Settings_Inv[0] = read.item("minecraft:slime_ball",1,"Selected Fractal");
  37. Settings_Inv[1] = read.item("km:refresh_red",1,"Set to default");
  38. Settings_Inv[2] = read.item("km:arrow_left",1,"- 10");
  39. Settings_Inv[3] = read.item("km:arrow_left",1,"- 1");
  40. Settings_Inv[4] = read.item("km:digit_0");
  41. Settings_Inv[5] = read.item(text.concat("km:digit_",text.number(Selected_Fractal)));
  42. Settings_Inv[6] = read.item("km:arrow_right",1,"+ 1");
  43. Settings_Inv[7] = read.item("km:arrow_right",1,"+ 10");
  44. Settings_Inv[8] = read.item("km:check_green",1,"Confirm");
  45. Settings_Inv[9] = read.item("minecraft:slime_ball",1,"Iterations");
  46. Settings_Inv[10] = read.item("km:refresh_red",1,"Set to default");
  47. Settings_Inv[11] = read.item("km:arrow_left",1,"- 1");
  48. Settings_Inv[12] = read.item("km:digit_0");
  49. Settings_Inv[13] = read.item(text.concat("km:digit_",text.number(iterations)));
  50. Settings_Inv[14] = read.item("km:arrow_right",1,"+ 1");
  51. Settings_Inv[15] = read.item("km:check_green",1,"Confirm");
  52. Settings_Inv[16] = read.item("minecraft:slime_ball",1,"Decay");
  53. Settings_Inv[17] = read.item("km:refresh_red",1,"Set to default");
  54. Settings_Inv[18] = read.item("km:arrow_left",1,"- 10");
  55. Settings_Inv[19] = read.item("km:arrow_left",1,"- 1");
  56. Settings_Inv[20] = read.item("km:digit_0");
  57. Settings_Inv[21] = read.item(text.concat("km:digit_",text.number(age)));
  58. Settings_Inv[22] = read.item("km:arrow_right",1,"+ 1");
  59. Settings_Inv[23] = read.item("km:arrow_right",1,"+ 10");
  60. Settings_Inv[24] = read.item("km:check_green",1,"Confirm");
  61. numbers = map.new();
  62. map.add(numbers, 0, read.item("km:digit_0"));
  63. map.add(numbers, 1, read.item("km:digit_1"));
  64. map.add(numbers, 2, read.item("km:digit_2"));
  65. map.add(numbers, 3, read.item("km:digit_3"));
  66. map.add(numbers, 4, read.item("km:digit_4"));
  67. map.add(numbers, 5, read.item("km:digit_5"));
  68. map.add(numbers, 6, read.item("km:digit_6"));
  69. map.add(numbers, 7, read.item("km:digit_7"));
  70. map.add(numbers, 8, read.item("km:digit_8"));
  71. map.add(numbers, 9, read.item("km:digit_9"));
  72. Fractal_Settings_Inv = inv.new("222222222220222202222222222");
  73. F_S_I_ID = inv.getID(Fractal_Settings_Inv);
  74. //Fractal_Settings_Inv = inv.new("222222222 220222202 222222222");
  75. for(a = 0; a < 25; a++){
  76. inv.setItem(Fractal_Settings_Inv, a, Settings_Inv[a]);
  77. }
  78. @Start
  79. Blocks = map.new();
  80. Block_Coords = list.new();
  81. Coords_X = list.new();
  82. Coords_Y = list.new();
  83. Coords_Z = list.new();
  84. start = false;
  85. build = false;
  86. set_iter = false;
  87. pause = false;
  88. setage = false;
  89. msg("dev", "§bFractalmaker §rloaded.");
  90. @wait
  91. wait();
  92. if(player.getname(player) == "SirTerence7"){
  93. ignoreGoto(event);
  94. }
  95. goto("wait");
  96. @block_place
  97. if(start && !pause){
  98. cancel = false;
  99. map.add(Blocks, block_loc, block_type);
  100. list.add(Block_Coords, block_loc);
  101. }
  102. elseif(build){
  103. cancel = true;
  104. player_loc = block_loc;
  105. goto("place_fractal");
  106. }
  107. goto("wait");
  108. @block_break
  109. if(start && !pause){
  110. if(map.contains(Blocks, block_loc)){
  111. cancel = false;
  112. map.remove(Blocks, block_loc);
  113. list.remove(Block_Coords, block_loc);
  114. }else{
  115. cancel = true;
  116. }
  117. }
  118. elseif(start && pause){
  119. if(map.contains(Blocks, block_loc)){
  120. cancel = true;
  121. }
  122. }
  123. goto("wait");
  124. @inv_click
  125. if(inv_id == F_S_I_ID){
  126. ignoreGoto(text.number(inv_slot));
  127. goto("wait");
  128. }
  129. @1
  130. temp_Selected_Fractal = default_Selected_Fractal;
  131. setnumber(Fractal_Settings_Inv, 4, 5, temp_Selected_Fractal);
  132. if(temp_Selected_Fractal == Selected_Fractal){
  133. inv.setItem(Fractal_Settings_Inv, 0, Settings_Inv[0]);
  134. }else{
  135. inv.setItem(Fractal_Settings_Inv, 0, read.item("km:gem_stone",1,"Selected Fractal"));
  136. }
  137. inv.update(player);
  138. goto("wait");
  139. @2
  140. temp_Selected_Fractal -= 10;
  141. if(temp_Selected_Fractal < 1){
  142. temp_Selected_Fractal = 1;
  143. }else{
  144. setnumber(Fractal_Settings_Inv, 4, 5, temp_Selected_Fractal);
  145. if(temp_Selected_Fractal == Selected_Fractal){
  146. inv.setItem(Fractal_Settings_Inv, 0, Settings_Inv[0]);
  147. }else{
  148. inv.setItem(Fractal_Settings_Inv, 0, read.item("km:gem_stone",1,"Selected Fractal"));
  149. }
  150. }
  151. inv.update(player);
  152. goto("wait");
  153. @3
  154. temp_Selected_Fractal--;
  155. if(temp_Selected_Fractal < 1){
  156. temp_Selected_Fractal = 1;
  157. }else{
  158. setnumber(Fractal_Settings_Inv, 4, 5, temp_Selected_Fractal);
  159. if(temp_Selected_Fractal == Selected_Fractal){
  160. inv.setItem(Fractal_Settings_Inv, 0, Settings_Inv[0]);
  161. }else{
  162. inv.setItem(Fractal_Settings_Inv, 0, read.item("km:gem_stone",1,"Selected Fractal"));
  163. }
  164. }
  165. inv.update(player);
  166. goto("wait");
  167. @6
  168. temp_Selected_Fractal++;
  169. if(temp_Selected_Fractal > list.getSize(Fractal_List)){
  170. temp_Selected_Fractal = temp_Selected_Fractal - 1;
  171. }else{
  172. setnumber(Fractal_Settings_Inv, 4, 5, temp_Selected_Fractal);
  173. if(temp_Selected_Fractal == Selected_Fractal){
  174. inv.setItem(Fractal_Settings_Inv, 0, Settings_Inv[0]);
  175. }else{
  176. inv.setItem(Fractal_Settings_Inv, 0, read.item("km:gem_stone",1,"Selected Fractal"));
  177. }
  178. }
  179. inv.update(player);
  180. goto("wait");
  181. @7
  182. temp_Selected_Fractal += 10;
  183. if(temp_Selected_Fractal > list.getSize(Fractal_List)){
  184. temp_Selected_Fractal = list.getSize(Fractal_List);
  185. }else{
  186. setnumber(Fractal_Settings_Inv, 4, 5, temp_Selected_Fractal);
  187. if(temp_Selected_Fractal == Selected_Fractal){
  188. inv.setItem(Fractal_Settings_Inv, 0, Settings_Inv[0]);
  189. }else{
  190. inv.setItem(Fractal_Settings_Inv, 0, read.item("km:gem_stone",1,"Selected Fractal"));
  191. }
  192. }
  193. inv.update(player);
  194. goto("wait");
  195. @8
  196. Selected_Fractal = temp_Selected_Fractal;
  197. inv.setItem(Fractal_Settings_Inv, 0, Settings_Inv[0]);
  198. inv.update(player);
  199. if(build){
  200. goto("iter_jump");
  201. }
  202. goto("wait");
  203. @10
  204. temp_iterations = default_iterations;
  205. setnumber(Fractal_Settings_Inv, 12, 13, temp_iterations);
  206. if(temp_iterations == iterations){
  207. inv.setItem(Fractal_Settings_Inv, 9, Settings_Inv[9]);
  208. }else{
  209. inv.setItem(Fractal_Settings_Inv, 9, read.item("km:gem_stone",1,"Iterations"));
  210. }
  211. inv.update(player);
  212. goto("wait");
  213. @11
  214. temp_iterations--;
  215. if(temp_iterations < 2){
  216. temp_iterations = 2;
  217. }else{
  218. setnumber(Fractal_Settings_Inv, 12, 13, temp_iterations);
  219. if(temp_iterations == iterations){
  220. inv.setItem(Fractal_Settings_Inv, 9, Settings_Inv[9]);
  221. }else{
  222. inv.setItem(Fractal_Settings_Inv, 9, read.item("km:gem_stone",1,"Iterations"));
  223. }
  224. }
  225. inv.update(player);
  226. goto("wait");
  227. @14
  228. temp_iterations++;
  229. if(temp_iterations > 5){
  230. temp_iterations = 5;
  231. }else{
  232. setnumber(Fractal_Settings_Inv, 12, 13, temp_iterations);
  233. if(temp_iterations == iterations){
  234. inv.setItem(Fractal_Settings_Inv, 9, Settings_Inv[9]);
  235. }else{
  236. inv.setItem(Fractal_Settings_Inv, 9, read.item("km:gem_stone",1,"Iterations"));
  237. }
  238. }
  239. inv.update(player);
  240. goto("wait");
  241. @15
  242. iterations = temp_iterations;
  243. inv.setItem(Fractal_Settings_Inv, 9, Settings_Inv[9]);
  244. inv.update(player);
  245. if(build){
  246. goto("iter_jump");
  247. }
  248. goto("wait");
  249. @17
  250. temp_age = default_age;
  251. setnumber(Fractal_Settings_Inv, 20, 21, temp_age);
  252. if(temp_age == age){
  253. inv.setItem(Fractal_Settings_Inv, 16, Settings_Inv[16]);
  254. }else{
  255. inv.setItem(Fractal_Settings_Inv, 16, read.item("km:gem_stone",1,"Decay"));
  256. }
  257. inv.update(player);
  258. goto("wait");
  259. @18
  260. temp_age -= 10;
  261. if(temp_age < 0){
  262. temp_age = 0;
  263. }else{
  264. setnumber(Fractal_Settings_Inv, 20, 21, temp_age);
  265. if(temp_age == age){
  266. inv.setItem(Fractal_Settings_Inv, 16, Settings_Inv[16]);
  267. }else{
  268. inv.setItem(Fractal_Settings_Inv, 16, read.item("km:gem_stone",1,"Decay"));
  269. }
  270. }
  271. inv.update(player);
  272. goto("wait");
  273. @19
  274. temp_age--;
  275. if(temp_age < 0){
  276. temp_age = 0;
  277. }else{
  278. setnumber(Fractal_Settings_Inv, 20, 21, temp_age);
  279. if(temp_age == age){
  280. inv.setItem(Fractal_Settings_Inv, 16, Settings_Inv[16]);
  281. }else{
  282. inv.setItem(Fractal_Settings_Inv, 16, read.item("km:gem_stone",1,"Decay"));
  283. }
  284. }
  285. inv.update(player);
  286. goto("wait");
  287. @22
  288. temp_age++;
  289. if(temp_age > 99){
  290. temp_age = 99;
  291. }else{
  292. setnumber(Fractal_Settings_Inv, 20, 21, temp_age);
  293. if(temp_age == age){
  294. inv.setItem(Fractal_Settings_Inv, 16, Settings_Inv[16]);
  295. }else{
  296. inv.setItem(Fractal_Settings_Inv, 16, read.item("km:gem_stone",1,"Decay"));
  297. }
  298. }
  299. inv.update(player);
  300. goto("wait");
  301. @23
  302. temp_age += 10;
  303. if(temp_age > 99){
  304. temp_age = 99;
  305. }else{
  306. setnumber(Fractal_Settings_Inv, 20, 21, temp_age);
  307. if(temp_age == age){
  308. inv.setItem(Fractal_Settings_Inv, 16, Settings_Inv[16]);
  309. }else{
  310. inv.setItem(Fractal_Settings_Inv, 16, read.item("km:gem_stone",1,"Decay"));
  311. }
  312. }
  313. inv.update(player);
  314. goto("wait");
  315. @24
  316. age = temp_age;
  317. inv.setItem(Fractal_Settings_Inv, 16, Settings_Inv[16]);
  318. inv.update(player);
  319. if(build){
  320. goto("iter_jump");
  321. }
  322. goto("wait");
  323. @chat
  324. if(text.contains(message, "%fractal")){
  325. message = text.subString(message,1,text.length(message));
  326. ignoreGoto(message);
  327. }
  328. goto("wait");
  329. @fractalhelp
  330. temp_size = array.getSize(FractalHelp);
  331. for(a = 0; a < temp_size-1; a++){
  332. temp_key = FractalHelp[a,0];
  333. temp_value = FractalHelp[a,1];
  334. fractal_command = text.hover(text.click(temp_key, temp_value), temp_value);
  335. msg(player, fractal_command);
  336. }
  337. goto("wait");
  338. @fractalplace
  339. msg(player, "You can place the pattern now.");
  340. start = true;
  341. goto("wait");
  342. @fractalstart
  343. if(start && map.getSize(Blocks) > 1){
  344. msg(player, "The Fractal will start generating now");
  345. @iter_jump
  346. loc = loc.getWorld(entity.getLocation(player));
  347. list.add(Fractal_List, fractal.create(Block_Coords, loc, Blocks, 2, iterations+1, Block_Coords, age));
  348. build = true;
  349. start = false;
  350. pause = false;
  351. msg(player, "The Fractal has generated, place a block or type \"fractalbuildhere\" to place it.");
  352. }else{
  353. msg(player, "You have not yet made a pattern.");
  354. }
  355. goto("wait");
  356. @fractalbuildhere
  357. if(build){
  358. player_loc = entity.getLocation(player);
  359. @place_fractal
  360. redo_loc = player_loc;
  361. msg(player, "Fractal will now generate with ", iterations, " iterations.");
  362. list.add(Undo_List, fractal.build(list.getIndex(Fractal_List, list.getSize(Fractal_List) - Selected_Fractal), player_loc, player));
  363. }else{
  364. msg(player, "You have not yet generated a fractal.");
  365. }
  366. goto("wait");
  367. @fractalnew
  368. msg(player, "Restarting");
  369. goto("Start");
  370. goto("wait");
  371. @fractalundo
  372. temp_size = list.getSize(Undo_List);
  373. if(temp_size > 0){
  374. msg(player, "Undoing");
  375. list.add(Redo_List, fractal.undo(list.getIndex(Undo_List,temp_size-1)));
  376. list.removeIndex(Undo_List,temp_size-1);
  377. }else{
  378. msg(player, "Nothing to undo");
  379. }
  380. goto("wait");
  381. @fractalredo
  382. temp_size = list.getSize(Redo_List);
  383. if(temp_size > 0){
  384. msg(player, "Redoing");
  385. list.add(Undo_List, fractal.undo(list.getIndex(Redo_List,temp_size-1)));
  386. list.removeIndex(Redo_List,temp_size-1);
  387. }else{
  388. msg(player, "Nothing to redo");
  389. }
  390. goto("wait");
  391. @fractalpause
  392. if(pause){
  393. msg(player, "You have already paused, type \"fractalresume\" to continue.");
  394. goto("wait");
  395. }else{
  396. pause = true;
  397. build = false;
  398. msg(player, "You have paused the fractal-placement.");
  399. }
  400. goto("wait");
  401. @fractalresume
  402. if(pause){
  403. pause = false;
  404. build = true;
  405. msg(player, "You can resume placing now.");
  406. }else{
  407. msg(player, "You have not paused.");
  408. }
  409. goto("wait");
  410. @fractalsettings
  411. temp_iterations = iterations;
  412. temp_age = age;
  413. temp_Selected_Fractal = Selected_Fractal;
  414. inv.open(Fractal_Settings_Inv, player, "Fractal Settings");
  415. goto("wait");
  416. function fractal.create(Block_Coords, world, Blocks, iter, iterations, Last_Block_Coords, fractalage){
  417. List_Size = list.getSize(Last_Block_Coords);
  418. Coords_X = list.new();
  419. Coords_Y = list.new();
  420. Coords_Z = list.new();
  421. New_Block_Coords = list.new();
  422. relative_blocks = list.new();
  423. for(a = 0; a < List_Size; a++){
  424. block_loc = list.getIndex(Last_Block_Coords, a);
  425. list.add(Coords_X, loc.getX(block_loc));
  426. list.add(Coords_Y, loc.getY(block_loc));
  427. list.add(Coords_Z, loc.getZ(block_loc));
  428. }
  429. list.sort(Coords_X);
  430. list.sort(Coords_Y);
  431. list.sort(Coords_Z);
  432. Min_X = list.getIndex(Coords_X, 0);
  433. Min_Y = list.getIndex(Coords_Y, 0);
  434. Min_Z = list.getIndex(Coords_Z, 0);
  435. X_Size = math.abs(Min_X - list.getIndex(Coords_X, list.getSize(Coords_X) - 1))+1;
  436. Y_Size = math.abs(Min_Y - list.getIndex(Coords_Y, list.getSize(Coords_Y) - 1))+1;
  437. Z_Size = math.abs(Min_Z - list.getIndex(Coords_Z, list.getSize(Coords_Z) - 1))+1;
  438. a3 = 0;
  439. for(a = 0; a < math.pow(X_Size,iter); a = a + X_Size){
  440. b3 = 0;
  441. for(b = 0; b < math.pow(Y_Size,iter); b = b + Y_Size){
  442. c3 = 0;
  443. for(c = 0; c < math.pow(Z_Size,iter); c = c + Z_Size){
  444. location = loc.new(world, Min_X + a3, Min_Y + b3, Min_Z + c3);
  445. if(list.contains(Block_Coords, location)){
  446. for(a2 = a; a2 < X_Size + a; a2++){
  447. for(b2 = b; b2 < Y_Size + b; b2++){
  448. for(c2 = c; c2 < Z_Size + c; c2++){
  449. loc_place = loc.new(world, Min_X + a2, Min_Y + b2, Min_Z + c2);
  450. rel_loc = loc.new(world, a2, b2, c2);
  451. loc_set = loc.new(world, Min_X + a2 - a, Min_Y + b2 - b, Min_Z + c2 - c);
  452. Block_to_set = map.getOrDefault(Blocks, loc_set, "minecraft:air");
  453. temparray = array.new(2);
  454. temparray[0] = rel_loc;
  455. temparray[1] = Block_to_set;
  456. rand_temp = math.random(0,100);
  457. if(Block_to_set != "minecraft:air" && rand_temp + 1 > fractalage){
  458. list.add(New_Block_Coords, loc_place);
  459. list.add(relative_blocks, temparray);
  460. }
  461. }
  462. }
  463. }
  464. }
  465. c3++;
  466. }
  467. b3++;
  468. }
  469. a3++;
  470. }
  471. iter++;
  472. if(iter < iterations){
  473. relative_blocks = fractal.create(New_Block_Coords, world, Blocks, iter, iterations, Last_Block_Coords, fractalage);
  474. }
  475. return(relative_blocks);
  476. }
  477. function fractal.build(Fractal, Position, Player){
  478. stop = false;
  479. Pos_X = math.round(loc.getX(Position));
  480. Pos_Y = math.round(loc.getY(Position));
  481. Pos_Z = math.round(loc.getZ(Position));
  482. World = loc.getWorld(Position);
  483. Coords_for_Undo = list.new();
  484. for(a = 0; a < list.getSize(Fractal); a++){
  485. temp_array = list.getIndex(Fractal, a);
  486. rel_loc = temp_array[0];
  487. Temp_X = Pos_X + loc.getX(rel_loc);
  488. Temp_Y = Pos_Y + loc.getY(rel_loc);
  489. Temp_Z = Pos_Z + loc.getZ(rel_loc);
  490. abs_loc = loc.new(World, Temp_X, Temp_Y, Temp_Z);
  491. if(!block.isAir(abs_loc) && abs_loc != Position){
  492. msg(Player, "Block is in the Way, cannot paste Fractal here.", block.getType(abs_loc));
  493. stop = true;
  494. a = list.getSize(Fractal) + 1;
  495. }else{
  496. stop = false;
  497. }
  498. }
  499. if(!stop){
  500. for(a = 0; a < list.getSize(Fractal); a++){
  501. temp_array = list.getIndex(Fractal, a);
  502. rel_loc = temp_array[0];
  503. Temp_X = Pos_X + loc.getX(rel_loc);
  504. Temp_Y = Pos_Y + loc.getY(rel_loc);
  505. Temp_Z = Pos_Z + loc.getZ(rel_loc);
  506. abs_loc = loc.new(World, Temp_X, Temp_Y, Temp_Z);
  507. Block_to_set = temp_array[1];
  508. if(Block_to_set != "minecraft:air"){
  509. temp_array2 = array.new(2);
  510. temp_array2[0] = abs_loc;
  511. temp_array2[1] = block.getType(abs_loc);
  512. list.add(Coords_for_Undo, temp_array2);
  513. block.set(abs_loc, Block_to_set);
  514. }
  515. }
  516. }
  517. return(Coords_for_Undo);
  518. }
  519. function fractal.undo(Coords_List){
  520. Coords_for_Redo = list.new();
  521. for(a = 0; a < list.getSize(Coords_List); a++){
  522. temp_array = list.getIndex(Coords_List, a);
  523. undo_loc = temp_array[0];
  524. undo_block = temp_array[1];
  525. if(undo_block == "minecraft:" || undo_block == ""){undo_block = "minecraft:air";}
  526. temp_array2 = array.new(2);
  527. temp_array2[0] = undo_loc;
  528. temp_array2[1] = block.getType(undo_loc);
  529. list.add(Coords_for_Redo, temp_array2);
  530. block.set(undo_loc, undo_block);
  531. }
  532. return(Coords_for_Redo);
  533. }
  534. function setnumber(Inv, First_Slot, Second_Slot, Number){
  535. if(Number > 100){Number = 99;}
  536. First_Digit = map.get($numbers, math.roundDown(Number / 10));
  537. Second_Digit = map.get($numbers, Number - 10 * math.roundDown(Number / 10));
  538. inv.setItem(Inv, First_Slot, First_Digit);
  539. inv.setItem(Inv, Second_Slot, Second_Digit);
  540. }