skyblock.txt 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. //Error
  2. event.load("player_pre_respawn");
  3. event.load("custom_command");
  4. event.load("block_place");
  5. event.load("block_click");
  6. event.load("block_break");
  7. event.load("inv_click");
  8. event.load("player_login");
  9. event.load("player_move");
  10. event.load("entity_click");
  11. event.load("entity_hurt");
  12. event.load("portal");
  13. sbworld = world.get("skyblock");
  14. gamesworld = world.get("games");
  15. skyblockuserssign = loc.new(gamesworld, -403, 88, 99);
  16. centerloc = loc.new(sbworld, -15866, 101, -15872);
  17. serverspawn = read.location(ggv("SERVER", "serverspawn"));
  18. air_item_type = "minecraft:air";
  19. airitem = read.item(air_item_type);
  20. moveidfromworldspawn = event.addMoveData(loc.new(gamesworld, -404, 86, 98), loc.new(gamesworld, -402, 88, 99), 5, -1);
  21. nextday = time.new(time.getMillis());
  22. time.nextDay(nextday);
  23. präfix = "§aSkyBlock";
  24. list.new(correctPlotId);
  25. command.add("skyblock");
  26. command.add("sb");
  27. if(ggv("SERVER", "sbusers") == null) {
  28. sgv("SERVER", "sbusers", 0);
  29. }
  30. map.new(blockstats);
  31. map.add(blockstats, "SAPLING", "sbplacedsaplings");
  32. map.add(blockstats, "COBBLESTONE", "sbbrokencobble");
  33. map.add(blockstats, "MELON_BLOCK", "sbbrokenmelon");
  34. map.add(blockstats, "COCOA", "sbbrokencacaobean");
  35. map.add(blockstats, "CROPS", "sbbrokenwheat");
  36. map.add(blockstats, "POTATO", "sbbrokenpotato");
  37. map.add(blockstats, "CARROT", "sbbrokencarrot");
  38. map.add(blockstats, "NETHER_WARTS", "sbbrokennetherwart");
  39. map.add(blockstats, "BEETROT_BLOCK", "sbbrokenbeetroot");
  40. map.new(blockid);
  41. map.add(blockid, "COCOA", 11);
  42. map.add(blockid, "CROPS", 7);
  43. map.add(blockid, "POTATO", 7);
  44. map.add(blockid, "CARROT", 7);
  45. map.add(blockid, "NETHER_WARTS", 3);
  46. map.add(blockid, "BEETROT_BLOCK", 3);
  47. set.new(gamemasters);
  48. set.add(gamemasters, "e41b5335-3c74-46e9-a6c5-dafc6334a477"); //marvinius
  49. //itemstack / index für map dailyquestamount
  50. map.new(dailyquestitems);
  51. map.add(dailyquestitems, read.item("{id:'minecraft:cobblestone',Count:1b,Damage:0s}"), 5);
  52. map.add(dailyquestitems, read.item("{id:'minecraft:cobblestone',Count:1b,Damage:0s}"), 5);
  53. map.add(dailyquestitems, read.item("{id:'minecraft:wheat',Count:1b,Damage:0s}"), 4);
  54. map.add(dailyquestitems, read.item("{id:'minecraft:gunpowder',Count:1b,Damage:0s}"), 3);
  55. map.add(dailyquestitems, read.item("{id:'minecraft:fish',Count:1b,Damage:0s}"), 1);
  56. map.add(dailyquestitems, read.item("{id:'minecraft:fish',Count:1b,Damage:1s}"), 1);
  57. map.add(dailyquestitems, read.item("{id:'minecraft:fish',Count:1b,Damage:2s}"), 1);
  58. map.add(dailyquestitems, read.item("{id:'minecraft:fish',Count:1b,Damage:3s}"), 1);
  59. map.add(dailyquestitems, read.item("{id:'minecraft:record_13',Count:1b,Damage:0s}"), 0);
  60. map.add(dailyquestitems, read.item("{id:'minecraft:record_cat',Count:1b,Damage:0s}"), 0);
  61. map.add(dailyquestitems, read.item("{id:'minecraft:record_blocks',Count:1b,Damage:0s}"), 0);
  62. map.add(dailyquestitems, read.item("{id:'minecraft:record_chirp',Count:1b,Damage:0s}"), 0);
  63. map.add(dailyquestitems, read.item("{id:'minecraft:record_far',Count:1b,Damage:0s}"), 0);
  64. map.add(dailyquestitems, read.item("{id:'minecraft:record_mall',Count:1b,Damage:0s}"), 0);
  65. map.add(dailyquestitems, read.item("{id:'minecraft:record_mellohi',Count:1b,Damage:0s}"), 0);
  66. map.add(dailyquestitems, read.item("{id:'minecraft:record_stal',Count:1b,Damage:0s}"), 0);
  67. map.add(dailyquestitems, read.item("{id:'minecraft:record_strad',Count:1b,Damage:0s}"), 0);
  68. map.add(dailyquestitems, read.item("{id:'minecraft:record_ward',Count:1b,Damage:0s}"), 0);
  69. map.add(dailyquestitems, read.item("{id:'minecraft:record_11',Count:1b,Damage:0s}"), 0);
  70. map.add(dailyquestitems, read.item("{id:'minecraft:record_wait',Count:1b,Damage:0s}"), 0);
  71. map.add(dailyquestitems, read.item("{id:'minecraft:melon',Count:1b,Damage:0s}"), 4);
  72. map.add(dailyquestitems, read.item("{id:'minecraft:pumpkin',Count:1b,Damage:0s}"), 4);
  73. map.add(dailyquestitems, read.item("{id:'minecraft:log',Count:1b,Damage:0s}"), 4);
  74. map.add(dailyquestitems, read.item("{id:'minecraft:log',Count:1b,Damage:1s}"), 4);
  75. map.add(dailyquestitems, read.item("{id:'minecraft:log',Count:1b,Damage:2s}"), 4);
  76. map.add(dailyquestitems, read.item("{id:'minecraft:log',Count:1b,Damage:3s}"), 4);
  77. map.add(dailyquestitems, read.item("{id:'minecraft:log2',Count:1b,Damage:0s}"), 4);
  78. map.add(dailyquestitems, read.item("{id:'minecraft:log2',Count:1b,Damage:1s}"), 4);
  79. map.add(dailyquestitems, read.item("{id:'minecraft:dye',Count:1b,Damage:3s}"), 4);
  80. map.add(dailyquestitems, read.item("{id:'minecraft:potato',Count:1b,Damage:0s}"), 4);
  81. map.add(dailyquestitems, read.item("{id:'minecraft:carrot',Count:1b,Damage:0s}"), 4);
  82. map.add(dailyquestitems, read.item("{id:'minecraft:string',Count:1b,Damage:0s}"), 3);
  83. map.add(dailyquestitems, read.item("{id:'minecraft:rotten_flesh',Count:1b,Damage:0s}"), 4);
  84. map.add(dailyquestitems, read.item("{id:'minecraft:ender_pearl',Count:1b,Damage:0s}"), 1);
  85. map.add(dailyquestitems, read.item("{id:'minecraft:bone',Count:1b,Damage:0s}"), 3);
  86. map.add(dailyquestitems, read.item("{id:'minecraft:reeds',Count:1b,Damage:0s}"), 4);
  87. map.add(dailyquestitems, read.item("{id:'minecraft:leather',Count:1b,Damage:0s}"), 3);
  88. map.add(dailyquestitems, read.item("{id:'minecraft:cactus',Count:1b,Damage:0s}"), 3);
  89. map.add(dailyquestitems, read.item("{id:'minecraft:sapling',Count:1b,Damage:0s}"), 3);
  90. map.add(dailyquestitems, read.item("{id:'minecraft:sapling',Count:1b,Damage:1s}"), 3);
  91. map.add(dailyquestitems, read.item("{id:'minecraft:sapling',Count:1b,Damage:2s}"), 3);
  92. map.add(dailyquestitems, read.item("{id:'minecraft:sapling',Count:1b,Damage:3s}"), 3);
  93. map.add(dailyquestitems, read.item("{id:'minecraft:sapling',Count:1b,Damage:4s}"), 3);
  94. map.add(dailyquestitems, read.item("{id:'minecraft:sapling',Count:1b,Damage:5s}"), 3);
  95. list.new(dailyquestamount);
  96. list.add(dailyquestamount, "1_3");
  97. list.add(dailyquestamount, "3_8");
  98. list.add(dailyquestamount, "8_16");
  99. list.add(dailyquestamount, "16_32");
  100. list.add(dailyquestamount, "32_64");
  101. list.add(dailyquestamount, "64_128");
  102. tempsize = map.getSize(dailyquestitems) - 1;
  103. index1 = math.random(0, tempsize);
  104. index2 = math.random(0, tempsize);
  105. index3 = math.random(0, tempsize);
  106. table.fromMap(dailyquestitemstable, dailyquestitems);
  107. item1 = table.get(dailyquestitemstable, index1, 0);
  108. item2 = table.get(dailyquestitemstable, index2, 0);
  109. item3 = table.get(dailyquestitemstable, index3, 0);
  110. amount1 = setamount(index1, dailyquestitemstable, dailyquestamount);
  111. amount2 = setamount(index2, dailyquestitemstable, dailyquestamount);
  112. amount3 = setamount(index3, dailyquestitemstable, dailyquestamount);
  113. function setamount(index, table, list) {
  114. split(splitlist, "_", list.getIndex(list, table.get(table, index, 1)));
  115. return math.random(list.getIndex(splitlist, 0), list.getIndex(splitlist, 1));
  116. }
  117. if(ggv("SERVER", "sbdailyquest1") == null) {
  118. item.setAmount(item1, amount1);
  119. item.setAmount(item2, amount2);
  120. item.setAmount(item3, amount3);
  121. sgv("SERVER", "sbdailyquest1", text.item(item1));
  122. sgv("SERVER", "sbdailyquest2", text.item(item2));
  123. sgv("SERVER", "sbdailyquest3", text.item(item3));
  124. }
  125. inv.newdynamic(dailyquestmenu, "222222222", "Daily Quest");
  126. inv.setItem(dailyquestmenu, 0, read.item(ggv("SERVER", "sbdailyquest1")));
  127. inv.setItem(dailyquestmenu, 1, read.item(ggv("SERVER", "sbdailyquest2")));
  128. inv.setItem(dailyquestmenu, 2, read.item(ggv("SERVER", "sbdailyquest3")));
  129. inv.setItem(dailyquestmenu, 8, read.item("{id:'minecraft:gold_ingot',Count:1b,tag:{display:{Name:'§rBelohnung: §620 SkyCoins'}},Damage:0s}"));
  130. inv.newdynamic(buyquestslotmenu, "221111112", "Freischalten? 500 SkyCoins");
  131. inv.setItem(buyquestslotmenu, 0, read.item("{id:'minecraft:wool',Count:1b,tag:{display:{Name:'§aJa'}},Damage:13s}"));
  132. inv.setItem(buyquestslotmenu, 1, read.item("{id:'minecraft:wool',Count:1b,tag:{display:{Name:'§cNein'}},Damage:14s}"));
  133. inv.setItem(buyquestslotmenu, 8, read.item("{id:'minecraft:wooden_door',Count:1b,tag:{display:{Name:'§rZurück'}},Damage:0s}"));
  134. players.toWorldList(world, sbworld);
  135. for(i = 0; i <= list.getSize(world) - 1; i++) {
  136. player = list.getIndex(world, i);
  137. player_name = player.getName(player);
  138. //Spieler noch nicht initialisiert (Neuer Spieler, der in die Welt geht, bevor Gildenpvp-Script gestartet ist)
  139. if(!isSbPlayer(player.getUuid(player))) {
  140. gosub("newplayer");
  141. }
  142. }
  143. msg("dev", "§bSkyBlock §rwurde geladen.");
  144. @wait
  145. wait();
  146. player_loc = entity.getLocation(player);
  147. if(event == "block_click") {
  148. if(block_loc == skyblockuserssign) {
  149. visiters = ggv("SERVER", "sbusers");
  150. block.setSign(skyblockuserssign, 2, concat(text.number(visiters), " Besucher"));
  151. yettime = time.new(time.getMillis());
  152. day = text.number(time.getDay(yettime));
  153. month = text.number(time.getMonth(yettime));
  154. year = text.number(time.getYear(yettime));
  155. block.setSign(skyblockuserssign, 3, concat("Stand: ", day, ".", month, ".", year));
  156. }
  157. goto("wait");
  158. }
  159. if(event == "player_move") {
  160. if(id == moveidfromworldspawn) {
  161. if(!isSbPlayer(player.getUuid(player))) {
  162. gosub("newplayer");
  163. } else {
  164. player_uuid = player.getUuid(player);
  165. lastpos = gdmap.get("skyblock", player_uuid, "lastpos");
  166. entity.teleport(player, read.location(lastpos));
  167. }
  168. }
  169. goto("wait");
  170. }
  171. if(event == "portal") {
  172. if(from == "skyblock") {
  173. x = loc.getX(player_loc);
  174. y = loc.getY(player_loc);
  175. z = loc.getZ(player_loc);
  176. lastpos = loc.new(sbworld, x, y, z);
  177. gdmap.add("skyblock", player.getUuid(player), "lastpos", text.location(lastpos));
  178. goto("wait");
  179. }
  180. if(to == "skyblock") {
  181. goto("player_login");
  182. }
  183. goto("wait");
  184. }
  185. if(loc.getWorld(player_loc) == sbworld) {
  186. ignoreGoto(event);
  187. }
  188. goto("wait");
  189. @player_login
  190. //auch der portal-Event leitet mit 'to' hier her
  191. if(!isSbPlayer(player.getUuid(player))) {
  192. gosub("newplayer");
  193. }
  194. goto("wait");
  195. @newplayer
  196. //Neue Insel erstellen
  197. for(sbz = -14999; sbz <= 15501; sbz += 250) {
  198. for(sbx = -14999; sbx <= 15501; sbx += 250) {
  199. plotids = plot.getIds(loc.new(sbworld, sbx, 0, sbz));
  200. if(list.getSize(plotids) == 0) {
  201. gs1 = loc.new(sbworld, sbx, 0, sbz);
  202. gs2 = loc.new(sbworld, sbx + 199, 255, sbz + 199);
  203. plot = addPlot(gs1, gs2);
  204. setPlotName(plot, player_name);
  205. addPlotPlayer(plot, player_name);
  206. player_uuid = player.getUuid(player);
  207. sgv("SERVER", "sbusers", ggv("SERVER", "sbusers") + 1);
  208. startloc1 = loc.mod(gs1, 95, 98, 95);
  209. startloc2 = loc.new(sbworld, -15505, 101, -15505);
  210. for(x = 0; x < 13; x++) {
  211. for(y = 0; y < 19; y++) {
  212. for(z = 0; z < 13; z++) {
  213. relloc1 = loc.mod(startloc1, x, y, z);
  214. relloc2 = loc.mod(startloc2, x, y, z);
  215. block.clone(relloc2, relloc1);
  216. }
  217. }
  218. }
  219. chestloc = loc.mod(gs1, 99, 108, 101);
  220. block.set(loc.mod(gs1, 99, 109, 101), "minecraft:wall_torch[facing=east]");
  221. homeloc = loc.mod(gs1, 99.5, 108, 103.5, 180, 0.001);
  222. entity.teleport(player, homeloc);
  223. gdmap.add("skyblock", player_uuid, "home", text.location(homeloc));
  224. gdmap.add("skyblock", player_uuid, "lastpos", text.location(homeloc));
  225. gdmap.add("money", player_uuid, "skycoins", 100);
  226. list.add(correctPlotId, player_uuid);
  227. sgoto(10, "actualizePlotId");
  228. return;
  229. }
  230. }
  231. }
  232. player.speak(player, präfix, "§rDie ganze Welt ist mit Grundstücken besetzt; marvinius wurde informiert per Mail");
  233. mail.send(player_name, "marvinius", "SkyBlock Welt mit Inseln voll");
  234. return;
  235. @actualizePlotId
  236. player_uuid = list.getIndex(correctPlotId, 0);
  237. list.removeIndex(correctPlotId, 0);
  238. //Plot-ID vom Namen abrufen
  239. getCorrectPlotIdStatement = databank.prepare("SELECT id FROM plots WHERE world_name = skyblock AND name = ?");
  240. player_name = player.getName(player_uuid);
  241. databank.setString(getCorrectPlotIdStatement, 1, player_name);
  242. result = databank.execute(getCorrectPlotIdStatement);
  243. while(databank.next(result)) {
  244. plot_id = databank.getInt(result, 1);
  245. }
  246. databank.close(result);
  247. databank.close(getCorrectPlotIdStatement);
  248. //Korrekte Plot-ID setzen
  249. setSbPlotId(player_uuid, plot_id);
  250. goto("wait");
  251. @player_pre_respawn
  252. player.setSpawn(player, read.location(getHomelocString(player)));
  253. entity.addEffect(player, "slowness", 1200, 2);
  254. entity.addEffect(player, "nausea", 100, 0);
  255. entity.addEffect(player, "mining_fatigue", 1200, 0);
  256. goto("wait");
  257. @custom_command
  258. if(command == "skyblock" || command == "sb") {
  259. size = list.getSize(args);
  260. if(size == 0) {
  261. player.speak(player, präfix, "/skyblock ...");
  262. msg(player, "§a - home §rTeleportiert dich zu deiner Insel");
  263. msg(player, "§a - sethome §rSetzt deinen Spawn für die Insel neu");
  264. msg(player, "§a - center §rTeleportiert zum Zenturm");
  265. msg(player, "§a - leave §rVerlässt die SkyBlock Welt");
  266. msg(player, "§a - money §rGibt dir deinen Kontostand aus");
  267. msg(player, "§a - transfer <player> <money> §rSendet einem Spieler Geld");
  268. msg(player, "§a - share <player> §rFügt einen Spieler zu deinem Grundstück hinzu");
  269. msg(player, "§a - kick <player> §rEntfernt einen Spieler von deinem Grundstück");
  270. msg(player, "§a - name <name> §rBenennt dein Grundstück um");
  271. msg(player, "§a - tp <player> Teleportiert dich zur Insel eines Spielers");
  272. if(perm.has(player, "isSnuviMaster")) {
  273. msg(player, "§a - resetplayer <player> §rLöscht einen Spieler komplett aus SkyBlock");
  274. msg(player, "§a - resetall §rLöscht alle SkyBlock-Datenbankeinträge");
  275. }
  276. goto("wait");
  277. }
  278. arg0 = list.getIndex(args, 0);
  279. if(arg0 == "home") {
  280. if(size != 1) {
  281. player.speak(player, präfix, "§a/skyblock home");
  282. } else {
  283. if(playerInAir(player)) {
  284. player.speak(player, präfix, "§rTeleport nicht möglich");
  285. goto("wait");
  286. }
  287. entity.teleport(player, read.location(getHomelocString(player)));
  288. }
  289. goto("wait");
  290. }
  291. if(arg0 == "sethome") {
  292. if(size != 1) {
  293. player.speak(player, präfix, "§a/skyblock sethome");
  294. } else {
  295. if(playerInAir(player)) {
  296. player.speak(player, präfix, "§rDiese Aktion ist hier nicht möglich");
  297. goto("wait");
  298. }
  299. plotid = getPlotId(player_loc);
  300. player_uuid = player.getUuid(player);
  301. plot_id2 = getSbPlotId(player_uuid);
  302. if(plotid != plot_id2) {
  303. player.speak(player, präfix, "§rDu befindest dich nicht auf deinem Grundstück");
  304. goto("wait");
  305. }
  306. gdmap.add("skyblock", player_uuid, "home", text.location(player_loc));
  307. player.speak(player, präfix, "§rDein Spawnpunkt wurde neu gesetzt");
  308. }
  309. goto("wait");
  310. }
  311. if(arg0 == "center") {
  312. if(size != 1) {
  313. player.speak(player, präfix, "§a/skyblock center");
  314. } else {
  315. if(playerInAir(player)) {
  316. player.speak(player, präfix, "§rTeleport nicht möglich");
  317. goto("wait");
  318. }
  319. entity.teleport(player, centerloc);
  320. }
  321. goto("wait");
  322. }
  323. if(arg0 == "leave") {
  324. if(size != 1) {
  325. player.speak(player, präfix, "§a/skyblock leave");
  326. } else {
  327. if(playerInAir(player)) {
  328. player.speak(player, präfix, "§rTeleport nicht möglich");
  329. goto("wait");
  330. }
  331. entity.teleport(player, serverspawn);
  332. gdmap.add("skyblock", player.getUuid(player), "lastpos", text.location(player_loc));
  333. }
  334. goto("wait");
  335. }
  336. if(arg0 == "money") {
  337. if(size != 1) {
  338. player.speak(player, präfix, "§a/skyblock money");
  339. } else {
  340. player.speak(player, präfix, concat("§rDeine SkyCoins: §e", gdmap.get("money", player.getUuid(player), "skycoins")));
  341. }
  342. goto("wait");
  343. }
  344. if(arg0 == "transfer") {
  345. if(size != 3) {
  346. player.speak(player, präfix, "§a/skyblock transfer <player> <money>");
  347. } else {
  348. pname = list.getIndex(args, 0);
  349. money = list.getIndex(args, 1);
  350. if(!checkIfEverOnline(pname)) {
  351. player.speak(player, präfix, "§rDieser Spieler war noch nie online");
  352. goto("wait");
  353. }
  354. puuid = player.getUuid(pname);
  355. if(text.class(money) != "Double" || money < 1) {
  356. player.speak(player, präfix, "§rZahl größer 0 erwartet");
  357. }
  358. playermoney = gdmap.get("money", puuid, "skycoins");
  359. if(playermoney < money) {
  360. player.speak(player, präfix, "§rDu hast nicht genug SkyCoins");
  361. goto("wait");
  362. }
  363. addCoins(player, money);
  364. subCoins(player, money);
  365. player.speak(player, präfix, concat("§rDu hast §7", pname, " §6", money, " SkyCoins §rüberwiesen"));
  366. }
  367. goto("wait");
  368. }
  369. if(arg0 == "share") {
  370. if(size != 2) {
  371. player.speak(player, präfix, "§a/skyblock share <player>");
  372. } else {
  373. pname = list.getIndex(args, 1);
  374. if(!checkIfEverOnline(pname)) {
  375. player.speak(player, präfix, "§rDieser Spieler war noch nie online");
  376. goto("wait");
  377. }
  378. player_uuid = player.getUuid(player);
  379. plot_id = getSbPlotId(player_uuid);
  380. //Error
  381. addPlotPlayer(plot, pname);
  382. player.speak(player, präfix, concat("§7", pname, " §rhinzugefügt"));
  383. }
  384. goto("wait");
  385. }
  386. if(arg0 == "kick") {
  387. if(size != 2) {
  388. player.speak(player, präfix, "§a/skyblock kick <player>");
  389. } else {
  390. pname = list.getIndex(args, 1);
  391. if(!checkIfEverOnline(pname)) {
  392. player.speak(player, präfix, "§rDieser Spieler war noch nie online");
  393. goto("wait");
  394. }
  395. player_uuid = player.getUuid(player);
  396. plot_id = getSbPlotId(player_uuid);
  397. p_id = player.getId(player.getUuid(pname));
  398. removePlotPlayer(plot_id, pname);
  399. player.speak(player, präfix, concat("§7", pname, " §rentfernt"));
  400. }
  401. goto("wait");
  402. }
  403. if(arg0 == "name") {
  404. if(size != 2) {
  405. player.speak(player, präfix, "§a/skyblock name <name>");
  406. } else {
  407. name = list.getIndex(args, 1);
  408. player_uuid = player.getUuid(player);
  409. plot_id = getSbPlotId(player_uuid);
  410. setPlotName(plot_id, name);
  411. player.speak(player, präfix, concat("§rZu §7", name, " §rumbenannt"));
  412. }
  413. goto("wait");
  414. }
  415. if(arg0 == "tp") {
  416. if(size != 2) {
  417. player.speak(player, präfix, "§a/skyblock tp <player>");
  418. } else {
  419. pname = list.getIndex(args, 1);
  420. puuid = player.getUuid(pname);
  421. plot_id = getSbPlotId(puuid);
  422. if(plot_id == null) {
  423. player.speak(player, präfix, "§rDieser Spieler beitzt keine Insel");
  424. goto("wait");
  425. }
  426. player.speak(player, präfix, concat("§rNächster Halt: §7", pname));
  427. entity.teleport(player, read.location(getHomelocString(pname)));
  428. }
  429. goto("wait");
  430. }
  431. if(arg0 == "resetall") {
  432. if(size != 1) {
  433. player.speak(player, präfix, "§a/skyblock resetall");
  434. } else {
  435. if(perm.has(player, "isSnuviMaster")) {
  436. gdmap.removeAll("skyblock");
  437. gmap.removeAll("dailyreward");
  438. gmap.removeAll("dailyquest");
  439. sgv("SERVER", "sbusers", 0);
  440. player.speak(player, präfix, "Alles resettet");
  441. }
  442. }
  443. goto("wait");
  444. }
  445. if(arg0 == "resetplayer") {
  446. if(size != 2) {
  447. player.speak(player, präfix, "§a/skyblock resetplayer <player>");
  448. } else {
  449. if(perm.has(player, "isSnuviMaster")) {
  450. pname = list.getIndex(args, 1);
  451. if(!checkIfEverOnline(pname)) {
  452. player.speak(player, präfix, "§rDieser Spieler war noch nie online");
  453. goto("wait");
  454. }
  455. uuid = player.getUuid(pname);
  456. if(!isSbPlayer(uuid)) {
  457. player.speak(player, präfix, "Spieler nicht gefunden");
  458. goto("wait");
  459. }
  460. player.speak(player, präfix, "Work in progress");
  461. homeloc = gdmap.get("skyblock", uuid, "home");
  462. plot_id = getSbPlotId(uuid);
  463. removePlot(plot_id);
  464. p = read.player(pname);
  465. if(p != null) {
  466. if(loc.getWorld(entity.getLocation(p)) == sbworld) {
  467. entity.teleport(p, serverspawn);
  468. }
  469. }
  470. gdmap.remove("money", uuid, "skycoins");
  471. gdmap.remove("skyblock", uuid, "home");
  472. gdmap.remove("skyblock", uuid, "plotid");
  473. gdmap.remove("skyblock", uuid, "lastpos");
  474. sgv("SERVER", "sbusers", ggv("SERVER", "sbusers") - 1);
  475. msg(player, präfix, "Manuell mit Worldedit entfernen: ", homeloc);
  476. player.speak(player, präfix, "§rErfolgreich zurückgesetzt");
  477. }
  478. }
  479. goto("wait");
  480. }
  481. }
  482. goto("wait");
  483. @entity_click
  484. @entity_hurt
  485. if(entity.getName(entity) == "Daily Reward") {
  486. gosub("checkfornextday");
  487. if(gmap.get("dailyreward", player.getUuid(player_name)) != null) {
  488. player.speak(player, präfix, "§rDu hast deine tägliche Belohnung heute bereits abgeholt");
  489. goto("wait");
  490. }
  491. gmap.add("dailyreward", player.getUuid(player_name), time.getMillis());
  492. player.speak(player, präfix, "§rHier hast du deine tägliche Belohnung: ", concat("§6+", 5, " SkyCoins"));
  493. addCoins(player, 5);
  494. goto("wait");
  495. }
  496. if(entity.getName(entity) == "Daily Quest") {
  497. gosub("checkfornextday");
  498. inv.open(dailyquestmenu, player);
  499. goto("wait");
  500. }
  501. goto("wait");
  502. @inv_click
  503. cancel = true;
  504. uuid = player.getUuid(player_name);
  505. if(inv_id == 0) {
  506. cancel = true;
  507. }
  508. if(inv_id == 1) {
  509. cancel = true;
  510. if(inv_slot == 8) {
  511. goto("wait");
  512. }
  513. if(inv_slot > 0) {
  514. if(inv.getItem(dailyquestmenu, inv_slot) == null) {
  515. goto("wait");
  516. }
  517. if(inv_slot == 8) {
  518. goto("wait");
  519. }
  520. if(ggv(player, "dqskill") == null) {
  521. sgv(player, "dqskill", 0);
  522. }
  523. if(ggv(player, "dqskill") < inv_slot) {
  524. inv.open(buyquestslotmenu, player);
  525. goto("wait");
  526. }
  527. }
  528. itemstack = inv.getItem(dailyquestmenu, inv_slot);
  529. if(gmap.get("dailyquest", concat(uuid, inv_slot)) != null) {
  530. player.speak(player, "§6DailyReward", "§rDu hast diese tägliche Quest bereits erfüllt");
  531. goto("wait");
  532. }
  533. if(player.getItemAmount(player, false, itemstack) < item.getAmount(itemstack)) {
  534. goto("notenoughitems");
  535. }
  536. player.removeItem(player, itemstack);
  537. gmap.add("dailyquest", concat(uuid, inv_slot), time.getMillis());
  538. reward = 20;
  539. player.speak(player, "§6DailyQuest", "§rHier hast du deine tägliche Belohnung: ", concat("§6+", reward, " SkyCoins"));
  540. gdmap.add("money", uuid, "skycoins", gdmap.get("money", uuid, "skycoins") + reward);
  541. goto("wait");
  542. }
  543. if(inv_id == 2) {
  544. if(inv_slot == 0) {
  545. cancel = true;
  546. playermoney = gdmap.get("money", player.getUuid(player), "skycoins");
  547. if(playermoney < 500) {
  548. player.speak(player, präfix, "§rDu hast nicht genug SkyCoins");
  549. goto("wait");
  550. }
  551. subcoins(player, playermoney - 500);
  552. sgv(player, "dqskill", ggv(player, "dqskill") + 1);
  553. player.speak(player, präfix, "§rDu hast um 500 SkyCoins eine weitere tägliche Quest freigeschaltet");
  554. inv.open(dailyquestmenu, player);
  555. goto("wait");
  556. }
  557. if(inv_slot == 1 || inv_slot == 8) {
  558. cancel = true;
  559. inv.open(dailyquestmenu, player);
  560. }
  561. goto("wait");
  562. }
  563. goto("wait");
  564. @newrandomquests
  565. tempsize = map.getSize(dailyquestitems) - 1;
  566. index1 = math.random(0, tempsize);
  567. index2 = math.random(0, tempsize);
  568. index3 = math.random(0, tempsize);
  569. table.frommap(dailyquestitemstable, dailyquestitems);
  570. item1 = table.get(dailyquestitemstable, index1, 0);
  571. item2 = table.get(dailyquestitemstable, index2, 0);
  572. item3 = table.get(dailyquestitemstable, index3, 0);
  573. amount1 = setamount(index1, dailyquestitemstable, dailyquestamount);
  574. amount2 = setamount(index2, dailyquestitemstable, dailyquestamount);
  575. amount3 = setamount(index3, dailyquestitemstable, dailyquestamount);
  576. item.setAmount(item1, amount1);
  577. item.setAmount(item2, amount2);
  578. item.setAmount(item3, amount3);
  579. sgv("SERVER", "sbdailyquest1", text.item(item1));
  580. sgv("SERVER", "sbdailyquest2", text.item(item2));
  581. sgv("SERVER", "sbdailyquest3", text.item(item3));
  582. inv.setItem(dailyquestmenu, 0, read.item(ggv("SERVER", "sbdailyquest1")));
  583. inv.setItem(dailyquestmenu, 1, read.item(ggv("SERVER", "sbdailyquest2")));
  584. inv.setItem(dailyquestmenu, 2, read.item(ggv("SERVER", "sbdailyquest3")));
  585. inv.setItem(dailyquestmenu, 8, read.item("{id:'minecraft:gold_ingot',Count:1b,tag:{display:{Name:'§rBelohnung: §620 SkyCoins'}},Damage:0s}"));
  586. return;
  587. @checkfornextday
  588. if(time.getMillis() > time.from(nextday)) {
  589. time.new(nextday, time.getMillis());
  590. time.nextDay(nextday);
  591. gmap.removeAll("dailyreward");
  592. gmap.removeAll("dailyquest");
  593. gosub("newrandomquests");
  594. }
  595. return;
  596. @block_place
  597. @block_break
  598. if(!isgamemaster(player)) {
  599. plotid = plotidfromloc(block_loc);
  600. if(plotid == null) {
  601. cancel = true;
  602. goto("wait");
  603. }
  604. }
  605. goto("wait");
  606. function plotidfromloc(location) {
  607. plot.getIds(plotset, location);
  608. if(set.getSize(plotset) > 0) {
  609. set.toList(plotlist, plotset);
  610. plotid = list.getIndex(plotlist, 0);
  611. return plotid;
  612. }
  613. return null;
  614. }
  615. return;
  616. function checkifeveronline(pname) {
  617. if(player.getUuid(pname) == null) {
  618. return false;
  619. }
  620. return true;
  621. }
  622. function playerinair() {
  623. modded_player_loc = loc.mod($player_loc, 0, -1, 0);
  624. if(block.getType(modded_player_loc) == $airitemstring) {
  625. return true;
  626. }
  627. return false;
  628. }
  629. function isgamemaster(player) {
  630. if(set.contains($gamemasters, player.getUuid(player))) {
  631. return true;
  632. }
  633. return false;
  634. }
  635. function addcoins(player, money) {
  636. uuid = player.getUuid(player);
  637. gdmap.add("money", uuid, "skycoins", gdmap.get("money", uuid, "skycoins") + money);
  638. return;
  639. }
  640. function subcoins(player, money) {
  641. uuid = player.getUuid(player);
  642. gdmap.add("money", uuid, "skycoins", gdmap.get("money", uuid, "skycoins") - money);
  643. return;
  644. }
  645. function gethomelocstring(player) {
  646. homeloc = gdmap.get("skyblock", player.getUuid(player), "home");
  647. if(homeloc == null) {
  648. return null;
  649. }
  650. return homeloc;
  651. }
  652. function issbplayer(uuid) {
  653. homeloc = gdmap.get("skyblock", uuid, "home");
  654. if(homeloc != null) {
  655. return true;
  656. }
  657. return false;
  658. }