Browse Source

jumpnrun core

mloeschenkohl 2 years ago
parent
commit
ec3f63d763

+ 0 - 0
minigames/jumpnrun/icejumpnrun.txt → Archiv/minigames/jumpnrun/icejumpnrun.txt


+ 0 - 17
analyse.txt

@@ -1,20 +1,3 @@
-/*event.load("entity_join");
-
-@wait
-wait();
-entity_type = entity.getType(entity);
-if(entity_type == "zombie" || entity_type == "skeleton" || entity_type == "creeper") {
-	cancel = true;
-}
-goto("wait");
-
-player = read.player("marvinius");
-loc = entity.getLocation(player);
-entity.removeAll("net.minecraft.entity.monster.ZombieEntity", loc, 100);
-entity.removeAll("net.minecraft.entity.monster.SkeletonEntity", loc, 100);
-entity.removeAll("net.minecraft.entity.monster.CreeperEntity", loc, 100);
-*/
-
 map = map.new();
 
 player = read.player("marvinius");

+ 1 - 1
docu_minecraft.php

@@ -3411,7 +3411,7 @@
     <table>
         <tr>
             <th class="command">player.damageItem</th>
-            <th class="desc">damages the item in a player's hand and returns true if the item breaks</th>
+            <th class="desc">damages the item in a player's hand</th>
         </tr>
         <tr>
             <td class="bold">Format</td>

+ 44 - 0
jan/lava_test.txt

@@ -0,0 +1,44 @@
+event.load("bucket_use");
+block_to_destroy = "minecraft:lava";// < wichtig
+lava_max = 200;// < wichtig
+
+@wait
+wait();
+if(player.getName(player) == "SirTerence7"){//---------------- wichtig >
+	if(has_block){
+		if(block_type == block_to_destroy){
+			lava.get(block_loc);
+		}
+	}//----------------------------------------------------------- <
+}
+goto("wait");
+
+//------------------------------------------------------------ das auch >>
+function lava.get(block_loc){
+	lava_counter = 0;
+	$lava_locs = list.new();
+	list.add($lava_locs, block_loc);
+	while(list.getSize($lava_locs) != 0){
+		block_loc = list.getIndex($lava_locs, 0);
+		list.removeIndex($lava_locs, 0);
+		
+		lava.add_lava(loc.mod(block_loc,1,0,0));
+		lava.add_lava(loc.mod(block_loc,-1,0,0));
+		lava.add_lava(loc.mod(block_loc,0,1,0));
+		lava.add_lava(loc.mod(block_loc,0,-1,0));
+		lava.add_lava(loc.mod(block_loc,0,0,1));
+		lava.add_lava(loc.mod(block_loc,0,0,-1));
+		
+		lava_counter++;
+		if(lava_counter > $lava_max - 1) {
+			break;
+		}
+	}
+}
+
+function lava.add_lava(temp_loc){
+	if(block.getType(temp_loc) == $block_to_destroy){
+		list.add($lava_locs, temp_loc);
+		block.set(temp_loc, "minecraft:air");
+	}
+}

+ 61 - 0
jan/ore_test.txt

@@ -0,0 +1,61 @@
+event.load("block_break");
+ore_max = 32;
+broken = false;
+ore_ores = list.new();
+ore_items = map.new();
+ore.add("minecraft:coal_ore", "minecraft:coal",1,1);
+ore.add("minecraft:nether_quartz_ore", "minecraft:quartz",1,3.5);
+ore.add("minecraft:redstone_ore", "minecraft:redstone",4.5,3);
+
+@wait
+wait();
+if(player.getName(player) == "SirTerence7"){
+	if(list.contains(ore_ores, block_type)){
+		if(text.contains(living.getEquip(player, "hand"), "pickaxe")){
+			block_to_destroy = block_type;
+			item_to_give = map.get(ore_items, block_to_destroy);
+			ore.get(block_loc);
+		}
+	}
+}
+goto("wait");
+
+function ore.add(ore,item,amount,xp){
+	temp_array = array.new(3);
+	temp_array[0] = item;
+	temp_array[1] = amount;
+	temp_array[2] = xp;
+	list.add($ore_ores, ore);
+	map.add($ore_items, ore, temp_array);
+}
+
+function ore.get(block_loc){
+	ore_counter = 0;
+	$ore_locs = list.new();
+	list.add($ore_locs, block_loc);
+	while(list.getSize($ore_locs) != 0){
+		block_loc = list.getIndex($ore_locs, 0);
+		list.removeIndex($ore_locs, 0);
+		
+		ore.add_ore(loc.mod(block_loc,1,0,0));
+		ore.add_ore(loc.mod(block_loc,-1,0,0));
+		ore.add_ore(loc.mod(block_loc,0,1,0));
+		ore.add_ore(loc.mod(block_loc,0,-1,0));
+		ore.add_ore(loc.mod(block_loc,0,0,1));
+		ore.add_ore(loc.mod(block_loc,0,0,-1));
+		
+		ore_counter++;
+		if(ore_counter > $ore_max - 1 || $broken) {
+			break;
+		}
+	}
+}
+
+function ore.add_ore(temp_loc){
+	if(block.getType(temp_loc) == $block_to_destroy){
+		$broken = false;
+		list.add($ore_locs, temp_loc);
+		block.break(temp_loc, $player);
+		player.damageItem($player, 1);
+	}
+}

+ 255 - 0
minigames/jumpnrun/jr_core.txt

