all_items.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. event.load("living_pickup");
  2. event.load("pre_craft");
  3. event.load("craft");
  4. event.load("player_join");
  5. event.load("snuvi_click");
  6. prefix_challenge = "§aChallenge";
  7. challenge_short = "aitems";
  8. challenge_name = "All Items";
  9. reward = 32768;
  10. sb_id = 12;
  11. lore_list = list.new();
  12. list.add(lore_list, text.new("Collect all items in the given order."));
  13. list.add(lore_list, text.new(string.concat("§fReward: ", money.getString(reward), " + 4 Amber")));
  14. list.add(lore_list, text.new(""));
  15. list.add(lore_list, text.new("§aLeftclick §f= §eStart challenge"));
  16. list.add(lore_list, text.new("§cRightclick §f= §eCancel challenge"));
  17. aitems = item.create("CHEST_MINECART", 1, "§cAll Items", lore_list);
  18. next_items = map.new(); //player_id -> material
  19. done_items = map.new(); //player_id -> set -> material
  20. todo_items = map.new(); //player_id -> list -> material
  21. sound = sound.get("minecraft:entity.experience_orb.pickup");
  22. category = sound.getCategory("MASTER");
  23. a = material.getAll();
  24. mat_list = list.new();
  25. for(i = 0; i < array.getSize(a); i++) {
  26. mat = a[i];
  27. if(material.isItem(mat)) {
  28. list.add(mat_list, mat);
  29. }
  30. }
  31. list.remove(mat_list, material.get("DRAGON_EGG"));
  32. list.remove(mat_list, material.get("AXOLOTL_SPAWN_EGG"));
  33. list.remove(mat_list, material.get("BAT_SPAWN_EGG"));
  34. list.remove(mat_list, material.get("BEE_SPAWN_EGG"));
  35. list.remove(mat_list, material.get("BLAZE_SPAWN_EGG"));
  36. list.remove(mat_list, material.get("CAT_SPAWN_EGG"));
  37. list.remove(mat_list, material.get("CAVE_SPIDER_SPAWN_EGG"));
  38. list.remove(mat_list, material.get("CHICKEN_SPAWN_EGG"));
  39. list.remove(mat_list, material.get("COD_SPAWN_EGG"));
  40. list.remove(mat_list, material.get("COW_SPAWN_EGG"));
  41. list.remove(mat_list, material.get("CREEPER_SPAWN_EGG"));
  42. list.remove(mat_list, material.get("DOLPHIN_SPAWN_EGG"));
  43. list.remove(mat_list, material.get("DONKEY_SPAWN_EGG"));
  44. list.remove(mat_list, material.get("DROWNED_SPAWN_EGG"));
  45. list.remove(mat_list, material.get("ELDER_GUARDIAN_SPAWN_EGG"));
  46. list.remove(mat_list, material.get("ENDERMAN_SPAWN_EGG"));
  47. list.remove(mat_list, material.get("ENDERMITE_SPAWN_EGG"));
  48. list.remove(mat_list, material.get("EVOKER_SPAWN_EGG"));
  49. list.remove(mat_list, material.get("FOX_SPAWN_EGG"));
  50. list.remove(mat_list, material.get("GHAST_SPAWN_EGG"));
  51. list.remove(mat_list, material.get("GLOW_SQUID_SPAWN_EGG"));
  52. list.remove(mat_list, material.get("GOAT_SPAWN_EGG"));
  53. list.remove(mat_list, material.get("GUARDIAN_SPAWN_EGG"));
  54. list.remove(mat_list, material.get("HOGLIN_SPAWN_EGG"));
  55. list.remove(mat_list, material.get("HORSE_SPAWN_EGG"));
  56. list.remove(mat_list, material.get("HUSK_SPAWN_EGG"));
  57. list.remove(mat_list, material.get("LLAMA_SPAWN_EGG"));
  58. list.remove(mat_list, material.get("MAGMA_CUBE_SPAWN_EGG"));
  59. list.remove(mat_list, material.get("MOOSHROOM_SPAWN_EGG"));
  60. list.remove(mat_list, material.get("MULE_SPAWN_EGG"));
  61. list.remove(mat_list, material.get("OCELOT_SPAWN_EGG"));
  62. list.remove(mat_list, material.get("PANDA_SPAWN_EGG"));
  63. list.remove(mat_list, material.get("PARROT_SPAWN_EGG"));
  64. list.remove(mat_list, material.get("PHANTOM_SPAWN_EGG"));
  65. list.remove(mat_list, material.get("PIG_SPAWN_EGG"));
  66. list.remove(mat_list, material.get("PIGLIN_SPAWN_EGG"));
  67. list.remove(mat_list, material.get("PIGLIN_BRUTE_SPAWN_EGG"));
  68. list.remove(mat_list, material.get("PILLAGER_SPAWN_EGG"));
  69. list.remove(mat_list, material.get("POLAR_BEAR_SPAWN_EGG"));
  70. list.remove(mat_list, material.get("PUFFERFISH_SPAWN_EGG"));
  71. list.remove(mat_list, material.get("RABBIT_SPAWN_EGG"));
  72. list.remove(mat_list, material.get("RAVAGER_SPAWN_EGG"));
  73. list.remove(mat_list, material.get("SALMON_SPAWN_EGG"));
  74. list.remove(mat_list, material.get("SHEEP_SPAWN_EGG"));
  75. list.remove(mat_list, material.get("SHULKER_SPAWN_EGG"));
  76. list.remove(mat_list, material.get("SILVERFISH_SPAWN_EGG"));
  77. list.remove(mat_list, material.get("SKELETON_SPAWN_EGG"));
  78. list.remove(mat_list, material.get("SKELETON_HORSE_SPAWN_EGG"));
  79. list.remove(mat_list, material.get("SLIME_SPAWN_EGG"));
  80. list.remove(mat_list, material.get("SPIDER_SPAWN_EGG"));
  81. list.remove(mat_list, material.get("SQUID_SPAWN_EGG"));
  82. list.remove(mat_list, material.get("STRAY_SPAWN_EGG"));
  83. list.remove(mat_list, material.get("STRIDER_SPAWN_EGG"));
  84. list.remove(mat_list, material.get("TRADER_LLAMA_SPAWN_EGG"));
  85. list.remove(mat_list, material.get("TROPICAL_FISH_SPAWN_EGG"));
  86. list.remove(mat_list, material.get("TURTLE_SPAWN_EGG"));
  87. list.remove(mat_list, material.get("VEX_SPAWN_EGG"));
  88. list.remove(mat_list, material.get("VILLAGER_SPAWN_EGG"));
  89. list.remove(mat_list, material.get("VINDICATOR_SPAWN_EGG"));
  90. list.remove(mat_list, material.get("WANDERING_TRADER_SPAWN_EGG"));
  91. list.remove(mat_list, material.get("WITCH_SPAWN_EGG"));
  92. list.remove(mat_list, material.get("WITHER_SKELETON_SPAWN_EGG"));
  93. list.remove(mat_list, material.get("WOLF_SPAWN_EGG"));
  94. list.remove(mat_list, material.get("ZOGLIN_SPAWN_EGG"));
  95. list.remove(mat_list, material.get("ZOMBIE_SPAWN_EGG"));
  96. list.remove(mat_list, material.get("ZOMBIE_HORSE_SPAWN_EGG"));
  97. list.remove(mat_list, material.get("ZOMBIE_VILLAGER_SPAWN_EGG"));
  98. list.remove(mat_list, material.get("ZOMBIFIED_PIGLIN_SPAWN_EGG"));
  99. list.remove(mat_list, material.get("BARRIER"));
  100. list.remove(mat_list, material.get("SPAWNER"));
  101. list.remove(mat_list, material.get("END_PORTAL_FRAME"));
  102. list.remove(mat_list, material.get("END_PORTAL"));
  103. list.remove(mat_list, material.get("NETHER_PORTAL"));
  104. list.remove(mat_list, material.get("FARMLAND"));
  105. list.remove(mat_list, material.get("INFESTED_STONE"));
  106. list.remove(mat_list, material.get("INFESTED_COBBLESTONE"));
  107. list.remove(mat_list, material.get("INFESTED_STONE_BRICKS"));
  108. list.remove(mat_list, material.get("INFESTED_MOSSY_STONE_BRICKS"));
  109. list.remove(mat_list, material.get("INFESTED_CRACKED_STONE_BRICKS"));
  110. list.remove(mat_list, material.get("INFESTED_CHISELED_STONE_BRICKS"));
  111. list.remove(mat_list, material.get("INFESTED_DEEPSLATE"));
  112. list.remove(mat_list, material.get("AIR"));
  113. list.remove(mat_list, material.get("BEDROCK"));
  114. list.remove(mat_list, material.get("BUDDING_AMETHYST"));
  115. list.remove(mat_list, material.get("PETRIFIED_OAK_SLAB"));
  116. list.remove(mat_list, material.get("CHORUS_PLANT"));
  117. list.remove(mat_list, material.get("DIRT_PATH"));
  118. list.remove(mat_list, material.get("TALL_GRASS"));
  119. list.remove(mat_list, material.get("LARGE_FERN"));
  120. list.remove(mat_list, material.get("REPEATING_COMMAND_BLOCK"));
  121. list.remove(mat_list, material.get("CHAIN_COMMAND_BLOCK"));
  122. list.remove(mat_list, material.get("STRUCTURE_VOID"));
  123. list.remove(mat_list, material.get("SCULK_SENSOR"));
  124. list.remove(mat_list, material.get("JIGSAW"));
  125. list.remove(mat_list, material.get("BUNDLE"));
  126. list.remove(mat_list, material.get("PLAYER_HEAD"));
  127. list.remove(mat_list, material.get("COMMAND_BLOCK_MINECART"));
  128. list.remove(mat_list, material.get("DEBUG_STICK"));
  129. list.remove(mat_list, material.get("COMMAND_BLOCK"));
  130. list.remove(mat_list, material.get("LIGHT"));
  131. list.remove(mat_list, material.get("STRUCTURE_BLOCK"));
  132. all_stages = list.getSize(mat_list);
  133. online_list = players.toList();
  134. iter = iterator(online_list);
  135. while(hasNext(iter)) {
  136. p = next(iter);
  137. if(challenge.playerHas(p, challenge_short)) {
  138. stage = loadDoneItems(p);
  139. type = loadNextItem(p);
  140. challenge.display(p, sb_id, challenge_name, type, stage, all_stages);
  141. }
  142. }
  143. msg.string("dev", "§bAllItems §rloaded.");
  144. @wait
  145. wait();
  146. ignoreGoto(event);
  147. goto("wait");
  148. @player_join
  149. if(!challenge.playerHas(player, challenge_short)) {
  150. goto("wait");
  151. }
  152. stage = loadDoneItems(player);
  153. type = loadNextItem(player);
  154. challenge.display(player, sb_id, challenge_name, type, stage, all_stages);
  155. goto("wait");
  156. @snuvi_click
  157. item = inv.getItem(inv, inv_slot);
  158. item.removeFlag(item, "HIDE_DESTROYS");
  159. title_string = string.text(inv_title);
  160. if(item == aitems) {
  161. if(click == "LEFT") {
  162. if(challenge.playerHas(player, challenge_short)) {
  163. msg.prefix(player, prefix_challenge, "You already started this challenge.");
  164. goto("wait");
  165. }
  166. player_id = player.getId(player);
  167. map.add(todo_items, player_id, list.copy(mat_list));
  168. map.add(done_items, player_id, set.new());
  169. player.addChallenge(player, challenge_short);
  170. type = getRandomType(player);
  171. stage = setNextItem(player, type);
  172. challenge.display(player, sb_id, challenge_name, type, stage, all_stages);
  173. msg.string(player, string.getSpacer());
  174. msg.prefix(player, prefix_challenge, "Challenge started.");
  175. msg.prefix(player, prefix_challenge, "Crafted and picked up items will count.");
  176. msg.prefix(player, prefix_challenge, "§cCounted items will be deleted!");
  177. goto("wait");
  178. }
  179. if(click == "RIGHT") {
  180. if(!challenge.playerHas(player, challenge_short)) {
  181. msg.prefix(player, prefix_challenge, "Challenge not active.");
  182. goto("wait");
  183. }
  184. resetAItems(player);
  185. challenge.removeDisplay(player, sb_id);
  186. player.removeChallenge(player, challenge_short);
  187. msg.prefix(player, prefix_challenge, "Challenge canceled.");
  188. goto("wait");
  189. }
  190. goto("wait");
  191. }
  192. goto("wait");
  193. @pre_craft
  194. player = list.getIndex(players, 0);
  195. if(!challenge.playerHas(player, challenge_short)) {
  196. goto("wait");
  197. }
  198. my_inv = inv;
  199. goto("wait");
  200. @craft
  201. if(!challenge.playerHas(player, challenge_short)) {
  202. goto("wait");
  203. }
  204. player_loc = entity.getLocation(player);
  205. world_name = world.getName(loc.getWorld(player_loc));
  206. if(!world.isSurvName(world_name)) {
  207. goto("wait");
  208. }
  209. if(item == null) {
  210. goto("wait");
  211. }
  212. item_type = item.getType(item);
  213. if(!isNextItem(player, item_type)) {
  214. goto("wait");
  215. }
  216. item.setAmount(item, item.getAmount(item) - 1);
  217. inv.clear(my_inv);
  218. player.safeGiveItem(player, item);
  219. sound.spawnForPlayer(player, sound, category);
  220. new_type = getRandomType(player);
  221. if(new_type == null) {
  222. msg.prefix(player, prefix_challenge, "All items collected. Challenge done!");
  223. msg.prefix(player, prefix_challenge, string.concat("Reward: ", money.getString(reward)));
  224. money.add(player, reward);
  225. amber = customitem.getAmber();
  226. item.setAmount(amber, 4);
  227. player.giveItem(player, amber);
  228. resetAItems(player);
  229. challenge.removeDisplay(player, sb_id);
  230. player.removeChallenge(player, challenge_short);
  231. player.setAIChallengeAmounts(player, player.getAIChallengeAmounts(player) + 1);
  232. goto("wait");
  233. }
  234. saveDoneItems(player, item_type);
  235. stage = setNextItem(player, new_type);
  236. msg.prefix(player, prefix_challenge, string.concat("Item collected. Next item: ", new_type));
  237. challenge.display(player, sb_id, challenge_name, new_type, stage, all_stages);
  238. goto("wait");
  239. @living_pickup
  240. if(!isPlayer(living_entity)) {
  241. goto("wait");
  242. }
  243. player = living_entity;
  244. if(!challenge.playerHas(player, challenge_short)) {
  245. goto("wait");
  246. }
  247. player_loc = entity.getLocation(player);
  248. world_name = world.getName(loc.getWorld(player_loc));
  249. if(!world.isSurvName(world_name)) {
  250. goto("wait");
  251. }
  252. item = item.entity.get(item_entity);
  253. item_type = item.getType(item);
  254. if(!isNextItem(player, item_type)) {
  255. goto("wait");
  256. }
  257. item_amount = item.getAmount(item);
  258. if(item_amount > 1) {
  259. item.setAmount(item, item_amount - 1);
  260. item.entity.set(item_entity, item);
  261. } else {
  262. cancel = true;
  263. entity.remove(item_entity);
  264. }
  265. sound.spawnForPlayer(player, sound, category);
  266. new_type = getRandomType(player);
  267. if(new_type == null) {
  268. msg.prefix(player, prefix_challenge, "All items collected. Challenge done!");
  269. msg.prefix(player, prefix_challenge, string.concat("Reward: ", money.getString(reward)));
  270. money.add(player, reward);
  271. amber = customitem.getAmber();
  272. item.setAmount(amber, 4);
  273. player.giveItem(player, amber);
  274. resetAItems(player);
  275. challenge.removeDisplay(player, sb_id);
  276. player.removeChallenge(player, challenge_short);
  277. player.setAIChallengeAmounts(player, player.getAIChallengeAmounts(player) + 1);
  278. goto("wait");
  279. }
  280. saveDoneItems(player, item_type);
  281. stage = setNextItem(player, new_type);
  282. msg.prefix(player, prefix_challenge, string.concat("Item collected. Next item: ", new_type));
  283. challenge.display(player, sb_id, challenge_name, new_type, stage, all_stages);
  284. goto("wait");
  285. function getRandomType(player) {
  286. player_id = player.getId(player);
  287. l = map.get($todo_items, player_id);
  288. l_size = list.getSize(l);
  289. if(l_size == 0) {
  290. return null;
  291. }
  292. r = math.random(0, l_size - 1);
  293. return list.getIndex(l, r);
  294. }
  295. function isNextItem(player, item_type) {
  296. player_id = player.getId(player);
  297. next_type = map.get($next_items, player_id);
  298. return next_type == item_type;
  299. }
  300. function setNextItem(player_or_id, item_type) {
  301. player_id = player.getValidId(player_or_id);
  302. map.add($next_items, player_id, item_type);
  303. saveNextItem(player_or_id, item_type);
  304. l = map.get($todo_items, player_id);
  305. list.remove(l, item_type);
  306. return $all_stages - list.getSize(l) - 1;
  307. }
  308. function loadNextItem(player_or_id) {
  309. config = playerdata.getSurvival(player_or_id);
  310. player_id = player.getValidId(player_or_id);
  311. type = material.get(config.getString(config, "cha.aitems.next", "null"));
  312. map.add($next_items, player_id, type);
  313. l = map.get($todo_items, player_id);
  314. list.remove(l, type);
  315. return type;
  316. }
  317. function saveNextItem(player_or_id, item_type) {
  318. config = playerdata.getSurvival(player_or_id);
  319. config.set(config, "cha.aitems.next", string(item_type));
  320. config.saveAsync(config);
  321. }
  322. function loadDoneItems(player_or_id) {
  323. config = playerdata.getSurvival(player_or_id);
  324. string = config.getString(config, "cha.aitems.done", "");
  325. s = set.new();
  326. l = list.copy($mat_list);
  327. if(string != "") {
  328. a = string.split("%", string);
  329. for(i = 0; i < array.getSize(a); i++) {
  330. type = material.get(a[i]);
  331. set.add(s, type);
  332. list.remove(l, type);
  333. }
  334. }
  335. player_id = player.getValidId(player_or_id);
  336. map.add($done_items, player_id, s);
  337. map.add($todo_items, player_id, l);
  338. return set.getSize(map.get($done_items, player_id));
  339. }
  340. function saveDoneItems(player_or_id, item_type) {
  341. player_id = player.getValidId(player_or_id);
  342. s = map.get($done_items, player_id);
  343. set.add(s, item_type);
  344. config = playerdata.getSurvival(player_or_id);
  345. string = config.getString(config, "cha.aitems.done", "");
  346. item_type = string(item_type);
  347. if(string == "") {
  348. config.set(config, "cha.aitems.done", item_type);
  349. } else {
  350. config.set(config, "cha.aitems.done", string.concat(string, "%", item_type));
  351. }
  352. config.saveAsync(config);
  353. }
  354. function resetAItems(player_or_id) {
  355. config = playerdata.getSurvival(player_or_id);
  356. config.set(config, "cha.aitems.done", "");
  357. config.set(config, "cha.aitems.next", "");
  358. config.saveAsync(config);
  359. }