Browse Source

docu update step 2, updating to 1.14 step 1

Marvin Löschenkohl 4 years ago
parent
commit
c406eb78ae

+ 1 - 2
.gitignore

@@ -1,5 +1,4 @@
 meta/
 sounds/soundsjar112.txt
 x509.pem
-configs/
-test.txt
+configs/

+ 3 - 3
Archiv/1vs1/1vs1.txt

@@ -6,7 +6,7 @@ msg("all", " ");
 msg("all", " ");
 msg("all", " ");
 
-toggleBenchmark();
+//toggleBenchmark();
 time = time.getMillis();
 
 for(i = 0; i < 20000; i++) {
@@ -14,5 +14,5 @@ for(i = 0; i < 20000; i++) {
 }
 
 time2 = time.getMillis();
-benchmark(script.getLeader());
-msg("all", "§6Gesamt: ", $time2 - time);
+//benchmark(script.getLeader());
+msg("all", "§6Gesamt: ", time2 - time);

+ 3 - 3
benchmark2.txt

@@ -1,5 +1,5 @@
 time = time.getMillis();
-togglebenchmark();
+//togglebenchmark();
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
@@ -20000,5 +20000,5 @@ nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
 nothing(nothing(), nothing(nothing(), nothing()), nothing());
 time2 = time.getMillis();
-benchmark(script.getLeader());
-msg("all", "§6Gesamt: ", $time2 - $time);
+//benchmark(script.getLeader());
+msg("all", "§6Gesamt: ", time2 - time);

+ 1 - 1
colony/colony.txt

@@ -234,7 +234,7 @@
     <table>
         <tr>
             <th class="command">waitfor</th>
-            <th class="desc">waits a specific amount of scheduler ticks, no events are received while waiting</th>
+            <th class="desc">waits a specific amount of scheduler ticks, no events are received while waiting, sgotos until now won´t be received anymore</th>
         </tr>
         <tr>
             <td class="bold">Format</td>

+ 287 - 248
docu_minecraft.php

@@ -456,6 +456,56 @@
             <td>player<br>player_name<br>entity<br>cancel</td>
         </tr>
     </table>
+	<table>
+        <tr>
+            <th class="command">tab_list</th>
+            <th class="desc">a player opens the tab_list</th>
+        </tr>
+        <tr>
+            <td class="bold">Variablen</td>
+            <td>player<br>player_name<br>tab_list</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">explosion</th>
+            <th class="desc">explosions are cancelled on default</th>
+        </tr>
+        <tr>
+            <td class="bold">Variablen</td>
+            <td>loc<br>cancel</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">missing_command</th>
+            <th class="desc">a player uses an non-existing command</th>
+        </tr>
+        <tr>
+            <td class="bold">Variablen</td>
+            <td>player<br>player_name<br>command_name<br>sender_name</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">missing_perm</th>
+            <th class="desc">a player has no permissions for a used command</th>
+        </tr>
+        <tr>
+            <td class="bold">Variablen</td>
+            <td>player<br>player_name<br>command_name<br>sender_name</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player_data_tick</th>
+            <th class="desc">thrown if timer from data.setTimer reached 0</th>
+        </tr>
+        <tr>
+            <td class="bold">Variablen</td>
+            <td>player<br>player_name<br>var</td>
+        </tr>
+    </table>
 </section>
 
 <section id="Event">
@@ -715,6 +765,16 @@
             <td>item.addEnchant(ItemStack, enchantment, level)</td>
         </tr>
     </table>
+    <table>
+        <tr>
+            <th class="command">item.addPotion</th>
+            <th class="desc"></th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>item.addPotion(ItemStack, potion_name, duration, power)</td>
+        </tr>
+    </table>
     <table>
         <tr>
             <th class="command">item.getEnchantLevel</th>
@@ -1029,6 +1089,16 @@
             <td>block.clone(from-location, to-location)</td>
         </tr>
     </table>
+    <table>
+        <tr>
+            <th class="command">block.setSpawnerType</th>
+            <th class="desc">sets the spawnertype</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>block.setSpawnerType(location, entity_class)</td>
+        </tr>
+    </table>
     <table>
         <tr>
             <th class="command">block.setSign</th>
@@ -1233,7 +1303,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>ban.add(uuid / string-uuid / player, reason, banner, [end_date])</td>
+            <td>ban.add(uuid / string_uuid / player, reason, banner, [end_date])</td>
         </tr>
         <tr>
             <td class="bold">Arguments</td>
@@ -1251,7 +1321,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>ban.remove(uuid / string-uuid / player)</td>
+            <td>ban.remove(uuid / string_uuid / player)</td>
         </tr>
     </table>
 	<table>
@@ -1261,7 +1331,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>ban.add(player, reason)</td>
+            <td>ban.kick(player, reason)</td>
         </tr>
     </table>
 </section>
@@ -1274,7 +1344,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>getGlobalVar(uuid / string-uuid / player / "SERVER", "variable", [default])</td>
+            <td>getGlobalVar(uuid / string_uuid / player / "SERVER", "variable", [default])</td>
         </tr>
         <tr>
             <td class="bold">Info</td>
@@ -1288,7 +1358,7 @@
 		</tr>
 		<tr>
 			<td class="bold">Format</td>
-			<td>setGlobalVar(uuid / string-uuid / player / "SERVER", "variable", object)</td>
+			<td>setGlobalVar(uuid / string_uuid / player / "SERVER", "variable", object)</td>
 		</tr>
 		<tr>
 			<td class="bold">Arguments</td>
@@ -1302,7 +1372,7 @@
 		</tr>
 		<tr>
 			<td class="bold">Format</td>
-			<td>delGlobalVar(uuid / string-uuid / player / "SERVER", "variable")</td>
+			<td>delGlobalVar(uuid / string_uuid / player / "SERVER", "variable")</td>
 		</tr>
 	</table>
 </section>
@@ -1406,6 +1476,16 @@
             <td>locationstring (String "weltname:x:y:z")</td>
         </tr>
     </table>
+    <table>
+        <tr>
+            <th class="command">text.entity</th>
+            <th class="desc">returns a string from a entity</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>text.entity(entity)</td>
+        </tr>
+    </table>
     <table>
         <tr>
             <th class="command">removeFormat</th>
@@ -1478,6 +1558,26 @@
             </td>
         </tr>
     </table>
+	<table>
+        <tr>
+            <th class="command">text.link</th>
+            <th class="desc">returns a clickable message for links</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>text.link(message, link)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">text.copyText</th>
+            <th class="desc">returns a clickable message to copy text from a website</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>text.copyText(message, string)</td>
+        </tr>
+    </table>
 </section>
 
 <section id="Plot">
@@ -2207,7 +2307,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>perm.registerPlayer(uuid / string-uuid / player, id)</td>
+            <td>perm.registerPlayer(uuid / string_uuid / player, id)</td>
         </tr>
     </table>
     <table>
@@ -2217,7 +2317,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>perm.unregisterPlayer(uuid / string-uuid / player, id)</td>
+            <td>perm.unregisterPlayer(uuid / string_uuid / player, id)</td>
         </tr>
     </table>
     <table>
@@ -2295,6 +2395,16 @@
             <td>players.getAmount()</td>
         </tr>
     </table>
+    <table>
+        <tr>
+            <th class="command">player.getHead</th>
+            <th class="desc">returns a player's head as an itemStack</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.getHead(uuid)</td>
+        </tr>
+    </table>
     <table>
         <tr>
             <th class="command">player.getNearest</th>
@@ -2388,7 +2498,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>player.getName(uuid / string-uuid / player)</td>
+            <td>player.getName(uuid / string_uuid / player)</td>
         </tr>
     </table>
     <table>
@@ -2401,6 +2511,46 @@
             <td>player.getUuid(player / player_name)</td>
         </tr>
     </table>
+    <table>
+        <tr>
+            <th class="command">player.getUuidFromId</th>
+            <th class="desc">returns the uuid of a player from his id</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.getUuidFromId(player_id)</td>
+        </tr>
+    </table>
+    <table>
+        <tr>
+            <th class="command">player.getNameFromId</th>
+            <th class="desc">returns the name of a player from his id</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.getNameFromId(player_id)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player.getId</th>
+            <th class="desc">returns the id of a player</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.getId(player / uuid / string_uuid)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player.get</th>
+            <th class="desc">returns the player</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.get(uuid / string_uuid)</td>
+        </tr>
+    </table>
     <table>
         <tr>
             <th class="command">player.respawn</th>
@@ -2411,6 +2561,20 @@
             <td>player.respawn(player)</td>
         </tr>
     </table>
+    <table>
+        <tr>
+            <th class="command">player.setSpeed</th>
+            <th class="desc">set the player's speed</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.setSpeed(player, speed)</td>
+        </tr>
+        <tr>
+            <td class="bold">Info</td>
+            <td>speed 0.05 is normal</td>
+        </tr>
+    </table>
     <table>
         <tr>
             <th class="command">player.setCompass</th>
@@ -2535,6 +2699,16 @@
             <td>player.hasFly(player)</td>
         </tr>
     </table>
+    <table>
+        <tr>
+            <th class="command">player.setFly</th>
+            <th class="desc">set true for a flying player</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.setFly(player, boolean)</td>
+        </tr>
+    </table>
     <table>
         <tr>
             <th class="command">player.getLastDamager</th>
@@ -2744,15 +2918,61 @@
     <table>
         <tr>
             <th class="command">player.clearInventory</th>
-            <th class="desc">Leert das Inventar eines Spielers</th>
+            <th class="desc">clears the inventory of a player</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>player.clearInventory(Player)</td>
+            <td>player.clearInventory(player)</td>
         </tr>
+    </table>
+	<table>
         <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player</td>
+            <th class="command">player.openEnderchest</th>
+            <th class="desc">opens the enderchest from a player and shows it to a player</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.openEnderchest(from_player, to_player)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player.getInvSlot</th>
+            <th class="desc">returns an (non-copy) itemstack from a player's inventory</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.getInvSlot(player, slot)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player.setInvSlot</th>
+            <th class="desc">set an itemstack to a player's inventory</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.setInvSlot(player, slot, itemstack)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player.getEnderSlot</th>
+            <th class="desc">returns an (non-copy) itemstack from a player's enderchest</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.getEnderSlot(player, slot)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player.setEnderSlot</th>
+            <th class="desc">set an itemstack to a player's enderchest</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.setEnderSlot(player, slot, itemstack)</td>
         </tr>
     </table>
 </section>
@@ -3047,217 +3267,90 @@
     <table>
         <tr>
             <th class="command">entity.setName</th>
-            <th class="desc">Setzt den Namen einer Entity</th>
+            <th class="desc">sets the name of an entity, true for an always visible name</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.setName(Entity, name, Boolean)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity / String name / true/false (Default false. true: Der Name ist permanent und durch Wände sichtbar)</td>
+            <td>entity.setName(entity, name, boolean)</td>
         </tr>
     </table>
     <table>
         <tr>
             <th class="command">entity.getName</th>
-            <th class="desc">Gibt den Namen einer Entity zurück</th>
+            <th class="desc">returns the name of an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.getName(Entity)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity</td>
-        </tr>
-        <tr>
-            <td class="bold">Returns</td>
-            <td>String name</td>
+            <td>entity.getName(entity)</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.getLocation (1)</th>
-            <th class="desc">Gibt die Location einer Entity zurück</th>
+            <th class="command">entity.getLocation</th>
+            <th class="desc">returns the location of an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.getLocation(Entity)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity</td>
-        </tr>
-        <tr>
-            <td class="bold">Returns</td>
-            <td>Objekt Location</td>
+            <td>entity.getLocation(entity / player)</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.getLocation (2)</th>
-            <th class="desc">Gibt die Location eines Spielers zurück</th>
+            <th class="command">entity.setHealth</th>
+            <th class="desc">sets the health points for an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.getLocation(Player)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player</td>
-        </tr>
-        <tr>
-            <td class="bold">Returns</td>
-            <td>Objekt Location</td>
+            <td>entity.setHealth(entity / player, amount)</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.setHealth (1)</th>
-            <th class="desc">Setzt die HP einer Entity</th>
+            <th class="command">entity.getHealth</th>
+            <th class="desc">returns the health points from an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.setHealth(Entity, Zahl)</td>
+            <td>entity.getHealth(entity / player)</td>
         </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity / Zahl</td>
-        </tr>
-    </table>
     <table>
         <tr>
-            <th class="command">entity.setHealth (2)</th>
-            <th class="desc">Setzt die HP eines Spielers. (Vanilla Standard: 0-20)</th>
+            <th class="command">entity.teleport</th>
+            <th class="desc">teleports an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.setHealth(Player, Zahl)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player / Zahl</td>
+            <td>entity.teleport(entity / player, location)</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.getHealth (1)</th>
-            <th class="desc">Gibt die HP einer Entity zurück</th>
+            <th class="command">entity.setInvulnerable</th>
+            <th class="desc">sets an entity (in)vulverable</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.getHealth(Entity)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity</td>
-        </tr>
-        <tr>
-            <td class="bold">Returns</td>
-            <td>Zahl</td>
-        </tr>
-    </table>
-    <table>
-        <tr>
-            <th class="command">entity.getHealth (2)</th>
-            <th class="desc">Gibt die HP eines Spielers zurück</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>entity.getHealth(Player)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player</td>
-        </tr>
-        <tr>
-            <td class="bold">Returns</td>
-            <td>Zahl</td>
+            <td>entity.setInvulnerable(entity / player, boolean)</td>
         </tr>
     </table>
-    <table>
-        <tr>
-            <th class="command">entity.teleport (1)</th>
-            <th class="desc">Teleportiert ein Entity</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>entity.teleport(Entity, Location)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity / Objekt Location</td>
-        </tr>
-    </table>
-    <table>
-        <tr>
-            <th class="command">entity.teleport (2)</th>
-            <th class="desc">Teleportiert einen Spieler</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>entity.teleport(Player, Location)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player / Objekt Location</td>
-        </tr>
-    </table>
-    <table>
-        <tr>
-            <th class="command">entity.setInvulnerable (1)</th>
-            <th class="desc">Macht ein Entity (un)verwundbar</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>entity.setInvulnerable(Entity, Boolean)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity / true/false</td>
-        </tr>
-    </table>
-    <table>
-        <tr>
-            <th class="command">entity.setInvulnerable (2)</th>
-            <th class="desc">Macht einen Spieler (un)verwundbar</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>entity.setInvulnerable(Player, Boolean)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player / true/false</td>
-        </tr>
-    </table>
-    <table>
+	<table>
         <tr>
-            <th class="command">entity.throw (1)</th>
-            <th class="desc">Wirft ein Entity in die angegebene Richtung relativ zur Entity</th>
+            <th class="command">entity.setSpeed</th>
+            <th class="desc">set the entity's speed</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.throw(Entity, x, y, z)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity / Zahl x/y/z</td>
+            <td>entity.setSpeed(entity, speed)</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.throw (2)</th>
-            <th class="desc">Wirft einen Spieler in die angegebene Richtung relativ zum Spieler</th>
+            <th class="command">entity.throw</th>
+            <th class="desc">throws an entity in relative direction to the entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.throw(Player, x, y, z)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player / Zahl x/y/z</td>
+            <td>entity.throw(entity / player, x, y, z)</td>
         </tr>
     </table>
     <table>
@@ -3267,95 +3360,69 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.setInvisible(Entity or Player, Boolean)</td>
-        </tr>
-    </table>
-    <table>
-        <tr>
-            <th class="command">entity.setEquip (1)</th>
-            <th class="desc">Rüstet ein Entity aus</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>entity.setEquip(Entity, bodypart, ItemStack)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity / String bodypart ("head" / "chest" / "legs" / "feet" / "hand" / "offhand") / Objekt ItemStack</td>
+            <td>entity.setInvisible(entity / player, boolean)</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.setEquip (2)</th>
-            <th class="desc">Rüstet einen Spieler aus</th>
+            <th class="command">entity.setEquip</th>
+            <th class="desc">set the equipment of an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.setEquip(Player, bodypart, ItemStack)</td>
+            <td>entity.setEquip(entity / player, bodypart, itemstack)</td>
         </tr>
         <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player / String bodypart ("head" / "chest" / "legs" / "feet" / "hand" / "offhand") / Objekt ItemStack</td>
+            <td class="bold">Info</td>
+            <td>bodypart: "head" / "chest" / "legs" / "feet" / "hand" / "offhand"</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.getEquip (1)</th>
-            <th class="desc">Gibt die Ausrüstung eines Entities zurück</th>
+            <th class="command">entity.getEquip</th>
+            <th class="desc">returns the equipment of an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.getEquip(Entity, bodypart)</td>
+            <td>entity.getEquip(entity / player, bodypart)</td>
         </tr>
         <tr>
             <td class="bold">Arguments</td>
-            <td>Objekt Entity / String bodypart ("head" / "chest" / "legs" / "feet" / "hand" / "offhand")</td>
+            <td>bodypart: "head" / "chest" / "legs" / "feet" / "hand" / "offhand"</td>
         </tr>
     </table>
     <table>
         <tr>
-            <th class="command">entity.getEquip (2)</th>
-            <th class="desc">Gibt die Ausrüstung eines Spielers zurück</th>
+            <th class="command">entity.clearEffects</th>
+            <th class="desc">remove all effects from an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.getEquip(Player, bodypart)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Player / String bodypart ("head" / "chest" / "legs" / "feet" / "hand" / "offhand")</td>
+            <td>entity.clearEffects(entity)</td>
         </tr>
     </table>
     <table>
         <tr>
             <th class="command">entity.remove</th>
-            <th class="desc">Entfernt ein Entity</th>
+            <th class="desc">removes an entity</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.remove(Entity)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity</td>
+            <td>entity.remove(entity)</td>
         </tr>
     </table>
     <table>
         <tr>
             <th class="command">entity.removeAll</th>
-            <th class="desc">Entfernt alle im angegebenen Bereich gesuchten Entities</th>
+            <th class="desc">remove specific entities from an area</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.removeAll(entity_class, Location, radius)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>String entity_class / Objekt Location / Zahl radius</td>
+            <td>entity.removeAll(entity_class, location, radius)</td>
         </tr>
         <tr>
             <td class="bold">Info</td>
-            <td>Manche Entity-Klassen werden gefiltert und die Durchführung somit blockiert</td>
+            <td>not all entity_classes are allowed (filtered and blocked)</td>
         </tr>
         <tr>
             <td class="bold">Examples</td>
@@ -3365,79 +3432,51 @@
     <table>
         <tr>
             <th class="command">entity.setSilent</th>
-            <th class="desc">Bewirkt, dass ein Entity keine Geräusche mehr von sich gibt</th>
+            <th class="desc">true sets an entity silent</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.setSilent(Entity, Boolean)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity / true/false</td>
+            <td>entity.setSilent(entity, boolean)</td>
         </tr>
     </table>
     <table>
         <tr>
             <th class="command">entity.ride</th>
-            <th class="desc">Stapelt zwei Entities übereinander</th>
+            <th class="desc">let an entity ride another entity (for any living entities)</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.ride(Entity1, Entity2)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity1 ("Pferd") / Objekt Entity2 ("Reiter")<br>Die beiden Entity-Objekte können auch Player-Objekte sein</td>
+            <td>entity.ride(horse_entity, entity)</td>
         </tr>
     </table>
     <table>
         <tr>
             <th class="command">entity.isWet</th>
-            <th class="desc">Gibt zurück, ob ein Entity nass ist</th>
+            <th class="desc">returns true if an entity is wet</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.isWet(Entity)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity</td>
-        </tr>
-        <tr>
-            <td class="bold">Returns</td>
-            <td>true/false</td>
+            <td>entity.isWet(entity)</td>
         </tr>
     </table>
     <table>
         <tr>
             <th class="command">entity.explode</th>
-            <th class="desc">Lässt einen Creeper explodieren</th>
+            <th class="desc">let a creeper explode</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.explode(Entity)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Entity (Creeper)</td>
+            <td>entity.explode(entity)</td>
         </tr>
     </table>
     <table>
         <tr>
             <th class="command">entity.get</th>
-            <th class="desc">Gibt in einem Bereich die zur Location nächste gesuchte Entity zurück</th>
+            <th class="desc">returns the next entity to a location</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>entity.get(Location, radius, entity_class)</td>
-        </tr>
-        <tr>
-            <td class="bold">Arguments</td>
-            <td>Objekt Location / Zahl radius / String entity_class</td>
-        </tr>
-        <tr>
-            <td class="bold">Returns</td>
-            <td>Objekt Entity</td>
+            <td>entity.get(location, radius, entity_class)</td>
         </tr>
         <tr>
             <td class="bold">Examples</td>

+ 74 - 0
endscript.txt

@@ -3,6 +3,7 @@ event.load("block_break");
 event.load("custom_command");
 
 mark_item_type = "minecraft:wooden_shovel";
+air_item_type = "minecraft:air";
 
 msg("dev", "§bCopyisland §rwurde geladen");
 @wait
@@ -66,6 +67,79 @@ if(command == "copyisland" || command == "ci") {
 		setPos2(player_id, location);
 		goto("wait");
 	}
+	if(arg0 == "air") {
+		if(world1 == null || world2 == null) {
+			player.speak(player, "§dCopyIsland", "Auswahl inkorrekt");
+			goto("wait");
+		}
+		if(x1 > x2) {
+			helper = x2;
+			x2 = x1;
+			x1 = helper;
+		}
+		if(y1 > y2) {
+			helper = y2;
+			y2 = y1;
+			y1 = helper;
+		}
+		if(z1 > z2) {
+			helper = z2;
+			z2 = z1;
+			z1 = helper;
+		}
+		loc = loc.new(world1, x1, y1, z1); //Start-Location
+		x_length = x2 - x1 + 1; //Kantenlänge x-Achse
+		y_length = y2 - y1 + 1; //Kantenlänge y-Achse
+		z_length = z2 - z1 + 1; //Kantenlänge z-Achse
+		
+		//Zeitberechnung
+		volume = x_length * y_length * z_length; //Volumen des ausgewählten Bereichs (oder Anzahl der Blöcke)
+		calc_time = math.round((volume / 30000) * 1.633);
+		player.speak(player, "§dCopyIsland", "§r", text.number(volume), " §eBlöcke werden gesetzt");
+		player.speak(player, "§dCopyIsland", "§3Geschätzte Dauer: §r", text.number(calc_time), "§e Sekunden");
+		start_time = time.getMillis();
+
+		x1 = math.roundDown(x1 / 16) * 16;
+		z1 = math.roundDown(z1 / 16) * 16;
+		x2 = math.roundDown(x2 / 16) * 16;
+		z2 = math.roundDown(z2 / 16) * 16;
+
+		counter = 0;
+		for(cx = x1; cx <= x2; cx += 16)
+		{
+			for(cz = z1; cz <= z2; cz += 16)
+			{
+				for(y = y2; y >= y1; y--)
+				{
+					loc.setY(loc, y);
+					for(x = 0; x < 16; x++)
+					{
+						loc.setX(loc, x + cx);
+						for(z = 0; z < 16; z++)
+						{
+							loc.setZ(loc, z + cz);
+							block.set(loc, "minecraft:air");
+							counter++;
+						}
+					}
+				}
+			}
+		}
+
+		player.speak(player, "§dCopyIsland", "§3Done: §r", text.number(counter), "§e blocks affected");
+		end_time = time.getMillis();
+		player.speak(player, "§dCopyIsland", "§3Benötigte Zeit: §r", text.number(math.round(((end_time - start_time) / 1000))), "§e Sekunden");
+		cloningplayer = null;
+		x1 = null;
+		y1 = null;
+		z1 = null;
+		x2 = null;
+		y2 = null;
+		z2 = null;
+		world1 = null;
+		world2 = null;
+		goto("wait");
+	}
 	if(arg0 == "copy") {
 		if(world1 == null || world2 == null) {
 			player.speak(player, "§dCopyIsland", "Auswahl inkorrekt");

+ 3 - 1
global/doors.txt

@@ -2,12 +2,14 @@ msg("dev", "§bdoors §rwurde geladen");
 event.load("block_click");
 list.new(doors);
 cancel = "wusi";
+prop = block.getproperty("open");
 
 @wait
 wait();
 if(event == "block_click") {
 	if(block.isDoor(block_loc)) {
-		if(block_data > 7) {
+		state = block.getState(block_loc, prop);
+		if(state) {
 			list.add(doors, loc.mod(block_loc, 0, -1, 0));
 		} else {
 			list.add(doors, block_loc);

+ 61 - 56
global/friends.txt

@@ -29,40 +29,41 @@ moveidfromworldspawn = event.addMoveData(loc.new(gamesworld, -406, 86, 98), loc.
 moveidsurvival = event.addMoveData(loc.new(gamesworld, -399, 89, 112), loc.new(gamesworld, -400, 91, 114), 5, -1);
 whitelistsurvloc = loc.new(world.get("survival"), 204, 69, 256);
 
-bwmapsign1 = loc.new(gamesworld, -428, 161, -45);
-bwmapsign2 = loc.new(gamesworld, -428, 161, -46);
-bwmapsign3 = loc.new(gamesworld, -428, 161, -47);
-bwmapsign4 = loc.new(gamesworld, -428, 161, -48);
-bwmapsign5 = loc.new(gamesworld, -428, 160, -45);
-letterssign1 = loc.new(gamesworld, -422, 156, -41);
-letterssign2 = loc.new(gamesworld, -423, 156, -41);
-letterssign3 = loc.new(gamesworld, -424, 156, -41);
+bwmapsign1 = loc.new(gamesworld, -420, 152, -79);
+bwmapsign2 = loc.new(gamesworld, -419, 152, -79);
+bwmapsign3 = loc.new(gamesworld, -418, 152, -79);
+bwmapsign4 = loc.new(gamesworld, -417, 152, -79);
+bwmapsign5 = loc.new(gamesworld, -416, 152, -79);
+letterssign1 = loc.new(gamesworld, -397, 157, -63);
+letterssign2 = loc.new(gamesworld, -397, 157, -62);
+letterssign3 = loc.new(gamesworld, -397, 157, -61);
 maednsign1 = loc.new(gamesworld, 2, 75, 75);
 sfmaploc1 = loc.new(gamesworld, 8, 75, 75);
-rmmaploc1 = loc.new(gamesworld, -422, 158, -41);
-rmmaploc2 = loc.new(gamesworld, -423, 158, -41);
-rmmaploc3 = loc.new(gamesworld, -424, 158, -41);
-jrmap = loc.new(gamesworld, -424, 157, -52);
+rmmaploc1 = loc.new(gamesworld, -398, 158, -56);
+rmmaploc2 = loc.new(gamesworld, -398, 158, -55);
+rmmaploc3 = loc.new(gamesworld, -398, 158, -54);
+jrmap = loc.new(gamesworld, -405, 157, -74);
 tjrsign = loc.new(gamesworld, -422, 156, -52);
 fastbridgesign1 = loc.new(gamesworld, -423, 156, -52);
 rebuildsign = loc.new(gamesworld, -424, 156, -52);
-buttonssign1 = loc.new(gamesworld, -422, 157, -52);
+buttonssign1 = loc.new(gamesworld, -403, 157, -74);
 fleencatchsign1 = loc.new(gamesworld, -11, 75, 75);
 fleencatchsign2 = loc.new(gamesworld, -12, 75, 75);
-invertingsign1 = loc.new(gamesworld, -418, 157, -41);
-invertingsign2 = loc.new(gamesworld, -419, 157, -41);
-invertingsign3 = loc.new(gamesworld, -420, 157, -41);
-invertingclsign1 = loc.new(gamesworld, -418, 156, -41);
-invertingclsign2 = loc.new(gamesworld, -419, 156, -41);
-invertingclsign3 = loc.new(gamesworld, -420, 156, -41);
+invertingsign1 = loc.new(gamesworld, -399, 158, -49);
+invertingsign2 = loc.new(gamesworld, -399, 158, -48);
+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);
 spleefmap1 = loc.new(gamesworld, -17, 75, 74);
-knockfightsign1 = loc.new(gamesworld, -422, 157, -41);
-knockfightsign2 = loc.new(gamesworld, -423, 157, -41);
-knockfightsign3 = loc.new(gamesworld, -424, 157, -41);
+knockfightsign1 = loc.new(gamesworld, -398, 157, -56);
+knockfightsign2 = loc.new(gamesworld, -398, 157, -55);
+knockfightsign3 = loc.new(gamesworld, -398, 157, -54);
 pvpsign1 = loc.new(gamesworld, -418, 158, -41);
 pvpsign2 = loc.new(gamesworld, -419, 158, -41);
 ctfmap1 = loc.new(gamesworld, 13, 75, 64);
-leapfrogsign1 = loc.new(gamesworld, -423, 157, -52);
+leapfrogsign1 = loc.new(gamesworld, -404, 157, -74);
+snowsign1 = loc.new(gamesworld, -405, 158, -74);
 
 sgv("SERVER", "bwmapsign1", text.location(bwmapsign1));
 sgv("SERVER", "bwmapsign2", text.location(bwmapsign2));
@@ -72,32 +73,33 @@ sgv("SERVER", "bwmapsign5", text.location(bwmapsign5));
 sgv("SERVER", "letterssign1", text.location(letterssign1));
 sgv("SERVER", "letterssign2", text.location(letterssign2));
 sgv("SERVER", "letterssign3", text.location(letterssign3));
-sgv("SERVER", "sfmaploc1", text.location(sfmaploc1));
+//sgv("SERVER", "sfmaploc1", text.location(sfmaploc1));
 sgv("SERVER", "rmmaploc1", text.location(rmmaploc1));
 sgv("SERVER", "rmmaploc2", text.location(rmmaploc2));
 sgv("SERVER", "rmmaploc3", text.location(rmmaploc3));
 sgv("SERVER", "jrmap", text.location(jrmap));
-sgv("SERVER", "tjrsign", text.location(tjrsign));
-sgv("SERVER", "fastbridgesign1", text.location(fastbridgesign1));
-sgv("SERVER", "rebuildsign", text.location(rebuildsign));
+//sgv("SERVER", "tjrsign", text.location(tjrsign));
+//sgv("SERVER", "fastbridgesign1", text.location(fastbridgesign1));
+//sgv("SERVER", "rebuildsign", text.location(rebuildsign));
 sgv("SERVER", "buttonssign1", text.location(buttonssign1));
-sgv("SERVER", "maednsign1", text.location(maednsign1));
-sgv("SERVER", "fleencatchsign1", text.location(fleencatchsign1));
-sgv("SERVER", "fleencatchsign2", text.location(fleencatchsign2));
+//sgv("SERVER", "maednsign1", text.location(maednsign1));
+//sgv("SERVER", "fleencatchsign1", text.location(fleencatchsign1));
+//sgv("SERVER", "fleencatchsign2", text.location(fleencatchsign2));
 sgv("SERVER", "invertingsign1", text.location(invertingsign1));
 sgv("SERVER", "invertingsign2", text.location(invertingsign2));
 sgv("SERVER", "invertingsign3", text.location(invertingsign3));
 sgv("SERVER", "invertingclsign1", text.location(invertingclsign1));
 sgv("SERVER", "invertingclsign2", text.location(invertingclsign2));
 sgv("SERVER", "invertingclsign3", text.location(invertingclsign3));
-sgv("SERVER", "spleefmap1", text.location(spleefmap1));
-sgv("SERVER", "knockfightsign1", text.location(knockfightsign1));
-sgv("SERVER", "knockfightsign2", text.location(knockfightsign2));
-sgv("SERVER", "knockfightsign3", text.location(knockfightsign3));
-sgv("SERVER", "ctfmap1", text.location(ctfmap1));
+//sgv("SERVER", "spleefmap1", text.location(spleefmap1));
+//sgv("SERVER", "knockfightsign1", text.location(knockfightsign1));
+//sgv("SERVER", "knockfightsign2", text.location(knockfightsign2));
+//sgv("SERVER", "knockfightsign3", text.location(knockfightsign3));
+//sgv("SERVER", "ctfmap1", text.location(ctfmap1));
 sgv("SERVER", "leapfrogsign1", text.location(leapfrogsign1));
-sgv("SERVER", "pvpsign1", text.location(pvpsign1));
-sgv("SERVER", "pvpsign2", text.location(pvpsign2));
+//sgv("SERVER", "pvpsign1", text.location(pvpsign1));
+//sgv("SERVER", "pvpsign2", text.location(pvpsign2));
+sgv("SERVER", "snowsign1", text.location(snowsign1));
 
 map.new(gamepaths);
 map.add(gamepaths, "PvP", "minigames/pvp/pvp");
@@ -118,13 +120,14 @@ map.add(gamepaths, "Sammelfieber", "minigames/sammelfieber/sammelfieber");
 map.add(gamepaths, "Buttons", "minigames/buttons/buttons");
 map.add(gamepaths, "Jump'n'Run", "minigames/jumpnrun/jumpnrun");
 map.add(gamepaths, "Todesjump", null);
+map.add(gamepaths, "SnowGame", "minigames/snowgame/snowgame");
 
 map.new(openedgames);
-map.add(openedgames, bwmapsign1, false);
-map.add(openedgames, bwmapsign2, false);
-map.add(openedgames, bwmapsign3, false);
-map.add(openedgames, bwmapsign4, false);
-map.add(openedgames, bwmapsign5, false);
+map.add(openedgames, bwmapsign1, true);
+map.add(openedgames, bwmapsign2, true);
+map.add(openedgames, bwmapsign3, true);
+map.add(openedgames, bwmapsign4, true);
+map.add(openedgames, bwmapsign5, true);
 map.add(openedgames, letterssign1, true);
 map.add(openedgames, letterssign2, true);
 map.add(openedgames, letterssign3, true);
@@ -154,6 +157,7 @@ map.add(openedgames, ctfmap1, false);
 map.add(openedgames, leapfrogsign1, true);
 map.add(openedgames, pvpsign1, false);
 map.add(openedgames, pvpsign2, false);
+map.add(openedgames, snowsign1, true);
 
 map.new(gamemappaths);
 map.add(gamemappaths, bwmapsign1, "minigames/bedwars/region_bwmap1");
@@ -164,32 +168,33 @@ map.add(gamemappaths, bwmapsign5, "minigames/bedwars/region_bwmap5");
 map.add(gamemappaths, letterssign1, "minigames/letters/region_lettersmap1");
 map.add(gamemappaths, letterssign2, "minigames/letters/region_lettersmap2");
 map.add(gamemappaths, letterssign3, "minigames/letters/region_lettersmap3");
-map.add(gamemappaths, sfmaploc1, "minigames/sammelfieber/sfmap1");
+//map.add(gamemappaths, sfmaploc1, "minigames/sammelfieber/sfmap1");
 map.add(gamemappaths, rmmaploc1, "minigames/ragemode/region_rmmap1");
 map.add(gamemappaths, rmmaploc2, "minigames/ragemode/region_rmmap2");
 map.add(gamemappaths, rmmaploc3, "minigames/ragemode/region_rmmap3");
 map.add(gamemappaths, jrmap, "minigames/jumpnrun/jumpnrun");
-map.add(gamemappaths, tjrsign, "minigames/jumpnrun/todesjumpnrun");
-map.add(gamemappaths, fastbridgesign1, "minigames/fastbridge/region_fastbridgemap1");
-map.add(gamemappaths, rebuildsign, "minigames/rebuild/region_rebuild1");
+//map.add(gamemappaths, tjrsign, "minigames/jumpnrun/todesjumpnrun");
+//map.add(gamemappaths, fastbridgesign1, "minigames/fastbridge/region_fastbridgemap1");
+//map.add(gamemappaths, rebuildsign, "minigames/rebuild/region_rebuild1");
 map.add(gamemappaths, buttonssign1, "minigames/buttons/buttonsmap1");
-map.add(gamemappaths, maednsign1, "minigames/maedn/maednsign1");
-map.add(gamemappaths, fleencatchsign1, "minigames/fnc/fncmap1");
-map.add(gamemappaths, fleencatchsign2, "minigames/fnc/fncmap2");
+//map.add(gamemappaths, maednsign1, "minigames/maedn/maednsign1");
+//map.add(gamemappaths, fleencatchsign1, "minigames/fnc/fncmap1");
+//map.add(gamemappaths, fleencatchsign2, "minigames/fnc/fncmap2");
 map.add(gamemappaths, invertingsign1, "minigames/inverting/invertingmap1");
 map.add(gamemappaths, invertingsign2, "minigames/inverting/invertingmap2");
 map.add(gamemappaths, invertingsign3, "minigames/inverting/invertingmap3");
 map.add(gamemappaths, invertingclsign1, "minigames/inverting/invertingclmap1");
 map.add(gamemappaths, invertingclsign2, "minigames/inverting/invertingclmap2");
 map.add(gamemappaths, invertingclsign3, "minigames/inverting/invertingclmap3");
-map.add(gamemappaths, spleefmap1, "minigames/spleef/spleefmap1");
-map.add(gamemappaths, knockfightsign1, "minigames/knockfight/knockmap1");
-map.add(gamemappaths, knockfightsign2, "minigames/knockfight/knockmap2");
-map.add(gamemappaths, knockfightsign3, "minigames/knockfight/knockmap3");
-map.add(gamemappaths, ctfmap1, "minigames/capturetheflag/ctfmap1");
+//map.add(gamemappaths, spleefmap1, "minigames/spleef/spleefmap1");
+//map.add(gamemappaths, knockfightsign1, "minigames/knockfight/knockmap1");
+//map.add(gamemappaths, knockfightsign2, "minigames/knockfight/knockmap2");
+//map.add(gamemappaths, knockfightsign3, "minigames/knockfight/knockmap3");
+//map.add(gamemappaths, ctfmap1, "minigames/capturetheflag/ctfmap1");
 map.add(gamemappaths, leapfrogsign1, "minigames/leapfrog/leapfrogmap1");
-map.add(gamemappaths, pvpsign1, "minigames/pvp/pvpmap1");
-map.add(gamemappaths, pvpsign2, "minigames/pvp/pvpmap2");
+//map.add(gamemappaths, pvpsign1, "minigames/pvp/pvpmap1");
+//map.add(gamemappaths, pvpsign2, "minigames/pvp/pvpmap2");
+map.add(gamemappaths, snowsign1, "minigames/snowgame/region_snowmap1");
 
 set.new(singleplayergames);
 set.add(singleplayergames, "Letters");

+ 2 - 2
global/jailsystem.txt

@@ -251,7 +251,7 @@ if(command == "ticket") {
 				p = list.getIndex(teamlers, i);
 				player.speak(p, präfix, "§r", player_name, " hat ein Ticket eingereicht: §a", nachricht);
 				player.speak(p, präfix, "§rOffene Tickets: ", text.number(list.getSize(freetickets)));
-				player.playSound(p, "BLOCK.NOTE.PLING");
+				//player.playSound(p, "BLOCK.NOTE.PLING");
 			}
 		}
 		goto("wait");
@@ -328,7 +328,7 @@ function freeticket(ticket) {
 		p = list.getIndex(teamlers, i);
 		player.speak(p, $präfix, "§r", $player_name, " hat das Ticket von ", name, " wieder freigegeben: §a", getMessage(ticket));
 		player.speak(p, $präfix, "§rOffene Tickets: ", text.number(list.getSize($freetickets)));
-		player.playSound(p, "BLOCK.NOTE.PLING");
+		//player.playSound(p, "BLOCK.NOTE.PLING");
 	}
 	return;
 }

+ 169 - 145
global/tools.txt

@@ -2,57 +2,57 @@ rankingtable = "bwranks";
 registerRanking(rankingtable);
 
 map.new(colorcodes);
-map.add(colorcodes, 0, "§1");
+map.add(colorcodes, 0, "§9");
 map.add(colorcodes, 1, "§4");
-map.add(colorcodes, 2, "§e");
-map.add(colorcodes, 3, "§2");
+map.add(colorcodes, 2, "§z");
+map.add(colorcodes, 3, "§p");
 map.add(colorcodes, 4, "§6");
-map.add(colorcodes, 5, "§5");
+map.add(colorcodes, 5, "§w");
 map.add(colorcodes, 6, "§f");
 map.add(colorcodes, 7, "§0");
 map.add(colorcodes, 8, "§7");
 map.add(colorcodes, 9, "§8");
-map.add(colorcodes, 10, "§9");
-map.add(colorcodes, 11, "§c");
+map.add(colorcodes, 10, "§5");
+map.add(colorcodes, 11, "§g");
 map.add(colorcodes, 12, "§a");
 map.add(colorcodes, 13, "§3");
-map.add(colorcodes, 14, "§b");
+map.add(colorcodes, 14, "§t");
 map.add(colorcodes, 15, "§d");
 
 map.new(teamcolortext);
-map.add(teamcolortext, 0, "§1blaue");
+map.add(teamcolortext, 0, "§9blaue");
 map.add(teamcolortext, 1, "§4rote");
-map.add(teamcolortext, 2, "§egelbe");
-map.add(teamcolortext, 3, "§2grüne");
+map.add(teamcolortext, 2, "§zgelbe");
+map.add(teamcolortext, 3, "§pgrüne");
 map.add(teamcolortext, 4, "§6orange");
-map.add(teamcolortext, 5, "§5violette");
+map.add(teamcolortext, 5, "§wviolette");
 map.add(teamcolortext, 6, "§fweiße");
 map.add(teamcolortext, 7, "§0schwarze");
 map.add(teamcolortext, 8, "§7hellgraue");
 map.add(teamcolortext, 9, "§8graue");
-map.add(teamcolortext, 10, "§9violettblaue");
-map.add(teamcolortext, 11, "§chellrote");
+map.add(teamcolortext, 10, "§5magenta");
+map.add(teamcolortext, 11, "§gbraune");
 map.add(teamcolortext, 12, "§ahellgrüne");
 map.add(teamcolortext, 13, "§3türkise");
-map.add(teamcolortext, 14, "§bhellblaue");
+map.add(teamcolortext, 14, "§thellblaue");
 map.add(teamcolortext, 15, "§drosa");
 
 map.new(teamcolortext2);
-map.add(teamcolortext2, 0, "§1Blau");
+map.add(teamcolortext2, 0, "§9Blau");
 map.add(teamcolortext2, 1, "§4Rot");
-map.add(teamcolortext2, 2, "§eGelb");
-map.add(teamcolortext2, 3, "§2Grün");
+map.add(teamcolortext2, 2, "§zGelb");
+map.add(teamcolortext2, 3, "§pGrün");
 map.add(teamcolortext2, 4, "§6Orange");
-map.add(teamcolortext2, 5, "§5Violett");
+map.add(teamcolortext2, 5, "§wViolett");
 map.add(teamcolortext2, 6, "§fWeiß");
 map.add(teamcolortext2, 7, "§0Schwarz");
 map.add(teamcolortext2, 8, "§7Hellgrau");
 map.add(teamcolortext2, 9, "§8Grau");
-map.add(teamcolortext2, 10, "§9Violettblau");
-map.add(teamcolortext2, 11, "§cHellrot");
+map.add(teamcolortext2, 10, "§5Magenta");
+map.add(teamcolortext2, 11, "§gBraun");
 map.add(teamcolortext2, 12, "§aHellgrün");
 map.add(teamcolortext2, 13, "§3Türkis");
-map.add(teamcolortext2, 14, "§bHellblau");
+map.add(teamcolortext2, 14, "§tHellblau");
 map.add(teamcolortext2, 15, "§dRosa");
 
 map.new(colornames);
@@ -64,50 +64,50 @@ map.add(colornames, 4, "orange");
 map.add(colornames, 5, "purple");
 map.add(colornames, 6, "white");
 map.add(colornames, 7, "black");
-map.add(colornames, 8, "lightgrey");
-map.add(colornames, 9, "grey");
-map.add(colornames, 10, "purpleblue");
-map.add(colornames, 11, "lightred");
-map.add(colornames, 12, "lightgreen");
+map.add(colornames, 8, "light_gray");
+map.add(colornames, 9, "gray");
+map.add(colornames, 10, "magenta");
+map.add(colornames, 11, "brown");
+map.add(colornames, 12, "lime_green");
 map.add(colornames, 13, "cyan");
-map.add(colornames, 14, "lightblue");
+map.add(colornames, 14, "light_blue");
 map.add(colornames, 15, "pink");
 
-map.new(itemtypes); //Liste der Item_Types
-map.add(itemtypes, 0, "minecraft:concrete");
-map.add(itemtypes, 1, "minecraft:concrete");
-map.add(itemtypes, 2, "minecraft:concrete");
-map.add(itemtypes, 3, "minecraft:concrete");
-map.add(itemtypes, 4, "minecraft:concrete");
-map.add(itemtypes, 5, "minecraft:concrete");
-map.add(itemtypes, 6, "minecraft:concrete");
-map.add(itemtypes, 7, "minecraft:concrete");
-map.add(itemtypes, 8, "minecraft:concrete");
-map.add(itemtypes, 9, "minecraft:concrete");
-map.add(itemtypes, 10, "minecraft:stained_hardened_clay");
-map.add(itemtypes, 11, "minecraft:stained_hardened_clay");
-map.add(itemtypes, 12, "minecraft:concrete");
-map.add(itemtypes, 13, "minecraft:concrete");
-map.add(itemtypes, 14, "minecraft:concrete");
-map.add(itemtypes, 15, "minecraft:concrete");
-
-map.new(datavalues); //Liste der Datenwerte
-map.add(datavalues, 0, 11);
-map.add(datavalues, 1, 14);
-map.add(datavalues, 2, 4);
-map.add(datavalues, 3, 13);
-map.add(datavalues, 4, 1);
-map.add(datavalues, 5, 10);
-map.add(datavalues, 6, 0);
-map.add(datavalues, 7, 15);
-map.add(datavalues, 8, 8);
-map.add(datavalues, 9, 7);
-map.add(datavalues, 10, 11);
-map.add(datavalues, 11, 14);
-map.add(datavalues, 12, 5);
-map.add(datavalues, 13, 9);
-map.add(datavalues, 14, 3);
-map.add(datavalues, 15, 6);
+map.new(concrete_types); //Liste der Item_Types
+map.add(concrete_types, 0, "minecraft:blue_concrete");
+map.add(concrete_types, 1, "minecraft:red_concrete");
+map.add(concrete_types, 2, "minecraft:yellow_concrete");
+map.add(concrete_types, 3, "minecraft:green_concrete");
+map.add(concrete_types, 4, "minecraft:orange_concrete");
+map.add(concrete_types, 5, "minecraft:purple_concrete");
+map.add(concrete_types, 6, "minecraft:white_concrete");
+map.add(concrete_types, 7, "minecraft:black_concrete");
+map.add(concrete_types, 8, "minecraft:lightgrey_concrete");
+map.add(concrete_types, 9, "minecraft:grey_concrete");
+map.add(concrete_types, 10, "minecraft:purpleblue_concrete");
+map.add(concrete_types, 11, "minecraft:lightred_concrete");
+map.add(concrete_types, 12, "minecraft:lightgreen_concrete");
+map.add(concrete_types, 13, "minecraft:cyan_concrete");
+map.add(concrete_types, 14, "minecraft:lightblue_concrete");
+map.add(concrete_types, 15, "minecraft:pink_concrete");
+
+map.new(bed_types); //Liste der Item_Types
+map.add(bed_types, 0, "minecraft:blue_concrete");
+map.add(bed_types, 1, "minecraft:red_concrete");
+map.add(bed_types, 2, "minecraft:yellow_concrete");
+map.add(bed_types, 3, "minecraft:green_concrete");
+map.add(bed_types, 4, "minecraft:orange_concrete");
+map.add(bed_types, 5, "minecraft:purple_concrete");
+map.add(bed_types, 6, "minecraft:white_concrete");
+map.add(bed_types, 7, "minecraft:black_concrete");
+map.add(bed_types, 8, "minecraft:lightgrey_concrete");
+map.add(bed_types, 9, "minecraft:grey_concrete");
+map.add(bed_types, 10, "minecraft:purpleblue_concrete");
+map.add(bed_types, 11, "minecraft:lightred_concrete");
+map.add(bed_types, 12, "minecraft:lightgreen_concrete");
+map.add(bed_types, 13, "minecraft:cyan_concrete");
+map.add(bed_types, 14, "minecraft:lightblue_concrete");
+map.add(bed_types, 15, "minecraft:pink_concrete");
 
 map.new(clothescode); //Liste der Datenwerte für gebrannte gefärbte Tonblöcke
 map.add(clothescode, 0, 5592575);
@@ -158,7 +158,6 @@ event.load("player_join");
 event.load("player_logout");
 event.load("player_giveup");
 event.load("custom_command");
-command.add("start");
 
 gosub("setstart");
 
@@ -174,9 +173,12 @@ bedtruesymbol = "§2✔";
 bedfalsesymbol = "§4✘";
 air_item_type = "minecraft:air";
 air_item = read.item(air_item_type);
-coin_copper = read.item("km:coin_copper", 1, 0, "§cKupfer");
-coin_silver = read.item("km:coin_silver", 1, 0, "§7Silber");
-coin_gold = read.item("km:coin_gold", 1, 0, "§6Gold");
+coin_copper = read.item("km:coin_copper", 1);
+coin_silver = read.item("km:coin_silver", 1);
+coin_gold = read.item("km:coin_gold", 1);
+bed_tag = block.getTag("minecraft:beds");
+minplayers = teamsize + 1;
+maxplayers = teamsize * numberofteams;
 
 shopmenu1 = inv.newDynamic("222222222222222222222222222222222222", "§8Shop");
 shopmenu2 = inv.newDynamic("222222222222222222222222222222222222", "§8Shop");
@@ -239,23 +241,23 @@ inv.setItem(shopmenu1, 21, read.item("SANDSTONE", 32, 2));
 inv.setItem(shopmenu1, 22, read.item("{id:'minecraft:leather_helmet',Count:1b,tag:{ench:[{lvl:1s,id:0s},{lvl:1s,id:34s}]},Damage:0s}"));
 inv.setItem(shopmenu1, 23, read.item("{id:'minecraft:leather_leggings',Count:1b,tag:{ench:[{lvl:1s,id:0s},{lvl:1s,id:34s}]},Damage:0s}"));
 inv.setItem(shopmenu1, 24, read.item("{id:'minecraft:leather_boots',Count:1b,tag:{ench:[{lvl:1s,id:0s},{lvl:1s,id:34s}]},Damage:0s}"));
-inv.setItem(shopmenu1, 28, read.item("km:coin_copper", 8, 0, "§cKupfer"));
-inv.setItem(shopmenu1, 29, read.item("km:coin_copper", 4, 0, "§cKupfer"));
-inv.setItem(shopmenu1, 30, read.item("km:coin_copper", 16, 0, "§cKupfer"));
-inv.setItem(shopmenu1, 31, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu1, 32, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu1, 33, read.item("km:coin_copper", 1, 0, "§cKupfer"));
+inv.setItem(shopmenu1, 28, read.item("km:coin_copper", 8));
+inv.setItem(shopmenu1, 29, read.item("km:coin_copper", 4));
+inv.setItem(shopmenu1, 30, read.item("km:coin_copper", 16));
+inv.setItem(shopmenu1, 31, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu1, 32, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu1, 33, read.item("km:coin_copper", 1));
 
 inv.setItem(shopmenu2, 19, read.item("SANDSTONE", 2, 2));
 inv.setItem(shopmenu2, 20, read.item("END_STONE"));
 inv.setItem(shopmenu2, 21, read.item("IRON_BLOCK"));
 inv.setItem(shopmenu2, 22, read.item("CHEST"));
 inv.setItem(shopmenu2, 23, read.item("GLASS"));
-inv.setItem(shopmenu2, 28, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu2, 29, read.item("km:coin_copper", 7, 0, "§cKupfer"));
-inv.setItem(shopmenu2, 30, read.item("km:coin_silver", 3, 0, "§7Silber"));
-inv.setItem(shopmenu2, 31, read.item("km:coin_silver", 1, 0, "§7Silber"));
-inv.setItem(shopmenu2, 32, read.item("km:coin_copper", 4, 0, "§cKupfer"));
+inv.setItem(shopmenu2, 28, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu2, 29, read.item("km:coin_copper", 7));
+inv.setItem(shopmenu2, 30, read.item("km:coin_silver", 3));
+inv.setItem(shopmenu2, 31, read.item("km:coin_silver", 1));
+inv.setItem(shopmenu2, 32, read.item("km:coin_copper", 4));
 
 inv.setItem(shopmenu3, 19, read.item("{id:'minecraft:leather_helmet',Count:1b,tag:{ench:[{lvl:1s,id:0s},{lvl:1s,id:34s}]},Damage:0s}"));
 inv.setItem(shopmenu3, 20, read.item("{id:'minecraft:leather_leggings',Count:1b,tag:{ench:[{lvl:1s,id:0s},{lvl:1s,id:34s}]},Damage:0s}"));
@@ -263,46 +265,46 @@ inv.setItem(shopmenu3, 21, read.item("{id:'minecraft:leather_boots',Count:1b,tag
 inv.setItem(shopmenu3, 22, read.item("{id:'minecraft:chainmail_chestplate',Count:1b,tag:{ench:[{lvl:1s,id:0s},{lvl:1s,id:34s}],display:{Name:'§f§bKettenbrust Lvl1'}},Damage:0s}"));
 inv.setItem(shopmenu3, 23, read.item("{id:'minecraft:chainmail_chestplate',Count:1b,tag:{ench:[{lvl:2s,id:0s},{lvl:1s,id:34s}],display:{Name:'§f§bKettenbrust Lvl2'}},Damage:0s}"));
 inv.setItem(shopmenu3, 24, read.item("{id:'minecraft:chainmail_chestplate',Count:1b,tag:{ench:[{lvl:3s,id:0s},{lvl:1s,id:34s}],display:{Name:'§f§bKettenbrust Lvl3'}},Damage:0s}"));
-inv.setItem(shopmenu3, 28, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu3, 29, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu3, 30, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu3, 31, read.item("km:coin_silver", 1, 0, "§7Silber"));
-inv.setItem(shopmenu3, 32, read.item("km:coin_silver", 3, 0, "§7Silber"));
-inv.setItem(shopmenu3, 33, read.item("km:coin_silver", 7, 0, "§7Silber"));
+inv.setItem(shopmenu3, 28, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu3, 29, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu3, 30, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu3, 31, read.item("km:coin_silver", 1));
+inv.setItem(shopmenu3, 32, read.item("km:coin_silver", 3));
+inv.setItem(shopmenu3, 33, read.item("km:coin_silver", 7));
 
 inv.setItem(shopmenu4, 21, read.item("{id:'minecraft:wooden_pickaxe',Count:1b,tag:{ench:[{lvl:1s,id:32s},{lvl:1s,id:34s}],HideFlags:2,AttributeModifiers:[{UUIDMost:1,UUIDLeast:1,Amount:100.0d,Slot:'mainhand',AttributeName:'generic.attackSpeed',Operation:0,Name:'generic.attackSpeed'}]},Damage:0s}"));
 inv.setItem(shopmenu4, 22, read.item("{id:'minecraft:stone_pickaxe',Count:1b,tag:{ench:[{lvl:1s,id:32s},{lvl:1s,id:34s}],HideFlags:2,AttributeModifiers:[{UUIDMost:1,UUIDLeast:1,Amount:100.0d,Slot:'mainhand',AttributeName:'generic.attackSpeed',Operation:0,Name:'generic.attackSpeed'}]},Damage:0s}"));
 inv.setItem(shopmenu4, 23, read.item("{id:'minecraft:iron_pickaxe',Count:1b,tag:{ench:[{lvl:3s,id:32s},{lvl:1s,id:34s}],HideFlags:2,AttributeModifiers:[{UUIDMost:1,UUIDLeast:1,Amount:100.0d,Slot:'mainhand',AttributeName:'generic.attackSpeed',Operation:0,Name:'generic.attackSpeed'}]},Damage:0s}"));
-inv.setItem(shopmenu4, 30, read.item("km:coin_copper", 4, 0, "§cKupfer"));
-inv.setItem(shopmenu4, 31, read.item("km:coin_silver", 2, 0, "§7Silber"));
-inv.setItem(shopmenu4, 32, read.item("km:coin_gold", 1, 0, "§6Gold"));
+inv.setItem(shopmenu4, 30, read.item("km:coin_copper", 4));
+inv.setItem(shopmenu4, 31, read.item("km:coin_silver", 2));
+inv.setItem(shopmenu4, 32, read.item("km:coin_gold", 1));
 
 inv.setItem(shopmenu5, 20, read.item("{id:'minecraft:stick',Count:1b,tag:{ench:[{lvl:1s,id:19s}],HideFlags:2,display:{Name:'§f§bKnüppel'},AttributeModifiers:[{UUIDMost:1,UUIDLeast:1,Amount:100.0d,Slot:'mainhand',AttributeName:'generic.attackSpeed',Operation:0,Name:'generic.attackSpeed'}]},Damage:0s}"));
 inv.setItem(shopmenu5, 21, read.item("{id:'minecraft:golden_sword',Count:1b,tag:{ench:[{lvl:1s,id:16s},{lvl:1s,id:34s}],HideFlags:2,display:{Name:'§f§bGoldschwert Lvl1'},AttributeModifiers:[{UUIDMost:1,UUIDLeast:1,Amount:100.0d,Slot:'mainhand',AttributeName:'generic.attackSpeed',Operation:0,Name:'generic.attackSpeed'}]},Damage:0s}"));
 inv.setItem(shopmenu5, 22, read.item("{id:'minecraft:golden_sword',Count:1b,tag:{ench:[{lvl:2s,id:16s},{lvl:1s,id:34s}],HideFlags:2,display:{Name:'§f§bGoldschwert Lvl2'},AttributeModifiers:[{UUIDMost:1,UUIDLeast:1,Amount:100.0d,Slot:'mainhand',AttributeName:'generic.attackSpeed',Operation:0,Name:'generic.attackSpeed'}]},Damage:0s}"));
 inv.setItem(shopmenu5, 23, read.item("{id:'minecraft:iron_sword',Count:1b,tag:{ench:[{lvl:2s,id:16s},{lvl:1s,id:34s},{lvl:1s,id:19s}],HideFlags:2,AttributeModifiers:[{UUIDMost:1,UUIDLeast:1,Amount:100.0d,Slot:'mainhand',AttributeName:'generic.attackSpeed',Operation:0,Name:'generic.attackSpeed'}]},Damage:0s}"));
-inv.setItem(shopmenu5, 29, read.item("km:coin_copper", 8, 0, "§cKupfer"));
-inv.setItem(shopmenu5, 30, read.item("km:coin_silver", 1, 0, "§7Silber"));
-inv.setItem(shopmenu5, 31, read.item("km:coin_silver", 3, 0, "§7Silber"));
-inv.setItem(shopmenu5, 32, read.item("km:coin_gold", 5, 0, "§6Gold"));
+inv.setItem(shopmenu5, 29, read.item("km:coin_copper", 8));
+inv.setItem(shopmenu5, 30, read.item("km:coin_silver", 1));
+inv.setItem(shopmenu5, 31, read.item("km:coin_silver", 3));
+inv.setItem(shopmenu5, 32, read.item("km:coin_gold", 5));
 
 inv.setItem(shopmenu6, 20, read.item("{id:'minecraft:bow',Count:1b,tag:{ench:[{lvl:1s,id:51s}],display:{Name:'§f§bBogen Lvl1'}},Damage:0s}"));
 inv.setItem(shopmenu6, 21, read.item("{id:'minecraft:bow',Count:1b,tag:{ench:[{lvl:1s,id:48s},{lvl:1s,id:51s}],display:{Name:'§f§bBogen Lvl2'}},Damage:0s}"));
 inv.setItem(shopmenu6, 22, read.item("{id:'minecraft:bow',Count:1b,tag:{ench:[{lvl:1s,id:48s},{lvl:1s,id:49s},{lvl:1s,id:51s}],display:{Name:'§f§bBogen Lvl3'}},Damage:0s}"));
 inv.setItem(shopmenu6, 23, read.item("ARROW"));
-inv.setItem(shopmenu6, 29, read.item("km:coin_gold", 3, 0, "§6Gold"));
-inv.setItem(shopmenu6, 30, read.item("km:coin_gold", 7, 0, "§6Gold"));
-inv.setItem(shopmenu6, 31, read.item("km:coin_gold", 13, 0, "§6Gold"));
-inv.setItem(shopmenu6, 32, read.item("km:coin_gold", 1, 0, "§6Gold"));
+inv.setItem(shopmenu6, 29, read.item("km:coin_gold", 3));
+inv.setItem(shopmenu6, 30, read.item("km:coin_gold", 7));
+inv.setItem(shopmenu6, 31, read.item("km:coin_gold", 13));
+inv.setItem(shopmenu6, 32, read.item("km:coin_gold", 1));
 
 inv.setItem(shopmenu7, 20, read.item("APPLE"));
 inv.setItem(shopmenu7, 21, read.item("COOKED_PORKCHOP"));
 inv.setItem(shopmenu7, 22, read.item("CAKE"));
 inv.setItem(shopmenu7, 23, read.item("GOLDEN_APPLE"));
-inv.setItem(shopmenu7, 29, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu7, 30, read.item("km:coin_copper", 2, 0, "§cKupfer"));
-inv.setItem(shopmenu7, 31, read.item("km:coin_silver", 1, 0, "§7Silber"));
-inv.setItem(shopmenu7, 32, read.item("km:coin_gold", 2, 0, "§6Gold"));
+inv.setItem(shopmenu7, 29, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu7, 30, read.item("km:coin_copper", 2));
+inv.setItem(shopmenu7, 31, read.item("km:coin_silver", 1));
+inv.setItem(shopmenu7, 32, read.item("km:coin_gold", 2));
 
 inv.setItem(shopmenu8, 19, read.item("{id:'minecraft:potion',Count:1b,tag:{Potion:'minecraft:healing'},Damage:0s}"));
 inv.setItem(shopmenu8, 20, read.item("{id:'minecraft:potion',Count:1b,tag:{Potion:'minecraft:strong_healing'},Damage:0s}"));
@@ -310,12 +312,12 @@ inv.setItem(shopmenu8, 21, read.item("{id:'minecraft:potion',Count:1b,tag:{Potio
 inv.setItem(shopmenu8, 22, read.item("{id:'minecraft:potion',Count:1b,tag:{Potion:'minecraft:swiftness'},Damage:0s}"));
 inv.setItem(shopmenu8, 23, read.item("{id:'minecraft:potion',Count:1b,tag:{Potion:'minecraft:strength'},Damage:0s}"));
 inv.setItem(shopmenu8, 24, read.item("{id:'minecraft:splash_potion',Count:1b,tag:{Potion:'minecraft:weakness'},Damage:0s}"));
-inv.setItem(shopmenu8, 28, read.item("km:coin_silver", 3, 0, "§7Silber"));
-inv.setItem(shopmenu8, 29, read.item("km:coin_silver", 5, 0, "§7Silber"));
-inv.setItem(shopmenu8, 30, read.item("km:coin_silver", 7, 0, "§7Silber"));
-inv.setItem(shopmenu8, 31, read.item("km:coin_silver", 16, 0, "§7Silber"));
-inv.setItem(shopmenu8, 32, read.item("km:coin_gold", 7, 0, "§6Gold"));
-inv.setItem(shopmenu8, 33, read.item("km:coin_gold", 10, 0, "§6Gold"));
+inv.setItem(shopmenu8, 28, read.item("km:coin_silver", 3));
+inv.setItem(shopmenu8, 29, read.item("km:coin_silver", 5));
+inv.setItem(shopmenu8, 30, read.item("km:coin_silver", 7));
+inv.setItem(shopmenu8, 31, read.item("km:coin_silver", 16));
+inv.setItem(shopmenu8, 32, read.item("km:coin_gold", 7));
+inv.setItem(shopmenu8, 33, read.item("km:coin_gold", 10));
 
 inv.setItem(shopmenu9, 18, read.item("LADDER"));
 inv.setItem(shopmenu9, 19, read.item("WEB"));
@@ -325,18 +327,23 @@ inv.setItem(shopmenu9, 22, read.item("ENDER_PEARL"));
 //inv.setItem(shopmenu9, 23, read.item("BLAZE_ROD", "§rRettungsplattform"));
 //inv.setItem(shopmenu9, 24, read.item("{id:'minecraft:string',Count:1b,tag:{display:{Lore:['Warnt dich vor angreifenden Gegnern.'],Name:'§rTrap'}},Damage:0s}"));
 //inv.setItem(shopmenu9, 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(shopmenu9, 26, read.item("{id:'minecraft:bed',Count:1b,tag:{display:{Lore:['Sorgt dafür, dass dein Bett neu gesetzt wird.','Nur einmal verwendbar.'],Name:'§rNeues Bett'}},Damage:14s}"));
+inv.setItem(shopmenu9, 26, read.item("{id:'minecraft:red_bed',Count:1b,tag:{display:{Lore:['Setzt dein Bett einmalig neu.'],Name:'§rNeues Bett'}},Damage:14s}"));
 //inv.setItem(shopmenu9, 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(shopmenu9, 27, read.item("km:coin_copper", 1, 0, "§cKupfer"));
-inv.setItem(shopmenu9, 28, read.item("km:coin_copper", 16, 0, "§cKupfer"));
-inv.setItem(shopmenu9, 29, read.item("km:coin_silver", 6, 0, "§7Silber"));
-inv.setItem(shopmenu9, 30, read.item("km:coin_silver", 7, 0, "§7Silber"));
-inv.setItem(shopmenu9, 31, read.item("km:coin_gold", 13, 0, "§6Gold"));
-//inv.setItem(shopmenu9, 32, read.item("km:coin_gold", 3, 0, "§6Gold"));
-//inv.setItem(shopmenu9, 33, read.item("km:coin_silver", 7, 0, "§7Silber"));
-//inv.setItem(shopmenu9, 34, read.item("km:coin_silver", 3, 0, "§7Silber"));
-inv.setItem(shopmenu9, 35, read.item("km:coin_gold", 40, 0, "§6Gold"));
-//inv.setItem(shopmenu9, 45, read.item("km:coin_silver", 3, 0, "§7Silber"));
+inv.setItem(shopmenu9, 27, read.item("km:coin_copper", 1));
+inv.setItem(shopmenu9, 28, read.item("km:coin_copper", 16));
+inv.setItem(shopmenu9, 29, read.item("km:coin_silver", 6));
+inv.setItem(shopmenu9, 30, read.item("km:coin_silver", 7));
+inv.setItem(shopmenu9, 31, read.item("km:coin_gold", 13));
+//inv.setItem(shopmenu9, 32, read.item("km:coin_gold", 3));
+//inv.setItem(shopmenu9, 33, read.item("km:coin_silver", 7));
+//inv.setItem(shopmenu9, 34, read.item("km:coin_silver", 3));
+inv.setItem(shopmenu9, 35, read.item("km:coin_gold", 40));
+//inv.setItem(shopmenu9, 45, read.item("km:coin_silver", 3));
+
+//Alle Betten setzen
+for(team = 0; team <= numberofteams - 1; team++) 
+	setBed(team);
+}
 
 for(i = 0; i <= numberofteams - 1; i++) {
 	map.add(playersinteam, i, 0);
@@ -365,7 +372,7 @@ elseif(event == "player_logout" || event == "player_giveup") {
 	gosub("leavelobbycore");
 } elseif(event == "custom_command") {
 	if(command == "startgame") {
-		if(perm.has(player, "isMod")) {
+		if(perm.has(player, command)) {
 			gosub("jumpstart");
 		}
 	}
@@ -373,7 +380,7 @@ elseif(event == "player_logout" || event == "player_giveup") {
 goto("checklobby");
 
 @jointeam
-newteam = list.getIndexOf(joinblocks, block_loc);
+newteam = list.getIndexOf(join_blocks, block_loc);
 newteamlist = map.get(teamidtolist, newteam);
 if(list.contains(newteamlist, player_name)) {
 	player.speak(player, gamename, "§eDu bist bereits in diesem Team");
@@ -413,17 +420,12 @@ block.setSign(gamesignloc, 2, concat(text.number(list.getSize(all)), "/", text.n
 block.setSign(gamesignloc, 3, "§6Läuft");
 voidid = event.addMoveData(voidedge1, voidedge2, 3, -1);
 
-for(team = 0; team <= numberofteams - 1; team++) {
+while(list.getSize(waiters) != 0) {
+	team = getTeamWithLowestPeople();
 	teamlist = map.get(teamidtolist, team);
-	if(list.getSize(teamlist) != teamsize) {
-		pname = list.getIndex(waiters, 0);
-		list.add(teamlist, pname);
-		list.remove(waiters, pname);
-		map.add(players, pname, team);
-		if(list.getSize(waiters) == 0) {
-			break;
-		}
-	}
+	p_name = list.getIndex(waiters, 0);
+	list.add(teamlist, p_name);
+	list.remove(waiters, p_name);
 }
 
 map.new(allkills);
@@ -454,7 +456,7 @@ for(i = 0; i <= numberofteams - 1; i++) {
 			pname = list.getIndex(teamlist, h);
 			p = read.player(pname);
 			player.speak("all", gamename, concat("§e", pname));
-			entity.teleport(p, map.get(spawnlocs, i));
+			entity.teleport(p, map.get(spawn_locs, i));
 			if(player.isSurvival(p)) {
 				if(player.isAdventure(p)) {
 					player.setGamemode(p, "survival");
@@ -463,7 +465,7 @@ for(i = 0; i <= numberofteams - 1; i++) {
 				player.setGamemode(p, "survival");
 			}
 			if(player.hasFly(p)) {
-				command("fly ", pname, " off");
+				player.setFly(p, false);
 			}
 			map.add(allkills, pname, 0);
 			map.add(bedkills, pname, 0);
@@ -528,11 +530,12 @@ if(inv_slot <= 8) {
 goto("buyitem");
 
 @breakbed
-if(list.contains(bedloc1, block_loc)) {
-	team = list.getIndexOf(bedloc1, block_loc);
-} elseif(list.contains(bedloc2, block_loc)) {
-	team = list.getIndexOf(bedloc2, block_loc);
+if(list.contains(foot_bed_loc, block_loc)) {
+	team = list.getIndexOf(foot_bed_loc, block_loc);
+} elseif(list.contains(head_bed_loc, block_loc)) {
+	team = list.getIndexOf(head_bed_loc, block_loc);
 } else {
+	player.speak(player, gamename, "§eKein Bett des Spiels");
 	goto("checkgame");
 }
 teamlist = map.get(teamidtolist, team);
@@ -594,7 +597,7 @@ if(player.getItemAmount(player, false, priceitem) < item.getAmount(priceitem)) {
 	goto("checkgame");
 }
 player.removeItem(player, priceitem);
-if(item_type == "minecraft:bed") {
+if(item_type == "minecraft:red_bed") {
 	goto("setnewbed");
 }
 if(item_type == "minecraft:leather_helmet") {
@@ -610,7 +613,7 @@ if(item_type == "minecraft:leather_boots") {
 	goto("buyclothes");
 }
 if(item_type == "minecraft:sandstone") {
-	goto("buybrick");
+	goto("buy_block");
 }
 temp = player.giveItem(player, item);
 if(item.getType(temp) != air_item_type) {
@@ -631,15 +634,14 @@ entity.throw(nothing(player_name), -0.85, 0, 0)*/
 team = map.get(players, player_name);
 tempcolor = map.get(colornames, team);
 if(map.get(newbedused, team)) {
-	player.speak(player, gamename, "§eDas Bett kann pro Runde nur einmal neu gesetzt werden");
+	player.speak(player, gamename, "§eNur einmal verwendbar");
 	goto("checkgame");
 }
 if(!map.get(teambedbroken, team)) {
 	player.speak(player, gamename, "§eDein Bett wurde noch nicht abgebaut");
 	goto("checkgame");
 }
-block.set2(list.getIndex(bedloc1, team), "bed", list.getIndex(beddata1, team));
-block.set2(list.getIndex(bedloc2, team), "bed", list.getIndex(beddata2, team));
+setBed(team);
 map.add(teambedbroken, team, false);
 map.add(bedsymbol, team, bedtruesymbol);
 map.add(newbedused, team, true);
@@ -721,13 +723,12 @@ if(item.getType(temp) != air_item_type) {
 inv.update(player);
 goto("checkgame");
 
-@buybrick
+@buy_block
 team = map.get(players, player_name);
-item_type = map.get(itemtypes, team);
-item_data = map.get(datavalues, team);
+item_type = map.get(concrete_types, team);
 tempshop = map.get(invidtoshop, inv_id);
 item_amount = item.getAmount(inv.getItem(tempshop, inv_slot));
-temp = player.giveItem(player, read.item(item_type, item_amount, item_data));
+temp = player.giveItem(player, read.item(item_type, item_amount));
 if(item.getType(temp) != air_item_type) {
 	item.drop(entity.getLocation(player), temp);
 }
@@ -742,7 +743,7 @@ goto("checkgame");
 
 @block_place
 cancel = true;
-if(block_type == "minecraft:bed") {
+if(block.hasTag(bed_tag, block.get(block_loc))) {
 	goto("checkgame");
 } elseif(block_type == "minecraft:tripwire") {
 	tempid = event.addMoveData(block_loc, loc.mod(block_loc, 1, 0.25, 1), -1, -1);
@@ -754,7 +755,7 @@ goto("checkgame");
 
 @block_break
 cancel = true;
-if(block_type == "minecraft:bed") {
+if(list.contains(bed_types, block_type)) {
 	goto("breakbed");
 } elseif(block_type == "minecraft:iron_block") {
 	player_item_type = item.getType(entity.getEquip(player, "hand"));
@@ -777,7 +778,7 @@ if(map.get(teambedbroken, tempteam)) {
 	}
 	goto("checkgame");
 }
-player.setSpawn(player, map.get(spawnlocs, tempteam));
+player.setSpawn(player, map.get(spawn_locs, tempteam));
 goto("checkgame");
 
 @player_giveup
@@ -918,6 +919,29 @@ function showstats(player, show_time, won) { //Player player, Boolean show_time,
 }
 return;
 
+function getTeamWithLowestPeople() {
+	teamlist = map.get($teamidtolist, 0);
+	lowest = list.getSize(teamlist);
+	lowestteam = 0;
+	for(i = 1; i < $numberofteams; i++) {
+		teamlist = map.get($teamidtolist, i);
+		size = list.getSize(teamlist);
+		if(size < lowest) {
+			lowest = size;
+			lowestteam = i;
+		}
+	}
+	return lowestteam;
+}
+
+function setBed(team) {
+	facing = map.get(bed_facing, team);
+	bed_type = map.get(bed_types, team);
+	block.set(list.getIndex(foot_bed_loc, team), concat("minecraft:", bed_type, "[facing= ", facing, ", part=foot]"));
+	block.set(list.getIndex(head_bed_loc, team), concat("minecraft:", bed_type, "[facing= ", facing, ", part=head]"));
+	return;
+}
+
 @gameover
 endtime = time.getMillis();
 if(list.getSize(placedblocks) != 0) {

+ 16 - 39
minigames/bedwars/bedwarsfeature.txt

@@ -1,8 +1,6 @@
 mapname = "GoldDigger";
 numberofteams = 2;
 teamsize = 1;
-minplayers = teamsize + 1;
-maxplayers = teamsize * numberofteams;
 gamesignloc = read.location(ggv("SERVER", "bwmapsign1"));
 gamesworldloc = read.location(ggv("SERVER", "gamesspawn")); //Gamesspawn
 gamesworld = world.get("games");
@@ -10,48 +8,27 @@ lobbyspawnloc = loc.new(gamesworld, 984, 85, 1012, -90, 0); //Lobbyspawn
 middleloc = loc.new(gamesworld, 18, 45, 260); //Middleloc und Radius zum Resetten der Items
 radius = 150;
 voidedge1 = loc.new(gamesworld, -109, -30, 205);
-voidedge2 = loc.new(gamesworld, 128, 7, 329);
+voidedge2 = loc.new(gamesworld, 128, 0, 329);
 
-list.new(joinblocks); //Set der Blöcke, um einem Team zu joinen
-list.add(joinblocks, loc.new(gamesworld, 988, 84, 1007));
-list.add(joinblocks, loc.new(gamesworld, 988, 84, 1017));
+list.new(join_blocks); //Set der Blöcke, um einem Team zu joinen
+list.add(join_blocks, loc.new(gamesworld, 988, 84, 1007));
+list.add(join_blocks, loc.new(gamesworld, 988, 84, 1017));
 
-list.new(bedloc1); //Liste aller Locs Fußteile der Betten
-list.add(bedloc1, loc.new(gamesworld, -79, 45, 259));
-list.add(bedloc1, loc.new(gamesworld, 115, 45, 261));
+list.new(foot_bed_loc); //Liste aller Locs Fußteile der Betten
+list.add(foot_bed_loc, loc.new(gamesworld, -79, 45, 259));
+list.add(foot_bed_loc, loc.new(gamesworld, 115, 45, 261));
 
-list.new(bedloc2); //Liste aller Locs Kopfteile der Betten
-list.add(bedloc2, loc.new(gamesworld, -79, 45, 258));
-list.add(bedloc2, loc.new(gamesworld, 115, 45, 262));
+list.new(head_bed_loc); //Liste aller Locs Kopfteile der Betten
+list.add(head_bed_loc, loc.new(gamesworld, -79, 45, 258));
+list.add(head_bed_loc, loc.new(gamesworld, 115, 45, 262));
 
-list.new(beddata1); //Liste aller Datenwerte der Fußteile der Betten
-list.add(beddata1, 2);
-list.add(beddata1, 0);
+map.new(bed_facing); //Map in welche Richtung das Bett schaut
+map.add(bed_facing, 0, "north");
+map.add(bed_facing, 1, "south");
 
-list.new(beddata2); //Liste aller Datenwerte der Kopfteile der Betten
-list.add(beddata2, 10);
-list.add(beddata2, 8);
-
-list.new(templist); //Liste zum Check, ob Listengröße mit Anzahl der Teams übereinstimmt
-list.add(templist, list.getSize(joinblocks));
-list.add(templist, list.getSize(bedloc1));
-list.add(templist, list.getSize(bedloc2));
-list.add(templist, list.getSize(beddata1));
-list.add(templist, list.getSize(beddata2));
-for(i = 0; i <= list.getSize(templist) - 1; i++) {
-	if(numberofteams != list.getIndex(templist, i)) {
-		player.speak("dev", "§cBedWars", "Error: Listengröße stimmt nicht mit Anzahl der Teams überein");
-		term();
-	}
-}
-for(i = 0; i <= numberofteams - 1; i++) { //Betten setzen
-	block.set2(list.getIndex(bedloc1, i), "bed", list.getIndex(beddata1, i));
-	block.set2(list.getIndex(bedloc2, i), "bed", list.getIndex(beddata2, i));
-}
-
-map.new(spawnlocs); //Liste der Spawnlocs der einzelnen Teams
-map.add(spawnlocs, 0, loc.new(gamesworld, -67, 45, 262, -90, 0));
-map.add(spawnlocs, 1, loc.new(gamesworld, 103, 45, 258, 90, 0));
+map.new(spawn_locs); //Liste der spawn_locs der einzelnen Teams
+map.add(spawn_locs, 0, loc.new(gamesworld, -67, 45, 262, -90, 0));
+map.add(spawn_locs, 1, loc.new(gamesworld, 103, 45, 258, 90, 0));
 
 list.new(copper_locs);
 list.add(copper_locs, loc.new(gamesworld, -69, 41, 256));

+ 9 - 50
minigames/bedwars/region_bwmap2.txt

@@ -53,55 +53,14 @@ map.new(spawnlocs); //Liste der Spawnlocs der einzelnen Teams
 map.add(spawnlocs, 0, loc.new(gamesworld, -3966.5, 64, 5981.5, 90, 0));
 map.add(spawnlocs, 1, loc.new(gamesworld, -3983.5, 64, 5977.5, -90, 0));
 
-list.new(itemlocs); //Liste der Locs der Itemspawner
-list.add(itemlocs, loc.new(gamesworld, -3968, 63, 5981));
-list.add(itemlocs, loc.new(gamesworld, -3983, 63, 5977));
-list.add(itemlocs, loc.new(gamesworld, -3967, 57, 5977));
-list.add(itemlocs, loc.new(gamesworld, -3984, 57, 5981));
-list.add(itemlocs, loc.new(gamesworld, -3973, 59, 5979));
-list.add(itemlocs, loc.new(gamesworld, -3978, 59, 5979));
+list.new(copper_locs);
+list.add(copper_locs, loc.new(gamesworld, -3968, 63, 5981));
+list.add(copper_locs, loc.new(gamesworld, -3983, 63, 5977));
 
-list.new(items); //Liste der Items aus den Itemspawnern
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
+list.new(silver_locs);
+list.add(silver_locs, loc.new(gamesworld, -3967, 57, 5977));
+list.add(silver_locs, loc.new(gamesworld, -3984, 57, 5981));
 
-list.new(itemnames); //Liste der Beschriftungen der Items aus den Itemspawnern
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-
-list.new(factor); //Factor durch 100 ergibt Items pro Sekunde
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-
-list.new(clicked);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-
-list.new(templist); //Liste zum Check, ob Listen für Itemspawner korrekt
-list.add(templist, list.getSize(itemlocs));
-list.add(templist, list.getSize(items));
-list.add(templist, list.getSize(itemnames));
-list.add(templist, list.getSize(factor));
-list.add(templist, list.getSize(clicked));
-for(i = 1; i <= list.getSize(templist) - 1; i++) {
-	if(list.getIndex(templist, 0) != list.getIndex(templist, i)) {
-		player.speak("dev", "§cBedWars", "Error: Parallel-Listen für Itemspawner nicht gleich lang");
-		term();
-	}
-}
+list.new(gold_locs);
+list.add(gold_locs, loc.new(gamesworld, -3973, 59, 5979));
+list.add(gold_locs, loc.new(gamesworld, -3978, 59, 5979));

+ 11 - 60
minigames/bedwars/region_bwmap3.txt

@@ -53,65 +53,16 @@ map.new(spawnlocs); //Liste der Spawnlocs der einzelnen Teams
 map.add(spawnlocs, 0, loc.new(gamesworld, 1022, 79, 4890));
 map.add(spawnlocs, 1, loc.new(gamesworld, 1019, 79, 4972));
 
-list.new(itemlocs); //Liste der Locs der Itemspawner
-list.add(itemlocs, loc.new(gamesworld, 1022, 78, 4891));
-list.add(itemlocs, loc.new(gamesworld, 1019, 78, 4971));
-list.add(itemlocs, loc.new(gamesworld, 1014, 78, 4889));
-list.add(itemlocs, loc.new(gamesworld, 1027, 78, 4911));
-list.add(itemlocs, loc.new(gamesworld, 1027, 78, 4973));
-list.add(itemlocs, loc.new(gamesworld, 1014, 78, 4951));
-list.add(itemlocs, loc.new(gamesworld, 1020, 78, 4931));
-list.add(itemlocs, loc.new(gamesworld, 1021, 78, 4931));
+list.new(copper_locs);
+list.add(copper_locs, loc.new(gamesworld, 1022, 78, 4891));
+list.add(copper_locs, loc.new(gamesworld, 1019, 78, 4971));
 
-list.new(items); //Liste der Items aus den Itemspawnern
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
+list.new(silver_locs);
+list.add(silver_locs, loc.new(gamesworld, 1014, 78, 4889));
+list.add(silver_locs, loc.new(gamesworld, 1027, 78, 4911));
+list.add(silver_locs, loc.new(gamesworld, 1027, 78, 4973));
+list.add(silver_locs, loc.new(gamesworld, 1014, 78, 4951));
 
-list.new(itemnames); //Liste der Beschriftungen der Items aus den Itemspawnern
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-
-list.new(factor); //Factor durch 100 ergibt Items pro Sekunde
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-
-list.new(clicked);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-
-list.new(templist); //Liste zum Check, ob Listen für Itemspawner korrekt
-list.add(templist, list.getSize(itemlocs));
-list.add(templist, list.getSize(items));
-list.add(templist, list.getSize(itemnames));
-list.add(templist, list.getSize(factor));
-list.add(templist, list.getSize(clicked));
-for(i = 1; i <= list.getSize(templist) - 1; i++) {
-	if(list.getIndex(templist, 0) != list.getIndex(templist, i)) {
-		player.speak("dev", "§cBedWars", "Error: Parallel-Listen für Itemspawner nicht gleich lang");
-		term();
-	}
-}
+list.new(gold_locs);
+list.add(gold_locs, loc.new(gamesworld, 1020, 78, 4931));
+list.add(gold_locs, loc.new(gamesworld, 1021, 78, 4931));

+ 27 - 92
minigames/bedwars/region_bwmap4.txt

@@ -19,16 +19,16 @@ list.add(joinblocks, loc.new(gamesworld, 906, 84, 1010));
 list.add(joinblocks, loc.new(gamesworld, 906, 84, 1014));
 
 list.new(bedloc1); //Liste aller Locs Fußteile der Betten
-list.add(bedloc1, loc.new(gamesworld, -9009, 47, 2006));
-list.add(bedloc1, loc.new(gamesworld, -8933, 47, 2083));
-list.add(bedloc1, loc.new(gamesworld, -9010, 47, 2159));
-list.add(bedloc1, loc.new(gamesworld, -9086, 47, 2082));
+list.add(bedloc1, loc.new(gamesworld, -9012, 47, 2004));
+list.add(bedloc1, loc.new(gamesworld, -8931, 47, 2080));
+list.add(bedloc1, loc.new(gamesworld, -9007, 47, 2161));
+list.add(bedloc1, loc.new(gamesworld, -9088, 47, 2085));
 
 list.new(bedloc2); //Liste aller Locs Kopfteile der Betten
-list.add(bedloc2, loc.new(gamesworld, -9009, 47, 2005));
-list.add(bedloc2, loc.new(gamesworld, -8932, 47, 2083));
-list.add(bedloc2, loc.new(gamesworld, -9010, 47, 2160));
-list.add(bedloc2, loc.new(gamesworld, -9087, 47, 2082));
+list.add(bedloc2, loc.new(gamesworld, -9012, 47, 2003));
+list.add(bedloc2, loc.new(gamesworld, -8930, 47, 2080));
+list.add(bedloc2, loc.new(gamesworld, -9007, 47, 2162));
+list.add(bedloc2, loc.new(gamesworld, -9089, 47, 2085));
 
 list.new(beddata1); //Liste aller Datenwerte der Fußteile der Betten
 list.add(beddata1, 2);
@@ -60,90 +60,25 @@ for(i = 0; i <= numberofteams - 1; i++) { //Betten setzen
 }
 
 map.new(spawnlocs); //Liste der Spawnlocs der einzelnen Teams
-map.add(spawnlocs, 0, loc.new(gamesworld, -9011, 48, 2006));
-map.add(spawnlocs, 1, loc.new(gamesworld, -8933, 48, 2081));
-map.add(spawnlocs, 2, loc.new(gamesworld, -9008, 48, 2159));
-map.add(spawnlocs, 3, loc.new(gamesworld, -9086, 48, 2084));
+map.add(spawnlocs, 0, loc.new(gamesworld, -9006.5, 48, 2004.5, 0, 0));
+map.add(spawnlocs, 1, loc.new(gamesworld, -8930.5, 48, 2085.5, 90, 0));
+map.add(spawnlocs, 2, loc.new(gamesworld, -9011.5, 48, 2161.5, 180, 0));
+map.add(spawnlocs, 3, loc.new(gamesworld, -9087.5, 48, 2080.5, -90, 0));
 
-list.new(itemlocs); //Liste der Locs der Itemspawner
-list.add(itemlocs, loc.new(gamesworld, -9007, 46, 2008));
-list.add(itemlocs, loc.new(gamesworld, -8935, 46, 2085));
-list.add(itemlocs, loc.new(gamesworld, -9012, 46, 2157));
-list.add(itemlocs, loc.new(gamesworld, -9084, 46, 2080));
-list.add(itemlocs, loc.new(gamesworld, -9004, 38, 2006));
-list.add(itemlocs, loc.new(gamesworld, -8933, 38, 2088));
-list.add(itemlocs, loc.new(gamesworld, -9015, 38, 2159));
-list.add(itemlocs, loc.new(gamesworld, -9086, 38, 2077));
-list.add(itemlocs, loc.new(gamesworld, -9015, 38, 2006));
-list.add(itemlocs, loc.new(gamesworld, -8933, 38, 2077));
-list.add(itemlocs, loc.new(gamesworld, -9004, 38, 2159));
-list.add(itemlocs, loc.new(gamesworld, -9086, 38, 2088));
+list.new(copper_locs);
+list.add(copper_locs, loc.new(gamesworld, -9009, 46, 2006));
+list.add(copper_locs, loc.new(gamesworld, -8932, 46, 2083));
+list.add(copper_locs, loc.new(gamesworld, -9009, 46, 2160));
+list.add(copper_locs, loc.new(gamesworld, -9086, 46, 2083));
 
-list.new(items); //Liste der Items aus den Itemspawnern
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
+list.new(silver_locs);
+list.add(silver_locs, loc.new(gamesworld, -9029, 38, 2083));
+list.add(silver_locs, loc.new(gamesworld, -9009, 38, 2063));
+list.add(silver_locs, loc.new(gamesworld, -8989, 38, 2083));
+list.add(silver_locs, loc.new(gamesworld, -9009, 38, 2103));
 
-list.new(itemnames); //Liste der Beschriftungen der Items aus den Itemspawnern
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-
-list.new(factor); //Factor durch 100 ergibt Items pro Sekunde
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-
-list.new(clicked);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-
-list.new(templist); //Liste zum Check, ob Listen für Itemspawner korrekt
-list.add(templist, list.getSize(itemlocs));
-list.add(templist, list.getSize(items));
-list.add(templist, list.getSize(itemnames));
-list.add(templist, list.getSize(factor));
-list.add(templist, list.getSize(clicked));
-for(i = 1; i <= list.getSize(templist) - 1; i++) {
-	if(list.getIndex(templist, 0) != list.getIndex(templist, i)) {
-		player.speak("dev", "§cBedWars", "Error: Parallel-Listen für Itemspawner nicht gleich lang");
-		term();
-	}
-}
+list.new(gold_locs);
+list.add(gold_locs, loc.new(gamesworld, -9009, 46, 2073));
+list.add(gold_locs, loc.new(gamesworld, -8999, 46, 2083));
+list.add(gold_locs, loc.new(gamesworld, -9009, 46, 2093));
+list.add(gold_locs, loc.new(gamesworld, -9019, 46, 2083));

+ 15 - 80
minigames/bedwars/region_bwmap5.txt

@@ -65,85 +65,20 @@ map.add(spawnlocs, 1, loc.new(gamesworld, -4955, 51, -5000, 90, 0));
 map.add(spawnlocs, 2, loc.new(gamesworld, -5000, 51, -5045));
 map.add(spawnlocs, 3, loc.new(gamesworld, -5000, 51, -4955, 180, 0));
 
-list.new(itemlocs); //Liste der Locs der Itemspawner
-list.add(itemlocs, loc.new(gamesworld, -5044, 51, -4976));
-list.add(itemlocs, loc.new(gamesworld, -4956, 51, -5024));
-list.add(itemlocs, loc.new(gamesworld, -5024, 51, -5044));
-list.add(itemlocs, loc.new(gamesworld, -4976, 51, -4956));
-list.add(itemlocs, loc.new(gamesworld, -5047, 51, -4978));
-list.add(itemlocs, loc.new(gamesworld, -4953, 51, -5022));
-list.add(itemlocs, loc.new(gamesworld, -5022, 51, -5047));
-list.add(itemlocs, loc.new(gamesworld, -4978, 51, -4953));
-list.add(itemlocs, loc.new(gamesworld, -4997, 51, -4997));
-list.add(itemlocs, loc.new(gamesworld, -5003, 51, -4997));
-list.add(itemlocs, loc.new(gamesworld, -5003, 51, -5003));
-list.add(itemlocs, loc.new(gamesworld, -4997, 51, -5003));
+list.new(copper_locs);
+list.add(copper_locs, loc.new(gamesworld, -5044, 51, -4976));
+list.add(copper_locs, loc.new(gamesworld, -4956, 51, -5024));
+list.add(copper_locs, loc.new(gamesworld, -5024, 51, -5044));
+list.add(copper_locs, loc.new(gamesworld, -4976, 51, -4956));
 
-list.new(items); //Liste der Items aus den Itemspawnern
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "BRICK");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "IRON_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
-list.add(items, "GOLD_INGOT");
+list.new(silver_locs);
+list.add(silver_locs, loc.new(gamesworld, -5047, 51, -4978));
+list.add(silver_locs, loc.new(gamesworld, -4953, 51, -5022));
+list.add(silver_locs, loc.new(gamesworld, -5022, 51, -5047));
+list.add(silver_locs, loc.new(gamesworld, -4978, 51, -4953));
 
-list.new(itemnames); //Liste der Beschriftungen der Items aus den Itemspawnern
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§cBronze");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§7Eisen");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-list.add(itemnames, "§6Gold");
-
-list.new(factor); //Factor durch 100 ergibt Items pro Sekunde
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 100);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 10);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-list.add(factor, 3.33);
-
-list.new(clicked);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-list.add(clicked, 0);
-
-list.new(templist); //Liste zum Check, ob Listen für Itemspawner korrekt
-list.add(templist, list.getSize(itemlocs));
-list.add(templist, list.getSize(items));
-list.add(templist, list.getSize(itemnames));
-list.add(templist, list.getSize(factor));
-list.add(templist, list.getSize(clicked));
-for(i = 1; i <= list.getSize(templist) - 1; i++) {
-	if(list.getIndex(templist, 0) != list.getIndex(templist, i)) {
-		player.speak("dev", "§cBedWars", "Error: Parallel-Listen für Itemspawner nicht gleich lang");
-		term();
-	}
-}
+list.new(gold_locs);
+list.add(gold_locs, loc.new(gamesworld, -4997, 51, -4997));
+list.add(gold_locs, loc.new(gamesworld, -5003, 51, -4997));
+list.add(gold_locs, loc.new(gamesworld, -5003, 51, -5003));
+list.add(gold_locs, loc.new(gamesworld, -4997, 51, -5003));

+ 18 - 18
minigames/buttons/buttons.txt

@@ -1,20 +1,20 @@
-setVar("gamesworldloc", read.location(ggv("SERVER", "gamesspawn"))); //Gamesspawn
-setVar("lobbyloc", read.location("games:-1224:43:-995:90:0"));
-setVar("mapname", "Icy Tower");
+mapname = "Icy Tower";
+numberofteams = 2;
+teamsize = 10;
+minplayers = 2;
+maxplayers = 20;
+gamesignloc = read.location(ggv("SERVER", "bwmapsign1"));
+gamesworldloc = read.location(ggv("SERVER", "gamesspawn")); //Gamesspawn
+gamesworld = world.get("games");
+lobbyspawnloc = loc.new(gamesworld, -1224, 43, -995, 90, 0);
+middleloc = loc.new(gamesworld, -1205, 41, -979);
+radius = 200;
+nerfradius = 8;
 
-setVar("blueblockloc", read.location("games:-1229:42:-992"));
-setVar("redblockloc", read.location("games:-1229:42:-999"));
+list.new(joinblocks); //Liste der Blöcke, um einem Team zu joinen
+list.add(joinblocks, loc.new(gamesworld, -1229, 42, -992));
+list.add(joinblocks, loc.new(gamesworld, -1229, 42, -999));
 
-setVar("bluespawnloc", read.location("games:-1213:41:-961"));
-setVar("redspawnloc", read.location("games:-1186:42:-997"));
-
-setVar("middleloc", read.location("games:-1205:41:-979"));
-setVar("radius", 200);
-setVar("nerfradius", 8);
-
-setVar("gamesize", 20);
-setVar("playersneeded", 2);
-setVar("add_if_name", "minigames/snowgame/region_snowmap1");
-no_quest_msg = true;
-
-overload("minigames/snowgame/snowgame");
+map.new(spawnlocs); //Liste der Spawnlocs der einzelnen Teams
+map.add(spawnlocs, 0, loc.new(gamesworld, -1213, 41, -961));
+map.add(spawnlocs, 1, loc.new(gamesworld, -1186, 42, -997));

+ 339 - 398
minigames/snowgame/snowgame.txt

@@ -1,469 +1,410 @@
-setVar("phase", 0);
-setVar("no_quest_msg", 0);
-setVar("started", false);
-setVar("showtime", true);
-
-setVar("counterindex", 0); //Laufvariable zum Mitzählen, welche Zeit des Startcountdowns als nächsten an der Reihe ist
-list.new("starttimes"); //Liste zum schnellen Varrieren des Startcountdowns
-/*list.add($starttimes, 20);
-list.add($starttimes, 15);
-list.add($starttimes, 10);
-list.add($starttimes, 5);
-list.add($starttimes, 4);*/
-list.add($starttimes, 3);
-list.add($starttimes, 2);
-list.add($starttimes, 1);
-list.add($starttimes, 0);
+rankingtable = "snowranks";
+registerRanking(rankingtable);
+
+map.new(colorcodes);
+map.add(colorcodes, 0, "§1");
+map.add(colorcodes, 1, "§4");
+map.add(colorcodes, 2, "§e");
+map.add(colorcodes, 3, "§2");
+
+map.new(teamcolortext);
+map.add(teamcolortext, 0, "§1blaue");
+map.add(teamcolortext, 1, "§4rote");
+map.add(teamcolortext, 2, "§egelbe");
+map.add(teamcolortext, 3, "§2grüne");
+
+map.new(teamcolortext2);
+map.add(teamcolortext2, 0, "§1Blau");
+map.add(teamcolortext2, 1, "§4Rot");
+map.add(teamcolortext2, 2, "§eGelb");
+map.add(teamcolortext2, 3, "§2Grün");
+
+map.new(colornames);
+map.add(colornames, 0, "blue");
+map.add(colornames, 1, "red");
+map.add(colornames, 2, "yellow");
+map.add(colornames, 3, "green");
+
+map.new(cloth_color);
+map.add(cloth_color, 0, 3361970);
+map.add(cloth_color, 1, 10040115);
+map.add(cloth_color, 2, 16701501);
+map.add(cloth_color, 3, 84395831);
+
+map.new(teamidtolist); //Map mit Spielerlisten für jedes Team
+map.add(teamidtolist, 0, list.new());
+map.add(teamidtolist, 1, list.new());
+map.add(teamidtolist, 2, list.new());
+map.add(teamidtolist, 3, list.new());
 
 event.load("block_click");
-event.load("block_break");
-event.load("block_place");
 event.load("player_giveup");
-event.load("player_leave");
-event.load("player_hurt");
-list.new("all");
-map.new("allmap");
-list.new("blueteam");
-list.new("redteam");
-list.new("waiters");
+event.load("player_logout");
+event.load("player_is_attacked");
+event.load("player_join");
 
-@lobby
-setVar("pname", $player_name);
-setVar("p", read.player($pname));
-if(greaterequal(list.getSize($all), $gamesize)) {
-	player.speak($p, "§6SnowGame", "§eDiese Map ist bereits voll.");
-	player.kick($player);
-	goto("checklobby");
-}
-player.speak($p, "§6SnowGame", "§eDu befindest dich nun in der §bSnowGame §eLobby.");
-command("clear ", $pname);
-entity.setHealth($p, 20);
-player.setHunger($p, 20);
-player.setSaturation($p, 5);
-entity.teleport($p, $lobbyloc);
-list.add($waiters, $pname);
-list.add($all, $pname);
-setVar(concat($pname, "nerf"), 0);
-setVar(concat($pname, "kills"), 0);
-setVar(concat($pname, "deaths"), 0);
-title.setTime($p, 20, 60, 20);
-title.setSub($p, $mapname);
-title.send($p, "§6SnowGame");
-sb.add($p, 4, "§r");
-sb.add($p, 3, "§6SnowGame");
-sb.add($p, 2, $mapname);
-sb.add($p, 1, "Spieler: 2x10");
-if(invert($started)) {
-	if(greaterequal(list.getSize($all), $playersneeded)) {
-		goto("startgame");
-	}
-	@waiting
-	setVar("started", false);
-	setVar("counterindex", 0);
-	setVar("waitfor", sub($playersneeded, list.getSize($all)));
-	player.speak("all", "§6SnowGame", "§eEs wird auf §3", $waitfor, " §eSpieler gewartet.");
-}
+gosub("setstart");
+
+list.new(all); //Alle Spieler des Spiels
+map.new(players); //Alle Spieler (key) des Spiels und deren Teamzugehörigkeit (value)
+list.new(allteams); //Alle Teams, die noch im Spiel sind
+list.new(waiters); //Spieler in der Lobby ohne Teamzugehörigkeit
+
+map.new(lifes);
+map.new(nerf_map);
+map.new(kills_map);
+map.new(deaths_map);
+
+gamename = "§6SnowGame";
+air_item_type = "minecraft:air";
+air_item = read.item(air_item_type);
+snowball_item_type = "minecraft:snowball";
+snow_stack = read.item(snowball_item_type, 16);
+
+player = script.getLeader();
+player_name = player.getName(player);
+gosub("lobbycore");
 
 @checklobby
 wait();
-if(equal($event, "player_join")) {
-	goto("lobby");
-}
-if(equal($event, "block_click")) {
-	goto("jointeam");
-}
-if(or(equal($event, "block_break"), equal($event, "block_place"), equal($event, "player_hurt"))) {
-	setVar(cancel, true);
+if(event == "player_join") {
+	gosub("lobbycore");
 	goto("checklobby");
 }
-if(equal($event, "player_giveup")) {
-	entity.teleport(player, gamesworldloc);
-	goto("leavelobby");
-}
-if(equal($event, "player_leave")) {
-	goto("leavelobby");
+if(event == "block_click") {
+	cancel = true;
+	if(block_type == "minecraft:concrete" || block_type == "minecraft:stained_hardened_clay") {
+		goto("jointeam");
+	}
+	goto("checklobby");
 }
-goto("checklobby");
-
-@leavelobby
-list.remove($waiters, $player_name);
-list.remove($blueteam, $player_name);
-list.remove($redteam, $player_name);
-list.remove($all, $player_name);
-map.remove($allmap, $player_name);
-entity.teleport($player, $gamesworldloc);
-command("clear ", $player_name);
-player.kick($player);
-if(greater(math.abs(sub(list.getSize($blueteam), list.getSize($redteam))), 3)) {
-	goto("unweighted");
+if(event == "player_is_attacked") {
+	cancel = true;
+	goto("checklobby");
 }
-if(less(list.getSize($all), $playersneeded)) {
-	goto("waiting");
+if(event == "player_logout" || event == "player_giveup") {
+	gosub("leavelobbycore");
+	goto("checklobby");
 }
-if(and(or(equal(list.getSize($blueteam), 0), equal(list.getSize($redteam), 0)), equal(list.getSize($waiters), 0))) {
-	goto("unweighted");
+if(event == "custom_command") {
+	if(command == "startgame") {
+		if(perm.has(player, command)) {
+			gosub("jumpstart");
+		}
+	}
 }
 goto("checklobby");
 
 @jointeam
-if(equal($block_loc, $blueblockloc)) {
-	setVar("tempteam", "blueteam");
-} else {
-	if(equal($block_loc, $redblockloc)) {
-		setVar("tempteam", "redteam");
-	} else() {
-		goto("checklobby");
-	}
-}
-if(list.contains(getVar($tempteam), $player_name)) {
-	player.speak($player, "§6SnowGame", "§eDu befindest dich bereits in diesem Team.");
+newteam = list.getIndexOf(joinblocks, block_loc);
+newteamlist = map.get(teamidtolist, newteam);
+if(list.contains(newteamlist, player_name)) {
+	player.speak(player, gamename, "§eDu bist bereits in diesem Team");
 	goto("checklobby");
 }
-if(equal(list.getSize(getVar($tempteam)), div($gamesize, 2))) {
-	player.speak($player, "§6SnowGame", "§eDas Team ist bereits voll.");
+if(list.getSize(newteamlist) >= teamsize) {
+	player.speak(player, gamename, "§eDas Team ist bereits voll");
 	goto("checklobby");
 }
-if(greater(math.abs(sub(list.getSize(getVar($tempteam)), list.getSize($redteam))), 3)) {
-	player.speak($player, "§6SnowGame", "§eIn diesem Team sind im Moment zu viele Spieler. Joine einem anderen Team, ansonsten ist das Spiel zu unausgewogen.");
-	goto("checklobby");
+list.remove(waiters, player_name);
+yetteam = map.get(players, player_name);
+if(yetteam != null) {
+	yetteamlist = map.get(teamidtolist, yetteam);
+	list.remove(yetteamlist, player_name);
 }
-list.remove($waiters, $player_name);
-list.remove($blueteam, $player_name);
-list.remove($redteam, $player_name);
-if(equal($tempteam, "blueteam")) {
-	player.speak($player, "§6SnowGame", "§eDu bist nun im §9blauen §eTeam.");
-} else() {
-	player.speak($player, "§6SnowGame", "§eDu bist nun im §croten §eTeam.");
-}
-list.add(getVar($tempteam), $player_name);
-map.add($allmap, $player_name, $tempteam);
-removeVar("tempteam");
-if(started) {
-	goto("checklobby");
-} else {
-	goto("startgame");
-}
-
-@unweighted
-setVar("started", false);
-player.speak("all", "§6SnowGame", "§eEs herrscht ein Ungleichgewicht zwischen den Teams.");
-player.speak("all", "§6SnowGame", "§eEs wird auf weitere Spieler gewartet oder Spieler wechseln das Team.");
+list.add(newteamlist, player_name);
+map.add(players, player_name, newteam);
+player.speak(player, gamename, concat("§eDu bist nun im ", map.get(teamcolortext, newteam), "n §eTeam"));
 goto("checklobby");
 
-@startgame
-if(less(list.getSize($all), $playersneeded)) {
-	goto("waiting");
-}
-if(greater(math.abs(sub(list.getSize($blueteam), list.getSize($redteam))), 3)) { goto("unweighted"); }
-if(and(or(equal(list.getSize($blueteam), 0), equal(list.getSize($redteam), 0)), equal(list.getSize($waiters), 0))) { goto("unweighted"); }
-setVar("started", true);
-setVar("noticetime", list.getIndex($starttimes, $counterindex));
-if(equal($noticetime, 5)) {
-	setVar("i", -1);
-	while(less(inc("i"), list.getSize($all))) {
-		title.setSub(read.player(list.getIndex($all, $i)), $mapname);
-		title.send(read.player(list.getIndex($all, $i)), "§6SnowGame");
-	}
-}
-if(equal($noticetime, 0)) {
-	goto("finalstart");
-}
-setVar("noticetime2", list.getIndex($starttimes, inc("counterindex")));
-player.speak("all", "§6SnowGame", "§eDas Spiel startet in §b", $noticetime, " §eSekunden.");
-setVar("stime", mul(sub($noticetime, $noticetime2), 20));
-sgoto($stime, "startgame");
-setVar("i", -1);
-while(less(inc("i"), list.getSize($all))) {
-	setVar("p", read.player(list.getIndex($all, $i)));
-	player.playSound($p, "block.note.bass");
+@lobby
+list.add(waiters, player_name);
+map.add(nerf_map, player_name, 0);
+map.add(kills_map, player_name, 0);
+map.add(deaths_map, player_name, 0);
+display.add(player, 1, gamename);
+display.add(player, 2, mapname);
+display.add(player, 3, "Spieler: 2x10");
+return;
+
+@leavelobby
+list.remove(waiters, player_name);
+if(map.get(players, player_name) != null) {
+	teamlist = map.get(teamidtolist, map.get(players, player_name));
+	list.remove(teamlist, player_name);
 }
-goto("checklobby");
+map.remove(players, player_name);
+return;
 
 @finalstart
-setVar("no_join", true);
-setVar("phase", 1);
-player.speak("all", "§6SnowGame", "§eDas Spiel beginnt.");
-
-event.unload("block_click");
+player.speak("all", gamename, "§eDas Spiel beginnt");
+starttime = time.getMillis();
 event.load("throw_hit");
 event.load("player_toss");
-event.load("arm_swing");
 event.load("item_air_click");
-event.load("player_hurt");
-event.load("player_leave");
-setVar("starttime", time.get());
-
-while(notequal(list.getSize($waiters), 0)) {
-	setVar("pname", list.getIndex($waiters, 0));
-	setVar("p", read.player($pname));
-	list.remove($waiters, $pname);
-	if(notequal(list.getSize($blueteam), div($gamesize, 2))) {
-		if(less(list.getSize($blueteam), list.getSize($redteam))) {
-			list.add($blueteam, $pname);
-			map.add($allmap, $pname, "blueteam");
-		} else() {
-			list.add($redteam, $pname);
-			map.add($allmap, $pname, "redteam");
-		}
-	} else() {
-		list.add($redteam, $pname);
-		map.add($allmap, $pname, "redteam");
-	}
-}
 
-if(less(list.getSize($blueteam), list.getSize($redteam))) {
-	setVar("bluelifes", mul(10, list.getSize($redteam)));
-	setVar("redlifes", mul(10, list.getSize($redteam)));
-} else() {
-	setVar("bluelifes", mul(10, list.getSize($blueteam)));
-	setVar("redlifes", mul(10, list.getSize($blueteam)));
+while(list.getSize(waiters) != 0) {
+	team = getTeamWithLowestPeople();
+	teamlist = map.get(teamidtolist, team);
+	p_name = list.getIndex(waiters, 0);
+	list.add(teamlist, p_name);
+	list.remove(waiters, p_name);
 }
 
-sb.reset("all");
-sb.add("all", 4, "§r");
-sb.add("all", 3, "§6SnowGame");
-sb.add("all", 2, "§9Blaue Leben: ", $bluelifes);
-sb.add("all", 1, "§cRote Leben: ", $redlifes);
+display.add("all", 1, gamename);
+for(i = 0; i < $numberofteams; i++) {
+	map.add(lifes, i, 50);
+	display.add("all", i + 2, concat(map.get(teamcolortext2, i), "e Leben: ", 50));
+}
 
-@transfer
-setVar("i", -1);
-while(less(inc("i"), list.getSize($all))) {
-	setVar("pname", list.getIndex($all, $i));
-	setVar("p", read.player($pname));
-	setVar("tempteam", map.get($allmap, $pname));
-	player.giveItem($p, read.item("snowball:0:16"));
-	player.giveItem($p, read.item("snowball:0:16"));
-	player.giveItem($p, read.item("snowball:0:16"));
-	player.giveItem($p, read.item("snowball:0:16"));
-	player.setHunger($p, 20);
-	player.setSaturation($p, 5);
-	if(player.isSurvival($p)) {
-		if(player.isAdventure($p)) {
-			command("gamemode survival ", $pname);
+for(i = 0; i < list.getSize(all); i++) {
+	p_name = list.getIndex(all, i);
+	p = read.player(p_name);
+	tempteam = map.get(players, p_name);
+	giveSnowballs(p);
+	player.setHunger(p, 20);
+	player.setSaturation(p, 5);
+	if(player.isSurvival(p)) {
+		if(player.isAdventure(p)) {
+			player.setGamemode(p, "survival");
 		}
-	} else() {
-		command("gamemode survival ", $pname);
+	} else {
+		player.setGamemode(p, "survival");
 	}
-	if(player.hasFly($p)) {
-		command("fly ", $pname, " off");
+	if(player.hasFly(p)) {
+		player.setFly(p, false);
 	}
-	if(equal($tempteam, "blueteam")) {
-		entity.teleport($p, $bluespawnloc);
-		setVar("colorcode", 3361970);
-		player.action($p, "§9Team Blau");
-	} else() {
-		entity.teleport($p, $redspawnloc);
-		setVar("colorcode", 10040115);
-		player.action($p, "§cTeam Rot");
-	}
-	entity.setEquip($p, "head", read.item(concat("{id:'minecraft:leather_helmet',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
-	entity.setEquip($p, "chest", read.item(concat("{id:'minecraft:leather_chestplate',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
-	entity.setEquip($p, "legs", read.item(concat("{id:'minecraft:leather_leggings',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
-	entity.setEquip($p, "feet", read.item(concat("{id:'minecraft:leather_boots',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
+	color = map.get(cloth_color, tempteam);
+	entity.teleport(p, map.get(spawnlocs, tempteam));
+	player.action(p, concat("§9Team ", map.get(teamcolortext2, tempteam)));
+	entity.setEquip(p, "head", read.item(concat("{id:'minecraft:leather_helmet',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
+	entity.setEquip(p, "chest", read.item(concat("{id:'minecraft:leather_chestplate',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
+	entity.setEquip(p, "legs", read.item(concat("{id:'minecraft:leather_leggings',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
+	entity.setEquip(p, "feet", read.item(concat("{id:'minecraft:leather_boots',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
 }
 sgoto(40, "loop");
 
 @checkgame
 wait();
-setVar("player_item_type", item.getType(entity.getEquip($player, "hand")));
-if(notequal($sec_player_name, null)) {
-	setVar("sec_player_item_type", item.getType(entity.getEquip($sec_player, "hand")));
+ignoreGoto(event);
+goto("checkgame");
+
+@item_air_click
+player_item_type = item.getType(entity.getEquip(player, "hand"));
+if(player_item_type == snowball_item_type) {
+	if(list.contains(blueteam, player_name) && loc.distance(entity.getLocation(player), redspawnloc) < nerfradius) {
+		goto("nerf");
 	}
-if(event == "arm_swing" || event == "item_air_click") {
-	if(player_item_type == "minecraft:snowball") {
-		if(list.contains(blueteam, player_name) && loc.distance(entity.getLocation(player), redspawnloc) < nerfradius) {
-			goto("nerf");
-		}
-		if(list.contains(redteam, player_name) && loc.distance(entity.getLocation(player), bluespawnloc) < nerfradius) {
-			goto("nerf");
-		}
-		goto("checkgame");
+	if(list.contains(redteam, player_name) && loc.distance(entity.getLocation(player), bluespawnloc) < nerfradius) {
+		goto("nerf");
 	}
 }
-if(event == "throw_hit") {
-	if(is_entity_hit) {
-		sec_player_name = player_name;
-		sec_player = player;
-		player = entity_hit;
-		player_name = player.getName(player);
-		if(list.contains($blueteam, $player_name) && invert(list.contains($blueteam, $sec_player_name))) {
-			goto("hitcore");
-		}
-		if(list.contains($redteam, $player_name) && invert(list.contains($redteam, $sec_player_name))) {
-			goto("hitcore");
-		}
-	}	
-}	
-if(event == "player_hurt") {
-	setVar(cancel, true);
-	goto("checkgame");
-}
-if(event == "block_break" || event == "block_place") {
-	setVar(cancel, true);
-	goto("checkgame");
-}
-if(event == "player_toss") {
-	setVar(cancel, true);
-	goto("checkgame");
-}
-if(equal($event, "player_giveup")) {
-	entity.teleport(player, gamesworldloc);
-	goto("leavegame");
-}
-if(event == "player_leave") {
-	goto("leavegame");
-}
 goto("checkgame");
 
-@loop
-setVar("i", -1);
-while(less(inc("i"), list.getSize($all))) {
-	setVar("pname", list.getIndex($all, $i));
-	setVar("p", read.player($pname));
-	setVar("tempteam", map.get($allmap, $pname));
-	player.setHunger($p, 20);
-	player.setSaturation($p, 5);
-	if(equal($tempteam, "blueteam")) {
-		setVar("colorcode", 3361970);
-		player.action($p, "§9Team Blau");
-	} else() {
-		setVar("colorcode", 10040115);
-		player.action($p, "§cTeam Rot");
+@throw_hit
+if(is_entity_hit) {
+	sec_player_name = player_name;
+	sec_player = player;
+	player = entity_hit;
+	player_name = player.getName(player);
+	if(list.contains(blueteam, player_name) && invert(list.contains(blueteam, sec_player_name))) {
+		goto("hitcore");
 	}
-	entity.setEquip($p, "head", read.item(concat("{id:'minecraft:leather_helmet',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
-	entity.setEquip($p, "chest", read.item(concat("{id:'minecraft:leather_chestplate',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
-	entity.setEquip($p, "legs", read.item(concat("{id:'minecraft:leather_leggings',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
-	entity.setEquip($p, "feet", read.item(concat("{id:'minecraft:leather_boots',Count:1b,tag:{display:{color:", $colorcode, "}},Damage:0s}")));
-}
-sgoto(40, "loop");
+	if(list.contains(redteam, player_name) && invert(list.contains(redteam, sec_player_name))) {
+		goto("hitcore");
+	}
+}	
 goto("checkgame");
 
-@equiprespawn
-command("clear ", pname);
-player.giveItem(p, read.item("snowball:0:16"));
-player.giveItem(p, read.item("snowball:0:16"));
-player.giveItem(p, read.item("snowball:0:16"));
-player.giveItem(p, read.item("snowball:0:16"));
-inc(concat(pname, "deaths"));
+@player_is_attacked
+@player_toss
+@block_click
+cancel = true;
 goto("checkgame");
 
-@nerf
-entity.addEffect($player, "wither", 20, 5);
-entity.addEffect($player, "slowness", 100, 3);
-inc(concat($player_name, "nerf"));
-if(equal(getVar(concat($player_name, "nerf")), 10)) {
-	setVar(concat($player_name, "nerf"), 0);
-	command("clear ", $player_name);
-	command("heal ", $player_name);
-	player.giveItem($player, read.item("snowball:0:16"));
-	player.giveItem($player, read.item("snowball:0:16"));
-	player.giveItem($player, read.item("snowball:0:16"));
-	player.giveItem($player, read.item("snowball:0:16"));
-	inc(concat($player_name, "deaths"));
-	if(equal(map.get($allmap, $player_name), "blueteam")) {
-		setVar("bluelifes", sub($bluelifes, 1));
-		sb.add("all", 2, "§9Blaue Leben: ", $bluelifes);
-		entity.teleport($player, $bluespawnloc);
-	} else() {
-		setVar("redlifes", sub($redlifes, 1));
-		sb.add("all", 1, "§cRote Leben: ", $redlifes);
-		entity.teleport($player, $redspawnloc);
-	}
+@loop
+for(i = 0; i < list.getSize(all); i++) {
+	p_name = list.getIndex(all, i);
+	p = read.player(p_name);
+	tempteam = map.get(players, p_name);
+	player.setHunger(p, 20);
+	player.setSaturation(p, 5);
+	color = map.get(cloth_color, tempteam);
+	
+	player.action(p, concat("§9Team ", map.get(teamcolortext2, tempteam)));
+	entity.setEquip(p, "head", read.item(concat("{id:'minecraft:leather_helmet',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
+	entity.setEquip(p, "chest", read.item(concat("{id:'minecraft:leather_chestplate',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
+	entity.setEquip(p, "legs", read.item(concat("{id:'minecraft:leather_leggings',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
+	entity.setEquip(p, "feet", read.item(concat("{id:'minecraft:leather_boots',Count:1b,tag:{display:{color:", color, "}},Damage:0s}")));
 }
+sgoto(40, "loop");
 goto("checkgame");
 
 @hitcore
-setVar("cancel", true);
-command("clear ", $player_name);
-player.giveItem($player, read.item("snowball:0:16"));
-player.giveItem($player, read.item("snowball:0:16"));
-player.giveItem($player, read.item("snowball:0:16"));
-player.giveItem($player, read.item("snowball:0:16"));
-inc(concat($sec_player_name, "kills"));
-inc(concat($player_name, "deaths"));
-if(equal(map.get($allmap, $player_name), "blueteam")) {
-	setVar("bluelifes", sub($bluelifes, 1));
-	sb.add("all", 2, "§9Blaue Leben: ", $bluelifes);
-	entity.teleport($player, $bluespawnloc);
+cancel = true;
+command("clear ", player_name);
+giveSnowballs(player);
+map.add(kills_map, sec_player_name, map.get(kills_map, sec_player_name) + 1);
+map.add(deaths_map, player_name, map.get(deaths_map, player_name) + 1);
+if(equal(map.get(players, player_name), "blueteam")) {
+	setVar("bluelifes", sub(bluelifes, 1));
+	sb.add("all", 2, "§9Blaue Leben: ", bluelifes);
+	
 } else() {
-	setVar("redlifes", sub($redlifes, 1));
-	sb.add("all", 1, "§cRote Leben: ", $redlifes);
-	entity.teleport($player, $redspawnloc);
-}
-
-@checkplayability
-if(or(lessequal($bluelifes, 0), equal(list.getSize($blueteam), 0))) {
-	player.speak("all", "§6SnowGame", "§eDas §crote §eTeam hat gewonnen.");
-	goto("win");
-}
-if(or(lessequal($redlifes, 0), equal(list.getSize($redteam), 0))) {
-	player.speak("all", "§6SnowGame §eDas §9blaue §eTeam hat gewonnen.");
-	goto("win");
-}
+	setVar("redlifes", sub(redlifes, 1));
+	sb.add("all", 1, "§cRote Leben: ", redlifes);
+	
+}
+tempteam = map.get(players, player_name);
+loc = map.get(spawnlocs, tempteam);
+entity.teleport(player, loc);
+checkPlayability(tempteam);
 goto("checkgame");
 
 @win
-setVar("endtime", time.get());
+endtime = time.getMillis();
 waitFor(1);
 setVar("i", -1);
-while(less(inc("i"), list.getSize($all))) {
-	setVar("pname", list.getIndex($all, $i));
-	setVar("p", read.player($pname));
-	sb.reset($p);
-	entity.teleport($p, $gamesworldloc);
-	entity.setHealth($p, 20);
-	player.setHunger($p, 20);
-	player.setSaturation($p, 5);
-	command("clear ", $pname);
-	command("heal ", $pname);
-	@showstats
-	player.speak($p, "§6SnowGame", "§7-= §eStatistik dieses Spiels §7=-");
-	if($showtime) {
-		setVar("time", math.round(div(sub($endtime, $starttime), 1000)));
-		player.speak($p, "§6SnowGame", "§eZeit: ", math.round(div($time, 60)), " Minuten ", math.mod($time, 60), " Sekunden");
-	}
-	player.speak($p, "§6SnowGame", "§eKills: ", getVar(concat($pname, "kills")));
-	player.speak($p, "§6SnowGame", "§eDeaths: ", getVar(concat($pname, "deaths")));
-	if(notequal(getVar(concat($pname, "deaths")), 0)) {
-		setVar("kd", div(getVar(concat($pname, "kills")), getVar(concat($pname, "deaths"))));
-		player.speak($p, "§6SnowGame", "§eK/D: ", math.roundcomma($kd, 2));
-	}
-	if(equal(ggv($pname, "globalsnowkills"), null)) { sgv($pname, "globalsnowkills", 0); }
-	sgv($pname, "globalsnowkills", add(ggv($pname, "globalsnowkills"), getVar(concat($pname, "kills"))));
-	gmap.add("snowranks", player.getUuid($p), ggv($pname, "globalsnowkills"));
-	gmap.toTable("snowrankstable", "snowranks");
-	table.setSortColumn($snowrankstable, 1);
-	table.sort($snowrankstable);
-	table.reverse($snowrankstable);
-	table.setSortColumn($snowrankstable, 0);
-	player.speak($p, "§6SnowGame", "§eDein Rang: ", add(table.getIndexOf($snowrankstable, player.getUuid($pname)), 1));
-	sb.reset($p);
-	if(invert($showtime)) {
-		return();
-	}
+while(less(inc("i"), list.getSize(all))) {
+	setVar("pname", list.getIndex(all, i));
+	setVar("p", read.player(pname));
+	sb.reset(p);
+	entity.teleport(p, gamesworldloc);
+	entity.setHealth(p, 20);
+	player.setHunger(p, 20);
+	player.setSaturation(p, 5);
+	player.clearInventory(p);
+	command("heal ", pname);
+	showstats(p, true, true);
 }
 entity.removeAll("net.minecraft.entity.item.EntityItem", middleloc, radius);
 term();
 
 @leavegame
-if(equal(map.get($allmap, $player_name), "blueteam")) {
+if(equal(map.get(players, player_name), "blueteam")) {
 	setVar("color", "§9");
 } else() {
 	setVar("color", "§c");
 }
-player.speak("all", "§6SnowGame", $color, $player_name, " §ehat das Spiel verlassen");
-sb.reset($player);
-command("clear ", $player_name);
-command("heal ", $player_name);
-list.remove($blueteam, $player_name);
-list.remove($redteam, $player_name);
-list.remove($all, $player_name);
-map.remove($allmap, $player_name);
-entity.setHealth($player, 20);
-player.setHunger($player, 20);
-player.setSaturation($player, 5);
-player.kick($player);
-setVar("showtime", false);
-gosub("showstats");
-setVar("showtime", true);
+player.speak("all", gamename, color, player_name, " §ehat das Spiel verlassen");
+sb.reset(player);
+command("clear ", player_name);
+command("heal ", player_name);
+list.remove(blueteam, player_name);
+list.remove(redteam, player_name);
+list.remove(all, player_name);
+map.remove(players, player_name);
+entity.setHealth(player, 20);
+player.setHunger(player, 20);
+player.setSaturation(player, 5);
+player.kick(player);
+showstats(player, false, false);
 goto("checkplayability");
+
+@player_giveup
+@player_logout
+entity.teleport(player, gamesworldloc);
+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);
+teamlist = map.get(teamidtolist, tempteam);
+list.remove(teamlist, player_name);
+map.add(playersinteam, tempteam, map.get(playersinteam, tempteam) - 1);
+map.remove(players, player_name);
+resetplayer(player);
+gosub("sidebar");
+if(!checkPlayability(tempteam)) {
+	goto("colorgameover");
+}
+goto("checkgame");
+
+
+function checkPlayability(tempteam) {
+	if(map.get($playersinteam, tempteam) == 0) {
+		return false;
+	}
+	return true;
+}
+
+function showstats(player, show_time, won) { //Player player, Boolean show_time, Boolean won
+	player_name = player.getName(player);
+	player_id = player.getId(player);
+	last_record = getPoints($rankingtable, player_id);
+	playedgames = getPlayedGames($rankingtable, player_id) + 1;
+	record = last_record + map.get($bedkills, player_name);
+	setRanking($rankingtable, player_id, record, playedgames);
+	
+	player.speak(player, $gamename, "§r---= §eStatistik §r=---");
+	if(show_time) {
+		time = ($endtime - $starttime) / 1000;
+		player.speak(player, $gamename, concat("§eDauer: §r", text.number(math.rounddown(time / 60)), " min ", text.number(math.round(time % 60)), " s"));
+	}
+	kills = map.get($kills_map, player_name);
+	deaths = map.get($deaths_map, player_name);
+	player.speak(player, $gamename, concat("§eKills: §r", text.number(kills)));
+	player.speak(player, $gamename, concat("§eDeaths: §r", text.number(deaths)));
+	if(deaths != 0) {
+		kd = kills / deaths;
+		player.speak(player, $gamename, concat("§eK/D: §r", text.number(math.roundcomma(kd, 2))));
+	}
+	
+	player.speak(player, $gamename, concat("§eSpiele gespielt: §r", text.number(playedgames)));
+	wongames = ggv(player, "snowwon");
+	if(wongames == null) {
+		wongames = 0;
+	}
+	if(won) {
+		wongames++;
+	}
+	sgv(player, "snowwon", wongames);
+	player.speak(player, $gamename, concat("§eSpiele gewonnen: §r", text.number(wongames)));
+	return;
+}
+
+function getTeamWithLowestPeople() {
+	teamlist = map.get($teamidtolist, 0);
+	lowest = list.getSize(teamlist);
+	lowestteam = 0;
+	for(i = 1; i < $numberofteams; i++) {
+		teamlist = map.get($teamidtolist, i);
+		size = list.getSize(teamlist);
+		if(size < lowest) {
+			lowest = size;
+			lowestteam = i;
+		}
+	}
+	return lowestteam;
+}
+
+function giveSnowballs(player) {
+	player.giveItem(player, $snow_stack);
+	player.giveItem(player, $snow_stack);
+	player.giveItem(player, $snow_stack);
+	player.giveItem(player, $snow_stack);
+}
+
+function nerf(player) {
+	player_name = player.getName(player);
+	entity.addEffect(player, "wither", 20, 5);
+	entity.addEffect(player, "slowness", 100, 3);
+	nerf_counter = map.get(nerf_map, player_name);
+	map.add(nerf_map, player_name, nerf_counter + 1);
+	if(nerf_counter == 10) {
+		map.add(nerf_map, player_name, 0);
+		player.clearInventory(player);
+		command("heal ", player_name);
+		giveSnowballs(player);
+		map.add(deaths_map, player_name, map.get(deaths_map, player_name) + 1);
+		if(equal(map.get(players, player_name), "blueteam")) {
+			setVar("bluelifes", sub(bluelifes, 1));
+			sb.add("all", 2, "§9Blaue Leben: ", bluelifes);
+			entity.teleport(player, bluespawnloc);
+		} else() {
+			setVar("redlifes", sub(redlifes, 1));
+			sb.add("all", 1, "§cRote Leben: ", redlifes);
+			entity.teleport(player, redspawnloc);
+		}
+		entity.teleport(p, map.get(spawnlocs, tempteam));
+	}
+	return;
+}

+ 9 - 9
minigames/spleef/spleef.txt

@@ -1,19 +1,18 @@
-world.load("survival");
+/*world.load("survival");
 world.load("world_2");
 world.load("games");
 world.load("skyblock");
 world.load("gpvpnew");
 world.load("colony");
 world.load("iceworld");
-
-msg("dev", "§0-----------------------------------------------------");
+*/
 
 script.start("system/perms", "utils/u_perms");
 script.start("system/chat", "utils/u_ranks");
 script.start("system/commands", "utils/u_general", "utils/u_ranks", "utils/u_plots", "utils/u_perms");
 //script.start("global/chatbuffer");
-script.start("global/gamecenter", "minigames/gamescore");
-script.start("global/copyisland");
+//	script.start("global/gamecenter", "minigames/gamescore");
+//script.start("global/copyisland");
 //script.start("global/skyblock");
 script.start("global/friends", "utils/u_general", "utils/u_mail", "utils/u_friend");
 script.start("system/playtime");
@@ -22,10 +21,11 @@ script.start("global/mailsystem", "utils/u_general", "utils/u_mail");
 script.start("global/jailsystem");
 script.start("global/doors");
 script.start("global/chestshops");
-script.start("global/ranklist", "minigames/gamescore");
+//	script.start("global/ranklist", "minigames/gamescore");
 //script.start("global/system/drops");
-script.start("system/skills", "utils/u_skills", "utils/u_jobs", "utils/u_gpvp", "utils/u_general", "utils/u_plots");
+//	script.start("system/skills", "utils/u_skills", "utils/u_jobs", "utils/u_gpvp", "utils/u_general", "utils/u_plots");
 //script.start("global/system/ranks");
 //script.start("global/xmas");
-script.start("gildenpvp/gpvp", "utils/u_gpvp", "utils/u_general", "utils/u_mail", "utils/u_friend", "utils/u_jobs", "utils/u_plots");
-//script.start("colony/colony");
+//	script.start("gildenpvp/gpvp", "utils/u_gpvp", "utils/u_general", "utils/u_mail", "utils/u_friend", "utils/u_jobs", "utils/u_plots");
+//script.start("colony/colony");*/
+term();

+ 1 - 1
storydorf/floralisdorf.txt

@@ -160,7 +160,7 @@ if(!list.contains(nomessageworlds, world)) {
 goto("wait");
 
 function speakToWorld(player, world, message) { //speakToWorld(player, world, message)
-	players.toWorldList(worldlist, world);
+	worldlist = players.toWorldList(world);
 	for(i = 0; i <= list.getSize(worldlist) - 1; i++) {
 		msg(list.getIndex(worldlist, i), message);
 	}

+ 224 - 41
system/commands.txt

@@ -1,6 +1,9 @@
 waitfor(1);
 command.clear();
 
+command.add("gamerule");
+command.add("time");
+command.add("weather");
 command.add("stats");
 command.add("party");
 command.add("game");
@@ -9,8 +12,8 @@ command.add("setrank");
 command.add("tpall");
 command.add("tipp");
 command.add("help");
-command.add("grow");
-command.add("plant");
+//command.add("grow");
+//command.add("plant");
 command.add("start");
 command.add("senditem");
 command.add("invsee");
@@ -31,18 +34,18 @@ command.add("f");
 command.add("placearte");
 command.add("slots");
 command.add("skill");
-command.add("pinfo");
-command.add("playerinfo");
-command.add("bank");
-command.add("money");
+command.add("pinfo"); //Gpvp
+command.add("playerinfo"); //Gpvp
+command.add("bank"); //Gpvp
+command.add("money"); //Gpvp
 command.add("human");
 command.add("h");
 command.add("bug");
 command.add("report");
-command.add("rocket");
+//command.add("rocket");
 command.add("ticket");
 command.add("mail");
-command.add("ass");
+//command.add("ass");
 command.add("shop");
 command.add("coord");
 command.add("coords");
@@ -52,6 +55,7 @@ command.add("head");
 command.add("skull");
 command.add("inv");
 command.add("marco");
+command.add("ping");
 command.add("p");
 command.add("plot");
 command.add("speed");
@@ -64,7 +68,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");
@@ -77,6 +81,7 @@ command.add("lastseen");
 command.add("world");
 command.add("color");
 command.add("setspawn");
+command.add("setgamesspawn");
 command.add("spawn");
 command.add("back");
 command.add("tppos");
@@ -93,6 +98,9 @@ command.add("copyisland");
 command.add("ci");
 
 list.new(command_list);
+list.add(command_list, "weather");
+list.add(command_list, "time");
+list.add(command_list, "gamerule");
 list.add(command_list, "stats");
 list.add(command_list, "party");
 list.add(command_list, "game");
@@ -114,10 +122,10 @@ 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, "rocket");
 list.add(command_list, "ticket");
 list.add(command_list, "mail");
-list.add(command_list, "ass");
+//list.add(command_list, "ass");
 list.add(command_list, "shop");
 list.add(command_list, "sign");
 list.add(command_list, "coords");
@@ -126,6 +134,7 @@ list.add(command_list, "head");
 list.add(command_list, "skull");
 list.add(command_list, "inv");
 list.add(command_list, "marco");
+list.add(command_list, "ping");
 list.add(command_list, "plot");
 list.add(command_list, "speed");
 list.add(command_list, "mayo");
@@ -147,6 +156,7 @@ list.add(command_list, "delwarp");
 list.add(command_list, "lastseen");
 list.add(command_list, "color");
 list.add(command_list, "setspawn");
+list.add(command_list, "setgamesspawn");
 list.add(command_list, "spawn");
 list.add(command_list, "back");
 list.add(command_list, "tppos");
@@ -154,14 +164,11 @@ list.add(command_list, "feed");
 list.add(command_list, "fly");
 list.add(command_list, "heal");
 list.add(command_list, "iteminfo");
-list.add(command_list, "/set");
-list.add(command_list, "grow");
-list.add(command_list, "plant");
+//list.add(command_list, "grow");
+//list.add(command_list, "plant");
 list.add(command_list, "start");
 list.add(command_list, "games");
 list.add(command_list, "top");
-list.add(command_list, "heal");
-list.add(command_list, "butcher");
 list.add(command_list, "world");
 list.add(command_list, "elytra");
 list.add(command_list, "copyisland");
@@ -255,6 +262,7 @@ msg("dev", "§bCommands §rwurden geladen");
 wait();
 if(event == "custom_command") {
 	//Permission-Check
+	command = text.toLowerCase(command);
 	origin = map.get(aliasmap, command);
 	if(origin != null) {
 		command = origin;
@@ -474,6 +482,146 @@ for(i = 0; i <= list.getSize(online_list) - 1; i++) {
 player.speak(player, "§6Commands", text.number(list.getSize(online_list)), " Spieler wurden zu dir teleportiert.");
 goto("wait");
 
+@weather
+if(size == 0) {
+	@weather_syntax
+	player.speak(player, "§eWeather", "§r/weather ...");
+	msg(player, "§e - clear [duration]");
+	msg(player, "§e - rain [duration]");
+	msg(player, "§e - thunder [duration]");
+	goto("wait");
+}
+arg0 = list.getIndex(args, 0);
+if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
+	if(size == 2) {
+		duration = list.getIndex(args, 1);
+		if(!isDouble(duration)) {
+			player.speak(player, "§6Commands", "§rZahl erwartet");
+			goto("wait");
+		}
+		if(duration < 0) {
+			player.speak(player, "§6Commands", "§rPositive Zahl erwartet");
+			goto("wait");
+		}
+	} else {
+		duration = 650;
+	}
+	world = loc.getWorld(entity.getLocation(player));
+	if(arg0 == "clear") {
+		if(size > 2) {
+			player.speak(player, "§6Commands", "§r/weather clear [duration]");
+			goto("wait");
+		}
+		world.clearWeather(world, duration);
+		player.speak(player, "§6Commands", "§rWetter wurde auf Klar gestellt");
+		goto("wait");
+	}
+	if(arg0 == "rain") {
+		if(size > 2) {
+			player.speak(player, "§6Commands", "§r/weather rain [duration]");
+			goto("wait");
+		}
+		world.setRain(world, duration);
+		player.speak(player, "§6Commands", "§rWetter wurde auf Regen gestellt");
+		goto("wait");
+	}
+	if(arg0 == "thunder") {
+		if(size > 2) {
+			player.speak(player, "§6Commands", "§r/weather thunder [duration]");
+			goto("wait");
+		}
+		world.setThunder(world, duration);
+		player.speak(player, "§6Commands", "§rWetter wurde auf Gewitter gestellt");
+		goto("wait");
+	}
+	goto("wait");
+}
+goto("weather_syntax");
+
+@time
+if(size == 0) {
+	@time_syntax
+	player.speak(player, "§eTime", "§r/time ...");
+	msg(player, "§e - set <day / noon / night / midnight>");
+	msg(player, "§e - add <time>");
+	goto("wait");
+}
+arg0 = list.getIndex(args, 0);
+if(arg0 == "set") {
+	if(size != 2) {
+		player.speak(player, "§6Commands", "§r/time set <day / noon / night / midnight>");
+		goto("wait");
+	}
+	text = list.getIndex(args, 1);
+	if(text == "day") {
+		newtime = 1000;
+	} elseif(text == "noon") {
+		newtime = 6000;
+	} elseif(text == "night") {
+		newtime = 13000;
+	} elseif(text == "midnight") {
+		newtime = 18000;
+	} else {
+		player.speak(player, "§6Commands", "§r/time set <day / noon / night / midnight>");
+		goto("wait");
+	}
+	world = loc.getWorld(entity.getLocation(player));
+	world.setTime(world, newtime);
+	player.speak(player, "§6Commands", "§rZeit wurde auf ", text.number(newtime), " gesetzt");
+	goto("wait");
+}
+if(arg0 == "add") {
+	if(size != 2) {
+		player.speak(player, "§6Commands", "§r/time add <time>");
+		goto("wait");
+	}
+	addTime = list.getIndex(args, 1);
+	if(!isDouble(addTime)) {
+		player.speak(player, "§6Commands", "§rZahl erwartet");
+		goto("wait");
+	}
+	if(addTime < 0) {
+		player.speak(player, "§6Commands", "§rPositive Zahl erwartet");
+		goto("wait");
+	}
+	world = loc.getWorld(entity.getLocation(player));
+	newtime = world.getTime(world) + addTime;
+	while(newtime >= 24000) {
+		newtime -= 24000;
+	}
+	world.setTime(world, newtime);
+	player.speak(player, "§6Commands", "§rZeit wurde auf ", text.number(newtime), " gesetzt");
+	goto("wait");
+}
+goto("time_syntax");
+
+@gamerule
+world = loc.getWorld(entity.getLocation(player));
+if(size == 0) {
+	player.speak(player, "§6Commands", "§r/gamerule <gamerule> [value]");
+	goto("wait");
+}
+gamerule = list.getIndex(args, 0);
+if(size == 1) {
+	player.speak(player, "§6Commands", gamerule, " ", world.getGamerule(world, gamerule));
+	goto("wait");
+}
+if(size == 2) {
+	input = list.getIndex(args, 1);
+	try {
+		world.setGamerule(world, gamerule, input);
+		if(world.getGamerule(world, gamerule) == null) {
+			player.speak(player, "§6Commands", "Falsche Eingabe");
+		} else {
+			player.speak(player, "§6Commands", gamerule, " auf ", input, " gesetzt");
+		}
+	} catch {
+		player.speak(player, "§6Commands", "Falsche Eingabe");
+	}
+	goto("wait");
+}
+goto("wait");
+
 @tipp
 if(size == 0) {
 	player.speak(player, "§eTipps", "§r/tipp ...");
@@ -789,6 +937,11 @@ entity.teleport(player, loc.mod(player_loc, 0, 1, 0));
 goto("wait");
 
 @games
+world = loc.getWorld(gamesspawn);
+if(world == null) {
+	player.speak(player, "§6Commands", "Diese Welt ist nicht geladen.");
+	goto("wait");
+}
 setBackPos(player);
 entity.teleport(player, gamesspawn);
 goto("wait");
@@ -834,7 +987,7 @@ if(read.player(pname) != null) {
 	}
 	databank.close(result);
 	databank.close(onlineSinceStatement);
-	msg(player, "§aOnline seit: ", text.number(since_hours), " Stunden ", text.number(mod_minutes), " Minuten");
+	msg(player, concat("§aOnline seit: §r", text.number(since_hours), " Stunden ", text.number(mod_minutes), " Minuten"));
 } else {
 	msg(player, "§6Status: ", "§cOffline");
 }
@@ -847,7 +1000,7 @@ while(databank.next(result)) {
 	minutes = databank.getInt(result, 1) / 1000 / 60 + since_minutes;
 	hours = text.number(math.roundDown(minutes / 60));
 	minutes = text.number(minutes % 60);
-	msg(player, "§6Spielzeit gesamt: ", hours, " Stunden ", minutes, " Minuten");
+	msg(player, concat("§6Spielzeit gesamt: §r", hours, " Stunden ", minutes, " Minuten"));
 }
 databank.close(result);
 databank.close(playtimeStatement);
@@ -864,7 +1017,7 @@ while(databank.next(result)) {
 	minutes = databank.getInt(result, 1) / 1000 / 60 + since_minutes;
 	hours = text.number(math.roundDown(minutes / 60));
 	minutes = text.number(minutes % 60);
-	msg(player, "§6Spielzeit heute: ", hours, " Stunden ", minutes, " Minuten");
+	msg(player, concat("§6Spielzeit heute: §r", hours, " Stunden ", minutes, " Minuten"));
 }
 databank.close(result);
 databank.close(sincePlaytimeStatement);
@@ -879,7 +1032,7 @@ while(databank.next(result)) {
 	minutes = databank.getInt(result, 1) / 1000 / 60 + since_minutes;
 	hours = text.number(math.roundDown(minutes / 60));
 	minutes = text.number(minutes % 60);
-	msg(player, "§6Spielzeit 30 Tage: ", hours, " Stunden ", minutes, " Minuten");
+	msg(player, concat("§6Spielzeit 30 Tage: §r", hours, " Stunden ", minutes, " Minuten"));
 }
 databank.close(result);
 databank.close(sincePlaytimeStatement);
@@ -1110,13 +1263,13 @@ goto("wait");
 
 @human
 if(size == 0) {
-	player.speak(player, "§vDataTools", "§r/human ...");
-	msg(player, "§v - spawn ", "Spawnt einen Human");
-	msg(player, "§v - set <name> ", "Setzt den Skin");
-	msg(player, "§v - kill ", "Tötet einen Human");
-	msg(player, "§v - size <scale> ", "Setzt die Größenskalierung");
-	msg(player, "§v - steve ", "Schaltet auf Steve Skin");
-	msg(player, "§v - alex ", "Schaltet auf Alex Skin");
+	player.speak(player, "§vDataTools §r/human ...");
+	msg(player, concat("§v - spawn §rSpawnt einen Human"));
+	msg(player, concat("§v - set <name> §rSetzt den Skin"));
+	msg(player, concat("§v - kill §rTötet einen Human"));
+	msg(player, concat("§v - size <scale> §rSetzt die Größenskalierung"));
+	msg(player, concat("§v - steve §rSchaltet auf Steve Skin"));
+	msg(player, concat("§v - alex §rSchaltet auf Alex Skin"));
 	goto("wait");
 }
 arg0 = list.getIndex(args, 0);
@@ -1134,6 +1287,9 @@ human = list.getIndex(templist, 0);
 if(arg0 == "set") {
 	arg1 = list.getIndex(args, 1);
 	uuid = player.getUuid(arg1);
+	if(uuid == null) {
+		uuid = arg1;
+	}
 	human.setSkin(human, uuid);
 	player.speak(player, "§vDataTools", "Skin gesetzt.");
 	goto("wait");
@@ -1194,7 +1350,7 @@ if(arg0 == "remove") {
 goto("wait");
 
 @coords
-target = player.getTarget(player, 5, true);
+target = player.getTarget(player, 5, false, false);
 targettype = block.getType(target);
 if(targettype == airitem) {
 	player.speak(player, "§6Commands", "Du musst auf einen Block gerichtet sein.");
@@ -1206,7 +1362,7 @@ y = text.Number(loc.getY(target));
 z = text.Number(loc.getZ(target));
 msg(player, "§6Welt: §r", world.getName(loc.getWorld(target)));
 msg(player, "§6Koordinaten: §r", x, " / ", y, " / ", z);
-msg(player, "§6Block: §r", targettype, " ", text.number(block.getData(target)));
+msg(player, "§6Block: §r", targettype);
 goto("wait");
 
 @sign
@@ -1214,9 +1370,9 @@ if(size == 0) {
 	player.speak(player, "§6Commands", "/sign <1-4> [text]");
 	goto("wait");
 }
-target = player.getTarget(player, 5, true);
+target = player.getTarget(player, 5, false, false);
 targettype = block.getType(target);
-if(!(targettype == "minecraft:sign" || targettype == "minecraft:wall_sign")) {
+if(!(targettype == "minecraft:oak_sign" || targettype == "minecraft:oak_wall_sign" || targettype == "minecraft:spruce_sign" || targettype == "minecraft:spruce_wall_sign" || targettype == "minecraft:birch_sign" || targettype == "minecraft:birch_wall_sign" || targettype == "minecraft:jungle_sign" || targettype == "minecraft:jungle_wall_sign" || targettype == "minecraft:acacia_sign" || targettype == "minecraft:acacia_wall_sign" || targettype == "minecraft:dark_oak_sign" || targettype == "minecraft:dark_oak_wall_sign")) {
 	player.speak(player, "§6Commands", "Du bist nicht auf ein Schild gerichtet.");
 	goto("wait");
 }
@@ -1288,6 +1444,10 @@ goto("wait");
 msg(player, "polo");
 goto("wait");
 
+@ping
+msg(player, "pong");
+goto("wait");
+
 @elytra
 entity.setEquip(player, "chest", read.item("minecraft:elytra"));
 player.speak(player, "§6Commands", "§rElytra? Done");
@@ -1926,8 +2086,13 @@ if(location == null) {
 	player.speak(player, "§6Commands", "Dieser Home existiert nicht.");
 	goto("wait");
 }
-setBackPos(player);
 location = read.location(location);
+world = loc.getWorld(location);
+if(world == null) {
+	player.speak(player, "§6Commands", "Diese Welt ist nicht geladen.");
+	goto("wait");
+}
+setBackPos(player);
 checkInvChange(player, location);
 entity.teleport(player, location);
 goto("wait");
@@ -2011,7 +2176,13 @@ if(size == 2) {
 		player.speak(player, "§6Commands", affectedname, " wurde zum Warp ", warpname, " teleportiert.");
 	}
 }
-entity.teleport(affectedplayer, read.location(warploc));
+warploc = read.location(warploc);
+world = loc.getWorld(warploc);
+if(world == null) {
+	player.speak(player, "§6Commands", "Diese Welt ist nicht geladen.");
+	goto("wait");
+}
+entity.teleport(affectedplayer, warploc);
 player.speak(affectedplayer, "§6Commands", "Du wurdest zum Warp ", warpname, " teleportiert.");
 goto("wait");
 
@@ -2109,14 +2280,12 @@ seenStatement = databank.prepare("SELECT logouttime FROM logoutdata WHERE player
 databank.setInt(seenStatement, 1, player.getId(seen_uuid));
 result = databank.execute(seenStatement);
 varset = false;
-while(databank.next(result))
-{
+while(databank.next(result)) {
 	time = time.new(calendar, databank.getLong(result, 1));
 	dateformat = concat(text.number(time.getDay(calendar)), ".", text.number(time.getMonth(calendar)), ".", text.number(time.getYear(calendar)));
 	clockformat = concat(text.number(time.getHour(calendar)), ":", text.number(time.getMinute(calendar)));
     player.speak(player, "§6Commands", seen_name, " war zuletzt am ",  dateformat, " um ",  clockformat, " online.");
 	varset = true;
-	
 }
 databank.close(result);
 databank.close(seenStatement);
@@ -2144,8 +2313,7 @@ player.speak(player, "§6Commands", "Zuletzt waren online:");
 lastseenStatement = databank.prepare("SELECT player_id, logouttime FROM logoutdata ORDER BY logouttime DESC LIMIT ?;");
 databank.setInt(lastseenStatement, 1, amount);
 result = databank.execute(lastseenStatement);
-while(databank.next(result))
-{
+while(databank.next(result)) {
 	id = databank.getInt(result, 1);
 	time = time.new(calendar, databank.getLong(result, 2));
 	year = text.number(time.getYear(calendar));
@@ -2287,8 +2455,13 @@ if(location == null) {
 	player.speak(player, "§6Commands", "Keine Back-Location vorhanden.");
 	goto("wait");
 }
-setBackPos(affectedplayer);
 location = read.location(location);
+world = loc.getWorld(location);
+if(world == null) {
+	player.speak(player, "§6Commands", "Diese Welt ist nicht geladen.");
+	goto("wait");
+}
+setBackPos(affectedplayer);
 checkInvChange(affectedplayer, location);
 entity.teleport(affectedplayer, location);
 goto("wait");
@@ -2311,13 +2484,23 @@ msg(player, "  &o §o(kursiv)");
 msg(player, "  &k §kwusigusi");
 goto("wait");
 
+@setgamesspawn
+if(size > 0) {
+	player.speak(player, "§6Commands", "/setgamesspawn");
+	goto("wait");
+}
+gamesspawn = text.location(entity.getLocation(player));
+sgv("SERVER", "gamesspawn", gamesspawn);
+player.speak(player, "§6Commands", "Der neue Games-Spawn wurde gesetzt.");
+goto("wait");
+
 @setspawn
 if(size > 0) {
 	player.speak(player, "§6Commands", "/setspawn");
 	goto("wait");
 }
-location = text.location(entity.getLocation(player));
-sgv("SERVER", "serverspawn", location);
+serverspawn = text.location(entity.getLocation(player));
+sgv("SERVER", "serverspawn", serverspawn);
 player.speak(player, "§6Commands", "Der neue Spawn wurde gesetzt.");
 goto("wait");
 

+ 5 - 1
system/jobs.txt

@@ -1,6 +1,6 @@
 //-------------------------
 // Gruppe 0 Default, hat jeder Spieler
-// Gruppe 1 Worldedit, nicht bearbeiten!
+// Gruppe 1 Worldedit, nicht bearbeiten! Gamemode creative erforderlich (für non-OP)
 //-------------------------
 
 executeOnce = databank.prepare("CREATE TABLE IF NOT EXISTS playerperms (player_id INT NOT NULL, perm_id INT NOT NULL, PRIMARY KEY(player_id, perm_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);");
@@ -78,6 +78,8 @@ perm.registerGroup(0, "stats");
 
 //Mods-Rechte
 perm.registerGroup(2, "isMod");
+perm.registerGroup(2, "execute");
+perm.registerGroup(2, "setblock");
 perm.registerGroup(2, "startgame");
 perm.registerGroup(2, "perm");
 perm.registerGroup(2, "copyisland");
@@ -90,6 +92,8 @@ perm.registerGroup(2, "tipp");
 perm.registerGroup(2, "senditem");
 perm.registerGroup(2, "socialspy");
 perm.registerGroup(2, "setspawn");
+perm.registerGroup(2, "setgamesspawn");
+perm.registerGroup(2, "setworldspawn");
 perm.registerGroup(2, "gamerule");
 perm.registerGroup(2, "weather");
 perm.registerGroup(2, "teleport");

+ 5 - 9
system/playtime.txt

@@ -1,9 +1,5 @@
-
-/*msg("dev", "start");
-sgoto(40, "wusi");
-waitfor(200);
-msg("dev", false);
-term();
-
-@wusi
-msg("dev", false);*/
+bed_tag = block.getTag("minecraft:beds");
+world = world.get("games");
+loc = loc.new(world, -104, 90, 55);
+block = block.get(loc);
+msg("dev", block.hasTag(bed_tag, block));

+ 0 - 0
utils/u_friend.txt