@@ -0,0 +1,255 @@
+@core_start
+maxplayers = 1;
+sign.started(gamesignloc);
+
+event.load("player_join");
+event.load("player_move");
+event.load("living_pre_hurt");
+event.load("player_post_respawn");
+event.load("player_toss");
+event.load("player_logout");
+event.load("player_giveup");
+event.load("block_break");
+event.load("block_place");
+event.load("function_key");
+
+@wait
+wait();
+if(event == "living_pre_hurt") {
+	if(!isPlayer(living_entity)) {
+		goto("wait");
+	}
+	player = living_entity;
+}
+if(player.hasMinigameId(player, script_id)) {
+	gosub("event_specific");
+	ignoreGoto(event);
+}
+goto("wait");
+
+@player_join
+jumpstage = jr.getRunModule(player);
+checkpoints = list.new();
+for(i = 0; i < list.getSize(spawn_locs); i++) {
+	loc = list.getIndex(spawn_locs, i);
+	b_loc = loc.mod(loc, -0.5, 0, -0.5);
+	loc.setYaw(b_loc, 0);
+	loc.setPitch(b_loc, 0);
+	list.add(checkpoints, b_loc);
+	
+	b_loc_2 = loc.mod(b_loc, 1, 1, 1);
+	if(i <= jumpstage) {
+		continue;
+	}
+	event.addMoveData(b_loc, b_loc_2, -1, -1, player);
+}
+
+single_uuid = player.getUuid(player);
+jr.setStarttime();
+all_modules = jr.getModule(player);
+if(all_modules < 20) {
+	jr.setLoopTime(jr.getTime(player));
+} else {
+	jr.setLoopTime(jr.getRunTime(player));
+}
+player.blockCommands(player);
+entity.teleport(player, list.getIndex(spawn_locs, jumpstage));
+player.clearInventory(player);
+display.reset(player);
+display.add(player, 0, gamename);
+stacks.set(player, 0, "km:refresh_red");
+stacks.set(player, 1, "km:return_red");
+stacks.setActive(player, true);
+title.clear(player);
+title.setTime(player, 20, 20, 20);
+title.setSub(player, mapname);
+title.send(player, gamename);
+
+gosub("stage_specific");
+player.setGamemode(player, "adventure");
+player.setFly(player, false);
+sgoto(20, "loop");
+goto("wait");
+
+@player_toss
+living.setEquip(player, "hand", item);
+cancel = true;
+goto("wait");
+
+@function_key
+if(key == 1) {
+	living.setHealth(player, 20);
+	jr.teleportModule(player, jumpstage);
+	entity.setBurning(player, 0);
+	goto("wait");
+}
+if(key == 2) {
+	for(i = 1; i <= jumpstage; i++) {
+		location1 = list.getIndex(checkpoints, i);
+		location2 = loc.mod(location1, 1, 1, 1);
+		event.addMoveData(location1, location2, -1, -1, player);
+	}
+	
+	living.setHealth(player, 20);
+	jr.setStarttime();
+	jr.setLoopTime(0);
+	jr.setRunTime(player, 0);
+	jumpstage = 0;
+	jr.setRunModule(player, jumpstage);
+	jr.teleportModule(player, jumpstage);
+	entity.setBurning(player, 0);
+}
+goto("wait");
+
+@block_break
+@block_place
+cancel = true;
+goto("wait");
+
+@player_post_respawn
+entity.teleport(player, list.getIndex(spawn_locs, jumpstage));
+goto("wait");
+
+@living_pre_hurt
+damage_type = damage.getType(damage_source);
+if(damage_type == "fall") {
+	cancel = true;
+	goto("wait");
+}
+if(damage_type == "arrow") {
+	cancel = true;
+	goto("wait");
+}
+goto("wait");
+
+@player_move
+player_loc = entity.getLocation(player);
+x = loc.getCoord(player_loc, "bx");
+y = loc.getCoord(player_loc, "by");
+z = loc.getCoord(player_loc, "bz");
+loc = loc.new(gamesworld, x, y, z);
+index = list.getIndexOf(checkpoints, loc);
+if(index > jumpstage) {
+	player.action(player, "§aCheckpoint gesetzt");
+	msg.prefix(player, "§6Commands", concat("§r", text.number(index), ".Checkpoint erreicht"));
+	jumpstage = index;
+	gosub("stage_specific");
+}
+//Alltime first try or already done?
+all_modules = jr.getModule(player);
+if(all_modules == 20) {
+	alltime_first_try = false;
+} else {
+	alltime_first_try = true;
+}
+jr.setEndtime();
+time = endtime - starttime;
+run_time = jr.getRunTime(player) + time;
+jr.setRunTime(player, run_time);
+jr.setRunModule(player, jumpstage);
+jr.setStarttime();
+
+if(alltime_first_try) {
+	jr.setModuleAndTime(player, jumpstage, run_time);
+	goto("wait");
+}
+if(jumpstage == 20) {
+	all_time = jr.getTime(player);
+	if(all_time == 0 || run_time < all_time) {
+		jr.setModuleAndTime(player, jumpstage, run_time);
+		msg.prefix(player, gamename, "Neuer Rekord!!!");
+	}
+}
+goto("wait");
+
+@loop
+player = player.get(single_uuid);
+seconds++;
+if(seconds == 60) {
+    minutes++;
+	seconds = 0;
+}
+if(seconds < 10) {
+	display.add(player, 5, concat("Zeit: §e", text.number(minutes), ":0", text.number(seconds)));
+} else {
+    display.add(player, 5, concat("Zeit: §e", text.number(minutes), ":", text.number(seconds)));
+}
+player.setHunger(player, 20);
+player.setSaturation(player, 5);
+sgoto(20, "loop");
+goto("wait");
+
+@player_logout
+@player_giveup
+player.setGamemode(player, "survival");
+player.unblockCommands(player);
+
+all_time = jr.getTime(player);
+all_module = jr.getModule(player);
+
+jr.setEndtime();
+time = endtime - starttime;
+run_time = jr.getRunTime(player) + time;
+jr.setRunTime(player, run_time);
+
+minigame.statsHeader(player, gamename, "§e");
+minigame.statsLine(player, "§e", "Checkpoints", text.number(all_module));
+minigame.statsLine(player, "§e", "Time", time.getClockString(all_time / 1000));
+script = script.getFromId(script_id);
+minigame.kickPlayer(script, player);
+minigame.term(script, gamesignloc);
+term();
+
+function jr.teleportModule(player, jumpstage) {
+	entity.teleport(player, list.getIndex($spawn_locs, jumpstage));
+}
+
+function jr.setLoopTime(time) {
+	time /= 1000;
+	$minutes = math.roundDown(time / 60);
+	$seconds = math.round(time % 60);
+}
+
+function jr.setStarttime() {
+	$starttime = time.getMillis();
+}
+
+function jr.setEndtime() {
+	$endtime = time.getMillis();
+}
+
+//THIS RUN
+function jr.setRunModule(player_or_id, module) {
+	config = playerdata.getGames(player_or_id);
+	config.set(config, $module_tag_run, module);
+	config.saveAsync(config);
+}
+
+function jr.getRunModule(player_or_id) {
+	config = playerdata.getGames(player_or_id);
+	return config.getDouble(config, $module_tag_run, 0);
+}
+
+function jr.setRunTime(player_or_id, time) {
+	config = playerdata.getGames(player_or_id);
+	config.set(config, $time_tag_run, time);
+	config.saveAsync(config);
+}
+
+function jr.getRunTime(player_or_id) {
+	config = playerdata.getGames(player_or_id);
+	return config.getDouble(config, $time_tag_run, 0);
+}
+
+//ALLTIME
+function jr.setModuleAndTime(player_or_id, module, time) {
+	ranking.setSecPoints($rankingtable, player_or_id, module, time);
+}
+
+function jr.getTime(player_or_id) {
+	return ranking.getSecPoints($rankingtable, player_or_id);
+}
+
+function jr.getModule(player_or_id) {
+	return ranking.getPoints($rankingtable, player_or_id);
+}

+ 48 - 0
minigames/jumpnrun/jr_map_ice.txt

