Browse Source

saving after new pc

Marvin Löschenkohl 3 years ago
parent
commit
c66847546b

+ 10 - 14
Archiv/deathswap.txt

@@ -41,20 +41,6 @@
             <td>c = 6;<br>function printStuff(a, b)<br>{<br>print(a, b, $c);<br>}<br>printStuff(4, "Hallo");</td>
         </tr>
     </table>
-    <table>
-        <tr>
-            <th class="command">try<br>catch</th>
-            <th class="desc">ignores every error in the try block and jumps to catch if an error is received</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>try { } catch {}</td>
-        </tr>
-        <tr>
-            <td class="bold">Addition</td>
-            <td>the variable error is set with a description of the error</td>
-        </tr>
-    </table>
     <table>
         <tr>
             <th class="command">print</th>
@@ -254,6 +240,16 @@
             <td class="bold">Format</td>
             <td>assert(boolean)</td>
         </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">isBool</th>
+            <th class="desc">returns true if a value is a boolean</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>isBool(value)</td>
+        </tr>
     </table>
     <table>
         <tr>

+ 116 - 40
docu_minecraft.php

@@ -1050,6 +1050,88 @@
         </tr>
     </table>
 </section>
+<section id="Gamerule">
+	<table>
+        <tr>
+            <th class="command">gamerule.getKey</th>
+            <th class="desc">returns the gamerule_key</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.getKey(gamerule_string)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">gamerule.getValue</th>
+            <th class="desc">return the gamerule_value from a world</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.getValue(world, gamerule_key)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">gamerule.isBool</th>
+            <th class="desc">returns true if the value is a boolean</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.isBool(gamerule_value)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">gamerule.isInt</th>
+            <th class="desc">returns true if the value is an integer</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.isInt(gamerule_value)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">gamerule.getBool</th>
+            <th class="desc">returns the gamerule_value as boolean</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.getBool(gamerule_value)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">gamerule.getInt</th>
+            <th class="desc">returns the gamerule_value as integer</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.getInt(gamerule_value)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">gamerule.setBool</th>
+            <th class="desc">sets a gamerule_value</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.setBool(gamerule_value, boolean)</td>
+        </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">gamerule.setInt</th>
+            <th class="desc">sets a gamerule_value</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>gamerule.setInt(gamerule_value, value)</td>
+        </tr>
+    </table>
+</section>
 <section id="General">
     <table>
         <tr>
@@ -1239,7 +1321,7 @@
 		<tr>
             <td class="bold">Info</td>
             <td>
-				attributes: ARMOR, ARMOR_TOUGHNESS, ATTACK_DAMAGE, KNOCKBACK_RESISTANCE, MAX_HEALTH, MOVEMENT_SPEED, ATTACK_SPEED, LUCK<br>
+				attributes: generic.max_health, generic.follow_range, generic.knockback_resistance, generic.movement_speed, generic.flying_speed, generic.attack_damage, generic.attack_damage, generic.attack_knockback, generic.attack_speed, generic.armor, generic.armor_toughness, generic.luck, zombie.spawn_reinforcements, horse.jump_strength<br>
 				slots: mainhand, offhand, head, chest, legs, feet<br>
 				operation: 0 (ADDITION), 1 (MULTIPLY_BASE), 2 (MULTIPLY_TOTAL)
 			</td>
@@ -1892,6 +1974,20 @@
 			<td>read.uuid("uuid")</td>
 		</tr>
 	</table>
+	<table>
+		<tr>
+			<th class="command">read.slot</th>
+			<th class="desc">returns a slot</th>
+		</tr>
+		<tr>
+			<td class="bold">Format</td>
+			<td>read.slot(slot)</td>
+		</tr>
+		<tr>
+			<td class="bold">Info</td>
+			<td>slot: "head" / "chest" / "legs" / "feet" / "hand" / "offhand"</td>
+		</tr>
+	</table>
 </section>
 <section id="Text">
     <table>
@@ -2846,6 +2942,16 @@
             <td class="bold">Format</td>
             <td>players.near(location, radius)</td>
         </tr>
+    </table>
+	<table>
+        <tr>
+            <th class="command">player.damageArmor</th>
+            <th class="desc">damages an players armor, portioned on all armor parts</th>
+        </tr>
+        <tr>
+            <td class="bold">Format</td>
+            <td>player.damageArmor(player, damage_float, damage_source)</td>
+        </tr>
     </table>
     <table>
         <tr>
@@ -3213,8 +3319,8 @@
         <tr>
             <td class="bold">Format</td>
             <td>
-				player.setBedSpawn(player, location)<br>
-				player.setSpawn(player, location)
+				player.setBedSpawn(player, location, [yaw])<br>
+				player.setSpawn(player, location, [yaw])
 			</td>
         </tr>
     </table>
@@ -3226,8 +3332,8 @@
         <tr>
             <td class="bold">Format</td>
             <td>
-				player.getBedSpawn(player, worldname)<br>
-				player.getSpawn(player, worldname)
+				player.getBedSpawn(player)<br>
+				player.getSpawn(player)
 			</td>
         </tr>
     </table>
@@ -3583,26 +3689,6 @@
             <td class="bold">Format</td>
             <td>world.get(world_name_string)</td>
         </tr>
-    </table>
-	<table>
-        <tr>
-            <th class="command">world.register</th>
-            <th class="desc">loads a world permanently and returns true on success</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>world.register(String world_name)</td>
-        </tr>
-    </table>
-	<table>
-        <tr>
-            <th class="command">world.unregister</th>
-            <th class="desc">unloads a world permanently and returns true on success</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>world.unregister(String world_name)</td>
-        </tr>
     </table>
 	<table>
         <tr>
@@ -3616,12 +3702,12 @@
     </table>
 	<table>
         <tr>
-            <th class="command">world.setDiffi</th>
+            <th class="command">world.setDifficulty</th>
             <th class="desc">sets the difficulty of a world</th>
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>world.setDiffi(World, difficulty_string)</td>
+            <td>world.setDifficulty(difficulty_string)</td>
         </tr>
         <tr>
             <td class="bold">Arguments</td>
@@ -3635,7 +3721,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>world.setSpawn(World, Location)</td>
+            <td>world.setSpawn(World, Location, [yaw])</td>
         </tr>
     </table>
 	<table>
@@ -4062,16 +4148,6 @@
             <td class="bold">Info</td>
             <td>triggers events on the next server tick</td>
         </tr>
-    </table>
-	<table>
-        <tr>
-            <th class="command">entity.damageArmor</th>
-            <th class="desc">damages an entities armor, portioned on all armor parts</th>
-        </tr>
-        <tr>
-            <td class="bold">Format</td>
-            <td>entity.damageArmor(float)</td>
-        </tr>
     </table>
 	<table>
         <tr>
@@ -4816,7 +4892,7 @@
         <tr>
             <td class="bold">Arguments</td>
 			 <td>
-				damage_name = inFire, lightningBolt, onFire, lava, hot_floor, inWall, cramming, drown, starve, cactus, fall, fyIntoWall, outOfWorld, generic, magic, wither, anvil, falling_block, dragon_breath, fireworks, dryout, sweet_berry_bush
+				damage_name = inFire, lightningBolt, onFire, lava, hot_floor, inWall, cramming, drown, starve, cactus, fall, fyIntoWall, outOfWorld, generic, magic, wither, anvil, falling_block, dragon_breath, dryout, sweet_berry_bush
 				<br><br>
                 creative: boolean, true also deals damage in creative mode<br>
                 armor: boolean, true ignores armor<br>
@@ -4995,7 +5071,7 @@
         </tr>
     </table>
 </section>
-<section id="Status">
+<section id="Shop">
 	<table>
         <tr>
             <th class="command">shop.new</th>

+ 14 - 14
global/gamecenter.txt

@@ -27,15 +27,15 @@ marv_loc = loc.new(gamesworld, -410, 161, -60);
 dice_loc = loc.new(gamesworld, -412, 156, -54);
 dice_time = time.getMillis();
 
