Marvin Löschenkohl 5 anos atrás
pai
commit
038bb33979

+ 0 - 0
minigames/bedwars/bedwarsfeature2.txt → Archiv/bedwars warp feature.txt


+ 1 - 1
docu_minecraft.php

@@ -3723,7 +3723,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.ride(horse_entity, entity)</td>
+            <td>entity.ride(entity, horse_entity)</td>
         </tr>
     </table>
     <table>

+ 34 - 4
global/gamecenter.txt

@@ -3,6 +3,7 @@ event.load("player_login");
 event.load("player_move");
 event.load("player_post_respawn");
 event.load("block_click");
+event.load("block_break");
 event.load("custom_command");
 event.load("player_logout");
 
@@ -10,16 +11,18 @@ registerRanking("jumpranks");
 
 list.new(script_players);
 list.new(script_paths);
+set.new(gamesign_ground_block);
 
 gamesworld = world.get("games");
 survworld = world.get("overworld");
 serverspawn = read.location(ggv("SERVER", "serverspawn"));
 spawnplotid = 141;
 gamesspawnloc = read.location(ggv("SERVER", "gamesspawn"));
-moveidfromworldspawn = event.addMoveData(loc.new(gamesworld, -406, 86, 98), loc.new(gamesworld, -404.1, 88, 99), 5, -1);
+moveidfromworldspawn = event.addMoveData(loc.new(gamesworld, -406, 86, 98), loc.new(gamesworld, -402, 88, 99), 5, -1);
 moveidsurvival = event.addMoveData(loc.new(gamesworld, -399, 89, 110), loc.new(gamesworld, -400, 91, 114), 5, -1);
 survival_spawn = loc.new(survworld, 204.5, 69, 256.5);
 sign_tag = block.getTag("minecraft:wall_signs");
+facing_property = block.getProperty("horizontal_facing");
 
 bwmapsign1 = loc.new(gamesworld, -420, 152, -79);
 bwmapsign2 = loc.new(gamesworld, -419, 152, -79);
@@ -49,7 +52,8 @@ invertingsign3 = loc.new(gamesworld, -399, 158, -47);
 invertingclsign1 = loc.new(gamesworld, -399, 157, -49);
 invertingclsign2 = loc.new(gamesworld, -399, 157, -48);
 invertingclsign3 = loc.new(gamesworld, -399, 157, -47);
-spleefsign1 = loc.new(gamesworld, -405, 157, -74);
+spleefsign1 = loc.new(gamesworld, -420, 157, -42);
+spleefsign2 = loc.new(gamesworld, -421, 157, -42);
 knockfightsign1 = loc.new(gamesworld, -398, 157, -56);
 knockfightsign2 = loc.new(gamesworld, -398, 157, -55);
 knockfightsign3 = loc.new(gamesworld, -398, 157, -54);
@@ -89,6 +93,7 @@ sgv("SERVER", "invertingclsign1", text.location(invertingclsign1));
 sgv("SERVER", "invertingclsign2", text.location(invertingclsign2));
 sgv("SERVER", "invertingclsign3", text.location(invertingclsign3));
 sgv("SERVER", "spleefsign1", text.location(spleefsign1));
+sgv("SERVER", "spleefsign2", text.location(spleefsign2));
 sgv("SERVER", "knockfightsign1", text.location(knockfightsign1));
 sgv("SERVER", "knockfightsign2", text.location(knockfightsign2));
 sgv("SERVER", "knockfightsign3", text.location(knockfightsign3));
@@ -152,6 +157,7 @@ map.add(openedgames, invertingclsign1, true);
 map.add(openedgames, invertingclsign2, true);
 map.add(openedgames, invertingclsign3, true);
 map.add(openedgames, spleefsign1, true);
+map.add(openedgames, spleefsign2, true);
 map.add(openedgames, knockfightsign1, true);
 map.add(openedgames, knockfightsign2, true);
 map.add(openedgames, knockfightsign3, true);
@@ -192,6 +198,7 @@ map.add(gamemappaths, invertingclsign1, "minigames/inverting/invertingclmap1");
 map.add(gamemappaths, invertingclsign2, "minigames/inverting/invertingclmap2");
 map.add(gamemappaths, invertingclsign3, "minigames/inverting/invertingclmap3");
 map.add(gamemappaths, spleefsign1, "minigames/spleef/spleefmap1");
+map.add(gamemappaths, spleefsign2, "minigames/spleef/spleefmap2");
 map.add(gamemappaths, knockfightsign1, "minigames/knockfight/knockmap1");
 map.add(gamemappaths, knockfightsign2, "minigames/knockfight/knockmap2");
 map.add(gamemappaths, knockfightsign3, "minigames/knockfight/knockmap3");