@@ -0,0 +1,48 @@
+rankingtable = "icejrranks";
+gamesignloc = minigame.getSignLoc("jr_sign_ice");
+gamesworld = world.getGames();
+game_short = "ijr";
+time_tag_run = "jr.ice.runtime";
+module_tag_run = "jr.ice.runmodule";
+gamename = "§aJump'n'Run";
+mapname = "Ice";
+
+spawn_locs = list.new();
+list.add(spawn_locs, loc.new(gamesworld, 1000.5, 20, -1999.5, 0.0001, 0.0001)); //Spawn
+list.add(spawn_locs, loc.new(gamesworld, 987.5, 24, -1996.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 990.5, 28, -1997.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 988.5, 27, -1984.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1006.5, 24, -1984.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1015.5, 25, -2009.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 999.5, 35, -2012.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1001.5, 41, -2001.5, 0.0001, 0.0001)); //2.Etage
+list.add(spawn_locs, loc.new(gamesworld, 1000.5, 46, -2003.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 985.5, 51, -2002.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 986.5, 50, -1999.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 989.5, 50, -1984.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 988.5, 49, -1990.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1012.5, 52, -1997.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 998.5, 57, -2003.5, 0.0001, 0.0001)); //3.Etage
+list.add(spawn_locs, loc.new(gamesworld, 997.5, 61, -1988.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1000.5, 60, -2013.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 994.5, 66, -1984.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1000.5, 75, -2001.5, 0.0001, 0.0001)); //4.Etage
+list.add(spawn_locs, loc.new(gamesworld, 985.5, 88, -1986.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 990.5, 81, -2000.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1000.5, 94, -2002.5, 0.0001, 0.0001)); //5.Etage
+list.add(spawn_locs, loc.new(gamesworld, 1000.5, 103, -2009.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1007.5, 100, -2012.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1009.5, 102, -2001.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1012.5, 101, -1992.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 986.5, 100, -1994.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1000.5, 108, -1987.5, 0.0001, 0.0001)); //Finish
+goto("core_start");
+
+@event_specific
+if(event == "player_join") {
+	entity.addEffect(player, "minecraft:night_vision", 32760, 0, false);
+}
+return;
+
+@stage_specific
+return;

+ 38 - 0
minigames/jumpnrun/jr_map_rooms.txt

@@ -0,0 +1,38 @@
+rankingtable = "jr_room_ranks";
+gamesignloc = minigame.getSignLoc("jr_sign_room");
+gamesworld = world.getGames();
+game_short = "jr_rooms";
+time_tag_run = "jr.rooms.runtime";
+module_tag_run = "jr.rooms.runmodule";
+gamename = "§aJump'n'Run";
+mapname = "Rooms";
+
+spawn_locs = list.new();
+list.add(spawn_locs, loc.new(gamesworld, 1995.5, 105, -1.5, 0.0001, 0.0001)); //Spawn
+list.add(spawn_locs, loc.new(gamesworld, 1991.5, 104, 24.5, 0.0001, 0.0001)); //1.Checkpoint
+list.add(spawn_locs, loc.new(gamesworld, 1991.5, 107, 49.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1998.5, 101, 55.5, 90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1991.5, 108, 57.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1990.5, 113, 62.5, 90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1966.5, 99, 55.5, 180, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1969.5, 103, 18.5, 180, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1983.5, 107, -42.5, -90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1998.5, 106, -44.5, 180, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 2013.5, 112, -58.5, 180, 0.0001)); //10.Checkpoint
+list.add(spawn_locs, loc.new(gamesworld, 2004.5, 116, -60.5, 90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1987.5, 117, -65.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1975.5, 115, -61.5, 180, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1979.5, 121, -70.5, -90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 1996.5, 119, -98.5, -90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 2014.5, 119, -102.5, 180, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 2021.5, 120, -75.5, -90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 2034.5, 115, -88.5, -90, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 2040.5, 129, -84.5, 0.0001, 0.0001));
+list.add(spawn_locs, loc.new(gamesworld, 2031.5, 131, -61.5, 90, 0.0001)); //Finish
+goto("core_start");
+
+@event_specific
+return;
+
+@stage_specific
+return;

+ 1 - 21
minigames/jumpnrun/todesjumpnrun.txt

@@ -1,11 +1,9 @@
 rankingtable = "tjrranks";
 game_short = "tjr";
 maxplayers = 1;
-gamesignsmap = getScriptVar("gamesigns");
-gamesignloc = map.get(gamesignsmap, "tjrsign");
+gamesignloc = minigame.getSignLoc("tjrsign");
 sign.started(gamesignloc);
 
-event.load("command");
 event.load("player_join");
 event.load("player_move");
 event.load("living_pre_hurt");
@@ -37,17 +35,6 @@ goto("wait");
 single_uuid = player.getUuid(player);
 lavacounter = 0;
 
-notallowed = list.new();
-list.add(notallowed, "fly");
-list.add(notallowed, "gm");
-list.add(notallowed, "gamemode");
-list.add(notallowed, "tp");
-list.add(notallowed, "teleport");
-list.add(notallowed, "tppos");
-list.add(notallowed, "top");
-list.add(notallowed, "j");
-list.add(notallowed, "jumpto");
-
 angel = read.item("minecraft:fishing_rod");
 arrow = read.item("minecraft:arrow");
 bow = read.item("minecraft:bow");
@@ -239,13 +226,6 @@ if(block_loc == loc.new(gamesworld, 3949, 123, -5927)) {
 }
 goto("wait");
 
-@command
-if(list.contains(notallowed, toLowerCase(command))) {
-	cancel = true;
-	msg.prefix(player, "§4Dr. Septimus", "§rHättest du wohl gerne. Aber ich habe vorgesorgt. Muahahaha.");
-}
-goto("wait");
-
 @player_toss
 if(jumpstage != 43) {
 	cancel = true;

+ 2 - 4
minigames/parcour/parcour_map1.txt

@@ -1,8 +1,6 @@
 rankingtable = "parcourranks1";
-gamesignsmap = getScriptVar("gamesigns");
-gamesignloc = map.get(gamesignsmap, "parcoursign1");
-
-gamesworld = world.get("games");
+gamesignloc = minigame.getSignLoc("parcoursign1");
+gamesworld = world.getGames();
 
 checkpoints = list.new();
 list.add(checkpoints, loc.new(gamesworld, -1861, 125, 915)); //Spawn

+ 1 - 2
minigames/shoppingchaos/shoppingchaos.txt

@@ -624,8 +624,6 @@ for(i = 0; i < list.getSize(player_list); i++) {
 	} else {
 		showstats(p, false);
 	}
-	script = script.getFromId(script_id);
-	minigame.kickPlayer(script, p);
 }
 //Building-Perms wieder geben
 for(i = 0; i < list.getSize(removed_perms); i++) {
@@ -633,6 +631,7 @@ for(i = 0; i < list.getSize(removed_perms); i++) {
 	perm.registerPlayer(player_uuid, 1);
 	perm.registerPlayer(player_uuid, 15);
 }
+script = script.getFromId(script_id);
 minigame.kickAllPlayers(script);
 minigame.term(script, gamesignloc);
 term();

+ 11 - 10
startscript.txt

@@ -1,6 +1,7 @@
 modTimer(-3000);
 debug.setConsolePrint(true);
 clearscriptvars();
+limit.clear();
 
 setMOTD("§d§k# §eMentorMentos §7- §bCommunity Server §d§k# §f-  [§d1.16.4§f]\n§cMod Download §f-> §eminecraft§7.§ehammerle§7.§eme");
 
@@ -14,29 +15,29 @@ script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_gener
 script.startNamed("Copyisland", "system/copyisland");
 script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
 script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
-script.startNamed("Harvest", "utils/u_error", "system/harvest", "utils/u_general");
-script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "utils/u_general");
-script.startNamed("Herobrine", "utils/u_error", "system/herobrine", "utils/u_general");
+script.startNamed("Harvest", "utils/u_error", "survival/harvest", "utils/u_general");
+//script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "utils/u_general");
+script.startNamed("Herobrine", "utils/u_error", "survival/herobrine", "utils/u_general");
 script.startNamed("Playtime", "system/playtime");