-minigame.addSign("bwmapsign1", true, loc.new(gamesworld, -423, 158, -42), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap1", false);
-minigame.addSign("bwmapsign2", true, loc.new(gamesworld, -423, 158, -43), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap2", false);
-minigame.addSign("bwmapsign3", true, loc.new(gamesworld, -423, 158, -44), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap3", false);
-minigame.addSign("bwmapsign4", true, loc.new(gamesworld, -423, 157, -42), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap4", false);
-minigame.addSign("bwmapsign5", true, loc.new(gamesworld, -423, 157, -43), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap5", false);
-minigame.addSign("bwmapsign6", true, loc.new(gamesworld, -423, 157, -44), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap6", false);
-minigame.addSign("bwmapsign7", true, loc.new(gamesworld, -423, 156, -42), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap7", false);
-minigame.addSign("bwmapsign8", true, loc.new(gamesworld, -423, 156, -43), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap8", false);
-minigame.addSign("bwmapsign9", true, loc.new(gamesworld, -423, 156, -44), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap9", false);
+minigame.addSign("bwmapsign1", false, loc.new(gamesworld, -423, 158, -42), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap1", false);
+minigame.addSign("bwmapsign2", false, loc.new(gamesworld, -423, 158, -43), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap2", false);
+minigame.addSign("bwmapsign3", false, loc.new(gamesworld, -423, 158, -44), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap3", false);
+minigame.addSign("bwmapsign4", false, loc.new(gamesworld, -423, 157, -42), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap4", false);
+minigame.addSign("bwmapsign5", false, loc.new(gamesworld, -423, 157, -43), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap5", false);
+minigame.addSign("bwmapsign6", false, loc.new(gamesworld, -423, 157, -44), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap6", false);
+minigame.addSign("bwmapsign7", false, loc.new(gamesworld, -423, 156, -42), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap7", false);
+minigame.addSign("bwmapsign8", false, loc.new(gamesworld, -423, 156, -43), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap8", false);
+minigame.addSign("bwmapsign9", false, loc.new(gamesworld, -423, 156, -44), "minigames/bedwars/bedwars", "minigames/bedwars/region_bwmap9", false);
 minigame.addSign("letterssign1", true, loc.new(gamesworld, -396, 158, -63), "minigames/letters/letters", "minigames/letters/region_lettersmap1", true);
 minigame.addSign("letterssign2", true, loc.new(gamesworld, -396, 158, -62), "minigames/letters/letters", "minigames/letters/region_lettersmap2", true);
 minigame.addSign("letterssign3", true, loc.new(gamesworld, -396, 158, -61), "minigames/letters/letters", "minigames/letters/region_lettersmap3", true);
@@ -51,9 +51,9 @@ minigame.addSign("buttonssign2", true, loc.new(gamesworld, -398, 158, -65), "min
 minigame.addSign("spleefsign1", false, loc.new(gamesworld, -401, 157, -73), "minigames/spleef/spleef", "minigames/spleef/spleefmap1", false);
 minigame.addSign("spleefsign2", false, loc.new(gamesworld, -401, 157, -72), "minigames/spleef/spleef", "minigames/spleef/spleefmap2", false);
 minigame.addSign("spleefsign3", false, loc.new(gamesworld, -401, 157, -71), "minigames/spleef/spleef", "minigames/spleef/spleefmap3", false);
-minigame.addSign("knockfightsign1", true, loc.new(gamesworld, -419, 157, -40), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap1", false);
-minigame.addSign("knockfightsign2", true, loc.new(gamesworld, -420, 157, -40), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap2", false);
-minigame.addSign("knockfightsign3", true, loc.new(gamesworld, -421, 157, -40), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap3", false);
+minigame.addSign("knockfightsign1", false, loc.new(gamesworld, -419, 157, -40), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap1", false);
+minigame.addSign("knockfightsign2", false, loc.new(gamesworld, -420, 157, -40), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap2", false);
+minigame.addSign("knockfightsign3", false, loc.new(gamesworld, -421, 157, -40), "minigames/knockfight/knockfight", "minigames/knockfight/knockmap3", false);
 minigame.addSign("invertingsign1", true, loc.new(gamesworld, -396, 158, -57), "minigames/inverting/inverting", "minigames/inverting/invertingmap1", true);
 minigame.addSign("invertingsign2", true, loc.new(gamesworld, -396, 158, -56), "minigames/inverting/inverting", "minigames/inverting/invertingmap2", true);
 minigame.addSign("invertingsign3", true, loc.new(gamesworld, -396, 158, -55), "minigames/inverting/inverting", "minigames/inverting/invertingmap3", true);
@@ -63,7 +63,7 @@ minigame.addSign("invertingclsign3", true, loc.new(gamesworld, -396, 157, -55),
 //minigame.addSign("maednsign1", false, loc.new(gamesworld, -401, 157, -72), "minigames/maedn/maedn", "minigames/maedn/maednmap1", false);
 //minigame.addSign("ctfsign1", false, loc.new(gamesworld, 13, 75, 64), "minigames/capturetheflag/capturetheflag", "minigames/capturetheflag/ctfmap1", false);
 minigame.addSign("jrmap", true, loc.new(gamesworld, -396, 158, -51), "minigames/jumpnrun/jumpnrun", "minigames/jumpnrun/jumpnrun", true);
-minigame.addSign("parcoursign1", true, loc.new(gamesworld, -396, 158, -50), "minigames/parcour/parcour", "minigames/parcour/parcour_map1", true);
+minigame.addSign("parcoursign1", false, loc.new(gamesworld, -396, 158, -50), "minigames/parcour/parcour", "minigames/parcour/parcour_map1", true);
 minigame.addSign("tjrsign", true, loc.new(gamesworld, -396, 157, -51), "minigames/jumpnrun/todesjumpnrun", "minigames/jumpnrun/todesjumpnrun", true);
 minigame.addSign("icejrsign", true, loc.new(gamesworld, -404, 157, -75), "minigames/jumpnrun/icejumpnrun", "minigames/jumpnrun/icejumpnrun", true);
 minigame.addSign("fastbridgesign1", true, loc.new(gamesworld, -413, 157, -40), "minigames/fastbridge/fastbridge", "minigames/fastbridge/region_fastbridgemap1", false);
@@ -107,8 +107,8 @@ while(hasNext(iter)) {
 		}
 	}
 }
-msg("dev", "§bgamecenter §rloaded.");
 
+msg("dev", "§bGamecenter §rloaded.");
 @wait
 wait();
 ignoreGoto(event);

+ 12 - 9
global/pumpkin.txt

@@ -2,6 +2,7 @@ msg("dev", "§bPumpkinPie §rwurde geladen.");
 event.load("block_click");
 
 times = map.new();
+pumpkin_wait_time = 5; //seconds
 
 pumpkin = read.item("minecraft:pumpkin_pie", 1, "PumpkinMinusOneEighthCake");
 lore_list = list.new();
@@ -10,24 +11,26 @@ list.add(lore_list, "consisting of seven eighths.");
 list.add(lore_list, "Herobrine has the last eighth.");
 item.setLore(pumpkin, lore_list);
 
-world = world.get("overworld");
-kürbis_loc = loc.new(world, 228, 71, 235);
+pumpkin_loc = loc.new(world.getOverWorld(), 228, 71, 235);
 
 @wait
 wait();
-if(event == "block_click" && block_loc == kürbis_loc) {
+if(event == "block_click" && block_loc == pumpkin_loc) {
 	if(hand == "OFF_HAND") {
 		goto("wait");
 	}
-    id = player.getId(player);
-	if(!map.contains(times, id)) {
-		map.add(times, id, 20000 - time.getMillis());
+	if(action == "left") {
+		goto("wait");
 	}
-	if(time.getMillis() - map.get(times, id) > 20000) {
-		map.add(times, id, time.getMillis());
+    player_uuid = player.getUuid(player);
+	now_time = time.getMillis();
+	time = map.getOrDefault(times, player_uuid, 0);
+	diff_time = (now_time - time) / 1000;
+	if(diff_time > pumpkin_wait_time) {
+		map.add(times, player_uuid, now_time);
 		player.giveItem(player, pumpkin);
 	} else {
-		player.speak(player, "§6FoodGiver", "Please wait for ", text.number(math.round(20 - (time.getMillis() - map.get(times, id)) /  1000)), " seconds.");
+		msg.prefix(player, "§6FoodGiver", concat("Please wait for ", text.number(math.round(pumpkin_wait_time - diff_time)), " seconds."));
 	}
 }
 goto("wait");

+ 4 - 1
global/sitting.txt

@@ -44,8 +44,11 @@ if(block.hasTag(stairs_tag, block)) {
 	if(player.hasMinigame(player)) {
 		goto("wait");
 	}
+	if(!player.hasSittingActivated(player)) {
+		goto("wait");
+	}
 	entity = entity.spawn("km:nobody", loc.mod(block_loc, 0.5, 0, 0.5), "{NoGravity:true}");
 	map.add(sitting, player, entity);
 	entity.mount(player, entity);
 }
-goto("wait");
+goto("wait");

+ 6 - 6
minigames/among_us/among_us.txt

@@ -142,7 +142,7 @@ if(event == "player_join") {
 	display.add(player, 12, "Confirm Ejects: ", confirm_ejects);
 	stacks.set(player, 0, "minecraft:leather_chestplate");
 	stacks.setActive(player, true);
-	player.setSpeed(player, move_speed / 20);
+	player.setSpeed(player, move_speed);
 	player.setHunger(player, 20);
 	player.setSaturation(player, 100);
 	return;
@@ -311,7 +311,7 @@ if(event == "inv_click") {
 			while(hasNext(iter)) {
 				p_uuid = next(iter);
 				p = player.get(p_uuid);
-				player.setSpeed(p, move_speed / 20);
+				player.setSpeed(p, move_speed);
 			}
 			minigame.displayAll(10, concat("Speed: ", text.number(move_speed)));
 			inv.setItem(settings_inv, 17, read.item("km:gear", 1, concat("§rSpeed: ", text.number(move_speed))));
@@ -725,7 +725,7 @@ for(h = 0; h < player_list_size; h++) {
 	boss.send(p, "ADD");
 	data.setTimer(p, "Meeting Cooldown", $meeting_cooldown * 20);
 	status.addTimed(p, 0, $meeting_cooldown * 20, "Meeting Cooldown");
-	player.setSpeed(p, move_speed / 20);
+	player.setSpeed(p, move_speed);
 	map.add(meeting_amounts, p_uuid, amount_meetings);
 	player.clearInventory(p);
 	player.giveItem(p, read.item("minecraft:map"));
@@ -3782,11 +3782,11 @@ function continueGame() {
 		inv.close(p);
 		if(player.isGhost(p)) {
 			entity.addEffect(p, "jump_boost", 0, 128, false);
-			player.setSpeed(p, ($move_speed / 20) * 1.5);
+			player.setSpeed(p, $move_speed * 1.5);
 		} else {
 			entity.setName(p, "");
 			entity.clearEffects(p);
-			player.setSpeed(p, $move_speed / 20);
+			player.setSpeed(p, $move_speed);
 			if(isImpostor(p) && !player.isGhost(p)) {
 				data.setTimer(p, "Kill Cooldown", $kill_cooldown * 20);
 				status.addTimed(p, 1, $kill_cooldown * 20, "Kill Cooldown");
@@ -3829,7 +3829,7 @@ function killCrewmate(killer, crewmate) {
 	title.send(crewmate, "§cKILLED");
 	inv.close(crewmate);
 	sabotage.closedInv(crewmate);
-	player.setSpeed(crewmate, ($move_speed / 20) * 1.5);
+	player.setSpeed(crewmate, $move_speed * 1.5);
 	amongus.removeFromAdminTable(crewmate);
 	//Leiche an Mord-Location platzieren
 	ent = entity.spawn("zombie", loc, "{IsBaby:0}");

+ 0 - 3
minigames/among_us/among_us_map1.txt

@@ -322,7 +322,6 @@ function setSeeker(player) {
 	player.setSpawn(player, $seeker_spawn_loc);
 	entity.addEffect(player, "slowness", $slowtime, 6);
 	entity.addEffect(player, "jump_boost", $slowtime, 128);
-	return;
 }
 
 function setEscaper(player) {
@@ -341,13 +340,11 @@ function setEscaper(player) {
 	map.add($times, player_uuid, 30);
 	entity.teleport(player, $escaper_spawn_loc);
 	player.setSpawn(player, $escaper_spawn_loc);
-	return;
 }
 
 function giveSeekerItems(player) {
 	player.giveItem(player, $ironpickaxe);
 	player.giveItem(player, $blocks64);
-	return;
 }
 
 function setCatchLastExeTime(player, skill_name) {

+ 4 - 4
minigames/mengerrun/menger_map1.txt

@@ -192,7 +192,7 @@ function setSeeker(player) {
 	list.add($seekerlist, player_uuid);
 	list.remove($escaperlist, player_uuid);
 	entity.addEffect(player, "glowing", $max_life_time * 20 * $maxplayers, 1, false);
-	player.setSpeed(player, 2.6 / 20);
+	player.setSpeed(player, 2.6);
 }
 
 function setEscaper(player) {
@@ -206,7 +206,7 @@ function setEscaper(player) {
 	list.add($escaperlist, player_uuid);
 	list.remove($seekerlist, player_uuid);
 	entity.addEffect(player, "glowing", $max_life_time * 20 * $maxplayers, 1, false);
-	player.setSpeed(player, 2.5 / 20);
+	player.setSpeed(player, 2.5);
 }
 
 function setStackIcons(player) {
@@ -239,7 +239,7 @@ goto("checkgame");
 
 @menger_kick
 script = script.getFromId(script_id);
-player.setSpeed(player, 0.05);
+player.setSpeed(player, 1);
 minigame.kickPlayer(script, player);
 player_uuid = player.getUuid(player);
 showStats(player, false);
@@ -282,7 +282,7 @@ winner_name = player.getName(winner_uuid);
 winner = player.get(winner_uuid);
 player.speakPrefix(winner, gamename, "§6You won the game.");
 showStats(winner, true);
-player.setSpeed(winner, 0.05);
+player.setSpeed(winner, 1);
 script = script.getFromId(script_id);
 minigame.kickPlayer(script, winner);
 minigame.term(script, gamesignloc);

+ 2 - 2
minigames/sammelfieber/sfranked.txt

@@ -5,8 +5,8 @@ time = time.getMillis();
 world = world.get("overworld");
 loc = loc.new(world, 0, 0, 0);
 
-gusi = 8192 + 512; //bereits generierter Bereich
-wusi = 8192 + 512; //zu generierender Bereich
+gusi = 0; //bereits generierter Bereich
+wusi = 2048; //zu generierender Bereich
 
 whole = wusi / 8;
 whole *= whole;

+ 1 - 1
startcommands.txt

@@ -1,2 +1,2 @@
-script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_plots", "utils/u_games");
+script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
 term();

+ 8 - 8
startscript.txt

@@ -1,27 +1,27 @@
 clearscriptvars();
 
-setMOTD("§6Highlight of the year! §c/wusi");
-		
-script.start("system/limits");
+setMOTD("§6Very unexpected o.O We are now on §c1.16.4");
+
 script.start("system/svars");
-script.start("system/player_data", "utils/u_general");
 script.start("system/perms", "utils/u_general");
+script.startNamed("Playerdata", "system/player_data", "utils/u_general");
 script.startNamed("Chat", "system/chat", "utils/u_general");
 script.startNamed("Commands", "startcommands");
+script.startNamed("Creative", "system/creative", "utils/u_general");
 script.startNamed("Party", "global/party", "utils/u_general", "utils/u_party");
 script.startNamed("Copyisland", "global/copyisland");
 script.startNamed("Damage", "system/damage");
 script.startNamed("Playtime", "system/playtime");
-script.startNamed("Pumpkin", "global/pumpkin");
+script.startNamed("Pumpkin", "global/pumpkin", "utils/u_general");
 script.startNamed("Voxel", "global/voxel");
 script.startNamed("Sitting", "global/sitting", "utils/u_general");
 script.startNamed("Ticket", "global/ticketsystem", "utils/u_general");
 script.startNamed("Mails", "global/mailsystem", "utils/u_general");
-script.start("global/chestshops", "utils/u_general");
+script.startNamed("Shops", "global/chestshops", "utils/u_general");
 script.startNamed("Survival", "survival/survival", "utils/u_general");
 script.startNamed("Ai", "system/ai", "utils/u_general");
-script.start("global/gamecenter", "utils/u_general", "utils/u_games", "utils/u_party");
-script.start("global/ranklist", "utils/u_general", "utils/u_games");
+script.startNamed("Gamecenter", "global/gamecenter", "utils/u_general", "utils/u_games", "utils/u_party");
+script.startNamed("Ranklist", "global/ranklist", "utils/u_general", "utils/u_games");
 script.startNamed("SpawnQuests", "storydorf/spawn/core", "utils/u_general");
 
 error.setConsolePrint(true);

+ 4 - 1
storydorf/spawn/core.txt

@@ -632,7 +632,7 @@ if(block_type == "minecraft:chest") {
 		clicked = map.getOrDefault(tp_map, player_uuid, 0);
 		now_time = time.getMillis();
 		if(now_time - clicked < 5000) {
-			player.speak(player, "§jTeleport", "Wait 5 seconds!");
+			msg.prefix(player, "§bTeleport", "Wait 5 seconds!");
 			goto("wait");
 		}
 		map.add(tp_map, player_uuid, now_time);
@@ -677,11 +677,13 @@ if(block_type == "minecraft:chest") {
 			}
 		}
 		if(!temp) {
+			msg.prefix(player, "§bTeleport", "No receiver found!");
 			goto("wait");
 		}
 		
 		lore_list = item.getLore(item);
 		if(list.getSize(lore_list) != 4) {
+			msg.prefix(player, "§bTeleport", "No receiver found!");
 			goto("wait");
 		}
 		world = world.get(list.getIndex(lore_list, 0));
@@ -690,6 +692,7 @@ if(block_type == "minecraft:chest") {
 		z = read.number(list.getIndex(lore_list, 3));
 		tp_loc = loc.new(world, x, y, z);
 		if(!isATpReceiver(tp_loc)) {
+			msg.prefix(player, "§bTeleport", "No receiver found!");
 			goto("wait");
 		}
 		loc.add(tp_loc, 0.5, -3, 0.5);

+ 1 - 1
system/ai.txt

@@ -23,7 +23,7 @@ goto("wait");
 @player_login
 //Spawn mobs with ai
 online_list = players.toList();
-if(list.getSize(online_list) > 8) {
+if(list.getSize(online_list) > 0) {
 	living.setAi(false);
 } else {
 	living.setAi(true);

+ 9 - 24
system/chat.txt

@@ -7,20 +7,6 @@ cookie_time = 0;
 cookie = read.item("minecraft:cookie");
 serverspawn = world.getServerSpawn();
 
-databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS chatranks (player_id INT NOT NULL, category VARCHAR(20) NOT NULL, rank VARCHAR(20) NOT NULL, PRIMARY KEY (player_id, category), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
-
-forbiddennames = list.new();
-list.add(forbiddennames, "dev");
-list.add(forbiddennames, "ok");
-list.add(forbiddennames, "admin");
-list.add(forbiddennames, "adminshop");
-list.add(forbiddennames, "online");
-list.add(forbiddennames, "server");
-list.add(forbiddennames, "owner");
-list.add(forbiddennames, "true");
-list.add(forbiddennames, "false");
-list.add(forbiddennames, "null");
-
 personaljoinmessage = map.new();
 map.add(personaljoinmessage, 29, concat(" rolls out his plans.")); //eropster
 map.add(personaljoinmessage, 2, concat(" looks after his code.")); //marvinius
@@ -122,14 +108,10 @@ ignoreGoto(event);
 goto("wait");
 
 @player_login
-if(list.contains(forbiddennames, text.toLowerCase(player_name))) {
-	ban.kick(player, "You won't join with this name.");
-	goto("wait");
-}
 first_join = player.hasFirstJoin(player_id);
 if(first_join) {
 	entity.teleport(player, serverspawn);
-	msg("online", "§b§tWelcome to our sick world §e", player_name, " §t!!!");
+	msg("online", concat("§bWelcome to our sick world §e", player_name, " §b!!!"));
 	command("/recipe give ", player_name, " *");
 	player.setFirstJoin(player_id, true);
 }
@@ -168,11 +150,14 @@ player.setDisplayName(player, tab_name);
 if(player_id == 2) {
 	error_size = error.getSize();
 	if(error_size > 0) {
-		player.speakPrefix(player, "§cError", concat("There are ", text.number(error_size), " errors."));
+		msg.prefix(player, "§cError", concat("There are ", text.number(error_size), " errors."));
 	}
 }
 //Head
 player.greet(player);
+//Stacks-Display
+player.showDefaultStacks(player);
+stacks.setActive(player, true);
 goto("wait");
 
 @player_logout
@@ -197,14 +182,14 @@ if(text.startsWith(message, "7", 0)) {
 		} else {
 			word = text.subString(message, 1, space_index);
 		}
-		player.speak(player, "§6Commands", "You meant /", word, "?");
+		msg.prefix(player, "§6Commands", concat("You meant /", word, "?"));
 		goto("wait");
 	}
 }
 cancel = true;
 if(player.isMuted(player)) {
 	if(!player.hasMinigame(player)) {
-		player.speakPrefix(player, "§6Commands", "You are muted.");
+		msg.prefix(player, "§6Commands", "You are muted.");
 	}
 	goto("wait");
 }
@@ -248,6 +233,6 @@ goto("wait");
 
 function player.greet(player) {
 	player_name = player.getName(player);
-	title.setSub(player, concat("§c", player_name));
-	title.send(player, concat("Nice to see you"));
+	title.setSub(player, concat("§7", player_name));
+	title.send(player, concat("§cNice to see you"));
 }

+ 274 - 161
system/commands.txt

@@ -10,17 +10,14 @@ command.add("removeinvstats");
 command.add("sfstats");
 command.add("topsfstats");
 command.add("removesfstats");
-//Sonstige
-command.add("mayo");
 //Vanilla überschreiben
 command.add("help");
 command.add("butcher");
-command.add("locate");
 
 alias_map = map.new();
 command_list = list.new();
 command_map = map.new();
-command.register("afk", "Toggles afk state");
+command.register("afk", "Toggles afk");
 command.register("allsounds", "Plays all sounds");
 command.register("answer", "Answers the last private message");
 command.register("ass", "Armor Stand Signs");
@@ -34,7 +31,6 @@ command.register("coords", "Shows infos for the targeted block");
 command.register("copyisland", "Copyisland-Commands");
 command.register("databank", "Databank-Commands");
 command.register("datatools", "Datatools-Commands");
-command.register("door", "Toggles automatic door-closing");
 command.register("enderchest", "Shows enderchests");
 command.register("error", "Error-Logger");
 command.register("errordebug", "Debug-Logger");
@@ -70,7 +66,6 @@ command.register("nickname", "Set a nickname");
 command.register("nowb", "Sends no 'is back' message if afk");
 command.register("party", "Party-Commands");
 command.register("perm", "Manage permissions");
-command.register("permtoggle", "Toggles to user-permissions");
 command.register("plant", "Plant seeds");
 command.register("playtime", "Shows your playtime");
 command.register("plot", "Plot-Commands");
@@ -84,10 +79,9 @@ command.register("script", "Script-Commands");
 command.register("seen", "Returns the last date the player was online");
 command.register("senditem", "Sends an itemstack to another player");
 command.register("setrank", "");
-command.register("setservermessage", "Setzt die Server-Message in der Multiplayer Serverliste");
-command.register("setspawn", "Setzt den Spawn des angegebenen Modis");
+command.register("setservermessage", "Sets the server-message in the serverlist");
+command.register("setspawn", "Changes a spawn");
 command.register("shop", "Shop-Commands");
-command.register("showcoords", "Toggled die Koordinatenanzeige");
 command.register("sign", "Bearbeitet ein Schild");
 command.register("silentban", "Bannt einen Spieler ohne Meldung im Chat");
 command.register("silentjoin", "Toggled Silentjoins");
@@ -109,7 +103,6 @@ command.register("tpahere", "Sendet eine Teleportanfrage an einen Spieler");
 command.register("tpaccept", "Akzeptiert eine Teleportanfrage");
 command.register("tpaccepthere", "Akzeptiert eine Teleportanfrage");
 command.register("tppos", "Teleport zu Koordinaten");
-command.register("tptoggle", "Toggled den Erhalt von Teleportanfragen");
 command.register("unban", "Entbannt einen Spieler");
 command.register("unjail", "Lässt einen Spieler aus dem Gefängnis frei");
 command.register("unmute", "Unmutes a player");
@@ -149,6 +142,7 @@ command.registerAlias("hub", "leave");
 command.registerAlias("fuckit", "giveup");
 command.registerAlias("ram", "memory");
 
+sign_tag = block.getTag("minecraft:signs");
 crops_tag = block.getTag("minecraft:crops");
 dirt_tag = block.getTag("forge:dirt");
 gamesspawn = world.getGamesSpawn();
@@ -370,6 +364,8 @@ coords_loop_active = false;
 afk_loop_active = false;
 
 event.load("inv_click");
+event.load("inv_close");
+event.load("function_key");
 event.load("missing_perm");
 event.load("missing_command");
 event.load("custom_command");
@@ -518,23 +514,54 @@ if(event == "missing_perm") {
 	goto("wait");
 }
 if(event == "inv_click") {
-	if(!set.contains(invseeids, inv_id)) {
-		goto("wait");
-	}
-	//On inv_click in an invsee inventory
-	text.split(split_list, " ", inv_name);
-	p_name = list.getIndex(split_list, 2);
-	p = read.player(p_name);
-	if(p == null) {
-		inv.close(player);
-		msg.prefix(sender_name, prefix_commands, "This player is no longer online. Use /inv load <player> and /inv save <player> to overwrite an offline player's inventory.");
-		goto("wait");
+	//inv see
+	if(set.contains(invseeids, inv_id)) {
+		//On inv_click in an invsee inventory
+		text.split(split_list, " ", inv_name);
+		p_name = list.getIndex(split_list, 2);
+		p = read.player(p_name);
+		if(p == null) {
+			inv.close(player);
+			msg.prefix(sender_name, prefix_commands, "This player is no longer online. Use /inv load <player> and /inv save <player> to overwrite an offline player's inventory.");
+			goto("wait");
+		}
+		//Transmit item
+		player.removeItem(p, item);
+		safeGiveItemPlayer(player, item);
+		inv.setItem(inv, inv_slot, read.item("minecraft:air"));
+		inv.update(player);
+	}
+	//settings
+	if(inv_name == "§8Settings") {
+		if(inv_slot == 0) {
+			new_value = !player.getAutoCloseDoor(player);
+			player.setAutoCloseDoor(player, new_value);
+			inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", new_value));
+		}
+		elseif(inv_slot == 1) {
+			new_value = !player.doesAcceptTpaRequests(player);
+			player.acceptTpaRequests(player, new_value);
+			inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
+		}
+		elseif(inv_slot == 2) {
+			new_value = !showCoords.get(player);
+			showCoords.set(player, new_value);
+			inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
+			if(new_value) {
+				if(!coords_loop_active) {
+					sgoto(30, "coordsloop");
+				}
+			} else {
+				display.remove(player, 30);
+			}
+		}
+		elseif(inv_slot == 3) {
+			new_value = !player.hasSittingActivated(player);
+			player.activateSitting(player, new_value);
+			inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
+		}
+		inv.update(player);
 	}
-	//Transmit item
-	player.removeItem(p, item);
-	safeGiveItemPlayer(player, item);
-	inv.setItem(inv, inv_slot, read.item("minecraft:air"));
-	inv.update(player);
 	goto("wait");
 }
 if(event == "inv_close") {
@@ -543,6 +570,17 @@ if(event == "inv_close") {
 	}
 	goto("wait");
 }
+if(event == "function_key") {
+	if(key == 1) {
+		inv = inv.new("333333333");
+		inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", player.getAutoCloseDoor(player)));
+		inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
+		inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", showCoords.get(player)));
+		inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
+		inv.open(inv, player, "§8Settings");
+	}
+	goto("wait");
+}
 goto("wait");
 
 @vanish
@@ -964,6 +1002,7 @@ if(size < 1) {
 	msg.prefix(player, "§cErrorDebugs", "§r/errordebug ...");
 	msg(player, "§c - list §rLists all errordebugs");
 	msg(player, "§c - clear §rDeletes all errordebugs");
+	msg(player, "§c - toggle §rToggles errordebugs");
 	goto("wait");
 }
 arg0 = list.getIndex(args, 0);
@@ -983,12 +1022,22 @@ if(arg0 == "clear") {
 	msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
 	goto("wait");
 }
+if(arg0 == "toggle") {
+	new_value = !perm.has(player, "script.debug");
+	player.showDebug(player, new_value);
+	if(new_value) {
+		msg.prefix(player, prefix_commands, "Debug messages are now shown.");
+	} else {
+		msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
+	}
+	goto("wait");
+}
 goto("wait");
 
 @hat
 item = entity.getEquip(player, "hand");
 if(item.getType(item) == "minecraft:air") {
-	msg.prefix(player, prefix_commands, "§rYou haveto hold an item in hand");
+	msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
 	goto("wait");
 }
 entity.setEquip(player, "head", item);
@@ -1246,7 +1295,7 @@ if(isAfk(player)) {
 	setAfk(player, true);
 	player.setDisplayName(player, concat("§7§m", nickname));
 }
-if(!coords_loop_active) {
+if(!afk_loop_active) {
 	sgoto(30, "afk_loop");
 }
 goto("wait");
@@ -1262,20 +1311,6 @@ if(silentjoin) {
 }
 goto("wait");
 
-@showcoords
-if(showCoords.get(player)) {
-	showCoords.set(player, false);
-	msg.prefix(player, prefix_commands, "Coords deactivated.");
-	display.remove(player, 30);
-} else {
-	showCoords.set(player, true);
-	msg.prefix(player, prefix_commands, "Coords activated.");
-}
-if(!coords_loop_active) {
-	sgoto(30, "coordsloop");
-}
-goto("wait");
-
 @jailloop
 size = list.getSize(jailed_list);
 for(i = 0; i < size; i++) {
@@ -1295,7 +1330,7 @@ list = players.toList();
 size = list.getSize(list);
 for(i = 0; i < size; i++) {
 	p = list.getIndex(list, i);
-	if(showcoords.get(player)) {
+	if(showcoords.get(p)) {
 		p_loc = entity.getLocation(p);
 		display.add(p, 30, concat("§6Koords: §r", text.number(loc.getCoord(p_loc, "bx")), " / ", text.number(loc.getCoord(p_loc, "by")), " / ", text.number(loc.getCoord(p_loc, "bz"))));
 	}
@@ -1456,29 +1491,33 @@ text = text.replace(text, "\"","\\\"");
 msg(player, text.clipBoard(text, text));
 goto("wait");
 
-@permtoggle
-player_id = player.getId(player);
-if(perm.has(player, "pseudoPerm")) {
-	reloadAllPerms(player_id);
-	msg.prefix(player, prefix_commands, "You have regained your permissions.");
-} else {
-	removeAllPermsTemporarly(player_id);
-	msg.prefix(player, prefix_commands, "Have fun as a user.");
-}
-goto("wait");
-
 @perm
 if(size == 0) {
 	@perm_syntax
 	msg.prefix(player, prefix_perms, "§r/perm ...");
-	msg(player, "§z - give <player> <perm>");
-	msg(player, "§z - remove <player> <perm>");
-	msg(player, "§z - removeall <player>");
-	msg(player, "§z - list <player>");
+	if(perm.has(player, "perm.give")) {
+		msg(player, "§6 - give <player> <perm>");
+	}
+	if(perm.has(player, "perm.remove")) {
+		msg(player, "§6 - remove <player> <perm>");
+	}
+	if(perm.has(player, "perm.removeall")) {
+		msg(player, "§6 - removeall <player>");
+	}
+	if(perm.has(player, "perm.list")) {
+		msg(player, "§6 - list <player>");
+	}
+	if(perm.has(player, "perm.toggle")) {
+		msg(player, "§6 - toggle <player>");
+	}
 	goto("wait");
 }
 arg0 = list.getIndex(args, 0);
 if(arg0 == "give") {
+	if(!perm.has(player, "perm.give")) {
+		perm.no(player, "perm.give");
+		goto("wait");
+	}
 	if(size != 3) {
 		msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
 	} else {
@@ -1513,6 +1552,10 @@ if(arg0 == "give") {
 	goto("wait");
 }
 if(arg0 == "remove") {
+	if(!perm.has(player, "perm.remove")) {
+		perm.no(player, "perm.remove");
+		goto("wait");
+	}
 	if(size != 3) {
 		msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
 	} else {
@@ -1548,6 +1591,10 @@ if(arg0 == "remove") {
 	goto("wait");
 }
 if(arg0 == "removeall") {
+	if(!perm.has(player, "perm.removeall")) {
+		perm.no(player, "perm.removeall");
+		goto("wait");
+	}
 	if(size != 2) {
 		msg.prefix(player, prefix_perms, "/perm removeall <player>");
 	} else {
@@ -1571,6 +1618,10 @@ if(arg0 == "removeall") {
 	goto("wait");
 }
 if(arg0 == "list") {
+	if(!perm.has(player, "perm.list")) {
+		perm.no(player, "perm.list");
+		goto("wait");
+	}
 	if(size != 2) {
 		msg.prefix(player, prefix_perms, "/perm list <player>");
 	} else {
@@ -1593,25 +1644,22 @@ if(arg0 == "list") {
 	}
 	goto("wait");
 }
-goto("perm_syntax");
-
-@door
-if(size == 0) {
-	@door_syntax
-	msg.prefix(player, prefix_commands, "§r/door ...");
-	msg(player, "§6 - true §rSchließt Türen automatisch");
-	msg(player, "§6 - false §rTüren manuell schließen");
+if(arg0 == "toggle") {
+	if(!perm.has(player, "perm.toggle")) {
+		perm.no(player, "perm.toggle");
+		goto("wait");
+	}
+	player_id = player.getId(player);
+	if(perm.has(player, "pseudoPerm")) {
+		reloadAllPerms(player_id);
+		msg.prefix(player, prefix_commands, "You have regained your permissions.");
+	} else {
+		removeAllPermsTemporarly(player_id);
+		msg.prefix(player, prefix_commands, "Have fun as a user.");
+	}
 	goto("wait");
 }
-arg0 = list.getIndex(args, 0);
-if(arg0 == true) {
-	player.setAutoCloseDoor(player, true);
-	msg.prefix(player, prefix_commands, "Doors now close automatically.");
-} else {
-	player.setAutoCloseDoor(player, false);
-	msg.prefix(player, prefix_commands, "You have to close doors manually now.");
-}
-goto("wait");
+goto("perm_syntax");
 
 @allsounds
 if(size == 0) {
@@ -2086,14 +2134,17 @@ if(size != 1) {
 	msg(sender, " - ai");
 	msg(sender, " - chat");
 	msg(sender, " - commands");
+	msg(sender, " - creative");
 	msg(sender, " - damage");
 	msg(sender, " - friends");
 	msg(sender, " - games");
 	msg(sender, " - mails");
 	msg(sender, " - party");
 	msg(sender, " - perms");
+	msg(sender, " - pumpkin");
 	msg(sender, " - quests");
 	msg(sender, " - shop");
+	msg(sender, " - sitting");
 	msg(sender, " - stats");
 	msg(sender, " - survival");
 	msg(sender, " - ticket");
@@ -2110,11 +2161,11 @@ if(arg0 == "commands") {
 	script.term(script.get());
 }
 elseif(arg0 == "games") {
-	script = script.get("scripts/global/gamecenter.txt");
+	script = script.get("Gamecenter");
 	if(script != null) {
 		script.term(script);
 	}
-	script.start("global/gamecenter", "utils/u_general", "utils/u_games", "utils/u_party");
+	script.startNamed("Gamecenter", "global/gamecenter", "utils/u_general", "utils/u_games", "utils/u_party");
 }
 elseif(arg0 == "party") {
 	script = script.get("Party");
@@ -2130,6 +2181,13 @@ elseif(arg0 == "damage") {
 	}
 	script.startNamed("Damage", "system/damage");
 }
+elseif(arg0 == "creative") {
+	script = script.get("Creative");
+	if(script != null) {
+		script.term(script);
+	}
+	script.startNamed("Creative", "system/creative", "utils/u_general");
+}
 elseif(arg0 == "ai") {
 	script = script.get("Ai");
 	if(script != null) {
@@ -2154,19 +2212,26 @@ elseif(arg0 == "voxel") {
 elseif(arg0 == "perms") {
 	script.start("system/perms", "utils/u_general");
 }
+elseif(arg0 == "pumpkin") {
+	script = script.get("Pumpkin");
+	if(script != null) {
+		script.term(script);
+	}
+	script.startNamed("Pumpkin", "global/pumpkin", "utils/u_general");
+}
 elseif(arg0 == "stats") {
-	script = script.get("scripts/global/ranklist.txt");
+	script = script.get("Ranklist", "scripts/global/ranklist.txt");
 	if(script != null) {
 		script.term(script);
 	}
-	script.start("global/ranklist", "utils/u_general", "utils/u_games");
+	script.startNamed("Ranklist", "global/ranklist", "utils/u_general", "utils/u_games");
 }
 elseif(arg0 == "shop") {
-	script = script.get("scripts/global/chestshops.txt");
+	script = script.get("Shops");
 	if(script != null) {
 		script.term(script);
 	}
-	script.start("global/chestshops", "utils/u_general");
+	script.startNamed("Shops", "global/chestshops", "utils/u_general");
 }
 elseif(arg0 == "mails") {
 	script = script.get("Mails");
@@ -2189,6 +2254,13 @@ elseif(arg0 == "quests") {
 	}
 	script.startNamed("SpawnQuests", "storydorf/spawn/core", "utils/u_general");
 }
+elseif(arg0 == "sitting") {
+	script = script.get("Sitting");
+	if(script != null) {
+		script.term(script);
+	}
+	script.startNamed("Sitting", "global/sitting", "utils/u_general");
+}
 elseif(arg0 == "survival") {
 	script = script.get("Survival");
 	if(script != null) {
@@ -2334,15 +2406,7 @@ if(size == 0) {
 		//Erstes Mitternacht des gewählten Jahres festlegen
 		now_day = time.getDay(calendar);
 		time.nextDay(calendar);
-		month_days_diff = 0;
-		for(i = 1; i < now_month; i++) {
-			month_days_diff += time.getMonthDays(i, now_year);
-		}
-		year_days_diff = 0;
-		for(i = year; i < now_year; i++) {
-			year_days_diff += time.getYearDays(i);
-		}
-		midnight = time.from(calendar) - (year_days_diff + month_days_diff + now_day) * 86400000;
+		midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
 		//Monats-Spielzeit berechnen
 		temp_list = list.new();
 		list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
@@ -2398,7 +2462,7 @@ if(size == 0) {
 		now_month = time.getMonth(calendar);
 		now_year = time.getYear(calendar);
 		year = now_year;
-		if(size == 1) {
+		if(size == 1) { 
 			month = now_month;
 		} else {
 			month = list.getIndex(args, 1);
@@ -2433,15 +2497,7 @@ if(size == 0) {
 		//Erstes Mitternacht des gewählten Monats festlegen
 		now_day = time.getDay(calendar);
 		time.nextDay(calendar);
-		month_days_diff = 0;
-		for(i = month; i < now_month; i++) {
-			month_days_diff += time.getMonthDays(i, now_year);
-		}
-		year_days_diff = 0;
-		for(i = year; i < now_year; i++) {
-			year_days_diff += time.getYearDays(i);
-		}
-		midnight = time.from(calendar) - (year_days_diff + month_days_diff + now_day) * 86400000;
+		midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
 		//Tages-Spielzeit berechnen
 		for(i = 1; i <= time.getMonthDays(month, year); i++) {
 			players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
@@ -2946,13 +3002,17 @@ if(size < 2) {
 }
 arg0 = list.getIndex(args, 0);
 if(arg0 == "set") {
-	name = text.replace(text.concatList(args, " ", 1, size - 1), "&", "§");
+	name = text.concatList(args, " ", 1, size - 1);
+	name = text.replace(name, "&", "§");
+	name = text.replace(name, "\\n", "\n");
 	ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
 	entity.setName(ent, name);
 	goto("wait");
 }
 if(arg0 == "rename") {
-	name = text.replace(text.concatList(args, " ", 1, size - 1), "&", "§");
+	name = text.concatList(args, " ", 1, size - 1);
+	name = text.replace(name, "&", "§");
+	name = text.replace(name, "\\n", "\n");
 	ent_list = living.near(player, 5);
 	for(i = 0; i < list.getSize(ent_list); i++) {
 		ent = list.getIndex(ent_list, i);
@@ -3008,19 +3068,19 @@ if(size == 0) {
 	msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
 	goto("wait");
 }
-target = player.getTarget(player, 5, false, false);
-targettype = block.getType(target);
-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")) {
-	msg.prefix(player, prefix_commands, "Du bist nicht auf ein Schild gerichtet.");
+target_loc = player.getTarget(player, 5, false, false);
+block = block.get(target_loc);
+if(!block.hasTag(sign_tag, block)) {
+	msg.prefix(player, prefix_commands, "Look at a sign.");
 	goto("wait");
 }
 line = list.getIndex(args, 0);
 if(!isDouble(line)) {
-	msg.prefix(player, prefix_commands, "Zahl erwartet");
+	msg.prefix(player, prefix_commands, "Number expected.");
 	goto("wait");
 }
 if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
-	msg.prefix(player, prefix_commands, "Du musst eine Zahl von 1 bis 4 eingeben.");
+	msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
 	goto("wait");
 }
 string = "";
@@ -3039,7 +3099,7 @@ if(size > 1) {
 	}
 }
 string = text.replace(string, "&", "§");
-block.setSign(target, line - 1, string);
+block.setSign(target_loc, line - 1, string);
 goto("wait");
 
 @head
@@ -3766,7 +3826,9 @@ if(arg0 == "create" || arg0 == "c") {
 		msg.prefix(player, prefix_plot, "Eckpunkte haben unterschiedliche Welten");
 		goto("wait");
 	}
-	if(!perm.has(player, "plot.other")) {
+	if(perm.has(player, "plot.other")) {
+		msg.prefix(player, prefix_plot, "Plot created.");
+	} else {
 		world_name = world.getName(world1);
 		if(!isSurvWorldName(world_name)) {
 			msg.prefix(player, "§6Perms", "Du hast in dieser Welt keine Permission dafür.");
@@ -3793,11 +3855,12 @@ if(arg0 == "create" || arg0 == "c") {
 		area = length * width;
 		used_area = player.getUsedPlotArea(player);
 		if(!player.hasEnoughFreeArea(player, area)) {
-			msg.prefix(player, prefix_plot, concat("You used ", text.number(used_area) " / ", text.number(player.getFreePlotArea(player)), " plot blocks."));
+			msg.prefix(player, prefix_plot, concat("You used ", text.number(used_area), " / ", text.number(player.getFreePlotArea(player)), " plot blocks."));
 			goto("wait");
 		}
 		new_area = used_area + area;
 		player.setUsedPlotArea(player, new_area);
+		msg.prefix(player, prefix_plot, concat("Plot created. New used plot area: ", text.number(new_area)));
 	}
 	//Plot erstellen
 	loc.setY(loc1, 0);
@@ -3808,7 +3871,6 @@ if(arg0 == "create" || arg0 == "c") {
 	plot.addPlayer(plot, player_name);
 	plot.setRank(plot, player_id, "leader");
 	offerRank(player, "§eSiedler");
-	msg.prefix(player, prefix_plot, concat("Plot created. New used plot area: ", text.number(new_area)));
 	goto("wait");
 }
 if(arg0 == "create3d" || arg0 == "add3d") {
@@ -3824,7 +3886,9 @@ if(arg0 == "create3d" || arg0 == "add3d") {
 		msg.prefix(player, prefix_plot, "Eckpunkte haben unterschiedliche Welten");
 		goto("wait");
 	}
-	if(!perm.has(player, "plot.other")) {
+	if(perm.has(player, "plot.other")) {
+		msg.prefix(player, prefix_plot, "3DPlot created.");
+	} else {
 		world_name = world.getName(world1);
 		if(!isSurvWorldName(world_name)) {
 			msg.prefix(player, "§6Perms", "Du hast in dieser Welt keine Permission dafür.");
@@ -3851,11 +3915,12 @@ if(arg0 == "create3d" || arg0 == "add3d") {
 		area = length * width;
 		used_area = player.getUsedPlotArea(player);
 		if(!player.hasEnoughFreeArea(player, area)) {
-			msg.prefix(player, prefix_plot, concat("You used ", text.number(used_area) " / ", text.number(player.getFreePlotArea(player)), " plot blocks."));
+			msg.prefix(player, prefix_plot, concat("You used ", text.number(used_area), " / ", text.number(player.getFreePlotArea(player)), " plot blocks."));
 			goto("wait");
 		}
 		new_area = used_area + area;
 		player.setUsedPlotArea(player, new_area);
+		msg.prefix(player, prefix_plot, concat("3DPlot created. New used plot area: ", text.number(new_area)));
 	}
 	//Plot erstellen
 	plot = plot.add(loc1, loc2);
@@ -3863,7 +3928,6 @@ if(arg0 == "create3d" || arg0 == "add3d") {
 	plot.addPlayer(plot, player_name);
 	plot.setRank(plot, player_id, "leader");
 	offerRank(player, "§eSiedler");
-	msg.prefix(player, prefix_plot, concat("3DPlot created. New used plot area: ", text.number(new_area)));
 	goto("wait");
 }
 if(arg0 == "pos1" || arg0 == "pos2") {
@@ -4211,7 +4275,7 @@ if(size == 2) {
 		goto("wait");
 	}
 }
-player.setSpeed(affectedplayer, speed / 20);
+player.setSpeed(affectedplayer, speed);
 msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
 if(affectedplayer != player) {
 	affectedname = player.getName(affectedplayer);
@@ -4219,14 +4283,6 @@ if(affectedplayer != player) {
 }
 goto("wait");
 
-@mayo
-msg(player, "Nein ", player_name, ", Mayonnaise ist kein Instrument.");
-goto("wait");
-
-@locate
-msg(player, "Command deactivated.");
-goto("wait");
-
 @butcher
 loc = entity.getLocation(player);
 world = loc.getWorld(loc);
@@ -4458,18 +4514,18 @@ if(!player.doesAcceptTpaRequests(p)) {
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(player)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, "You won't teleport in this world.");
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(p)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, "You won't teleport to this world.");
 	goto("wait");
 }
 addTpaRequest(player.getUuid(player), p_uuid);
 msg(player, concat("§6Teleportanfrage: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
-msg(p, concat("§6Teleportanfrage: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("[§aAnnehmen§6]", concat("/tpaccept ", player_name)));
+msg(p, concat("§6Teleportanfrage: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAnnehmen§6]", concat("/tpaccept ", player_name)));
 goto("wait");
 
 @tpahere
@@ -4494,18 +4550,18 @@ if(!player.doesAcceptTpaRequests(p)) {
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(player)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, concat("§c", p_name, "§r darf sich in diese Welt nicht teleportieren."));
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(p)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, concat("§c", p_name, "§r darf sich in seiner Welt nicht teleportieren."));
 	goto("wait");
 }
 addTpaRequest(p_uuid, player.getUuid(player));
 msg(player, concat("§6Teleportanfrage: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
-msg(p, concat("§6Teleportanfrage: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("[§aAnnehmen§6]", concat("/tpaccepthere ", player_name)));
+msg(p, concat("§6Teleportanfrage: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAnnehmen§6]", concat("/tpaccepthere ", player_name)));
 goto("wait");
 
 @tpaccept
@@ -4526,12 +4582,12 @@ if(p == null) {
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(player)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, concat("§c", p_name, "§r darf sich in diese Welt nicht teleportieren."));
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(p)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, concat("§c", p_name, "§r darf sich in seiner Welt nicht teleportieren."));
 	goto("wait");
 }
@@ -4562,12 +4618,12 @@ if(p == null) {
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(player)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, "You won't teleport in this world.");
 	goto("wait");
 }
 world_name = world.getName(loc.getWorld(entity.getLocation(p)));
-if(!isSurvWorldName(world_name)) {
+if(isGamesWorldName(world_name)) {
 	msg.prefix(player, prefix_commands, "You won't teleport to this world.");
 	goto("wait");
 }
@@ -4580,16 +4636,6 @@ location = entity.getLocation(p);
 player.teleport(player, location, true);
 goto("wait");
 
-@tptoggle
-tptoggle = player.doesAcceptTpaRequests(player);
-if(tptoggle) {
-	msg.prefix(player, prefix_commands, "You now generally decline teleport requests.");
-} else {
-	msg.prefix(player, prefix_commands, "You now generally accept teleport requests.");
-}
-player.acceptTpaRequests(player, !tptoggle);
-goto("wait");
-
 @teleport
 if(size < 1 || size > 2) {
 	if(perm.has(player, "teleport.other")) {
@@ -4739,12 +4785,12 @@ if(size == 2) {
 } else {
 	if(!perm.has(player, "warp.create")) {
 		world_name = world.getName(loc.getWorld(entity.getLocation(player)));
-		if(!isSurvWorldName(world_name)) {
+		if(isGamesWorldName(world_name)) {
 			msg.prefix(player, prefix_commands, "You won't teleport in this world.");
 			goto("wait");
 		}
 		world_name = world.getName(loc.getWorld(warploc));
-		if(!isSurvWorldName(world_name)) {
+		if(isGamesWorldName(world_name)) {
 			msg.prefix(player, prefix_commands, "You won't teleport to this world.");
 			goto("wait");
 		}
@@ -5036,7 +5082,7 @@ if(player.hasMinigame(player)) {
 hasPerms = perm.has(player, "isTeam");
 if(!hasPerms) {
 	world_name = world.getName(loc.getWorld(entity.getLocation(player)));
-	if(!isSurvWorldName(world_name)) {
+	if(isGamesWorldName(world_name)) {
 		msg.prefix(player, prefix_commands, "You won't teleport in this world.");
 		goto("wait");
 	}
@@ -5053,7 +5099,7 @@ if(world == null) {
 }
 if(!hasPerms) {
 	world_name = world.getName(world);
-	if(!isSurvWorldName(world_name)) {
+	if(isGamesWorldName(world_name)) {
 		msg.prefix(player, prefix_commands, "You won't teleport to this world.");
 		goto("wait");
 	}
@@ -5081,6 +5127,7 @@ if(size != 1) {
 	msg.prefix(player, prefix_commands, "§r/setspawn ...");
 	msg(player, "§6 - server");
 	msg(player, "§6 - games");
+	msg(player, "§6 - creative");
 	goto("wait");
 }
 arg0 = list.getIndex(args, 0);
@@ -5092,6 +5139,9 @@ if(arg0 == "games") {
 } elseif(arg0 == "server") {
 	config.set(config, "serverspawn", new_spawn);
 	msg.prefix(player, prefix_commands, "New main Spawn set.");
+} elseif(arg0 == "creative") {
+	config.set(config, "creativespawn", new_spawn);
+	msg.prefix(player, prefix_commands, "New spawn for creative world set.");
 } else {
 	goto("setspawnhelp");
 }
@@ -5112,14 +5162,14 @@ if(size == 1) {
 	}
 	if(player != affectedplayer) {
 		affectedname = player.getName(affectedplayer);
-		msg.prefix(player, prefix_commands, concat(affectedname, " wurde geheilt."));
+		msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
 	}
 }
 entity.heal(affectedplayer, 50);
 player.setHunger(affectedplayer, 20);
 player.setSaturation(affectedplayer, 5);
 entity.clearEffects(affectedplayer);
-msg.prefix(affectedplayer, prefix_commands, "Du wurdest geheilt.");
+msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
 goto("wait");
 
 @inv
@@ -5139,7 +5189,7 @@ if(size == 0) {
 		msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
 	}
 	if(perm.has(player, "inv.loadFrom")) {
-		msg(player, "§6 - load <player> <world> §rLoads a player's inventory for you");
+		msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
 	}
 	goto("wait");
 }
@@ -5403,7 +5453,7 @@ if(arg0 == "unload") {
 }
 if(arg0 == "setspawn") {
 	location = entity.getLocation(player);
-	world.setSpawn(location);
+	world.setSpawn(location, 0);
 	msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
 	goto("wait");
 }
@@ -5766,20 +5816,14 @@ function setCommandHelps() {
 	addCommandHelp("silentjoin");
 	addCommandHelp("wusi");
 	addCommandHelp("nowb");
-	addCommandHelp("spawn");
 	addCommandHelp("coords");
-	addCommandHelp("mayo");
 	addCommandHelp("ping");
-	addCommandHelp("permtoggle");
-	addCommandHelp("games");
 	addCommandHelp("rank");
-	addCommandHelp("showcoords");
 	addCommandHelp("back");
 	addCommandHelp("boost");
 	addCommandHelp("bug");
 	addCommandHelp("report");
 	addCommandHelp("startgame");
-	addCommandHelp("tptoggle");
 	addCommandHelp("top");
 	addCommandHelp("repair");
 	
@@ -5805,8 +5849,6 @@ function setCommandHelps() {
 	help = addCommandHelp("afk");
 	addCommandAlias(help, "afklo", "afk");
 	
-	addCommandHelpChildBool("door", "wusi");
-	
 	help = addCommandHelp("leave");
 	addCommandAlias(help, "l", "leave");
 	addCommandAlias(help, "hub", "leave");
@@ -5830,13 +5872,16 @@ function setCommandHelps() {
 	command.addHelpChild(help, command.newHelpLiteral("ai"));
 	command.addHelpChild(help, command.newHelpLiteral("chat"));
 	command.addHelpChild(help, command.newHelpLiteral("commands"));
-	command.addHelpChild(help, command.newHelpLiteral("games"));
+	command.addHelpChild(help, command.newHelpLiteral("creative"));
 	command.addHelpChild(help, command.newHelpLiteral("damage"));
+	command.addHelpChild(help, command.newHelpLiteral("games"));
 	command.addHelpChild(help, command.newHelpLiteral("mails"));
 	command.addHelpChild(help, command.newHelpLiteral("party"));
 	command.addHelpChild(help, command.newHelpLiteral("perms"));
+	command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
 	command.addHelpChild(help, command.newHelpLiteral("quests"));
 	command.addHelpChild(help, command.newHelpLiteral("shop"));
+	command.addHelpChild(help, command.newHelpLiteral("sitting"));
 	command.addHelpChild(help, command.newHelpLiteral("stats"));
 	command.addHelpChild(help, command.newHelpLiteral("survival"));
 	command.addHelpChild(help, command.newHelpLiteral("ticket"));
@@ -5896,6 +5941,29 @@ function setCommandHelps() {
 	command.addHelpChild(help, command.newHelpLiteral("stop"));
 	command.addHelp(help);
 	
+	help = command.newHelp("spawn", "spawn");
+	command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
+	command.addHelp(help);
+	
+	help = command.newHelp("games", "games");
+	command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
+	command.addHelp(help);
+	
+	help = command.newHelp("ass", "ass");
+	//ass set <name>
+	helpArg0 = command.newHelpLiteral("set");
+	command.addHelpChild(helpArg0, command.newHelpString("name", true));
+	command.addHelpChild(help, helpArg0);
+	//ass rename <name>
+	helpArg0 = command.newHelpLiteral("rename");
+	command.addHelpChild(helpArg0, command.newHelpString("name", true));
+	command.addHelpChild(help, helpArg0);
+	//ass remove <radius>
+	helpArg0 = command.newHelpLiteral("remove");
+	command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
+	command.addHelpChild(help, helpArg0);
+	command.addHelp(help);
+	
 	help = command.newHelp("tppos", "tppos");
 	helpArg0 = command.newHelpInt("x", -16000, 16000);
 	helpArg1 = command.newHelpInt("y", 0, 1000);
@@ -5934,6 +6002,7 @@ function setCommandHelps() {
 	help = command.newHelp("setspawn", "setspawn");
 	command.addHelpChild(help, command.newHelpLiteral("server"));
 	command.addHelpChild(help, command.newHelpLiteral("games"));
+	command.addHelpChild(help, command.newHelpLiteral("creative"));
 	command.addHelp(help);
 	
 	help = command.newHelp("datatools", "datatools");
@@ -6106,6 +6175,8 @@ function setCommandHelps() {
 	helpArg0 = command.newHelpLiteral("list");
 	command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
 	command.addHelpChild(help, helpArg0);
+	//perm toggle
+	command.addHelpChild(help, command.newHelpLiteral("toggle"));
 	command.addHelp(help);
 	
 	help = command.newHelp("script", "script");
@@ -6370,6 +6441,7 @@ function setCommandHelps() {
 	help = command.newHelp("errordebug", "errordebug");
 	command.addHelpChild(help, command.newHelpLiteral("list"));
 	command.addHelpChild(help, command.newHelpLiteral("clear"));
+	command.addHelpChild(help, command.newHelpLiteral("toggle"));
 	command.addHelp(help);
 	
 	help = command.newHelp("error", "error");
@@ -6860,4 +6932,45 @@ function time.getMonthDays(month, year) {
 		days++;
 	}
 	return days;
+}
+
+function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
+	d_days = 0;
+	m_days = 0;
+	y_days = 0;
+	y = 0;
+	m = 0;
+	d = 0;
+	//Volle Jahre
+	for(year = year1 + 1; year < year2; year++) {
+		y_days += time.getYearDays(year);
+		y++;
+	}
+	if(year1 == year2) {
+		//Volle Monate
+		for(month = month1 + 1; month < month2; month++) {
+			m_days += time.getMonthDays(month, year1);
+		}
+		//Volle Tage
+		if(month1 == month2) {
+			d_days = day2 - day1;
+		} else {
+			d_days += map.get($monthdays, month1) - day1;
+			d_days += day2;
+		}
+	} else {
+		//Volle Monate
+		for(month = month1 + 1; month < 13; month++) {
+			m_days += time.getMonthDays(month, year1);
+			m++;
+		}
+		for(month = 1; month < month2; month++) {
+			m_days += time.getMonthDays(month, year2);
+			m++;
+		}
+		//Volle Tage
+		d_days += map.get($monthdays, month1) - day1;
+		d_days += day2;
+	}
+	return y_days + m_days + d_days;
 }

+ 20 - 0
system/creative.txt

@@ -0,0 +1,20 @@
+event.load("block_place");
+event.load("player_pre_respawn");
+
+msg("dev", "§bCreative §rloaded.");
+@wait
+wait();
+ignoreGoto(event);
+goto("wait");
+
+@block_place
+if(block_type == "minecraft:end_portal_frame") {
+	cancel = true;
+}
+goto("wait");
+
+@player_pre_respawn
+if(loc.isInCreativeWorld(entity.getLocation(player))) {
+	player.setSpawn(player, world.getCreativeSpawn());
+}
+goto("wait");

+ 1 - 3
system/limits.txt

@@ -1,9 +1,7 @@
-//wusi
 limit.clear();
-limit.set("pillager", 10);
-term();
 
 limit.set("ghast", 4);
+limit.set("pillager", 10);
 limit.set("husk", 10);
 limit.set("blaze", 10);
 limit.set("zombie", 15);

+ 24 - 25
system/perms.txt

@@ -7,10 +7,9 @@
 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);");
 databank.workerExecute(executeOnce);
 
-waitfor(10);
 perm.clear();
 
-list.new(permgroups);
+permgroups = list.new();
 list.add(permgroups, "mod");
 list.add(permgroups, "supporter");
 list.add(permgroups, "builder");
@@ -19,7 +18,7 @@ list.add(permgroups, "teleport");
 list.add(permgroups, "vip");
 list.add(permgroups, "dev");
 
-map.new(permgroupsmap);
+permgroupsmap = map.new();
 map.add(permgroupsmap, "worldedit", 1);
 map.add(permgroupsmap, "mod", 2);
 map.add(permgroupsmap, "builder", 3);
@@ -30,20 +29,16 @@ map.add(permgroupsmap, "supporter", 9);
 
 //Default-Rechte
 perm.registerGroup(0, "isUser");
-perm.registerGroup(0, "link");
 perm.registerGroup(0, "wusi");
-perm.registerGroup(0, "showcoords");
 perm.registerGroup(0, "hasitem");
 perm.registerGroup(0, "lock");
 perm.registerGroup(0, "ping");
-perm.registerGroup(0, "door");
 perm.registerGroup(0, "bug");
 perm.registerGroup(0, "report");
 perm.registerGroup(0, "uuid");
 perm.registerGroup(0, "mail");
 perm.registerGroup(0, "ticket");
 perm.registerGroup(0, "plot");
-perm.registerGroup(0, "mayo");
 perm.registerGroup(0, "leave");
 perm.registerGroup(0, "home");
 perm.registerGroup(0, "rank");
@@ -83,12 +78,9 @@ perm.registerGroup(0, "tpa");
 perm.registerGroup(0, "tpahere");
 perm.registerGroup(0, "tpaccept");
 perm.registerGroup(0, "tpaccepthere");
-perm.registerGroup(0, "tptoggle");
 perm.registerGroup(0, "stopadventure");
 perm.registerGroup(0, "warp");
-perm.registerGroup(0, "nextplayer");
-perm.registerGroup(0, "compass");
-perm.registerGroup(0, "shout");
+perm.registerGroup(0, "nextplayer");;
 perm.registerGroup(0, "user");
 perm.registerGroup(0, "startgame");
 
@@ -104,6 +96,7 @@ perm.registerGroup(2, "setservermessage");
 perm.registerGroup(2, "scoreboard");
 perm.registerGroup(2, "adminshop");
 perm.registerGroup(2, "team");
+perm.registerGroup(2, "advancement");
 perm.registerGroup(2, "experience");
 perm.registerGroup(2, "particle");
 perm.registerGroup(2, "seed");
@@ -115,7 +108,11 @@ perm.registerGroup(2, "playtime.month");
 perm.registerGroup(2, "playtime.other");
 perm.registerGroup(2, "startgame.jump");
 perm.registerGroup(2, "perm");
-perm.registerGroup(2, "permtoggle");
+perm.registerGroup(2, "perm.give");
+perm.registerGroup(2, "perm.remove");
+perm.registerGroup(2, "perm.removeall");
+perm.registerGroup(2, "perm.list");
+perm.registerGroup(2, "perm.toggle");
 perm.registerGroup(2, "copyisland");
 perm.registerGroup(2, "cli");
 perm.registerGroup(2, "plough");
@@ -217,14 +214,13 @@ perm.registerGroup(2, "error");
 perm.registerGroup(2, "errordebug");
 perm.registerGroup(2, "user.other");
 
-waitfor(10);
-
 //Builder-Rechte
 perm.registerGroup(3, "isBuilder");
 perm.registerGroup(3, "isTeam");
 perm.registerGroup(3, "voxel");
 perm.registerGroup(3, "warp.create");
-perm.registerGroup(3, "permtoggle");
+perm.registerGroup(3, "perm");
+perm.registerGroup(3, "perm.toggle");
 perm.registerGroup(3, "tip");
 perm.registerGroup(3, "setblock");
 perm.registerGroup(3, "summon");
@@ -259,7 +255,8 @@ perm.registerGroup(4, "playtime.other");
 perm.registerGroup(4, "lastseen");
 perm.registerGroup(4, "color");
 perm.registerGroup(4, "allsounds");
-perm.registerGroup(4, "permtoggle");
+perm.registerGroup(4, "perm");
+perm.registerGroup(4, "perm.toggle");
 
 //DEV-Rechte
 perm.registerGroup(5, "isDev");
@@ -276,7 +273,8 @@ perm.registerGroup(5, "databank");
 perm.registerGroup(5, "start");
 perm.registerGroup(5, "effect");
 perm.registerGroup(5, "allsounds");
-perm.registerGroup(5, "permtoggle");
+perm.registerGroup(5, "perm");
+perm.registerGroup(5, "perm.toggle");
 perm.registerGroup(5, "error");
 perm.registerGroup(5, "errordebug");
 
@@ -288,23 +286,21 @@ perm.registerGroup(6, "tppos");
 perm.registerGroup(6, "warp.create");
 perm.registerGroup(6, "top");
 perm.registerGroup(6, "jumpto");
-perm.registerGroup(6, "permtoggle");
+perm.registerGroup(6, "perm");
+perm.registerGroup(6, "perm.toggle");
 
 //SnuviMaster
 perm.registerGroup(7, "isSnuviMaster");
-perm.registerGroup(7, "advancement");
-perm.registerGroup(7, "droptables");
-perm.registerGroup(7, "hunt");
 perm.registerGroup(7, "game");
 perm.registerGroup(7, "stats.remove");
-perm.registerGroup(7, "sudoku");
 perm.registerGroup(7, "removeinvstats");
 perm.registerGroup(7, "removesfstats");
 perm.registerGroup(7, "mail.reset");
 
 //Perm-Group zur User-Simulation
 perm.registerGroup(8, "pseudoPerm");
-perm.registerGroup(8, "permtoggle");
+perm.registerGroup(8, "perm");
+perm.registerGroup(8, "perm.toggle");
 
 //Supporter
 perm.registerGroup(9, "isSupporter");
@@ -355,7 +351,9 @@ perm.registerGroup(12, "lastseen");
 perm.registerGroup(12, "datatools");
 perm.registerGroup(12, "gamemode");
 perm.registerGroup(12, "ass");
-perm.registerGroup(12, "permtoggle");
+perm.registerGroup(12, "perm");
+perm.registerGroup(12, "perm.list");
+perm.registerGroup(12, "perm.toggle");
 perm.registerGroup(12, "adminshop");
 perm.registerGroup(12, "startgame.jump");
 perm.registerGroup(12, "user.other");
@@ -388,4 +386,5 @@ perm.registerPlayer("2cae5ee1-f5dd-417f-9953-5d96f988a543", 2); //xDrake112
 perm.registerPlayer("2cae5ee1-f5dd-417f-9953-5d96f988a543", 6); //xDrake112
 perm.registerPlayer("2cae5ee1-f5dd-417f-9953-5d96f988a543", 15); //xDrake112
 
-msg("dev", "§bPermissions §rloaded");
+msg("dev", "§bPermissions §rloaded");
+term();

+ 2 - 1
system/svars.txt

@@ -7,4 +7,5 @@ setScriptVar("server_config", config);
 setScriptVar("script_players", map.new());
 setScriptVar("nicknames", map.new());
 setScriptVar("rmInventories", map.new());
-setScriptVar("quest_ids", map.new());
+setScriptVar("quest_ids", map.new());
+term();

+ 1 - 0
test.txt

@@ -0,0 +1 @@
+gusi

+ 7 - 0
test2.txt

@@ -0,0 +1,7 @@
+p = read.player("kajetanjohannes");
+//human = human.spawn(entity.getLocation(p));
+//msg("online", human);
+//msg("online", living.getMaxHealth(human));
+//msg("online", entity.getHealth(human));
+list = entity.near(p, 10);
+msg("online", list.getSize(list));

+ 3 - 4
utils/u_games.txt

@@ -315,7 +315,7 @@ function minigame.displayResetAll() {
 }
 
 function minigame.statsHeader(player, gamename, colorcode) {
-	msg(player, "[", gamename, "§r] §r---= ", colorcode, "Statistic §r=---");
+	msg(player, concat("[", gamename, "§r] §r---= ", colorcode, "Statistic §r=---"));
 }
 
 function minigame.statsLine(player, colorcode, string, value) {
@@ -413,12 +413,11 @@ function resetplayer(player) {
 	player.setSaturation(player, 5);
 	display.reset(player);
 	player.clearInventory(player);
-	stacks.clear(player);
+	player.showDefaultStacks(player);
 	status.reset(player);
-	stacks.setActive(player, false);
 	entity.setName(player, player.getName(player));
 	boss.send(player, "REMOVE");
-	player.setSpeed(player, 1 / 20);
+	player.setSpeed(player, 1);
 	entity.setGravity(player, true);
 	inv.close(player);
 }

+ 64 - 17
utils/u_general.txt

@@ -1,5 +1,5 @@
 function snuvi.debug(message) {
-	msg("dev", "[§eDebug§r] ", message);
+	msg("dev", concat("[§eDebug§r] ", message));
 }
 
 function perm.no(player, perm) {
@@ -101,7 +101,6 @@ function isGamesWorldName(world_name) {
 	return world_name == "games";
 }
 
-
 function isSurvWorldName(world_name) {
 	if(world_name == "overworld") {
 		return true;
@@ -132,7 +131,7 @@ function teleportPlayer(player, location, backPos) { //Deprecated
 
 function player.teleport(player, location, backPos) {
 	if(player.isOnAdventure(player)) {
-		msg(player, "[§5Adventure§r] Teleport blocked. ", text.click("[§5Cancel Adenture?§r]", concat("/stopadventure ", player)));
+		msg(player, "[§5Adventure§r] Teleport blocked. ", text.click("[§5Cancel Adventure?§r]", concat("/stopadventure ", player)));
 		return false;
 	}
 	if(backPos) {
@@ -141,7 +140,6 @@ function player.teleport(player, location, backPos) {
 	inv.checkForChange(player, location);
 	entity.teleport(player, location);
 	world = loc.getWorld(location);
-	stacks.setActive(player, false);
 	display.reset(player);
 	entity.setName(player, player.getName(player));
 	world_name = world.getName(world);
@@ -151,6 +149,9 @@ function player.teleport(player, location, backPos) {
 	if(isSurvWorldName(world_name)) {
 		joinSurvWorld(player);
 	}
+	if(world.isCreativeWorldName(world_name)) {
+		world.joinCreative(player);
+	}
 	//Tabliste
 	nickname = player.getNickName(player);
 	if(isAfk(player)) {
@@ -171,11 +172,6 @@ function getBlockLocation(location) {
 	return loc.new(world, bx, by, bz);
 }
 
-function loc.isAir(location) {
-	type = block.getType(location);
-	return type == "minecraft:air" || type == "minecraft:cave_air";
-}
-
 function getDateString(time) {
 	calendar = time.new(time);
 	return concat(text.number(time.getDay(calendar)), ".", text.number(time.getMonth(calendar)), ".", text.number(time.getYear(calendar)));
@@ -233,10 +229,6 @@ function player.getMinigameIds(player) {
 	return set;
 }
 
-function loc.isInGamesWorld(location) {
-	return loc.getWorld(location) == world.getGames();
-}
-
 function tjr.getWholeModule(player_or_id) {
 	if(isPlayer(player_or_id)) {
 		player_or_id = player.getId(player_or_id);
@@ -288,7 +280,15 @@ function world.getGames() {
 }
 
 function world.getCreative() {
-	return world.get("games");
+	return world.get("creative");
+}
+
+function world.joinCreative(player) {
+	
+}
+
+function world.isCreativeWorldName(world_name) {
+	return world_name == "creative";
 }
 
 //--------------------------------------------------
@@ -322,7 +322,7 @@ function inv.checkForChange(player, location) {
 	inv.loadFromPlayer(player, player, to_world);
 	if(!perm.has(player, "isTeam")) {
 		if(!player.isSpectator(player)) {
-			if(world_name == "creative") {
+			if(to_world_name == "creative") {
 				gm = "creative";
 			} else {
 				gm = "survival";
@@ -1154,7 +1154,7 @@ function loadData(player_or_id, map, name) {
 //--------------------------------------------------
 
 function msg.quest(player, speaker, line_now, line_max, message) {
-	msg(player, "[§b", text.number(line_now), "§r/§b", text.number(line_max), "§r] §a", speaker, " §r| ", concat("§e", message));
+	msg(player, concat("[§b", text.number(line_now), "§r/§b", text.number(line_max), "§r] §a", speaker, " §r| ", concat("§e", message)));
 }
 
 function sendMessageToWorld(world, message) {
@@ -1244,7 +1244,7 @@ function player.speakPrefix(player, prefix, message) { //Deprecated
 }
 
 function msg.prefix(player, prefix, message) {
-	msg(player, "§r[", prefix, "§r] ", message);
+	msg(player, concat("§r[", prefix, "§r] ", message));
 }
 
 function msg.radius(prefix, message, location, radius) {
@@ -1259,6 +1259,25 @@ function msg.radius(prefix, message, location, radius) {
 //Player-Utils
 //--------------------------------------------------
 
+function player.showDebug(player, boolean) {
+	player_uuid = player.getUuid(player);
+	if(boolean) {
+		perm.registerPlayer(player_uuid, 16);
+	} else {
+		perm.unregisterPlayer(player_uuid, 16);
+	}
+}
+
+function player.showDefaultStacks(player) {
+	stacks.clear(player);
+	stacks.set(player, 0, "km:gear");
+}
+
+function player.setSpeed(player, speed) {
+	living.setMovementSpeed(player, speed / 10);
+	living.setFlyingSpeed(player, speed / 10 * 4);
+}
+
 function player.hasEnoughFreeArea(player, area) {
 	free_area = player.getFreePlotArea(player);
 	if(free_area == -1) {
@@ -1290,6 +1309,17 @@ function player.setUsedPlotArea(player_or_id, amount) {
 	config.saveAsync(config);
 }
 
+function player.activateSitting(player_or_id, boolean) {
+	config = playerdata.getSurvival(player_or_id);
+	config.set(config, "sitting", boolean);
+	config.saveAsync(config);
+}
+
+function player.hasSittingActivated(player_or_id) {
+	config = playerdata.getSurvival(player_or_id);
+	return config.getBool(config, "sitting", true);
+}
+
 function player.acceptTpaRequests(player_or_id, boolean) {
 	config = playerdata.getSurvival(player_or_id);
 	config.set(config, "tptoggle", boolean);
@@ -1991,6 +2021,23 @@ function skill.showShop(player, skill_name1, skill_name2, skill_name3, skill_nam
 	inv.open(inv, player, "Skillshop");
 }
 
+//--------------------------------------------------
+//Loc-Utils
+//--------------------------------------------------
+
+function loc.isAir(location) {
+	type = block.getType(location);
+	return type == "minecraft:air" || type == "minecraft:cave_air";
+}
+
+function loc.isInGamesWorld(location) {
+	return loc.getWorld(location) == world.getGames();
+}
+
+function loc.isInCreativeWorld(location) {
+	return loc.getWorld(location) == world.getCreative();
+}
+
 //--------------------------------------------------
 //Survival-Utils
 //--------------------------------------------------

+ 0 - 0
utils/u_quest.txt