@@ -217,6 +224,17 @@ iterator = map.iterator(gamemappaths);
 while(hasNext(iterator)) {
 	entry = next(iterator);
 	gamesignloc = map.getKey(entry);
+	facing = block.getState(gamesignloc, facing_property);
+	if(facing == "north") {
+		ground_block = loc.mod(gamesignloc, 0, 0, 1);
+	} elseif(facing == "east") {
+		ground_block = loc.mod(gamesignloc, -1, 0, 0);
+	} elseif(facing == "south") {
+		ground_block = loc.mod(gamesignloc, 0, 0, -1);
+	} elseif(facing == "west") {
+		ground_block = loc.mod(gamesignloc, 1, 0, 0);
+	}
+	set.add(gamesign_ground_block, ground_block);
 	if(map.get(openedgames, gamesignloc) == true) {
 		block.setSign(gamesignloc, 3, "§2Bereit");
 	} else {
@@ -268,6 +286,14 @@ if(command == "game") {
 }
 goto("wait");
 
+@block_break
+if(set.contains(gamesign_ground_block, block_loc)) {
+	cancel = true;
+	player.speak(player, "§6Games", "§rGrundblock eines Gamesigns nicht abbaubar");
+	goto("wait");
+}
+goto("wait");
+
 @block_click
 if(block.hasTag(sign_tag, block.get(block_loc))) {
 	if(map.contains(gamemappaths, block_loc)) {
@@ -279,6 +305,10 @@ if(block.hasTag(sign_tag, block.get(block_loc))) {
 		}
 		line0 = block.getSign(block_loc, 0);
 		pfad2 = map.get(gamepaths, line0);
+		if(pfad2 == null) {
+			player.speak(player, "§6Games", "§rGamesign, aber erste Zeile nicht korrekt");
+			goto("wait");
+		}
 		if(set.contains(singleplayergames, line0)) {
 			if(script.get(concat("scripts/", pfad, ".txt")) != null) {
 				player.speak(player, "§6Games", "§rJemand anderes spielt dieses Spiel gerade");
@@ -336,9 +366,9 @@ sgv(player, "lobbylastpos", text.location(temploc));
 script = script.get(concat("scripts/", pfad, ".txt"));
 if(script == null) {
 	if(pfad2 != null) {
-		script.start(player, pfad, pfad2, "utils/u_games", "utils/u_party", "utils/u_ranks");
+		script.start(player, pfad, pfad2, "utils/u_games", "utils/u_party", "utils/u_ranks", "utils/u_general");
 	} else {
-		script.start(player, pfad, "utils/u_games", "utils/u_party", "utils/u_ranks");
+		script.start(player, pfad, "utils/u_games", "utils/u_party", "utils/u_ranks", "utils/u_general");
 	}
 } else {
 	script.join(script, player);

+ 94 - 116
global/ranklist.txt

@@ -1,18 +1,16 @@
 event.load("custom_command");
 showname = true;
 
-/*command.add("invstats5x5");
-command.add("invstats7x7");
-command.add("invstats10x10");
-command.add("topinvstats5x5");
-command.add("topinvstats7x7");
-command.add("topinvstats10x10");
-command.add("invstats5x5cl");
-command.add("invstats7x7cl");
-command.add("invstats10x10cl");
-command.add("topinvstats5x5cl");
-command.add("topinvstats7x7cl");
-command.add("topinvstats10x10cl");*/
+//command.add("invstats");
+command.add("topinvstats");
+command.add("removeinvstats");
+inverting_list = list.new();
+list.add(inverting_list, "5x5");
+list.add(inverting_list, "7x7");
+list.add(inverting_list, "10x10");
+list.add(inverting_list, "5x5cl");
+list.add(inverting_list, "7x7cl");
+list.add(inverting_list, "10x10cl");
 
 list.new(games);
 list.add(games, "BedWars");
@@ -29,7 +27,7 @@ list.add(games, "Letters");
 list.add(games, "Buttons");
 //list.add(games, "FleenCatch");
 //list.add(games, "MenschÄrgereDichNicht");
-//list.add(games, "Inverting");
+list.add(games, "Inverting");
 //list.add(games, "InvertingClassic");
 list.add(games, "Spleef");
 list.add(games, "Knockfight");
@@ -51,7 +49,7 @@ list.add(shorts, "le");
 list.add(shorts, "bu");
 //list.add(shorts, "fnc");
 //list.add(shorts, "mädn");
-//list.add(shorts, "inv");
+list.add(shorts, "inv");
 //list.add(shorts, "invcl");
 list.add(shorts, "spl");
 list.add(shorts, "kf");
@@ -73,7 +71,7 @@ list.add(gmaps, "letterranks");
 list.add(gmaps, "buttonranks");
 //list.add(gmaps, "fncranks");
 //list.add(gmaps, "maednranks");
-//list.add(gmaps, "invertranks");
+list.add(gmaps, "invertranks");
 //list.add(gmaps, "invertranks");
 list.add(gmaps, "spleefranks");
 list.add(gmaps, "knockranks");
@@ -95,7 +93,7 @@ list.add(messages, "§rWertung nach: §eZeit");
 list.add(messages, "§rWertung nach: §eKlicks");
 //list.add(messages, "§rWertung nach: §eWins");
 //list.add(messages, "§rWertung nach: §eWins");
-//list.add(messages, "§rWertung nach: §eKlicks");
+list.add(messages, "§rWertung nach: §eKlicks");
 //list.add(messages, "§rWertung nach: §eKlicks");
 list.add(messages, "§rWertung nach: §eWins");
 list.add(messages, "§rWertung nach: §eKills");
@@ -117,7 +115,7 @@ list.add(names, "§dLetters");
 list.add(names, "§2Buttons");
 //list.add(names, "§9Flee'n Catch");
 //list.add(names, "§cMÄDN");
-//list.add(names, "§9Inverting");
+list.add(names, "§9Inverting");
 //list.add(names, "§9InvertingClassic");
 list.add(names, "§9Spleef");
 list.add(names, "§cKnockfight");
@@ -139,7 +137,7 @@ list.add(labels, "lestats");
 list.add(labels, "bustats");
 //list.add(labels, "fncstats");
 //list.add(labels, "maednstats");
-//list.add(labels, "invertstats");
+list.add(labels, "invertstats");
 //list.add(labels, "invertstats");
 list.add(labels, "spleefstats");
 list.add(labels, "knockstats");
@@ -160,54 +158,6 @@ msg("dev", "§bStatistiken §rwurden geladen");
 @wait
 wait();
 if(event == "custom_command") {
-	/*if(command == "invstats5x5") {
-		map = "5x5";
-		goto("invstatscore");
-	}
-	if(command == "invstats7x7") {
-		map = "7x7";
-		goto("invstatscore");
-	}
-	if(command == "invstats10x10") {
-		map = "10x10";
-		goto("invstatscore");
-	}
-	if(command == "topinvstats5x5") {
-		map = "5x5";
-		goto("topinvstatscore");
-	}
-	if(command == "topinvstats7x7") {
-		map = "7x7";
-		goto("topinvstatscore");
-	}
-	if(command == "topinvstats10x10") {
-		map = "10x10";
-		goto("topinvstatscore");
-	}
-	if(command == "invstats5x5cl") {
-		map = "5x5cl";
-		goto("invstatscore");
-	}
-	if(command == "invstats7x7cl") {
-		map = "7x7cl";
-		goto("invstatscore");
-	}
-	if(command == "invstats10x10cl") {
-		map = "10x10cl";
-		goto("invstatscore");
-	}
-	if(command == "topinvstats5x5cl") {
-		map = "5x5cl";
-		goto("topinvstatscore");
-	}
-	if(command == "topinvstats7x7cl") {
-		map = "7x7cl";
-		goto("topinvstatscore");
-	}
-	if(command == "topinvstats10x10cl") {
-		map = "10x10cl";
-		goto("topinvstatscore");
-	}*/
 	size = list.getSize(args);
 	if(command == "stats") {
 		if(size == 0) {
@@ -248,9 +198,17 @@ if(event == "custom_command") {
 				tempname = list.getIndex(names, index);
 				tempmessage = list.getIndex(messages, index);
 				tempgmap = list.getIndex(gmaps, index);
-				/*if(tempgmap == "invertranks") {
-					goto("topinvertstats");
-				}*/
+				if(tempgmap == "invertranks") {
+					player.speak(player, "§9Inverting", "§r-= §eFür Top10-Stats anklicken §r=-");
+					msg(player, text.click("§rInverting 5x5", "/topinvstats 5x5"));
+					msg(player, text.click("§rInverting 7x7", "/topinvstats 7x7"));
+					msg(player, text.click("§rInverting 10x10", "/topinvstats 10x10"));
+					msg(player, text.click("§rInverting Classic 5x5", "/topinvstats 5x5cl"));
+					msg(player, text.click("§rInverting Classic 7x7", "/topinvstats 7x7cl"));
+					msg(player, text.click("§rInverting Classic 10x10", "/topinvstats 10x10cl"));
+					msg(player, "§r----------------------");
+					goto("wait");
+				}
 				goto("topcore");
 			}
 			//goto("statscore");
@@ -289,11 +247,72 @@ if(event == "custom_command") {
 					sgv(p_uuid, "fbwon", null);
 				}
 				
+				if(rankingtable == "invertranks") {
+					player.speak(player, "§9Inverting", "§r-= §eZum Stats entfernen von ", p_name, " anklicken §r=-");
+					msg(player, text.click("§rInverting 5x5", concat("/removeinvstats ", p_name, " 5x5")));
+					msg(player, text.click("§rInverting 7x7", concat("/removeinvstats ", p_name, " 7x7")));
+					msg(player, text.click("§rInverting 10x10", concat("/removeinvstats ", p_name, " 10x10")));
+					msg(player, text.click("§rInverting Classic 5x5", concat("/removeinvstats ", p_name, " 5x5cl")));
+					msg(player, text.click("§rInverting Classic 7x7", concat("/removeinvstats ", p_name, " 7x7cl")));
+					msg(player, text.click("§rInverting Classic 10x10", concat("/removeinvstats ", p_name, " 10x10cl")));
+					msg(player, "§r----------------------");
+					goto("wait");
+				}
+				
 				removePlayerStats(p_id, rankingtable);
 				player.speak(player, "§sStatistik", concat("§e", p_name, "§r aus Statistik entfernt"));
 			}
+		}
+		goto("wait");
+	}
+	/*if(command == "invstats") {
+		if(size != 1) {
+			player.speak(player, "§sStatistik", concat("§r/invstats ", text.concatList(args, 0, " / ", list.getSize(inverting_list) - 1)));
+			goto("wait");
+		}
+		map = list.getIndex(args, 0);
+		if(list.contains(inverting_list, map)) {
+			goto("invstatscore");
+		}
+		goto("wait");
+	}*/
+	if(command == "topinvstats") {
+		if(size != 1) {
+			player.speak(player, "§sStatistik", concat("§r/topinvstats ", text.concatList(args, 0, " / ", list.getSize(inverting_list) - 1)));
+			goto("wait");
+		}
+		map = list.getIndex(args, 0);
+		if(list.contains(inverting_list, map)) {
+			tempgmap = concat("invertranks", map);
+			tempname = "§9Inverting";
+			tempindex = list.getIndexOf(names, tempname);
+			tempmessage = list.getIndex(messages, tempindex);
+			goto("topcore");
+		}
+		goto("wait");
+	}
+	if(command == "removeinvstats") {
+		if(size != 2) {
+			player.speak(player, "§sStatistik", concat("§r/removeinvstats <player> ", text.concatList(inverting_list, " / ", 0, list.getSize(inverting_list) - 1)));
+			goto("wait");
+		}
+		p_name = list.getIndex(args, 0);
+		if(!checkIfEverOnline(p_name)) {
+			player.speak(player, "§sStatistik", "§rDieser Spieler war noch nie online");
+			goto("wait");
+		}
+		map = list.getIndex(args, 1);
+		if(!list.contains(inverting_list, map)) {
+			player.speak(player, "§sStatistik", concat("§r/removeinvstats <player> ", text.concatList(inverting_list, " / ", 0, list.getSize(inverting_list) - 1)));
 			goto("wait");
 		}
+		p_uuid = player.getUuid(p_name);
+		p_id = player.getId(p_uuid);
+		p_name = player.getNameFromId(p_id); //für richtig geschriebenen Namen
+		
+		rankingtable = concat("invertranks", map);
+		removePlayerStats(p_id, rankingtable);
+		player.speak(player, "§sStatistik", concat("§e", p_name, "§r aus Statistik entfernt"));
 	}
 }
 goto("wait");
@@ -679,12 +698,12 @@ if(showname) {
 } else {
 	player.speak(player, tempname, "§r-= §eFür Stats anklicken §r=-");
 }
-msg(player, text.click("§rInverting 5x5", "/invstats5x5"));
-msg(player, text.click("§rInverting 7x7", "/invstats7x7"));
-msg(player, text.click("§rInverting 10x10", "/invstats10x10"));
-msg(player, text.click("§rInverting Classic 5x5", "/invstats5x5cl"));
-msg(player, text.click("§rInverting Classic 7x7", "/invstats7x7cl"));
-msg(player, text.click("§rInverting Classic 10x10", "/invstats10x10cl"));
+msg(player, text.click("§rInverting 5x5", "/invstats 5x5"));
+msg(player, text.click("§rInverting 7x7", "/invstats 7x7"));
+msg(player, text.click("§rInverting 10x10", "/invstats 10x10"));
+msg(player, text.click("§rInverting Classic 5x5", "/invstats 5x5cl"));
+msg(player, text.click("§rInverting Classic 7x7", "/invstats 7x7cl"));
+msg(player, text.click("§rInverting Classic 10x10", "/invstats 10x10cl"));
 msg(player, "§r----------------------");
 showname = true;
 goto("wait");
@@ -704,47 +723,6 @@ msg(player, concat("§rRekord: §e", tempscore));
 msg(player, concat("§rRang: §e", table.getIndexOf(temptable, statsofuuid) + 1));
 msg(player, "§r----------------------");
 goto("wait");
-
-@topinvertstats
-player.speak(player, "§9Inverting", "§r-= §eFür Top10-Stats anklicken §r=-");
-msg(player, text.click("§rInverting 5x5", "/topinvstats5x5"));
-msg(player, text.click("§rInverting 7x7", "/topinvstats7x7"));
-msg(player, text.click("§rInverting 10x10", "/topinvstats10x10"));
-msg(player, text.click("§rInverting Classic 5x5", "/topinvstats5x5cl"));
-msg(player, text.click("§rInverting Classic 7x7", "/topinvstats7x7cl"));
-msg(player, text.click("§rInverting Classic 10x10", "/topinvstats10x10cl"));
-msg(player, "§r----------------------");
-goto("wait");
-
-@topinvstatscore
-tempgmap = concat("invertranks", map);
-gmap.toTable(table, tempgmap);
-tempname = "§9Inverting";
-tempindex = list.getIndexOf(names, tempname);
-tempmessage = list.getIndex(messages, tempindex);
-table.setSortColumn(table, 1);
-table.sort(table);
-if(table.getSize(table) == 0) {
-	player.speak(player, tempname, "§rDieses Spiel hat bisher noch niemand gespielt");
-	goto("wait");
-}
-player.speak(player, tempname, tempmessage);
-for(i = 0; i <= 9; i++) {
-	if(i == table.getSize(table)) {
-		break;
-	}
-	msg(player, concat("§6", i + 1, "  §r", player.getName(table.get(table, i, 0)), "  §e", text.number(table.get(table, i, 1))));
-}
-if(gmap.get(tempgmap, player.getUuid(player)) == null) {
-	msg(player, "");
-	msg(player, "§rDu hast dieses Spiel bisher noch nicht gespielt");
-} else {
-	msg(player, "");
-	table.setSortColumn(table, 0);
-	msg(player, concat("§rDein Rang:  §6", table.getIndexOf(table, player.getUuid(player)) + 1, "  §e", text.number(gmap.get(tempgmap, player.getUuid(player)))));
-}
-msg(player, "§r----------------------");
-goto("wait");
 */
 
 function listGetLower(list, element) {

+ 22 - 36
global/sitting.txt

@@ -1,46 +1,32 @@
 msg("dev", "§bSitting §rwurde geladen.");
-map.new("sitting");
-
-list.new("stairs");
-list.add(stairs, "minecraft:oak_stairs");
-list.add(stairs, "minecraft:stone_stairs");
-list.add(stairs, "minecraft:brick_stairs");
-list.add(stairs, "minecraft:stone_brick_stairs");
-list.add(stairs, "minecraft:nether_brick_stairs");
-list.add(stairs, "minecraft:sandstone_stairs");
-list.add(stairs, "minecraft:spruce_stairs");
-list.add(stairs, "minecraft:birch_stairs");
-list.add(stairs, "minecraft:jungle_stairs");
-list.add(stairs, "minecraft:quartz_stairs");
-list.add(stairs, "minecraft:acacia_stairs");
-list.add(stairs, "minecraft:dark_oak_stairs");
-list.add(stairs, "minecraft:red_sandstone_stairs");
-list.add(stairs, "minecraft:purpur_stairs");
+map.new(sitting);
 
+air_item_type = "minecraft:air";
+stairs_tag = block.getTag("stairs");
+half_property = block.getProperty("half");
 event.load("block_click");
-event.load("player_sneak");
+event.load("entity_mount");
 
 @wait
 wait();
-if(event == "block_click" && action == "right" && list.contains(stairs, block_type) && item.getType(entity.getEquip(player, "hand")) == "minecraft:air") {
-	goto("sitdown");
-}
-if(event == "player_sneak" && map.contains(sitting, player)) {
-	goto("absitzen");
+if(event == "block_click" && action == "right") {
+	if(block.hasTag(stairs_tag, block)) {
+		if(block.getState(block_loc, half_property) == "bottom") {
+			if(item.getType(entity.getEquip(player, "hand")) == air_item_type) {
+				if(map.contains(sitting, player)) {
+					entity.remove(map.get(sitting, player));
+				}
+				entity = entity.spawn("km:nobody", loc.mod(block_loc, 0.5, 0, 0.5), "{NoGravity:true}");
+				map.add(sitting, player, entity);
+				entity.ride(player, entity);
+			}
+		}
+	}
+	goto("wait");
 }
-goto("wait");
-
-@sitdown
-if(map.contains(sitting, player)) {
+if(event == "entity_mount" && map.contains(sitting, player)) {
 	entity.remove(map.get(sitting, player));
 	map.remove(sitting, player);
+	goto("wait");
 }
-entity = read.spawnMob(loc.mod(block_loc, 0.5, 0, 0.5), "{id:'silverfish',NoAI:1,Silent:1,Attributes:[{Base:0.0d, Name:'generic.maxHealth'}],ActiveEffects:[{Id:14,Amplifier:0,Duration:2000000000,ShowParticles:0b}]}");
-map.add(sitting, player, entity);
-entity.ride(entity, player);
-goto("wait");
-
-@absitzen
-entity.remove(map.get(sitting, player));
-map.remove(sitting, player);
-goto("wait");
+goto("wait");

+ 173 - 58
minigames/bedwars/bedwars.txt

@@ -109,6 +109,24 @@ map.add(bed_types, 13, "minecraft:cyan_bed");
 map.add(bed_types, 14, "minecraft:light_blue_bed");
 map.add(bed_types, 15, "minecraft:pink_bed");
 
+map.new(glass_types); //Liste für Rettungsplattformen
+map.add(glass_types, 0, "minecraft:blue_stained_glass");
+map.add(glass_types, 1, "minecraft:red_stained_glass");
+map.add(glass_types, 2, "minecraft:yellow_stained_glass");
+map.add(glass_types, 3, "minecraft:green_stained_glass");
+map.add(glass_types, 4, "minecraft:orange_stained_glass");
+map.add(glass_types, 5, "minecraft:purple_stained_glass");
+map.add(glass_types, 6, "minecraft:white_stained_glass");
+map.add(glass_types, 7, "minecraft:black_stained_glass");
+map.add(glass_types, 8, "minecraft:light_gray_stained_glass");
+map.add(glass_types, 9, "minecraft:gray_stained_glass");
+map.add(glass_types, 10, "minecraft:mangenta_stained_glass");
+map.add(glass_types, 11, "minecraft:brown_stained_glass");
+map.add(glass_types, 12, "minecraft:lime_stained_glass");
+map.add(glass_types, 13, "minecraft:cyan_stained_glass");
+map.add(glass_types, 14, "minecraft:light_blue_stained_glass");
+map.add(glass_types, 15, "minecraft:pink_stained_glass");
+
 map.new(clothescode); //Liste der Datenwerte für gebrannte gefärbte Tonblöcke
 map.add(clothescode, 0, 5592575);
 map.add(clothescode, 1, 16733525);
@@ -127,6 +145,9 @@ map.add(clothescode, 13, 16777215);
 map.add(clothescode, 14, 11184810);
 map.add(clothescode, 15, 5592405);
 
+map.new(warpinghome_loc);
+map.new(warpinghome_tick);
+list.new(warpinghome_list);
 map.new(lastdamagers);
 map.new(helpermap);
 map.new(bedsymbol);
@@ -152,6 +173,8 @@ map.add(teamidtolist, 13, list.new());
 map.add(teamidtolist, 14, list.new());
 map.add(teamidtolist, 15, list.new());
 
+event.load("block_break");
+event.load("block_place");
 event.load("block_click");
 event.load("player_is_attacked");
 event.load("player_join");
@@ -178,6 +201,9 @@ air_item = read.item(air_item_type);
 coin_copper = read.item("km:coin_copper", 1);
 coin_silver = read.item("km:coin_silver", 1);
 coin_gold = read.item("km:coin_gold", 1);
+glowstone_dust = read.item("minecraft:glowstone_dust");
+warp_powder = read.item("{id:\"minecraft:gunpowder\",Count:1b,tag:{display:{Lore:['{\"text\":\"Teleportiert dich zu deiner Base zurück\"}'],Name:'{\"text\":\"§rWarp Powder\"}'}}}");
+blaze_rod = read.item("minecraft:blaze_rod", 1, "§rRettungsplattform");
 //concrete_tag = block.getTag("km:concretes");
 bed_tag = block.getTag("minecraft:beds");
 bed_tag2 = item.getTag("minecraft:beds");
@@ -209,12 +235,11 @@ if(event == "player_join") {
 	gosub("lobbycore");
 }
 elseif(event == "block_click") {
-	cancel = true;
 	/*if(block.hasTag(concrete_tag, block.get(block_loc))) {
 		goto("jointeam");
 	}*/
 }
-elseif(event == "player_is_attacked") {
+elseif(event == "player_is_attacked" || event == "block_break" || event == "block_place") {
 	cancel = true;
 }
 elseif(event == "player_logout" || event == "player_giveup") {
@@ -283,14 +308,13 @@ map.new(bedkills);
 map.new(deaths);
 map.new(brokenbeds);
 
-event.load("block_break");
-event.load("block_place");			
 event.load("player_pre_respawn");
 event.load("player_post_respawn");
 event.load("player_death");
 event.load("player_pickup");
 event.load("entity_click");
 event.load("inv_click");
+event.load("item_air_click");
 event.load("player_move");
 starttime = time.getMillis();
 
@@ -365,6 +389,13 @@ if(drop_counter == 30) {
 drop_counter++;
 sgoto(20, "item_dropper");
 
+for(i = 0; i < list.getSize(all); i++) {
+	p = list.getIndex(all, i);
+	p_name = player.getName(p);
+	tempteam = map.get(players, p_name);
+	player.action(p, concat(map.get(colorcodes, tempteam), "Team ", map.get(teamcolortext2, tempteam)));
+}
+
 @checkgame
 wait();
 ignoreGoto(event);
@@ -438,20 +469,25 @@ player.removeItem(player, priceitem);
 if(item_type == "minecraft:red_bed") {
 	goto("setnewbed");
 }
-if(item_type == "minecraft:leather_helmet") {
-	clothestype = "leather_helmet";
-	goto("buyclothes");
-}
-if(item_type == "minecraft:leather_leggings") {
-	clothestype = "leather_leggings";
-	goto("buyclothes");
-}
-if(item_type == "minecraft:leather_boots") {
-	clothestype = "leather_boots";
-	goto("buyclothes");
+if(item_type == "minecraft:leather_helmet" || item_type == "minecraft:leather_leggings" || item_type == "minecraft:leather_boots") {
+	clothescolor = map.get(clothescode, map.get(players, player_name));
+	temp = player.giveItem(player, read.item(concat("{id:\"", item_type, "\",Count:1b,tag:{Enchantments:[{lvl:1s,id:\"minecraft:protection\"},{lvl:1s,id:\"minecraft:unbreaking\"}],display:{color:", clothescolor, "}}}")));
+	if(item.getType(temp) != air_item_type) {
+		item.drop(entity.getLocation(player), temp);
+	}
+	inv.update(player);
+	goto("checkgame");
 }
 if(item_type == "minecraft:smooth_sandstone") {
-	goto("buy_block");
+	team = map.get(players, player_name);
+	item_type = map.get(concrete_types, team);
+	item_amount = item.getAmount(inv.getItem(shopmenu, inv_slot));
+	temp = player.giveItem(player, read.item(item_type, item_amount));
+	if(item.getType(temp) != air_item_type) {
+		item.drop(entity.getLocation(player), temp);
+	}
+	inv.update(player);
+	goto("checkgame");
 }
 temp = player.giveItem(player, item);
 if(item.getType(temp) != air_item_type) {
@@ -532,14 +568,6 @@ if(size != 0) {
 }
 return;
 
-/*@warphome
-goto("checkgame");*/
-
-/*@knocksideleft
-player.removeItem(sec_player_name, entity.getEquip(sec_player_name))
-setVar(direction
-entity.throw(nothing(player_name), -0.85, 0, 0)*/
-
 @setnewbed
 team = map.get(players, player_name);
 tempcolor = map.get(colornames, team);
@@ -570,6 +598,115 @@ if(item.hasTag(bed_tag2, item)) {
 }
 goto("checkgame");
 
+@item_air_click
+item_type = item.getType(entity.getEquip(player, "hand"));
+if(item_type == "minecraft:gunpowder") {
+	if(!map.contains(warpinghome_tick, player)) {
+		player.removeItem(player, warp_powder);
+		player.giveItem(player, glowstone_dust);
+		map.add(warpinghome_loc, player, entity.getLocation(player));
+		map.add(warpinghome_tick, player, 0);
+		list.add(warpinghome_list, player);
+		sgoto(20, "warp_tick");
+		goto("checkgame");
+	}
+}
+if(item_type == "minecraft:glowstone_dust") {
+	map.remove(warpinghome_loc, player);
+	map.remove(warpinghome_tick, player);
+	player.removeItem(player, glowstone_dust);
+	player.giveItem(player, warp_powder);
+}
+if(item_type == "minecraft:blaze_rod") {
+	player_loc = entity.getLocation(player);
+	team = map.get(players, player_name);
+	item_type = map.get(glass_types, team);
+	temp_loc = loc.mod(player_loc, 0, -1, 0);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 1, -1, 0);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, -1, -1, 0);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 0, -1, 1);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 0, -1, -1);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, -1, -1, -1);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 1, -1, 1);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 1, -1, -1);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, -1, -1, 1);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 2, -1, 0);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, -2, -1, 0);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 0, -1, 2);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	temp_loc = loc.mod(player_loc, 0, -1, -2);
+	if(setBlockIfNotAir(temp_loc, item_type)) {
+		list.add(placedblocks, temp_loc);
+	}
+	player.removeItem(player, blaze_rod);
+}
+goto("checkgame");
+
+@warp_tick
+player = list.getIndex(warpinghome_list, 0);
+player_loc = entity.getLocation(player);
+warp_loc = map.get(warpinghome_loc, player);
+if(warp_loc == null) {
+	goto("checkgame");
+}
+if(loc.distance(player_loc, warp_loc) > 1) {
+	map.remove(warpinghome_loc, player);
+	map.remove(warpinghome_tick, player);
+	player.removeItem(player, glowstone_dust);
+	player.giveItem(player, warp_powder);
+	goto("checkgame");
+}
+tick = map.get(warpinghome_tick, player) + 1;
+sound.spawnForPlayer(player, trap_sound);
+if(tick == 5) {
+	map.remove(warpinghome_loc, player);
+	map.remove(warpinghome_tick, player);
+	player.removeItem(player, glowstone_dust);
+	player_name = player.getName(player);
+	tempteam = map.get(players, player_name);
+	location = map.get(spawn_locs, tempteam);
+	entity.teleport(player, location);
+	goto("checkgame");
+}
+map.add(warpinghome_tick, player, tick);
+sgoto(20, "warp_tick");
+goto("checkgame");
+
 @player_move
 if(id == voidid) {
 	map.add(helpermap, player_name, true);
@@ -601,11 +738,10 @@ if(id == voidid) {
 	goto("checkgame");
 }
 temploc = entity.getLocation(player);
-tempw = world.get(loc.getcoord(temploc, "w"));
 tempx = math.roundDown(loc.getX(temploc));
 tempy = math.roundDown(loc.getY(temploc));
 tempz = math.roundDown(loc.getZ(temploc));
-temploc = loc.new(tempw, tempx, tempy, tempz);
+temploc = loc.new(gamesworld, tempx, tempy, tempz);
 if(block.getType(temploc) != "minecraft:tripwire") { //Für den Fall, dass die Trap bereits abgebaut wurde
 	map.remove(traps, id);
 	event.removeMoveData(id);
@@ -630,26 +766,6 @@ map.remove(traps, id);
 block.set(temploc, air_item_type);
 goto("checkgame");
 
-@buyclothes
-clothescolor = map.get(clothescode, map.get(players, player_name));
-temp = player.giveItem(player, read.item(concat("{id:\"minecraft:", clothestype, "\",Count:1b,tag:{Enchantments:[{lvl:1s,id:\"minecraft:protection\"},{lvl:1s,id:\"minecraft:unbreaking\"}],display:{color:", clothescolor, "}}}")));
-if(item.getType(temp) != air_item_type) {
-	item.drop(entity.getLocation(player), temp);
-}
-inv.update(player);
-goto("checkgame");
-
-@buy_block
-team = map.get(players, player_name);
-item_type = map.get(concrete_types, team);
-item_amount = item.getAmount(inv.getItem(shopmenu, inv_slot));
-temp = player.giveItem(player, read.item(item_type, item_amount));
-if(item.getType(temp) != air_item_type) {
-	item.drop(entity.getLocation(player), temp);
-}
-inv.update(player);
-goto("checkgame");
-
 @block_place
 cancel = true;
 if(block.hasTag(bed_tag, block.get(block_loc))) {
@@ -712,7 +828,7 @@ goto("checkgame");
 
 @player_giveup
 @player_logout
-entity.teleport(player, gamesworldloc);
+tptogameslobby(player);
 block.setSign(gamesignloc, 2, concat(text.number(list.getSize(all)), "/", text.number(maxplayers)));
 player.speak("all", gamename, concat(map.get(colorcodes, map.get(players, player_name)), player_name, " §ehat das Spiel verlassen"));
 tempteam = map.get(players, player_name);
@@ -888,7 +1004,7 @@ for(i = 0; i < list.getSize(winningteam); i++) {
 	showstats(player, true, true);
 	player.clearInventory(player);
 	resetplayer(player);
-	entity.teleport(player, gamesworldloc);
+	tptogameslobby(player);
 }
 block.setSign(gamesignloc, 2, concat("0/", text.number(maxplayers)));
 block.setSign(gamesignloc, 3, "§2Wartet");
@@ -1016,20 +1132,19 @@ function setShopmenu9(shopmenu) {
 	inv.setItem(shopmenu, 20, read.item("minecraft:fishing_rod"));
 	inv.setItem(shopmenu, 21, read.item("minecraft:flint_and_steel"));
 	inv.setItem(shopmenu, 22, read.item("minecraft:ender_pearl"));
-	//inv.setItem(shopmenu, 23, read.item("BLAZE_ROD", "§rRettungsplattform"));
-	inv.setItem(shopmenu, 24, read.item("{id:\"minecraft:string\",Count:1b,tag:{display:{Lore:['{\"text\":\"Warnt dich vor angreifenden Gegnern\"}'],Name:'{\"text\":\"§rTrap\"}'}}}"));
-	//inv.setItem(shopmenu, 25, read.item("{id:'minecraft:iron_hoe',Count:1b,tag:{display:{Lore:['Schubst, deinen, Gegner, nach, links, {Linksklick}','bzw., nach, rechts, {Rechtsklick}.','Nur, einmalig, verwandbar.'],Name:'§rKnockSide Tool'}},Damage:0s}"));
-	inv.setItem(shopmenu, 26, read.item("{id:\"minecraft:red_bed\",Count:1b,tag:{display:{Lore:['{\"text\":\"Setzt dein Bett einmalig neu\"}'],Name:'{\"text\":\"§rNeues Bett\"}'}}}"));
-	//inv.setItem(shopmenu, 36, read.item("{id:'minecraft:gunpowder',Count:1b,tag:{display:{Lore:['Teleportiert, dich, zu, deiner, Base, zurück.'],Name:'§rWarp Powder'}},Damage:0s}"));
+	inv.setItem(shopmenu, 23, read.item("{id:\"minecraft:string\",Count:1b,tag:{display:{Lore:['{\"text\":\"Warnt dich vor angreifenden Gegnern\"}'],Name:'{\"text\":\"§rTrap\"}'}}}"));
+	inv.setItem(shopmenu, 24, read.item("{id:\"minecraft:red_bed\",Count:1b,tag:{display:{Lore:['{\"text\":\"Setzt dein Bett einmalig neu\"}'],Name:'{\"text\":\"§rNeues Bett\"}'}}}"));
+	inv.setItem(shopmenu, 25, $blaze_rod);
+	inv.setItem(shopmenu, 26, $warp_powder);
+	
 	inv.setItem(shopmenu, 27, read.item("km:coin_copper"));
 	inv.setItem(shopmenu, 28, read.item("km:coin_copper", 16));
 	inv.setItem(shopmenu, 29, read.item("km:coin_silver", 6));
 	inv.setItem(shopmenu, 30, read.item("km:coin_silver", 7));
 	inv.setItem(shopmenu, 31, read.item("km:coin_gold", 13));
-	//inv.setItem(shopmenu, 32, read.item("km:coin_gold", 3));
-	inv.setItem(shopmenu, 33, read.item("km:coin_silver", 7));
-	//inv.setItem(shopmenu, 34, read.item("km:coin_silver", 3));
-	inv.setItem(shopmenu, 35, read.item("km:coin_gold", 40));
-	//inv.setItem(shopmenu, 45, read.item("km:coin_silver", 3));
+	inv.setItem(shopmenu, 32, read.item("km:coin_silver", 7));
+	inv.setItem(shopmenu, 33, read.item("km:coin_gold", 40));
+	inv.setItem(shopmenu, 34, read.item("km:coin_gold", 3));
+	inv.setItem(shopmenu, 35, read.item("km:coin_silver", 3));
 	return;
 }

+ 0 - 62
minigames/bedwars/bedwarsfeature.txt

@@ -1,62 +0,0 @@
-#----------------------------------------
-#************* don´t delete *************
-#----------------------------------------
-
-%loadEvent player-hurt;
-%loadEvent entity-click;
-%setVar add-if-name test;
-
-@checkgame
-%wait;
-%if $event == player-hurt && $player-damage-cause == ENTITY_ATTACK && $sec-player-item-type == IRON_HOE goto knocksideleft;
-%if $event == entity-click && $entity-type == PLAYER && $player-item-type == IRON_HOE goto knocksideright;
-%if $event == player-hurt && $player-damage-cause == FALL goto cancel;
-%goto checkgame;
-
-@cancel
-%setVar cancel true;
-%goto checkgame;
-
-@knocksideleft
-%msg dev knocksideleft;
-#%removeItemPlayer $sec-player-name %getItemInMainHand $sec-player-name;;
-%setVar cancel true;
-%setVar tothrow $player-name;
-%setVar throwx %coords $player-loc x;;
-%setVar throwz %coords $player-loc z;;
-%setVar throwerx %coords $sec-player-loc x;;
-%setVar throwerz %coords $sec-player-loc z;;
-%setVar distancex %abs %sub $throwx $throwerx;;;
-%setVar distancez %abs %sub $throwz $throwerz;;;
-%msg dev xdistance: $distancex;
-%msg dev zdistance: $distancez;
-
-%setVar x %mul $distancez -1;;
-%setVar z $distancex;
-%msg dev xthrow $x;
-%msg dev zthrow $z;
-%goto throw;
-
-@knocksideright
-%msg dev knocksideright;
-#%removeItemPlayer $player-name %getItemInMainHand $player-name;;
-%setVar cancel true;
-%setVar tothrow $entity-name;
-%setVar  throwx %coords $entity-loc x;;
-%setVar throwz %coords $entity-loc z;;
-%setVar throwerx %coords $player-loc x;;
-%setVar throwerz %coords $player-loc z;;
-%setVar distancex %abs %sub $throwx $throwerx;;;
-%setVar distancez %abs %sub $throwz $throwerz;;;
-%msg dev xdistance: $distancex;
-%msg dev zdistance: $distancez;
-
-%setVar x $distancez;
-%setVar z %mul $distancex -1;;
-%msg dev xthrow $x;
-%msg dev zthrow $z;
-%goto throw;
-
-@throw
-%throwEntity %getPlayerId $tothrow; $x 0.4 $z;
-%goto checkgame;

+ 27 - 55
minigames/inverting/inverting.txt

@@ -1,3 +1,6 @@
+rankingtable = concat("invertranks", map);
+registerRanking(rankingtable);
+
 block.setSign(gamesignloc, 2, "1/1");
 block.setSign(gamesignloc, 3, "§bLäuft");
 player = script.getLeader();
@@ -9,10 +12,12 @@ x2 = loc.getX(edge2);
 y2 = loc.getY(edge2);
 z2 = loc.getZ(edge2);
 
+event.load("block_break");
 event.load("block_click");
 event.load("player_giveup");
 event.load("player_logout");
 
+gamename = "§9Inverting";
 lapis_block_type = "minecraft:lapis_block";
 redstone_block_type = "minecraft:redstone_block";
 gosub("newfield");
@@ -23,21 +28,20 @@ gamesworldloc = read.location(ggv("SERVER", "gamesspawn"));
 entity.teleport(player, tploc);
 fields = xlength * zlength;
 
-gmap = concat("invertranks", map);
-gvar1 = concat("invertaverage", map);
-gvar2 = concat("invertplayed", map);
-
 @wait
 wait();
 if(event == "player_giveup" || event == "player_logout") {
-	entity.teleport(player, gamesworldloc);
+	tptogameslobby(player);
 	block.setSign(gamesignloc, 2, "0/1");
 	block.setSign(gamesignloc, 3, "§2Wartet");
 	display.reset(player);
 	term();
 }
-if(event == "block_click") {
+if(event == "block_break") {
 	cancel = true;
+	goto("wait");
+}
+if(event == "block_click") {
 	tempx = loc.getCoord(block_loc, "x");
 	tempy = loc.getCoord(block_loc, "y");
 	tempz = loc.getCoord(block_loc, "z");
@@ -111,56 +115,24 @@ function invertblock(loc) {
 }
 
 @solved
-uuid = player.getUuid(player);
-untilclicked = gmap.get(gmap, uuid);
-if(untilclicked == null) {
-	untilclicked = 0;
-	//gmap.add(gmap, uuid, clicked);
-}
-/*if(clicked < untilclicked) {
-	gmap.add(gmap, uuid, clicked);
-	player.speak(player, "§9Inverting", "§rNeuer Rekord! -", untilclicked - clicked);
-}*/
-/*allclicks = ggv(player, "invertclicks");
-if(allclicks == null) {
-	allclicks = clicked;
-} else {
-	allclicks += clicked;
-}*/
-//sgv(player, "invertclicks", allclicks);
-/*played = ggv(player, gvar2);
-if(played == null) {
-	played = 1;
-} else {
-	played++;
-}*/
-/*sgv(player, gvar2, played);
-average = ggv(player, gvar1);
-if(average == null) {
-	average = clicked;
-} else {
-	average = ((average + clicked) / 2);
-}
-sgv(player, gvar1, average);
-*/
-player.speak(player, "§9Inverting", "§eGelöst!!!");
-player.speak(player, "§9Inverting", "§r---= Statistiken =---");
-player.speak(player, "§9Inverting", concat("§rZüge: §e", text.number(clicked)));
-//player.speak(player, "§9Inverting", concat("§rDurchschnitt: §e", text.number(math.roundComma(average, 2))));
-//player.speak(player, "§9Inverting", concat("§rAlle Züge: §e", allclicks));
-//player.speak(player, "§9Inverting", concat("§rGelöste Felder: §e", played));
-/*if(untilclicked < clicked) {
-	player.speak(player, "§9Inverting", concat("§rDein Rekord: §e", untilclicked));
-} else {
-	player.speak(player, "§9Inverting", concat("§rDein Rekord: §e", clicked));
+player_id = player.getId(player);
+last_record = getPoints(rankingtable, player_id);
+playedgames = getPlayedGames(rankingtable, player_id) + 1;
+if(last_record == 0 || clicked < last_record) {
+	if(last_record != 0) {
+		diff = last_record - clicked;
+		player.speak(player, gamename, concat("§rNeuer Rekord! -", text.number(diff)));
+	}
+	last_record = clicked;
 }
-gmap.toTable(table, gmap);
-table.setSortColumn(table, 1);
-table.sort(table);
-table.setSortColumn(table, 0);
-player.speak(player, "§9Inverting", concat("§rDein Rang: §e", table.getIndexOf(table, player.getUuid(player)) + 1));
-*/
-msg(player, "--------------------");
+setRanking(rankingtable, player_id, last_record, playedgames);
+
+player.speak(player, gamename, "§r---= §eStatistik §r=---");
+player.speak(player, gamename, concat("§eZüge: §r", text.number(clicked)));
+player.speak(player, gamename, concat("§eGelöste Felder: §r", text.number(playedgames)));
+player.speak(player, gamename, concat("§eDein Rekord: §r", text.number(last_record)));
+msg(player, "--------------------------");
+
 clicked = 0;
 display.add(player, 1, text.number(clicked));
 gosub("newfield");

+ 1 - 2
minigames/jumpnrun/icejumpnrun.txt

@@ -83,8 +83,7 @@ player = script.getLeader();
 sgv(player, "jr", true);
 player_id = player.getId(player);
 jumpstage = getPoints(rankingtable, player_id);
-if(jumpstage == null) {
-	jumpstage = 0;
+if(jumpstage == 0) {
     sgv(player, "icejumptime", 0);
 }
 entity.teleport(player, list.getIndex(spawnlocs, jumpstage));

+ 1 - 4
minigames/jumpnrun/todesjumpnrun.txt

@@ -117,11 +117,8 @@ player = script.getLeader();
 sgv(player, "tjr", true);
 player_id = player.getId(player);
 jumpstage = getPoints(rankingtable, player_id);
-if(jumpstage == null) {
-	jumpstage = 0;
-    sgv(player, "todesjumptime", 0);
-}
 if(jumpstage == 0) {
+	sgv(player, "todesjumptime", 0);
     entity.teleport(player, loc.new(gamesworld, 3939.5, 52, -5881.5, 180, 0));
 } else {
     entity.teleport(player, list.getIndex(spawnlocs, jumpstage - 1));

+ 7 - 15
minigames/spleef/spleef.txt

@@ -1,17 +1,12 @@
 rankingtable = "spleefranks";
 registerRanking(rankingtable);
 
-event.load("player_join");
-event.load("player_logout");
-event.load("player_giveup");
-event.load("player_is_attacked");
 event.load("block_click");
-event.load("block_break");
-event.load("custom_command");
 
 map.new(spleefed);
 list.new(all);
-list.new(resetblocks);
+list.new(resetblocks_loc);
+list.new(resetblocks_type);
 gamesworldloc = read.location(ggv("SERVER", "gamesspawn"));
 air_item_type = "minecraft:air";
 gamename = "§9Spleef";
@@ -69,15 +64,12 @@ if(player_damage_cause_string == "outOfWorld") {
 }
 goto("checkgame");
 
-@block_break
-cancel = true;
-goto("checkgame");
-
 @block_click
 if(action == "left") {
-	if(block_type == spleef_type) {
+	if(list.contains(spleef_list, block_type)) {
 		block.set(block_loc, air_item_type);
-		list.add(resetblocks, block_loc);
+		list.add(resetblocks_loc, block_loc);
+		list.add(resetblocks_type, block_type);
 		map.add(spleefed, player_name, map.get(spleefed, player_name) + 1);
 	}
 }
@@ -104,8 +96,8 @@ block.setSign(gamesignloc, 3, "§2Wartet");
 player.speak("all", gamename, concat("§6", player.getName(winner), " §rhat gewonnen"));
 resetplayer(winner);
 tptogameslobby(winner);
-for(i = 0; i < list.getSize(resetblocks); i++) {
-	block.set(list.getIndex(resetblocks, i), spleef_type);
+for(i = 0; i < list.getSize(resetblocks_loc); i++) {
+	block.set(list.getIndex(resetblocks_loc, i), list.getIndex(resetblocks_type, i));
 }
 showstats(winner, true);
 term();

+ 2 - 1
minigames/spleef/spleefmap1.txt

@@ -5,7 +5,8 @@ gamesworld = world.get("games");
 lobbyspawnloc = loc.new(gamesworld, 985.5, 88, 942.5);
 gamesignloc = read.location(ggv("SERVER", "spleefsign1"));
 
-spleef_type = "minecraft:snow_block";
+spleef_list = list.new();
+list.add(spleef_list, "minecraft:snow_block");
 
 list.new(startlocs);
 list.add(startlocs, loc.new(gamesworld, 1004.5, 107, -99.5));

+ 16 - 0
minigames/spleef/spleefmap2.txt

@@ -0,0 +1,16 @@
+minplayers = 2;
+maxplayers = 4;
+mapname = "Spleefmap 2";
+gamesworld = world.get("games");
+lobbyspawnloc = loc.new(gamesworld, 998.5, 88, 942.5);
+gamesignloc = read.location(ggv("SERVER", "spleefsign2"));
+
+spleef_list = list.new();
+list.add(spleef_list, "minecraft:snow_block");
+list.add(spleef_list, "minecraft:obsidian");
+
+list.new(startlocs);
+list.add(startlocs, loc.new(gamesworld, -1994.5, 35, -6.5));
+list.add(startlocs, loc.new(gamesworld, -1994.5, 35, 6.5));
+list.add(startlocs, loc.new(gamesworld, -2006.5, 35, 6.5));
+list.add(startlocs, loc.new(gamesworld, -2006.5, 35, -6.5));

+ 17 - 14
system/commands.txt

@@ -1,4 +1,3 @@
-error(true);
 // /time  set <time>
 //block-protections
 waitfor(1);
@@ -59,7 +58,6 @@ command.add("human");
 command.add("h");
 command.add("bug");
 command.add("report");
-//command.add("rocket");
 command.add("ticket");
 command.add("mail");
 command.add("ass");
@@ -85,7 +83,7 @@ command.add("enderchest");
 command.add("gm");
 command.add("gamemode");
 command.add("tp");
-//command.add("teleport");
+command.add("teleport");
 command.add("say");
 command.add("showtables");
 command.add("showfields");
@@ -140,7 +138,6 @@ list.add(command_list, "money");
 list.add(command_list, "human");
 list.add(command_list, "bug");
 list.add(command_list, "report");
-//list.add(command_list, "rocket");
 list.add(command_list, "ticket");
 list.add(command_list, "mail");
 list.add(command_list, "ass");
@@ -233,11 +230,11 @@ farmland_item_type = "minecraft:farmland";
 gamesspawn = read.location(ggv("SERVER", "gamesspawn"));
 serverspawn = read.location(ggv("SERVER", "serverspawn"));
 
-//gpvpworld = world.get("gpvpnew");
+gpvpworld = world.get("gpvp");
 gamesworld = world.get("games");
 
 set.new(nohomeworld); //Blacklist für Homes in bestimmten Welten
-//set.add(nohomeworld, gpvpworld);
+set.add(nohomeworld, gpvpworld);
 set.add(nohomeworld, gamesworld);
 
 list.new(warninglist);
@@ -360,13 +357,13 @@ if(event == "inv_click") {
 		p = read.player(p_name);
 		player.removeItem(p, item);
 		//Inventar neu laden
-		inventar = inv.new("222222222222222222222222222222222222", concat("Inventar von ", p_name));
+		inventar = inv.new("222222222222222222222222222222222222");
 		map.add(invseeids, player.getId(player), inv.getId(inventar));
 		for(slot = 0; slot <= 35; slot++) {
 			item = player.getInvSlot(p, slot);
 			inv.setItem(inventar, slot, item);
 		}
-		inv.open(inventar, player);
+		inv.open(inventar, player, concat("Inventar von ", p_name));
 	} catch {
 		player.speak(sender_name, "§6Commands", "Der Spieler ist nicht mehr online");
 	}
@@ -394,6 +391,7 @@ if(text.length(rank) >= 20) {
 	goto("wait");
 }
 setRank(player_name, rank);
+rank = text.replace(rank, "&", "§");
 player.speak(player, "§6Commands", concat("Rang von ", player_name, " geändert auf ", "[", rank, "§r]"));
 goto("wait");
 
@@ -789,6 +787,10 @@ if(size == 1) {
 goto("wait");
 
 @help
+if(size > 1) {
+	player.speak(player, "§6Commands", "§r/help [seite]");
+	goto("wait");
+}
 list.new(temp_list);
 for(i = 0; i < list.getSize(command_list); i++) {
 	command = list.getIndex(command_list, i);
@@ -805,6 +807,10 @@ if(list.getSize(args) == 0) {
 	print_side = side - 1;
 } else {
 	side = list.getIndex(args, 0);
+	if(!isDouble(side)) {
+		player.speak(player, "§6Commands", "§r/help [seite]");
+		goto("wait");
+	}
 	print_side = side - 1;
 	if(print_side < 0 || print_side > max_side) {
 		player.speak(player, "§6Commands", concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
@@ -1709,10 +1715,6 @@ entity.setEquip(player, "chest", read.item("minecraft:elytra"));
 player.speak(player, "§6Commands", "§rElytra? Done");
 goto("wait");
 
-@rocket
-player.giveItem(player, read.item("{id:'minecraft:fireworks',Count:3b,tag:{Fireworks:{Flight:3b}},Damage:0s}"));
-goto("wait");
-
 @plot
 if(size == 0) {
 	@plothelp
@@ -2733,6 +2735,7 @@ if(size == 1) {
 entity.setHealth(affectedplayer, 20);
 player.setHunger(affectedplayer, 20);
 player.setSaturation(affectedplayer, 5);
+entity.clearEffects(affectedplayer);
 player.speak(affectedplayer, "§6Commands", "Du wurdest geheilt.");
 goto("wait");
 
@@ -2752,13 +2755,13 @@ if(p == null) {
 	player.speak(player, "§6Commands", "Dieser Spieler ist nicht online.");
 	goto("wait");
 }
-inventar = inv.new("222222222222222222222222222222222222", concat("Inventar von ", p_name));
+inventar = inv.new("222222222222222222222222222222222222");
 map.add(invseeids, player.getId(player), inv.getId(inventar));
 for(slot = 0; slot <= 35; slot++) {
 	item = player.getInvSlot(p, slot);
 	inv.setItem(inventar, slot, item);
 }
-inv.open(inventar, player);
+inv.open(inventar, player, concat("Inventar von ", p_name));
 goto("wait");
 
 @boost

+ 7 - 2
system/perms.txt

@@ -29,6 +29,7 @@ map.add(permgroupsmap, "supporter", 9);
 
 //Default-Rechte
 perm.registerGroup(0, "skyblock");
+perm.registerGroup(0, "ping");
 perm.registerGroup(0, "sb");
 perm.registerGroup(0, "door");
 perm.registerGroup(0, "bug");
@@ -79,6 +80,8 @@ perm.registerGroup(0, "memory");
 perm.registerGroup(0, "party");
 perm.registerGroup(0, "games");
 perm.registerGroup(0, "stats");
+perm.registerGroup(0, "invstats");
+perm.registerGroup(0, "topinvstats");
 
 //Mods-Rechte
 perm.registerGroup(2, "isMod");
@@ -167,7 +170,7 @@ perm.registerGroup(2, "pvp.other");
 perm.registerGroup(2, "lightupdate");
 perm.registerGroup(2, "invsee");
 perm.registerGroup(2, "op");
-perm.registerGroup(2, "exp");
+perm.registerGroup(2, "xp");
 perm.registerGroup(2, "skick");
 perm.registerGroup(2, "kick");
 perm.registerGroup(2, "warn");
@@ -228,17 +231,18 @@ perm.registerGroup(3, "block.bypass");
 
 //VIP-Rechte
 perm.registerGroup(4, "isVIP");
+perm.registerGroup(4, "back");
 perm.registerGroup(4, "fly");
 perm.registerGroup(4, "hat");
 perm.registerGroup(4, "lastseen");
 perm.registerGroup(4, "color");
-perm.registerGroup(4, "plot");
 perm.registerGroup(4, "locate");
 perm.registerGroup(4, "allsounds");
 
 //DEV-Rechte
 perm.registerGroup(5, "isDev");
 perm.registerGroup(5, "isTeam");
+perm.registerGroup(5, "xp");
 perm.registerGroup(5, "tipp");
 perm.registerGroup(5, "script");
 perm.registerGroup(5, "script.error");
@@ -266,6 +270,7 @@ perm.registerGroup(7, "isSnuviMaster");
 perm.registerGroup(7, "droptables");
 perm.registerGroup(7, "game");
 perm.registerGroup(7, "sudoku");
+perm.registerGroup(7, "removeinvstats");
 
 //PseudoMod
 perm.registerGroup(8, "isPseudoMod"); //Mod ohne reale Permissions

+ 0 - 2
test2.txt

@@ -1,2 +0,0 @@
-player = read.player("SirTerence7");
-msg("dev", player);

+ 10 - 1
utils/u_games.txt

@@ -2,6 +2,13 @@
 
 //Setzt die Zeiten für den Start-Countdown
 @setstart
+event.load("player_join");
+event.load("block_break");
+event.load("block_place");
+event.load("player_is_attacked");
+event.load("player_logout");
+event.load("player_giveup");
+event.load("custom_command");
 command.add("startgame");
 list.new(starttimes);
 list.add(starttimes, 20);
@@ -36,7 +43,7 @@ return;
 wait();
 if(event == "player_join") {
 	gosub("lobbycore");
-} elseif(event == "player_is_attacked" || event == "block_click") {
+} elseif(event == "player_is_attacked" || event == "block_break" || event == "block_place") {
 	cancel = true;
 } elseif(event == "player_logout" || event == "player_giveup") {
 	gosub("leavelobbycore");
@@ -115,6 +122,8 @@ return;
 player.speak("all", gamename, concat("§7", player.getName(join_p), "§r ist dem Spiel beigetreten"));
 entity.teleport(join_p, lobbyspawnloc);
 player.clearInventory(join_p);
+inv.update(join_p);
+entity.cleareffects(join_p);
 entity.setHealth(join_p, 20);
 player.setHunger(join_p, 20);
 player.setSaturation(join_p, 5);