-script.startNamed("Pumpkin", "utils/u_error", "system/pumpkin", "utils/u_general");
+script.startNamed("Pumpkin", "utils/u_error", "survival/pumpkin", "utils/u_general");
 script.startNamed("Voxel", "system/voxel");
-script.startNamed("Mobspawning", "system/mobspawning");
+script.startNamed("Mobspawning", "survival/mobspawning");
 script.startNamed("Fixitems", "utils/u_error", "system/fixitems");
 script.startNamed("Trader", "utils/u_error", "survival/trader");
 script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
 script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
 script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
 script.startNamed("Shops", "utils/u_error", "system/chestshops", "utils/u_general");
-script.startNamed("Survival", "utils/u_error", "system/survival", "utils/u_general");
+script.startNamed("Survival", "utils/u_error", "survival/survival", "utils/u_general");
 script.startNamed("Gamecenter", "utils/u_error", "system/gamecenter", "utils/u_general", "utils/u_games");
 script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
-script.startNamed("Story", "utils/u_error", "system/story", "utils/u_general");
+script.startNamed("Story", "utils/u_error", "story/story", "utils/u_general");
 script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
 script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
 script.startNamed("Workberries", "system/workberries");
-script.startNamed("Timber", "utils/u_error", "system/timber", "utils/u_general");
-script.startNamed("Loom", "utils/u_error", "system/loom", "utils/u_general");
-script.startNamed("Lectern", "utils/u_error", "system/lectern", "utils/u_general");
+script.startNamed("Timber", "utils/u_error", "survival/timber", "utils/u_general");
+script.startNamed("Loom", "utils/u_error", "survival/loom", "utils/u_general");
+script.startNamed("Lectern", "utils/u_error", "survival/lectern", "utils/u_general");
 script.startNamed("TipLoop", "utils/u_error", "system/tiploop", "utils/u_general");
 script.startNamed("Gamerules", "system/gamerules");
 script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");

+ 4 - 4
stop.txt

@@ -1,8 +1,8 @@
 event.load("player_login");
 
 sgoto(500, "announce");
-msg("online", "§4The server will stop soon!!!");
-msg("SERVER", "§4The server will stop soon!!!");
+msg("online", "§4The server will restart soon!!!");
+msg("SERVER", "§4The server will restart soon!!!");
 
 @wait
 wait();
@@ -12,8 +12,8 @@ if(event == "player_login") {
 goto("wait");
 
 @announce
-msg("online", "§4The server will stop now!!!");
-msg("SERVER", "§4The server will stop now!!!");
+msg("online", "§4The server will restart now and will be up again in 30 seconds!!!");
+msg("SERVER", "§4The server will restart now and will be up again in 30 seconds!!!");
 sgoto(100, "stop");
 goto("wait");
 

+ 0 - 0
system/story.txt → story/story.txt


+ 0 - 0
system/harvest.txt → survival/harvest.txt


+ 1 - 1
system/herobrine.txt → survival/herobrine.txt

@@ -28,7 +28,7 @@ if(event == "human_hurt") {
 		if(!isLiving(entity)) {
 			goto("wait");
 		}
-		living.damage(entity, 4, damage.get("thorns", human));
+		living.damage(entity, 10, damage.get("thorns", human));
 	}
 	goto("wait");
 }

+ 0 - 0
system/lectern.txt → survival/lectern.txt


+ 0 - 0
system/loom.txt → survival/loom.txt


+ 0 - 0
system/mobspawning.txt → survival/mobspawning.txt


+ 35 - 0
survival/pumpkin.txt

@@ -0,0 +1,35 @@
+msg("dev", "§bPumpkinPie §rloaded.");
+event.load("block_click");
+
+times = map.new();
+pumpkin_wait_time = 3; //seconds
+
+pumpkin = read.item("minecraft:pumpkin_pie", 5, "PumpkinMinusOneEighthCake");
+lore_list = list.new();
+list.add(lore_list, "An almost whole pumpkin pie");
+list.add(lore_list, "Herobrine has already eaten a piece.");
+item.setLore(pumpkin, lore_list);
+
+pumpkin_loc = loc.new(world.getOverWorld(), 228, 71, 235);
+
+@wait
+wait();
+if(event == "block_click" && block_loc == pumpkin_loc) {
+	if(hand == "OFF_HAND") {
+		goto("wait");
+	}
+	if(action == "left") {
+		goto("wait");
+	}
+    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 {
+		msg.prefix(player, "§6FoodGiver", concat("Please wait for ", text.number(math.round(pumpkin_wait_time - diff_time)), " seconds."));
+	}
+}
+goto("wait");

+ 3 - 5
system/survival.txt → survival/survival.txt

