all_entities.txt 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. event.load("living_death");
  2. event.load("player_join");
  3. event.load("snuvi_click");
  4. prefix_challenge = "§aChallenge";
  5. challenge_short = "ae";
  6. challenge_name = "All Entities";
  7. reward = 8192;
  8. sb_id = 11;
  9. lore_list = list.new();
  10. list.add(lore_list, text.new("Kill all entities in the given order."));
  11. list.add(lore_list, text.new(string.concat("§fReward: ", money.getString(reward), " + 2 Amber")));
  12. list.add(lore_list, text.new(""));
  13. list.add(lore_list, text.new("§aLeftclick §f= §eStart challenge"));
  14. list.add(lore_list, text.new("§cRightclick §f= §eCancel challenge"));
  15. ae_item = item.create("NETHERITE_SWORD", 1, "§cAll Entities", lore_list);
  16. item.addFlag(ae_item, "HIDE_ATTRIBUTES");
  17. next_entities = map.new(); //player_id -> entity_type
  18. done_entities = map.new(); //player_id -> set -> entity_type
  19. todo_entities = map.new(); //player_id -> list -> entity_type
  20. sound = sound.get("minecraft:entity.experience_orb.pickup");
  21. category = sound.getCategory("MASTER");
  22. entity_list = list.new();
  23. list.add(entity_list, "axolotl");
  24. list.add(entity_list, "bat");
  25. list.add(entity_list, "cat");
  26. list.add(entity_list, "chicken");
  27. list.add(entity_list, "cod");
  28. list.add(entity_list, "cow");
  29. list.add(entity_list, "donkey");
  30. list.add(entity_list, "fox");
  31. list.add(entity_list, "glow_squid");
  32. list.add(entity_list, "horse");
  33. list.add(entity_list, "mooshroom");
  34. list.add(entity_list, "mule");
  35. list.add(entity_list, "ocelot");
  36. list.add(entity_list, "parrot");
  37. list.add(entity_list, "pig");
  38. list.add(entity_list, "pufferfish");
  39. list.add(entity_list, "rabbit");
  40. list.add(entity_list, "salmon");
  41. list.add(entity_list, "sheep");
  42. list.add(entity_list, "skeleton_horse");
  43. list.add(entity_list, "snow_golem");
  44. list.add(entity_list, "squid");
  45. list.add(entity_list, "strider");
  46. list.add(entity_list, "tropical_fish");
  47. list.add(entity_list, "turtle");
  48. list.add(entity_list, "villager");
  49. list.add(entity_list, "wandering_trader");
  50. list.add(entity_list, "bee");
  51. list.add(entity_list, "cave_spider");
  52. list.add(entity_list, "dolphin");
  53. list.add(entity_list, "enderman");
  54. list.add(entity_list, "goat");
  55. list.add(entity_list, "iron_golem");
  56. list.add(entity_list, "llama");
  57. list.add(entity_list, "panda");
  58. list.add(entity_list, "piglin");
  59. list.add(entity_list, "polar_bear");
  60. list.add(entity_list, "spider");
  61. list.add(entity_list, "trader_llama");
  62. list.add(entity_list, "wolf");
  63. list.add(entity_list, "zombified_piglin");
  64. list.add(entity_list, "blaze");
  65. list.add(entity_list, "creeper");
  66. list.add(entity_list, "drowned");
  67. list.add(entity_list, "elder_guardian");
  68. list.add(entity_list, "endermite");
  69. list.add(entity_list, "evoker");
  70. list.add(entity_list, "ghast");
  71. list.add(entity_list, "guardian");
  72. list.add(entity_list, "hoglin");
  73. list.add(entity_list, "husk");
  74. list.add(entity_list, "magma_cube");
  75. list.add(entity_list, "phantom");
  76. list.add(entity_list, "piglin_brute");
  77. list.add(entity_list, "pillager");
  78. list.add(entity_list, "ravager");
  79. list.add(entity_list, "shulker");
  80. list.add(entity_list, "silverfish");
  81. list.add(entity_list, "skeleton");
  82. list.add(entity_list, "slime");
  83. list.add(entity_list, "stray");
  84. list.add(entity_list, "vex");
  85. list.add(entity_list, "vindicator");
  86. list.add(entity_list, "witch");
  87. list.add(entity_list, "wither_skeleton");
  88. list.add(entity_list, "zoglin");
  89. list.add(entity_list, "zombie");
  90. list.add(entity_list, "zombie_villager");
  91. list.add(entity_list, "ender_dragon");
  92. list.add(entity_list, "wither");
  93. all_stages = list.getSize(entity_list);
  94. online_list = players.toList();
  95. iter = iterator(online_list);
  96. while(hasNext(iter)) {
  97. p = next(iter);
  98. if(challenge.playerHas(p, challenge_short)) {
  99. stage = loadDoneEntities(p);
  100. type = loadNextEntity(p);
  101. challenge.display(p, sb_id, challenge_name, type, stage, all_stages);
  102. }
  103. }
  104. msg.string("dev", "§bAllEntites §rloaded.");
  105. @wait
  106. wait();
  107. ignoreGoto(event);
  108. goto("wait");
  109. @player_join
  110. if(!challenge.playerHas(player, challenge_short)) {
  111. goto("wait");
  112. }
  113. stage = loadDoneEntities(player);
  114. type = loadNextEntity(player);
  115. challenge.display(player, sb_id, challenge_name, type, stage, all_stages);
  116. goto("wait");
  117. @snuvi_click
  118. item = inv.getItem(inv, inv_slot);
  119. item.removeFlag(item, "HIDE_DESTROYS");
  120. title_string = string.text(inv_title);
  121. if(item == ae_item) {
  122. if(click == "LEFT") {
  123. if(challenge.playerHas(player, challenge_short)) {
  124. msg.prefix(player, prefix_challenge, "You already started this challenge.");
  125. goto("wait");
  126. }
  127. player_id = player.getId(player);
  128. map.add(todo_entities, player_id, list.copy(entity_list));
  129. map.add(done_entities, player_id, set.new());
  130. player.addChallenge(player, challenge_short);
  131. type = getRandomType(player);
  132. stage = setNextEntity(player, type);
  133. challenge.display(player, sb_id, challenge_name, type, stage, all_stages);
  134. msg.prefix(player, prefix_challenge, "Challenge started.");
  135. goto("wait");
  136. }
  137. if(click == "RIGHT") {
  138. if(!challenge.playerHas(player, challenge_short)) {
  139. msg.prefix(player, prefix_challenge, "Challenge not active.");
  140. goto("wait");
  141. }
  142. resetAE(player);
  143. challenge.removeDisplay(player, sb_id);
  144. player.removeChallenge(player, challenge_short);
  145. msg.prefix(player, prefix_challenge, "Challenge canceled.");
  146. goto("wait");
  147. }
  148. goto("wait");
  149. }
  150. goto("wait");
  151. @living_death
  152. player = player.getFromDamageSource(damage_source);
  153. if(player == null) {
  154. goto("wait");
  155. }
  156. if(!challenge.playerHas(player, challenge_short)) {
  157. goto("wait");
  158. }
  159. player_loc = entity.getLocation(player);
  160. world_name = world.getName(loc.getWorld(player_loc));
  161. if(!world.isSurvName(world_name)) {
  162. goto("wait");
  163. }
  164. entity_type = entity.getType(living_entity);
  165. if(!isNextEntity(player, entity_type)) {
  166. goto("wait");
  167. }
  168. sound.spawnForPlayer(player, sound, category);
  169. new_type = getRandomType(player);
  170. if(new_type == null) {
  171. msg.prefix(player, prefix_challenge, "All entities killed. Challenge done!");
  172. msg.prefix(player, prefix_challenge, string.concat("Reward: ", money.getString(reward)));
  173. money.add(player, reward);
  174. amber = customitem.getAmber();
  175. item.setAmount(amber, 2);
  176. player.giveItem(player, amber);
  177. resetAE(player);
  178. challenge.removeDisplay(player, sb_id);
  179. player.removeChallenge(player, challenge_short);
  180. player.setAEChallengeAmounts(player, player.getAEChallengeAmounts(player) + 1);
  181. goto("wait");
  182. }
  183. saveDoneEntity(player, entity_type);
  184. stage = setNextEntity(player, new_type);
  185. msg.prefix(player, prefix_challenge, string.concat("Entity killed. Next entity: ", new_type));
  186. challenge.display(player, sb_id, challenge_name, new_type, stage, all_stages);
  187. goto("wait");
  188. function getRandomType(player) {
  189. player_id = player.getId(player);
  190. l = map.get($todo_entities, player_id);
  191. l_size = list.getSize(l);
  192. if(l_size == 0) {
  193. return null;
  194. }
  195. r = math.random(0, l_size - 1);
  196. return list.getIndex(l, r);
  197. }
  198. function isNextEntity(player, entity_type) {
  199. player_id = player.getId(player);
  200. next_type = map.get($next_entities, player_id);
  201. return next_type == entity_type;
  202. }
  203. function setNextEntity(player_or_id, entity_type) {
  204. player_id = player.getValidId(player_or_id);
  205. map.add($next_entities, player_id, entity_type);
  206. saveNextEntity(player_or_id, entity_type);
  207. l = map.get($todo_entities, player_id);
  208. list.remove(l, entity_type);
  209. return $all_stages - list.getSize(l) - 1;
  210. }
  211. function loadNextEntity(player_or_id) {
  212. config = playerdata.getSurvival(player_or_id);
  213. player_id = player.getValidId(player_or_id);
  214. type = config.getString(config, "cha.ae.next", "null");
  215. map.add($next_entities, player_id, type);
  216. l = map.get($todo_entities, player_id);
  217. list.remove(l, type);
  218. return type;
  219. }
  220. function saveNextEntity(player_or_id, entity_type) {
  221. config = playerdata.getSurvival(player_or_id);
  222. config.set(config, "cha.ae.next", entity_type);
  223. config.saveAsync(config);
  224. }
  225. function loadDoneEntities(player_or_id) {
  226. config = playerdata.getSurvival(player_or_id);
  227. string = config.getString(config, "cha.ae.done", "");
  228. s = set.new();
  229. l = list.copy($entity_list);
  230. if(string != "") {
  231. a = string.split("%", string);
  232. for(i = 0; i < array.getSize(a); i++) {
  233. type = a[i];
  234. set.add(s, type);
  235. list.remove(l, type);
  236. }
  237. }
  238. player_id = player.getValidId(player_or_id);
  239. map.add($done_entities, player_id, s);
  240. map.add($todo_entities, player_id, l);
  241. return set.getSize(map.get($done_entities, player_id));
  242. }
  243. function saveDoneEntity(player_or_id, entity_type) {
  244. player_id = player.getValidId(player_or_id);
  245. s = map.get($done_entities, player_id);
  246. set.add(s, entity_type);
  247. config = playerdata.getSurvival(player_or_id);
  248. string = config.getString(config, "cha.ae.done", "");
  249. if(string == "") {
  250. config.set(config, "cha.ae.done", entity_type);
  251. } else {
  252. config.set(config, "cha.ae.done", string.concat(string, "%", entity_type));
  253. }
  254. config.saveAsync(config);
  255. }
  256. function resetAE(player_or_id) {
  257. config = playerdata.getSurvival(player_or_id);
  258. config.set(config, "cha.ae.done", "");
  259. config.set(config, "cha.ae.next", "");
  260. config.saveAsync(config);
  261. }