@@ -376,7 +376,7 @@ if(hand == "OFF_HAND") {
 }
 if(entity.getType(entity) == "human") {
 	entity_name = entity.getName(entity);
-	if(entity_name == "Administrador\n§cmarvinius") {
+	if(entity_name == "Administrator\n§cmarvinius") {
 		item = living.getHand(player);
 		item_name = item.getName(item);
 		if(removeFormat(item_name) == "Beer") {
@@ -384,7 +384,7 @@ if(entity.getType(entity) == "human") {
 		}
 		goto("wait");
 	}
-	if(entity_name == "Administrador\n§cMentorMentos") {
+	if(entity_name == "Administrator\n§cMentorMentos") {
 		item = living.getHand(player);
 		item_name = item.getName(item);
 		if(removeFormat(item_name) == "Beer") {
@@ -789,9 +789,7 @@ function shear_leave(block_loc, original_block_type, original_item, player, unbr
 	block.set(block_loc, "minecraft:air");
 	item.drop(block_loc, original_item);
 	if(player.isSurvival(player)) {
-		if(math.random(0, 99) < 100 / (unbreaking_level + 1)) {
-			player.damageItem(player, 1);
-		}
+		player.damageItem(player, 1);
 	}
 }
 

+ 8 - 1
system/timber.txt → survival/timber.txt

@@ -4,7 +4,6 @@ prop_persistent = block.getProperty("persistent");
 tag_log_burn = block.getTag("minecraft:logs_that_burn");
 axe_tag = item.getTag("km:axe");
 
-
 horizontal_dist_map = map.new();
 map.add(horizontal_dist_map, "minecraft:oak_log", 8);
 map.add(horizontal_dist_map, "minecraft:spruce_log", 8);
@@ -16,6 +15,14 @@ map.add(horizontal_dist_map, "minecraft:dark_oak_log", 5);
 msg("dev", "§bTimber §rloaded.");
 @wait
 wait();
+loc = entity.getLocation(player);
+world_name = world.getName(loc.getWorld(loc));
+if(world.isCreativeName(world_name)) {
+	goto("wait");
+}
+if(world.isStoryName(world_name)) {
+	goto("wait");
+}
 if(event == "block_break") {
 	if(cancel) {
 		goto("wait");

+ 31 - 27
system/ai.txt

@@ -1,10 +1,11 @@
-event.load("player_login");
 event.load("entity_join");
+event.load("living_pre_hurt");
+event.load("entity_click");
 
-ai_ignore = list.new();
-list.add(ai_ignore, "human");
-list.add(ai_ignore, "ender_dragon");
-list.add(ai_ignore, "villager");
+ignore = set.new();
+set.add(ignore, "human");
+set.add(ignore, "ender_dragon");
+set.add(ignore, "villager");
 
 msg("dev", "§bAi §rloaded");
 @wait
@@ -13,29 +14,32 @@ ignoreGoto(event);
 goto("wait");
 
 @entity_join
-if(isLiving(entity)) {
-	if(!isPlayer(entity)) {
-		loc = entity.getLocation(entity);
-		world = loc.getWorld(loc);
-		world_name = world.getName(world);
-		if(word.isSurvName(world_name)) {
-			if(!living.getAi()) {
-				entity_type = entity.getType(entity);
-				if(!list.contains(ai_ignore, entity_type)) {
-					living.removeAi(entity);
-				}
-			}
-		}
-	}
+if(!isLiving(entity)) {
+	goto("wait");
 }
+if(isPlayer(entity)) {
+	goto("wait");
+}
+if(entity.hasTag(entity, "mod_spawned")) {
+	goto("wait");
+}
+entity_type = entity.getType(entity);
+if(set.contains(ignore, entity_type)) {
+	goto("wait");
+}
+entity.addTag(entity, "no_tick");
 goto("wait");
 
-@player_login
-//Spawn mobs with ai
-online_list = players.toList();
-if(list.getSize(online_list) > 0) {
-	living.setAi(false);
-} else {
-	living.setAi(true);
+@entity_click
+is(isLiving(entity)) {
+	removeTag(entity);
 }
-goto("wait");
+goto("wait");
+
+@living_pre_hurt
+removeTag(living_entity);
+goto("wait");
+
+function removeTag(living_entity) {
+	entity.removeTag(living_entity, "no_tick");
+}

+ 138 - 22
system/commands.txt

@@ -62,8 +62,10 @@ command.register("cli", "Clears items in a radius");
 command.register("color", "Shows all colors");
 command.register("coords", "Shows infos for the targeted block");
 command.register("copyisland", "Copyisland-Commands");
+command.register("creative", "Teleports to creative-spawn");
 command.register("databank", "Databank-Commands");
 command.register("datatools", "Datatools-Commands");
+command.register("enchant", "Enchants an item in your hand");
 command.register("enderchest", "Shows enderchests");
 command.register("error", "Error-Logger");
 command.register("errordebug", "Debug-Logger");
@@ -88,6 +90,7 @@ command.register("human", "Human-Commands");
 command.register("inv", "Inv-Commands");
 command.register("iteminfo", "Returns information about an item");
 command.register("jail", "Sends a player to jail");
+command.register("jumpto", "Jumps to a block in sight");
 command.register("kick", "Kicks a player");
 command.register("lastseen", "Shows the last players online");
 command.register("lightning", "Summons a lightning_bolt");
@@ -169,6 +172,7 @@ command.registerAlias("sban", "silentban");
 command.registerAlias("tell", "msg");
 command.registerAlias("r", "answer");
 command.registerAlias("pardon", "unban");
+command.registerAlias("j", "jumpto");
 command.registerAlias("mimimi", "help");
 command.registerAlias("ci", "copyisland");
 command.registerAlias("mem", "memory");
@@ -322,6 +326,8 @@ set.add(butcher_set, "drowned");
 set.add(butcher_set, "wither");
 set.add(butcher_set, "silverfish");
 set.add(butcher_set, "zombified_piglin");
+set.add(butcher_set, "cod");
+set.add(butcher_set, "guardian");
 
 rank_array = array.new(25, 2);
 //Playtime
@@ -1464,7 +1470,7 @@ a = list.getIndex(lag_list, 0);
 list.removeIndex(lag_list, 0);
 p_uuid = a[0];
 t_old = a[1];
-t = math.roundComma((t - t_old) / 5000 * 20, 2); //Umwandlung 5000ms -> 1s -> 20ticks
+t = math.roundComma((t - t_old) / 50 / 5, 2);
 p = player.get(p_uuid);
 if(p != null) {
 	msg.prefix(p, prefix_commands, "Expected: 20 ticks/sec");
@@ -2159,6 +2165,20 @@ if(silentjoin) {
 }
 goto("wait");
 
+@jumpto
+loc = player.getTarget(player, 100);
+if(block.isAir(loc)) {
+	msg.prefix(player, prefix_commands, "No block in sight.");
+	goto("wait");
+}
+y = loc.getY(loc);
+while(!block.isAir(loc)) {
+	loc.setY(loc, y);
+	y++;
+}
+player.teleport(player, loc.mod(loc, 0, 1, 0), true);
+goto("wait");
+
 @jailloop
 size = list.getSize(jailed_list);
 for(i = 0; i < size; i++) {
@@ -2884,10 +2904,10 @@ if(text.contains(tipp_value, "https://")) {
 	msg_before = a[0];
 	msg_link = a[1];
 	msg_after = a[2];
-	msg(p, concat("§r[", prefix_tips, "§r] "), msg_before, msg_link, msg_after);
+	msg(p, concat("§r[§e", player.getName(player), "§r] "), msg_before, msg_link, msg_after);
 	goto("wait");
 }
-msg(p, concat("§r[", prefix_tips, "§r] ", tipp_value));
+msg(p, concat("§r[§e", player.getName(player), "§r] ", tipp_value));
 goto("wait");
 
 @help
@@ -3137,7 +3157,7 @@ elseif(arg0 == "harvest") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Harvest", "utils/u_error", "system/harvest", "utils/u_general");
+	script.startNamed("Harvest", "utils/u_error", "survival/harvest", "utils/u_general");
 }
 elseif(arg0 == "hawkeye") {
 	script = script.get("Hawkeye");
@@ -3151,21 +3171,21 @@ elseif(arg0 == "herobrine") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Herobrine", "utils/u_error", "system/herobrine", "utils/u_general");
+	script.startNamed("Herobrine", "utils/u_error", "survival/herobrine", "utils/u_general");
 }
 elseif(arg0 == "lectern") {
 	script = script.get("Lectern");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Lectern", "utils/u_error", "system/lectern", "utils/u_general");
+	script.startNamed("Lectern", "utils/u_error", "survival/lectern", "utils/u_general");
 }
 elseif(arg0 == "loom") {
 	script = script.get("Loom");
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Loom", "utils/u_error", "system/loom", "utils/u_general");
+	script.startNamed("Loom", "utils/u_error", "survival/loom", "utils/u_general");
 }
 elseif(arg0 == "perms") {
 	script.start("system/perms", "utils/u_general");
@@ -3175,7 +3195,7 @@ elseif(arg0 == "pumpkin") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Pumpkin", "utils/u_error", "system/pumpkin", "utils/u_general");
+	script.startNamed("Pumpkin", "utils/u_error", "survival/pumpkin", "utils/u_general");
 }
 elseif(arg0 == "stats") {
 	script = script.get("Ranklist");
@@ -3217,7 +3237,7 @@ elseif(arg0 == "timber") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Timber", "utils/u_error", "system/timber", "utils/u_general");
+	script.startNamed("Timber", "utils/u_error", "survival/timber", "utils/u_general");
 }
 elseif(arg0 == "trader") {
 	script = script.get("Trader");
@@ -3231,7 +3251,7 @@ elseif(arg0 == "story") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Story", "utils/u_error", "system/story", "utils/u_general");
+	script.startNamed("Story", "utils/u_error", "story/story", "utils/u_general");
 	script = script.get("QuestsAdmont");
 	if(script != null) {
 		script.term(script);
@@ -3255,7 +3275,7 @@ elseif(arg0 == "survival") {
 	if(script != null) {
 		script.term(script);
 	}
-	script.startNamed("Survival", "utils/u_error", "system/survival", "utils/u_general");
+	script.startNamed("Survival", "utils/u_error", "survival/survival", "utils/u_general");
 }
 elseif(arg0 == "voxel") {
 	script = script.get("Voxel");
@@ -3306,6 +3326,48 @@ while(block.isAir(player_loc)) {
 player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
 goto("wait");
 
+@creative
+crea_spawn = world.getCreativeSpawn();
+world = loc.getWorld(crea_spawn);
+if(world == null) {
+	msg.prefix(player, prefix_commands, "This world is not loaded.");
+	goto("wait");
+}
+if(size > 1) {
+	msg.prefix(player, prefix_commands, "/story [player]");
+	goto("wait");
+}
+if(size == 1) {
+	affectedname = list.getIndex(args, 0);
+	affectedplayer = read.player(affectedname);
+	if(affectedplayer == null) {
+		msg.prefix(player, prefix_commands, "This player is not online.");
+		goto("wait");
+	}
+	if(!perm.has(player, "teleport.other")) {
+		perm.no(player, "teleport.other");
+		goto("wait");
+	}
+}
+if(player.hasMinigame(affectedplayer)) {
+	if(size == 1) {
+		msg.prefix(player, prefix_commands, "The player can't be teleported now.");
+	} else {
+		msg.prefix(player, prefix_commands, "You can't teleport now.");
+	}
+	goto("wait");
+}
+if(size == 1) {
+	if(player != affectedplayer) {
+		affectedname = player.getName(affectedplayer);
+		msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the creative world."));
+	}
+}
+if(player.teleport(affectedplayer, crea_spawn, true)) {
+	msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the creative world.");
+}
+goto("wait");
+
 @story
 story_spawn = world.getStorySpawn();
 world = loc.getWorld(story_spawn);
@@ -3645,6 +3707,7 @@ if(size == 0) {
 	msg(player, "§6 - name-visibility <boolean> §rShow name (not) permanent");
 	msg(player, "§6 - name-item <name> §rRename an item");
 	msg(player, "§6 - lore-item <line> <lore> §rSet an item lore");
+	msg(player, "§6 - print-entity §rPrint entities nbt-tag");
 	goto("wait");
 }
 arg0 = text.toLowerCase(list.getIndex(args, 0));
@@ -3719,6 +3782,17 @@ if(arg0 == "name-item") {
 	msg.prefix(player, prefix_datatools, concat("Item renamed to ", name, "§r."));
 	goto("wait");
 }
+if(arg0 == "print-entity") {
+	templist = living.near(player, 3);
+	if(list.getSize(templist) == 0) {
+		msg.prefix(player, prefix_datatools, "Too far away from an entity.");
+		goto("wait");
+	}
+	entity = list.getIndex(templist, 0);
+	txt_ent = text.entity(entity);
+	msg(player, text.clipBoard(txt_ent, txt_ent));
+	goto("wait");
+}
 if(arg0 == "lore-item") {
 	if(size < 3) {
 		msg.prefix(player, prefix_datatools, "/datatools lore-item <line> <lore>");
@@ -5788,6 +5862,30 @@ for(i = 0; i < size; i++) {
 msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
 goto("wait");
 
+@enchant
+if(size != 2) {
+	msg.prefix(player, prefix_commands, "/enchant <enchantment> <level>");
+	goto("wait");
+}
+ench_string = list.getIndex(args, 0);
+ench = enchantment.get(ench_string);
+if(ench == null) {
+	msg.prefix(player, prefix_commands, "Unknown enchantment");
+	goto("wait");
+}
+lvl = list.getIndex(args, 1);
+if(!isDouble(lvl) || lvl < 1 || lvl > 100) {
+	msg.prefix(sender, prefix_commands, "Number greater than 0 and less than 101 expected.");
+	goto("wait");
+}
+item = living.getHand(player);
+if(item.getType(item) == "minecraft:air") {
+	msg.prefix(sender, prefix_commands, "You need to hold an item in your hand.");
+	goto("wait");
+}
+enchantment.add(ench, item, lvl);
+goto("wait");
+
 @enderchest
 if(size < 1 || size > 2) {
 	msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
@@ -6423,7 +6521,7 @@ if(!isDouble(amount)) {
 	goto("wait");
 }
 if(amount < 1) {
-	msg.prefix(sender, prefix_commands, "Zahl größer 0 erwartet.");
+	msg.prefix(sender, prefix_commands, "Positive number expected.");
 	goto("wait");
 }
 msg.prefix(sender, prefix_commands, "These players were last seen:");
@@ -8102,6 +8200,7 @@ function addTpaRequest(player_uuid, aim_uuid) {
 function setCommandHelps() {
 	command.clearHelp();
 	command.clearIgnored();
+	//Vanilla ignorieren, danach neu setzen
 	command.addIgnored("teleport");
 	command.addIgnored("time");
 	command.addIgnored("help");
@@ -8109,6 +8208,8 @@ function setCommandHelps() {
 	command.addIgnored("kick");
 	command.addIgnored("kill");
 	command.addIgnored("gamemode");
+	command.addIgnored("enchant");
+	command.addIgnored("jumpto");
 	
 	commandhelp.add("silentjoin");
 	commandhelp.add("nowb");
@@ -8153,6 +8254,8 @@ function setCommandHelps() {
 	commandhelp.addAlias(help, "ram", "memory");
 	help = commandhelp.add("afk");
 	commandhelp.addAlias(help, "afklo", "afk");
+	help = commandhelp.add("jumpto");
+	commandhelp.addAlias(help, "j", "jumpto");
 	
 	help = commandhelp.add("leave");
 	commandhelp.addAlias(help, "l", "leave");
@@ -8250,6 +8353,12 @@ function setCommandHelps() {
 	command.addHelpChild(help, helpArg0);
 	command.addHelp(help);
 	
+	help = command.newHelp("enchant", "enchant");
+	helpArg0 = command.newHelpSpecial("Enchantment", "enchantment");
+	command.addHelpChild(helpArg0, command.newHelpInt("level", 0, 100));
+	command.addHelpChild(help, helpArg0);
+	command.addHelp(help);
+	
 	help = command.newHelp("allsounds", "allsounds");
 	command.addHelpChild(help, command.newHelpLiteral("start"));
 	command.addHelpChild(help, command.newHelpLiteral("stop"));
@@ -8263,6 +8372,10 @@ function setCommandHelps() {
 	command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
 	command.addHelp(help);
 	
+	help = command.newHelp("creative", "creative");
+	command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
+	command.addHelp(help);
+	
 	help = command.newHelp("story", "story");
 	command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
 	command.addHelp(help);
@@ -8298,12 +8411,13 @@ function setCommandHelps() {
 	help = command.newHelp("stats", "stats");
 	addStatsGameHelp(help, "BedWars");
 	addStatsGameHelp(help, "RageMode");
-	addStatsGameHelp(help, "Jump'n'Run");
+	addStatsGameHelp(help, "JR-Endless");
 	addStatsGameHelp(help, "Rebuild");
 	addStatsGameHelp(help, "FastBridge");
 	addStatsGameHelp(help, "SnowGame");
 	addStatsGameHelp(help, "TJR");
-	addStatsGameHelp(help, "IJR");
+	addStatsGameHelp(help, "JR-Ice");
+	addStatsGameHelp(help, "JR-Rooms");
 	addStatsGameHelp(help, "Letters");
 	addStatsGameHelp(help, "Sammelfieber");
 	addStatsGameHelp(help, "Buttons");
@@ -8337,14 +8451,14 @@ function setCommandHelps() {
 	command.addHelpChild(help, helpArg0);
 	//datatools attribute <attribute> <slot> <double> <op>
 	helpArg0 = command.newHelpLiteral("attribute");
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR"));
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR_TOUGHNESS"));
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_DAMAGE"));
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("KNOCKBACK_RESISTANCE"));
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MAX_HEALTH"));
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MOVEMENT_SPEED"));
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_SPEED"));
-	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("LUCK"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor_toughness"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_damage"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("knockback_resistance"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("max_health"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("movement_speed"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_speed"));
+	command.addHelpChild(helpArg0, addDtAttributeAttributHelp("luck"));
 	command.addHelpChild(help, helpArg0);
 	//datatools hide-entity
 	command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
@@ -8364,6 +8478,8 @@ function setCommandHelps() {
 	helpArg1 = command.newHelpString("name", true);
 	command.addHelpChild(helpArg0, helpArg1);
 	command.addHelpChild(help, helpArg0);
+	//datatools print-entity
+	command.addHelpChild(help, command.newHelpLiteral("print-entity"));
 	//datatools lore-item <line> <lore>
 	helpArg0 = command.newHelpLiteral("lore-item");
 	helpArg1 = command.newHelpInt("line", 0, 1000);

+ 0 - 43
system/feature_list.txt

@@ -1,43 +0,0 @@
-Bildschirm
-	Links oben: Geld-Anzeige; weitere Spielinfos...
-	Mittig oben: Funktionen aufrubar über die Tastatur
-	Rechts oben: Statuseffekte als Text mit Timer dargestellt (statt als Vanilla-Icon); Anzeige zeitlicher Spielinfos
-
-Aufrubare Funktionen über den Bildschirm mittig oben:
-* Settings-Menü: Spieler können für sich persönlich diverse Einstellungen über diese Menü togglen.
-* Skills-Übersicht und Einstellungen: Zeigt alle Skills des Servers inklusive Kosten und Beschreibungen. Aktive Skills lassen sich dort aktivieren. Passive Skills können dort getoggled werden.
-* Skip Night: Zeigt das Voting-Menü für das Skippen der Nacht
-
-Mod-Rezepte: Am Spawn steht ein Human, der einem alle Mod-Rezepte (Werkbank + Ofen) anzeigt.
-Info-Point: Am Spawn steht ein Human, der einem einen Überblick über den Server gibt. Teleports und Links zu Websites sind eingebettet.
-
-Währung: Snuvis
-1 Snuvi -> 1 Copper_Coin
-64 Snuvis -> 1 Silver_Coin
-4096 Snuvis -> 1 Gold_Coin
-
-Man verdient Geld primär durch Quests, ChestShops und Abenteuer. Geld wird direkt auf das Konto eines Spielers gelegt.
-Beim Bänker am Spawn kann man sich Münzen auszahlen lassen, sowie Münzen einzahlen und umtauschen.
-Neben dem Bänker am Spawn befindet sich ein Gambler-Automat mit einer 50/50-Chance für eine bestimmte Menge an gesetzten Snuvis.
-Außerdem lassen sich dort über zwei Lotterien pro Klick 1 Snuvi einzahlen, um mit einer Gewinnchance von 1:1.000 bzw. 1:10.000 den gesamten Betrag zu bekommen.
-
-
-Zusätzliche Survival-Features:
-- AFK-Loop: Jede Runde im AFK bekommt man einen Snuvi.
-- Rechtsklick mit einer Clock zeigt die Ingame-Zeit im Format hh:mm an.
-- Creeper explodieren auf Grundstücken nicht (Ausnahme: Explosive-Flag)
-- Tiere erhalten durch den Besitzer keinen Schaden. Gilt für: Katzen, Hunde, Papageien, alle Arten von Pferden. Über Settings-Menü togglebar.
-- PvP ist togglebar. Beide Seiten müssen PvP über das Settings-Menü eingeschalten haben.
-- Teleport vom Spawn in die Games-Welt durch ein Portal (Höhle)
-- Teleport vom Spawn in die Story-Welt durch ein Portal (Baum)
-- Mobgriefing durch Enderman wird verhindert
-
-BugHandling:
-- Im Spawnhaus bekommt man keinen Fallschaden. Durch den Teleport/Respawn dorthin, wurden Spieler erneut getötet.
-- Schilder können durch Spieler mit Farbstoffen nicht umgefärbt werden.
-
-//player_move Teleport: story, games
-//lectern
-//Abenteuer. Login show adventure-display
-//Teleporter allgemein
-//Skills

+ 4 - 3
system/gamecenter.txt

@@ -70,10 +70,11 @@ minigame.addSign("invertingclsign1", true, loc.new(gamesworld, -396, 157, -57),
 minigame.addSign("invertingclsign2", true, loc.new(gamesworld, -396, 157, -56), "minigames/inverting/inverting", "minigames/inverting/invertingclmap2", true);
 minigame.addSign("invertingclsign3", true, loc.new(gamesworld, -396, 157, -55), "minigames/inverting/inverting", "minigames/inverting/invertingclmap3", true);
 //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("jrmap", true, loc.new(gamesworld, -396, 157, -51), null, "minigames/jumpnrun/jumpnrun", true);
 minigame.addSign("parcoursign1", true, 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("tjrsign", true, loc.new(gamesworld, -396, 158, -51), null, "minigames/jumpnrun/todesjumpnrun", true);
+minigame.addSign("jr_sign_ice", true, loc.new(gamesworld, -396, 157, -49), "minigames/jumpnrun/jr_core", "minigames/jumpnrun/jr_map_ice", true);
+minigame.addSign("jr_sign_room", true, loc.new(gamesworld, -396, 157, -50), "minigames/jumpnrun/jr_core", "minigames/jumpnrun/jr_map_rooms", true);
 minigame.addSign("fastbridgesign1", true, loc.new(gamesworld, -413, 157, -40), "minigames/fastbridge/fastbridge", "minigames/fastbridge/region_fastbridgemap1", false);
 minigame.addSign("fastbridgesign2", true, loc.new(gamesworld, -414, 157, -40), "minigames/fastbridge/fastbridge", "minigames/fastbridge/region_fastbridgemap2", false);
 minigame.addSign("halmasign1", true, loc.new(gamesworld, -413, 156, -40), "minigames/halma/halma", "minigames/halma/halma_map1", false);

+ 3 - 1
system/limits.txt

@@ -36,4 +36,6 @@ limit.set("parrot", 10);
 limit.set("bat", 10);
 limit.set("squid", 10);
 limit.set("cod", 10);
-limit.set("pufferfish", 5);
+limit.set("pufferfish", 5);
+
+msg("dev", "§bLimits §rloaded.");

+ 2 - 0
system/perms.txt

@@ -55,6 +55,7 @@ perm.registerGroup(0, "party");
 perm.registerGroup(0, "games");
 perm.registerGroup(0, "story");
 perm.registerGroup(0, "survival");
+perm.registerGroup(0, "creative");
 perm.registerGroup(0, "stats");
 perm.registerGroup(0, "invstats");
 perm.registerGroup(0, "topinvstats");
@@ -97,6 +98,7 @@ perm.registerGroup(2, "setrank.other");
 perm.registerGroup(2, "setservermessage");
 perm.registerGroup(2, "scoreboard");
 perm.registerGroup(2, "adminshop");
+perm.registerGroup(2, "tag");
 perm.registerGroup(2, "team");
 perm.registerGroup(2, "suicide");
 perm.registerGroup(2, "advancement");

+ 13 - 6
system/ranklist.txt

@@ -12,12 +12,13 @@ list.add(inverting_list, "10x10cl");
 
 ranking.add("§b", "BedWars", "bw", "bwranks", "All Kills", "DESC", null);
 ranking.add("§c", "RageMode", "rm", "rmranks", "All Kills", "DESC", null);
-ranking.add("§a", "Jump'n'Run", "jr", "jumpranks", "Points Record", "DESC", null);
 ranking.add("§5", "Rebuild", "rebuild", "rebuildranks", "All solved patterns", "DESC", null);
 ranking.add("§d", "FastBridge", "fb", "fastbridgeranks", "Points Record", "DESC", null);
 ranking.add("§6", "SnowGame", "snow", "snowranks", "Kills", "DESC", null);
-ranking.add("§6", "TJR", "tjr", "tjrranks", "Checkpoints", "DESC", "ASC");
-ranking.add("§b", "IJR", "ijr", "icejrranks", "Checkpoints", "DESC", null);
+ranking.add("§6", "TJR", "tjr", "tjrranks", "Checkpoints | Time", "DESC", "ASC");
+ranking.add("§b", "JR-Ice", "ijr", "icejrranks", "Checkpoints | Time", "DESC", "ASC");
+ranking.add("§b", "JR-Rooms", "jr_rooms", "jr_room_ranks", "Checkpoints | Time", "DESC", "ASC");
+ranking.add("§a", "JR-Endless", "jr", "jumpranks", "Points Record", "DESC", null);
 ranking.add("§d", "Letters", "letter", "letterranks", "Time", "ASC", null);
 ranking.add("§a", "Sammelfieber", "sfsingle", "sfsingle", "Points Record", "DESC", null);
 ranking.add("§2", "Buttons", "button", "buttonranks", "Points Record", "DESC", null);
@@ -236,7 +237,10 @@ function showPlayerStats(player, gamename, table, p_name) {
 		} elseif(gamename == "TJR") {
 			points--;
 			sec_points = a[2];
-			sendTjrRank(player, p_name, rang, points, sec_points);
+			sendJrRank(player, p_name, rang, points, sec_points);
+		} elseif(gamename == "JR-Rooms" || gamename == "JR-Ice") {
+			sec_points = a[2];
+			sendJrRank(player, p_name, rang, points, sec_points);
 		} else {
 			sendRank(player, p_name, rang, points);
 		}
@@ -270,7 +274,10 @@ function showTopStats(player, gamename, table) {
 		} elseif(gamename == "TJR") {
 			points--;
 			sec_points = a[2];
-			sendTjrRank(player, p_name, rang, points, sec_points);
+			sendJrRank(player, p_name, rang, points, sec_points);
+		} elseif(gamename == "JR-Rooms" || gamename == "JR-Ice") {
+			sec_points = a[2];
+			sendJrRank(player, p_name, rang, points, sec_points);
 		} else {
 			sendRank(player, p_name, rang, points);
 		}
@@ -340,7 +347,7 @@ function sendRank(player, p_name, rang, points) {
 	msg(player, concat("§6", text.number(rang), "  §r", p_name, "  §e", text.number(points)));
 }
 
-function sendTjrRank(player, p_name, rang, points, sec_points) {
+function sendJrRank(player, p_name, rang, points, sec_points) {
 	msg(player, concat("§6", text.number(rang), "  §r", p_name, "  §e", text.number(points), " | ", time.getClockString(sec_points / 1000)));
 }
 

+ 1 - 3
test2.txt

@@ -1,4 +1,3 @@
-p = read.player("kajetanjohannes");
 z = entity.spawn("spider", entity.getLocation(p));
 entity.addEffect(z, "minecraft:speed", 999999, 10);
 entity.addEffect(z, "minecraft:regeneration", 999999, 3);
@@ -18,5 +17,4 @@ wait();
 term();
 
 @wusi
-msg("dev", "yes");*/
-
+msg("dev", "yes");*/

+ 2 - 0
test5.txt

@@ -0,0 +1,2 @@
+p = read.player("marvinius");
+player.setFly(p, true);

+ 1 - 1
utils/u_games.txt

@@ -470,7 +470,7 @@ function ranking.setPoints(rankingtable, player_or_id, points) {
 	databank.workerExecute(stmt);
 }
 
-//Setzt die sekundären Rekord-Punkte eines Spielers
+//Setzt die primären und sekundären Rekord-Punkte eines Spielers
 function ranking.setSecPoints(rankingtable, player_or_id, points, sec_points) {
 	player_id = player.getValidId(player_or_id);
 	if(ranking.isPlayerRegisterd(rankingtable, player_id)) {

+ 1 - 1
utils/u_general.txt

@@ -217,7 +217,7 @@ function getDateString(time) {
 	return concat(text.number(time.getDay(calendar)), ".", text.number(time.getMonth(calendar)), ".", text.number(time.getYear(calendar)));
 }
 
-function time.getClockString(time) {
+function time.getClockString(time) { //s
 	return concat(text.number(math.roundDown(time / 60)), " min ", text.number(math.round(time % 60)), " s");
 }