Browse Source

hawkeye update

mloeschenkohl 2 years ago
parent
commit
a5f78e368d

+ 1 - 1
docu_minecraft.php

@@ -975,7 +975,7 @@
         </tr>
         <tr>
             <td class="bold">Format</td>
-            <td>block.getState(block)</td>
+            <td>block.getState(location)</td>
         </tr>
     </table>
 	<table>

+ 32 - 3
minigames/among_us/among_us.txt

@@ -6,7 +6,6 @@ Hüte
 Door Closing
 Visual Tasks
 Stay in lobby after win
-Freeplay reset after all tasks done
 Trailer musik. JPB - Defeat the night (feat Ashley appollodor) _NCS Release
 rauswerf animation. mit no gravity stufenweise in die mitte tpen?
 vision durch rauch-partikel rund um den spieler (zylinder)
@@ -25,6 +24,8 @@ specific_lobby_handling = true;
 no_lobby_tp = true;
 no_core_reset = true;
 gamename = "§cAmong Us";
+game_short = "among_us";
+rankingtable = "among_us_ranks";
 
 settings_inv = inv.new("333333333333333333333333333333333333333333333333333333");
 for(i = 0; i < 9; i++) {
@@ -806,7 +807,9 @@ for(h = 0; h < player_list_size; h++) {
 	}
 }
 
-if(!freeplay) {
+if(freeplay) {
+	starttime = time.getMillis();
+} else {
 	imp_string = "";
 	iter = list.iterator(impostors_list);
 	while(hasNext(iter)) {
@@ -825,7 +828,7 @@ if(!freeplay) {
 		msg.prefix(p, gamename, concat("§4Impostors: §r", imp_string));
 	}
 }
-		
+
 setSaboCooldown(0);
 
 event.unload("entity_mount");
@@ -5365,6 +5368,32 @@ function addVentIcons(vent_loc, icon_1, vent_tp_loc_1, icon_2, vent_tp_loc_2) {
 
 @crewmate_win
 winners = "§bCrewmates";
+if(freeplay) {
+	endtime = time.getMillis();
+	
+	p_uuid = list.getIndex(player_list, 0);
+	p = player.get(p_uuid);
+	time = math.round((endtime - starttime) / 1000);
+	last_record = ranking.getPoints(rankingtable, p);
+	if(last_record == 0 || time < last_record) {
+		record = time;
+		diff = last_record - time;
+	} else {
+		record = last_record;
+	}
+	ranking.setPoints(rankingtable, p, record);
+	mins = math.roundDown(time / 60);
+	secs = math.roundComma(time % 60, 2);
+	rec_mins = math.roundDown(record / 60);
+	rec_secs = math.roundComma(record % 60, 2);
+
+	minigame.statsHeader(p, gamename, "§e");
+	minigame.statsLine(p, "§e", "Time", concat(text.number(mins), " min ", text.number(secs), " s"));
+	minigame.statsLine(p, "§e", "Your record", concat(text.number(rec_mins), " min ", text.number(rec_secs), " s"));
+	if(diff != null) {
+		msg(p, " §e- §rBeat own record by §e", concat(text.number(diff), " s"));
+	}
+}
 goto("win");
 
 @checkwin

+ 2 - 2
minigames/bedwars/region_bwmap4.txt

@@ -1,6 +1,6 @@
-mapname = "The Masters";
+mapname = "Masters";
 numberofteams = 4;
-teamsize = 1;
+teamsize = 2;
 minplayers = teamsize + 1;
 maxplayers = teamsize * numberofteams;
 gamesignsmap = getScriptVar("gamesigns");

+ 1 - 1
minigames/bedwars/region_bwmap6.txt

@@ -1,6 +1,6 @@
 mapname = "Desert";
 numberofteams = 2;
-teamsize = 1;
+teamsize = 2;
 minplayers = teamsize + 1;
 maxplayers = teamsize * numberofteams;
 gamesignsmap = getScriptVar("gamesigns");

+ 1 - 1
minigames/bedwars/region_bwmap7.txt

@@ -1,6 +1,6 @@
 mapname = "Throneroom";
 numberofteams = 2;
-teamsize = 2;
+teamsize = 4;
 minplayers = teamsize + 1;
 maxplayers = teamsize * numberofteams;
 gamesignsmap = getScriptVar("gamesigns");

+ 1 - 1
minigames/bedwars/region_bwmap8.txt

@@ -1,6 +1,6 @@
 mapname = "Rudolf";
 numberofteams = 4;
-teamsize = 1;
+teamsize = 2;
 minplayers = teamsize + 1;
 maxplayers = teamsize * numberofteams;
 gamesignsmap = getScriptVar("gamesigns");

+ 1 - 1
minigames/bedwars/region_bwmap9.txt

@@ -1,6 +1,6 @@
 mapname = "Cave";
 numberofteams = 2;
-teamsize = 1;
+teamsize = 4;
 minplayers = teamsize + 1;
 maxplayers = teamsize * numberofteams;
 gamesignsmap = getScriptVar("gamesigns");

+ 3 - 5
minigames/fastbridge/fastbridge.txt

@@ -231,11 +231,9 @@ function wincore(winner) {
 		}
 		
 		minigame.statsHeader(player, $gamename, "§e");
-		for(h = 0; h < list.getSize($player_list); h++) {
-			p_uuid = list.getIndex($player_list, h);
-			p = player.get(p_uuid);
-			p_name = player.getName(p);
-			msg(player, " §e- §r", text.number(getNumber(p_uuid)), " §e", p_name);
+		for(h = 0; h < list.getSize($points); h++) {
+			array = list.getIndex($points, h);
+			msg(player, " §e- §r", text.number(array[1]), " §e", player.getName(array[0]));
 		}
 		msg(player, "");
 		minigame.statsLine(player, "§e", "Won games", text.number(fbwon));

+ 1 - 1
minigames/parcour/parcour.txt

@@ -58,7 +58,7 @@ display.add(player, 5, concat("§rTime: §e0:00"));
 stacks.clear(player);
 stacks.set(player, 0, "km:return_red");
 stacks.setActive(player, true);
-sgoto(1, "loop");
+sgoto(2, "loop");
 starttime = time.getMillis();
 goto("wait");
 

+ 1 - 1
minigames/rebuild/rebuild.txt

@@ -166,7 +166,7 @@ if(!list.contains(list, block_loc)) {
 }
 cancel = false;
 list.add(check_list, player_uuid);
-sgoto(1, "checkpicture");
+sgoto(2, "checkpicture");
 goto("checkgame");
 
 @checkpicture

+ 10 - 0
minigames/snowgame/snowgame.txt

@@ -125,6 +125,16 @@ while(list.getSize(waiters) != 0) {
 	list.remove(waiters, p_name);
 }
 
+max = 1;
+for(i = 0; i < numberofteams; i++) {
+	teamlist = map.get(team_lists, i);
+	size = list.getSize(teamlist);
+	if(size > max) {
+		max = size;
+	}
+}
+team_lifes = max * 10;
+
 minigame.displayAll(1, gamename);
 for(i = 0; i < numberofteams; i++) {
 	teamlist = map.get(team_lists, i);

+ 0 - 1
minigames/snowgame/snowmap1.txt

@@ -7,7 +7,6 @@ gamesignloc = minigame.getSignLoc("snowsign1");
 gamesworld = world.getGames();
 lobbyspawnloc = loc.new(gamesworld, -1224, 43, -995, 90, 0);
 middleloc = loc.new(gamesworld, -1205, 41, -979);
-team_lifes = 20;
 radius = 200;
 nerfradius = 8;
 

+ 0 - 1
minigames/snowgame/snowmap2.txt

@@ -7,7 +7,6 @@ gamesignloc = minigame.getSignLoc("snowsign2");
 gamesworld = world.getGames();
 lobbyspawnloc = loc.new(gamesworld, -2029.5, 116, -4004.5, 180, 0.0001);
 middleloc = loc.new(gamesworld, -2030, 100, -3954);
-team_lifes = 20;
 radius = 200;
 nerfradius = 8;
 

+ 2 - 2
startscript.txt

@@ -16,7 +16,7 @@ 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", "survival/harvest", "utils/u_general");
-//script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "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", "survival/pumpkin", "utils/u_general");
@@ -24,7 +24,7 @@ script.startNamed("Voxel", "system/voxel");
 script.startNamed("Mobspawning", "survival/mobspawning");
 script.startNamed("Fixitems", "utils/u_error", "system/fixitems", "utils/u_general");
 script.startNamed("Trader", "utils/u_error", "survival/trader", "utils/u_general");
-script.startNamed("Amber", "utils/u_error", "survival/amber", "utils/u_general");
+script.startNamed("Gemstones", "utils/u_error", "survival/gemstones", "utils/u_general");
 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");

+ 0 - 0
survival/amber.txt → survival/gemstones.txt


+ 17 - 17
survival/survival.txt

@@ -448,43 +448,43 @@ if(inv_id == bankinvid) { //Bankmenü
 	if(inv_slot == 11 || inv_slot == 12 || inv_slot == 15 || inv_slot == 16)  {
 		if(inv_slot == 11) {
 			//1 Silbermünze --> 64 Kupfermünzen
-			item1 = coin_silver;
-			item2 = coin_copper64;
-			message = "No silvercoin in inventory.";
+			from_item = coin_silver;
+			to_item = coin_copper64;
+			message = "Not enough silvercoins in inventory.";
 			item_type = "km:coin_copper";
-			coin_inv = silver_inv;
+			needed_inv_coins = silver_inv;
 		}
 		elseif(inv_slot == 12) {
 			//64 Kupfermünzen --> 1 Silbermünze
-			item1 = coin_copper64;
-			item2 = coin_silver;
+			from_item = coin_copper64;
+			to_item = coin_silver;
 			message = "Not enough coppercoins in inventory.";
 			item_type = "km:coin_silver";
-			coin_inv = copper_inv;
+			needed_inv_coins = copper_inv;
 		}
 		elseif(inv_slot == 15) {
 			//1 Goldmünze --> 64 Silbermünzen
-			item1 = coin_gold;
-			item2 = coin_silver64;
-			message = "No goldcoin in inventory.";
+			from_item = coin_gold;
+			to_item = coin_silver64;
+			message = "Not enough goldcoins in inventory.";
 			item_type = "km:coin_silver";
-			coin_inv = gold_inv;
+			needed_inv_coins = gold_inv;
 		}
 		elseif(inv_slot == 16) {
 			//64 Silbermünzen --> 1 Goldmünze
-			item1 = coin_silver64;
-			item2 = coin_gold;
+			from_item = coin_silver64;
+			to_item = coin_gold;
 			message = "Not enough silvercoins in inventory.";
 			item_type = "km:coin_gold";
-			coin_inv = silver_inv;
+			needed_inv_coins = silver_inv;
 		}
-		item_1 = item.clone(item1);
+		item_1 = item.clone(from_item);
 		item.setAmount(item_1, item.getAmount(item_1) * factor);
-		item_2 = item.clone(item2);
+		item_2 = item.clone(to_item);
 		item.setAmount(item_2, item.getAmount(item_2) * factor);
 		amount1 = item.getAmount(item_1);
 		amount2 = item.getAmount(item_2);
-		if(coin_inv * factor < amount1) {
+		if(needed_inv_coins * factor < amount1 * factor) {
 			msg.prefix(player, prefix_money, message);
 			goto("wait");
 		}

+ 20 - 0
survival/trader.txt

@@ -1,4 +1,5 @@
 event.load("entity_click");
+event.load("item_air_click");
 
 beer = read.item("{id:\"minecraft:player_head\",Count:1b,tag:{SkullOwner:{Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDE2OGI5ODA5OGEwYzRhMjllMjA0NjcwNDYzMDkxZGI2MDcwZTc3ZDg2NzY5ZDk4NWY2YmVmNDA3NWU1In19fQ==\"}]},Id:[I;-919099029,-843296815,-1978014726,-1632767213]},display:{Name:'{\"text\":\"§FBeer\"}'}}}");
 bread = read.item("{id:\"minecraft:player_head\",Count:1b,tag:{SkullOwner:{Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjM0ODdkNDU3ZjkwNjJkNzg3YTNlNmNlMWM0NjY0YmY3NDAyZWM2N2RkMTExMjU2ZjE5YjM4Y2U0ZjY3MCJ9fX0=\"}]},Id:[I;-1486995616,574768169,-1899053858,2001973348]},display:{Name:'{\"text\":\"§FBread\"}'}}}");
@@ -35,6 +36,16 @@ pants = read.item("{id:\"minecraft:leather_leggings\",Count:1b,tag:{Damage:0,Unb
 msg("dev", "§bTrader §rloaded.");
 @wait
 wait();
+if(event == "item_air_click" && hand == "MAIN_HAND") {
+    item = living.getEquip(player, "hand");
+    beer_amount = item.clone(beer);
+    item.setAmount(beer_amount, item.getAmount(item));
+    if(text.item(item) == text.item(beer_amount)) {
+        entity.addEffect(player, "nausea", 400, 0);
+	entity.addEffect(player, "luck", 1200, 1);
+        item.setAmount(item, item.getAmount(item) - 1);
+    }
+}
 if(event == "entity_click") {
 	if(hand == "OFF_HAND") {
 		goto("wait");
@@ -140,5 +151,14 @@ if(event == "entity_click") {
 		shop.open(shop, player, shop_name);
 		goto("wait");
 	}
+	if(entity_name == "Tree") {
+		shop = shop.new();
+		shop.addOffer(shop, read.item("km:coin_gold", 32), read.item("minecraft:beacon", 1), 999);
+		shop.addOffer(shop, read.item("minecraft:dragon_head", 1), read.item("km:coin_gold", 20), 999);
+		shop.addOffer(shop, read.item("km:coin_silver", 20), read.item("minecraft:end_crystal", 1), 999);
+		shop.addOffer(shop, read.item("minecraft:dragon_egg", 1), read.item("km:coin_gold", 10), 999);
+		shop.open(shop, player, shop_name);
+		goto("wait");
+	}
 }
 goto("wait");

+ 130 - 62
system/commands.txt

@@ -421,6 +421,7 @@ skip_night_inv_id = inv.getId(skip_night_inv);
 
 vote_inv = inv.new("222222222");
 inv.setItem(vote_inv, 0, read.item("km:coin_gold", 1, "§fMoney Booster", "Doubles incoming money for 10 minutes.", "Cost: 6 VP"));
+inv.setItem(vote_inv, 1, read.item("minecraft:jukebox", 1, "§fRick is in the house", "Rickroles every player on the server.", "Cost: 2 VP"));
 vote_inv_id = inv.getId(vote_inv);
 
 ha_tool = read.item("km:guild_block", 1, "§cHawkeye Tool", "Hawkeye Tool");
@@ -458,6 +459,80 @@ plot.registerMoveEvents(world.get("the_nether"));
 plot.registerMoveEvents(world.get("the_end"));
 plot.registerMoveEvents(world.get("creative"));
 
+RickRollSounds = list.new();
+list.add(RickRollSounds, math.pow(2, -6 / 12));//6
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, -1 / 12));//11
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, 3 / 12));//15
+list.add(RickRollSounds, math.pow(2, 3 / 12));//15
+list.add(RickRollSounds, math.pow(2, 1 / 12));//13
+list.add(RickRollSounds, math.pow(2, -6 / 12));//6
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, -1 / 12));//11
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, 1 / 12));//13
+list.add(RickRollSounds, math.pow(2, 1 / 12));//13
+list.add(RickRollSounds, math.pow(2, -1 / 12));//11
+list.add(RickRollSounds, math.pow(2, -2 / 12));//10
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, -6 / 12));//6
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, -1 / 12));//11
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, -1 / 12));//11
+list.add(RickRollSounds, math.pow(2, 1 / 12));//13
+list.add(RickRollSounds, math.pow(2, -2 / 12));//10
+list.add(RickRollSounds, math.pow(2, -4 / 12));//8
+list.add(RickRollSounds, math.pow(2, -6 / 12));//6
+list.add(RickRollSounds, math.pow(2, -6 / 12));//6
+list.add(RickRollSounds, math.pow(2, -6 / 12));//6
+list.add(RickRollSounds, math.pow(2, 1 / 12));//13
+list.add(RickRollSounds, math.pow(2, -1 / 12));//11
+//6,8,11,8,15,15,13,6,8,11,8,13,13,11,10,8,6,8,11,8,11,13,10,8,6,6,6,13,11
+
+RickRollSoundDists = list.new();
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 12);//6
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 8);//4
+list.add(RickRollSoundDists, 4);//2
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 2);//1
+list.add(RickRollSoundDists, 4);//2
+list.add(RickRollSoundDists, 4);//2
+list.add(RickRollSoundDists, 6);//3
+list.add(RickRollSoundDists, 8);//4
+list.add(RickRollSoundDists, 2);//1
+//2,2,2,2,2,6,6,12,2,2,2,2,6,6,6,2,6,2,2,2,2,8,4,6,2,4,4,6,8
+rick_sounds_amount = list.getSize(RickRollSoundDists);
+
+sound_category_master = sound.getCategory("master");
+sound_flute = sound.get("block.note_block.flute");
+sound_harp = sound.get("block.note_block.harp");
+sound_pling = sound.get("block.note_block.pling");
+
+event_map = map.new(); //für hawkeye
+map.add(event_map, 1, "block_break");
+map.add(event_map, 2, "block_place");
+
 event.load("entity_click");
 event.load("player_move");
 event.load("inv_click");
@@ -739,6 +814,17 @@ if(event == "inv_click") {
 			money.setBoostFactor(2);
 			status.addTimed("online", 56, 12000, "Money Booster");
 			sgoto(12000, "resetMoneyBoost");
+			goto("wait");
+		}
+		if(inv_slot == 1) {
+			vp = player.getVotePoints(player);
+			if(vp < 2) {
+				msg.prefix(player, prefix_commands, "Not enough vote points.");
+				goto("wait");
+			}
+			player.setVotePoints(player, vp - 2);
+			rickIndex = 0;
+			goto("RickRole_play");
 		}
 		goto("wait");
 	}
@@ -1054,6 +1140,29 @@ if(event == "player_data_tick") {
 }
 goto("wait");
 
+@RickRole_play
+if(rickIndex < rick_sounds_amount) {
+	pitch = list.getIndex(RickRollSounds, rickIndex);
+	RickSound(pitch);
+	ticks = 2 + list.getIndex(RickRollSoundDists, rickIndex);
+	sgoto(ticks, "RickRole_play");
+}
+rickIndex++;
+goto("wait");
+
+function RickSound(pitch) {
+	iter = list.iterator(players.toList());
+	while(hasNext(iter)) {
+		online_player = next(iter);
+		if(online_player == null) {
+			continue;
+		}
+		sound.spawnForPlayer(online_player, $sound_flute, $sound_category_master, 1, pitch);
+		sound.spawnForPlayer(online_player, $sound_harp, $sound_category_master, 1, pitch);
+		sound.spawnForPlayer(online_player, $sound_pling, $sound_category_master, 1, pitch);
+	}
+}
+
 @hack
 msg.prefix(player, prefix_commands, "Your pc got hacked now.");
 goto("wait");
@@ -3134,7 +3243,6 @@ if(size != 1) {
 	@starthelp
 	msg.prefix(sender, prefix_commands, "/start ...");
 	msg(sender, " - ai");
-	msg(sender, " - amber");
 	msg(sender, " - chat");
 	msg(sender, " - commands");
 	msg(sender, " - creative");
@@ -3143,6 +3251,7 @@ if(size != 1) {
 	msg(sender, " - fixitems");
 	msg(sender, " - friends");
 	msg(sender, " - games");
+	msg(sender, " - gemstones");
 	msg(sender, " - harvest");
 	msg(sender, " - hawkeye");
 	msg(sender, " - herobrine");
@@ -3174,13 +3283,6 @@ if(arg0 == "ai") {
 	}
 	script.startNamed("Ai", "system/ai", "utils/u_general");
 }
-elseif(arg0 == "amber") {
-	script = script.get("Amber");
-	if(script != null) {
-		script.term(script);
-	}
-	script.startNamed("Amber", "utils/u_error", "survival/amber", "utils/u_general");
-}
 elseif(arg0 == "commands") {
 	script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
 	if(script == null) {
@@ -3231,6 +3333,13 @@ elseif(arg0 == "games") {
 	}
 	script.startNamed("Gamecenter", "utils/u_error", "system/gamecenter", "utils/u_general", "utils/u_games");
 }
+elseif(arg0 == "gemstones") {
+	script = script.get("Gemstones");
+	if(script != null) {
+		script.term(script);
+	}
+	script.startNamed("Gemstones", "utils/u_error", "survival/gemstones", "utils/u_general");
+}
 elseif(arg0 == "harvest") {
 	script = script.get("Harvest");
 	if(script != null) {
@@ -4120,7 +4229,7 @@ if(p_uuid == null) {
 	msg.prefix(sender, prefix_commands, "There is no one you could answer.");
 	goto("wait");
 }
-message = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
+message = text.replace(text.concatList(text_args, " ", 0, size - 1), "&", "§");
 if(text.startsWith(message, "https://", 0)) {
 	message = text.link(message, message);
 }
@@ -4155,7 +4264,7 @@ if(p_uuid == null) {
 	msg.prefix(sender, prefix_commands, "Unknown player.");
 	goto("wait");
 }
-message = text.replace(text.concatList(args, " ", 1, size - 1), "&", "§");
+message = text.replace(text.concatList(text_args, " ", 1, size - 1), "&", "§");
 if(text.startsWith(message, "https://", 0)) {
 	message = text.link(message, message);
 }
@@ -4289,11 +4398,7 @@ if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
 string = "";
 if(size > 1) {
 	for(i = 1; i < size; i++) {
-		arg = list.getIndex(args, i);
-		if(isDouble(arg)) {
-			arg = text.number(arg);
-			
-		}
+		arg = list.getIndex(text_args, i);
 		if(i == 1) {
 			string = arg;
 		} else {
@@ -7777,8 +7882,6 @@ if(size == 0) {
 	msg(player, "§b - info <world> §rShows info about a world");
 	msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
 	msg(player, "§b - list §rShows all loaded worlds");
-	msg(player, "§b - load <world> §rLoads a world");
-	msg(player, "§b - unload <world> §rUnloads a world (removes it from memory)");
 	msg(player, "§b - setspawn §rSets the world's spawn");
 	msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
 	goto("wait");
@@ -7850,42 +7953,6 @@ if(arg0 == "list") {
 	msg(player, getSpacer());
 	goto("wait");
 }
-if(arg0 == "load") {
-	if(size != 2) {
-		msg.prefix(player, prefix_world, "/world load <world>");
-		goto("wait");
-	}
-	worldname = list.getIndex(args, 1);
-	world = world.get(worldname);
-	if(world != null) {
-		msg.prefix(player, prefix_world, "This world is already loaded.");
-		goto("wait");
-	}
-	if(!world.register(worldname)) {
-		msg.prefix(player, prefix_world, concat("The world ", worldname, " can't be found."));
-		goto("wait");
-	}
-	msg.prefix(player, prefix_world, "The world was loaded.");
-	goto("wait");
-}
-if(arg0 == "unload") {
-	if(size != 2) {
-		msg.prefix(player, prefix_world, "/world unload <world>");
-		goto("wait");
-	}
-	worldname = list.getIndex(args, 1);
-	world = world.get(worldname);
-	if(world == null) {
-		msg.prefix(player, prefix_world, "This world is not loaded.");
-		goto("wait");
-	}
-	if(!world.unregister(worldname)) {
-		msg.prefix(player, prefix_world, "This world can't be unlaoded.");
-		goto("wait");
-	}
-	msg.prefix(player, prefix_world, "You unlaoded this world.");
-	goto("wait");
-}
 if(arg0 == "setspawn") {
 	location = entity.getLocation(player);
 	world.setSpawn(location, 0);
@@ -8397,13 +8464,13 @@ function setCommandHelps() {
 	
 	help = command.newHelp("start", "start");
 	command.addHelpChild(help, command.newHelpLiteral("ai"));
-	command.addHelpChild(help, command.newHelpLiteral("amber"));
 	command.addHelpChild(help, command.newHelpLiteral("chat"));
 	command.addHelpChild(help, command.newHelpLiteral("commands"));
 	command.addHelpChild(help, command.newHelpLiteral("creative"));
 	command.addHelpChild(help, command.newHelpLiteral("damage"));
 	command.addHelpChild(help, command.newHelpLiteral("doors"));
 	command.addHelpChild(help, command.newHelpLiteral("fixitems"));
+	command.addHelpChild(help, command.newHelpLiteral("gemstones"));
 	command.addHelpChild(help, command.newHelpLiteral("harvest"));
 	command.addHelpChild(help, command.newHelpLiteral("hawkeye"));
 	command.addHelpChild(help, command.newHelpLiteral("herobrine"));
@@ -8531,6 +8598,7 @@ function setCommandHelps() {
 	command.addHelp(help);
 	
 	help = command.newHelp("stats", "stats");
+	addStatsGameHelp(help, "AmongUs");
 	addStatsGameHelp(help, "BedWars");
 	addStatsGameHelp(help, "RageMode");
 	addStatsGameHelp(help, "JR-Endless");
@@ -9109,14 +9177,6 @@ function setCommandHelps() {
 	command.addHelpChild(help, helpArg0);
 	//world list
 	command.addHelpChild(help, command.newHelpLiteral("list"));
-	//world load <world>
-	helpArg0 = command.newHelpLiteral("load");
-	command.addHelpChild(helpArg0, command.newHelpString("world", false));
-	command.addHelpChild(help, helpArg0);
-	//world unload <world>
-	helpArg0 = command.newHelpLiteral("unload");
-	command.addHelpChild(helpArg0, command.newHelpString("world", false));
-	command.addHelpChild(help, helpArg0);
 	//world diffi <world> <diffi>
 	helpArg0 = command.newHelpLiteral("diffi");
 	helpArg1 = command.newHelpString("world", false);
@@ -9855,6 +9915,10 @@ function tpBottom(player) {
 	entity.teleport(player, player_loc);
 }
 
+//--------------------------------------------------
+//Hawkeye-Utils
+//--------------------------------------------------
+
 function hawkeye.getStartIndices(string) {
 	a = array.new(5);
 	a[0] = text.indexOf(string, "e:", 0);
@@ -9997,3 +10061,7 @@ function hawkeye.getAmountOfAll() {
 	databank.close(stmt);
 	return amount;
 }
+
+function hawkeye.getEventName(event_id) {
+	return map.get($event_map, event_id);
+}

+ 36 - 91
system/hawkeye.txt

@@ -12,25 +12,20 @@ event.load("block_place");
 event.load("block_click");
 prefix_hawkeye = "§cHawkeye";
 
-chests_tag = block.getTag("forge:chests/wooden");
-wall_signs_tag = block.getTag("minecraft:wall_signs");
-standing_signs_tag = block.getTag("minecraft:standing_signs");
-stairs_tag = block.getTag("minecraft:stairs");
-slabs_tag = block.getTag("minecraft:slabs");
-buttons_tag = block.getTag("minecraft:buttons");
-face_prop = block.getProperty("face");
-facing_prop = block.getProperty("facing");
-facing_except_up_prop = block.getProperty("facing_except_up");
-horizontal_facing_prop = block.getProperty("horizontal_facing");
-half_prop = block.getProperty("half");
-stair_shape_prop = block.getProperty("stair_shape");
-slab_type_prop = block.getProperty("slab_type");
-rotation_prop = block.getProperty("rotation");
-chest_type_prop = block.getProperty("chest_type");
-extended_prop = block.getProperty("extended");
+event_map = map.new();
+map.add(event_map, "block_break", 1);
+map.add(event_map, "block_place", 2);
 
-databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS hawkeye(id INT NOT NULL PRIMARY KEY, player_id INT NOT NULL, event VARCHAR(25) NOT NULL, world VARCHAR(15) NOT NULL, x INT NOT NULL, y INT NOT NULL, z INT NOT NULL, time BIGINT NOT NULL);"));
-databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS hawkeye_data(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, hawkeye_id INT NOT NULL, name VARCHAR(20) NOT NULL, value VARCHAR(100) NOT NULL, FOREIGN KEY (hawkeye_id) REFERENCES hawkeye(id) ON DELETE RESTRICT);"));
+databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS hawkeye(
+id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
+player_id INT NOT NULL, 
+event INT NOT NULL, 
+world VARCHAR(16) NOT NULL, 
+x INT NOT NULL, 
+y INT NOT NULL, 
+z INT NOT NULL, 
+time BIGINT NOT NULL, 
+text VARCHAR(1024) NOT NULL);"));
 
 hawkeye.deleteOlderThanThreeWeeks();
 
@@ -76,94 +71,44 @@ if(event == "block_click") {
 world_name = world.getName(loc.getWorld(block_loc));
 if(world.isSurvName(world_name)) {
 	if(event == "block_break" || event == "block_place") {
-		if(!cancel) {
-			id = hawkeye.getNextId();
-			hawkeye.addBlockEvent(id, event, player, block_loc);
-			hawkeye.addBlockDetail(id, "block_type", block_type);
-			if(block_type == "minecraft:piston" || block_type == "minecraft:sticky_piston") {
-				hawkeye.addBlockState(id, block_loc, "facing", facing_prop);
-				hawkeye.addBlockState(id, block_loc, "extended", extended_prop);
-			}
-			elseif(block.hasTag(chests_tag, block)) {
-				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
-				hawkeye.addBlockState(id, block_loc, "chest", chest_type_prop);
-			}
-			elseif(block.hasTag(standing_signs_tag, block)) {
-				hawkeye.addBlockState(id, block_loc, "rotation", rotation_prop);
-			}
-			elseif(block.hasTag(buttons_tag, block)) {
-				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
-				hawkeye.addBlockState(id, block_loc, "face", face_prop);
-			}
-			elseif(block_type == "minecraft:hopper") {
-				hawkeye.addBlockState(id, block_loc, "facing", facing_except_up_prop);
-			}
-			elseif(block.hasTag(wall_signs_tag, block)) {
-				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
-			}
-			elseif(block.hasTag(slabs_tag, block)) {
-				hawkeye.addBlockState(id, block_loc, "type", slab_type_prop);
-			}
-			elseif(block.hasTag(stairs_tag, block)) {
-				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
-				hawkeye.addBlockState(id, block_loc, "half", half_prop);
-				hawkeye.addBlockState(id, block_loc, "shape", stair_shape_prop);
-			}
+		if(cancel) {
+			goto("wait");
+		}
+		state = block.getState(block_loc);
+		state = text.replace(state, "Block{", "");
+		state = text.replace(state, "}", "");
+		if(text.length(state) > 1024) {
+			goto("wait");
 		}
+		hawkeye.addEntry(event, player, block_loc, state);
 	}
 }
 goto("wait");
 
-function hawkeye.addBlockState(id, block_loc, state_name, state_prop) {
-	state = block.property.getValue(block_loc, state_prop);
-	if(state != null) {
-		hawkeye.addBlockDetail(id, state_name, state);
-	}
-}
-
-function hawkeye.addBlockEvent(id, event, player, location) {
-	stmt = databank.prepare("INSERT INTO hawkeye (id, player_id, event, world, x, y, z, time) VALUES (?,?,?,?,?,?,?,?)");
+function hawkeye.addEntry(event, player, location, text) {
+	event_id = hawkeye.getEventId(event);
+	stmt = databank.prepare("INSERT INTO hawkeye (player_id, event, world, x, y, z, time, text) VALUES (?,?,?,?,?,?,?,?)");
 	modTimer(-5);
-	databank.setInt(stmt, 1, id);
-	databank.setInt(stmt, 2, player.getId(player));
-	databank.setString(stmt, 3, event);
-	databank.setString(stmt, 4, world.getName(loc.getWorld(location)));
-	databank.setInt(stmt, 5, loc.getX(location));
-	databank.setInt(stmt, 6, loc.getY(location));
-	databank.setInt(stmt, 7, loc.getZ(location));
-	databank.setLong(stmt, 8, time.getMillis());
+	databank.setInt(stmt, 1, player.getId(player));
+	databank.setInt(stmt, 2, event_id);
+	databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
+	databank.setInt(stmt, 4, loc.getX(location));
+	databank.setInt(stmt, 5, loc.getY(location));
+	databank.setInt(stmt, 6, loc.getZ(location));
+	databank.setLong(stmt, 7, time.getMillis());
+	databank.setString(stmt, 8, text);
 	databank.workerExecute(stmt);
 }
 
-function hawkeye.addBlockDetail(hawkeye_id, name, value) {
-	stmt = databank.prepare("INSERT INTO hawkeye_data (hawkeye_id, name, value) VALUES (?,?,?)");
-	modTimer(-5);
-	databank.setInt(stmt, 1, hawkeye_id);
-	databank.setString(stmt, 2, name);
-	databank.setString(stmt, 3, value);
-	databank.workerExecute(stmt);
-}
-
-function hawkeye.getNextId() {
-	id = 0;
-	stmt = databank.prepare("SELECT MAX(id) FROM hawkeye;");
-	result = databank.execute(stmt);
-	if(databank.next(result)) {
-		id = databank.getInt(result, 1);
-	}
-	databank.close(result);
-	databank.close(stmt);
-	return id + 1;
+function hawkeye.getEventId(event) {
+	return map.get($event_map, event);
 }
 
 function hawkeye.deleteOlderThanThreeWeeks() {
 	three_weeks_before = time.getMillis() - 21 * 24 * 60 * 60 * 1000;
-	stmt = databank.prepare("DELETE FROM hawkeye_data WHERE hawkeye_id IN(SELECT id FROM hawkeye WHERE time < ?);");
+	stmt = databank.prepare("DELETE FROM hawkeye WHERE time < ?;");
 	databank.setLong(stmt, 1, three_weeks_before);
 	databank.workerExecute(stmt);
-	stmt2 = databank.prepare("DELETE FROM hawkeye WHERE time < ?;");
-	databank.setLong(stmt2, 1, three_weeks_before);
-	databank.workerExecute(stmt2);
 }
 
 function hawkeye.isTool(item) {

+ 175 - 0
system/hawkeye_old.txt

@@ -0,0 +1,175 @@
+/*
+/hawkeye search <parameters>
+Parameters Examples:
+	p:marvinius,MentorMentos
+	t:30d,4h,20m
+	r:10
+	e:block_break,block_place
+*/
+
+event.load("block_break");
+event.load("block_place");
+event.load("block_click");
+prefix_hawkeye = "§cHawkeye";
+
+chests_tag = block.getTag("forge:chests/wooden");
+wall_signs_tag = block.getTag("minecraft:wall_signs");
+standing_signs_tag = block.getTag("minecraft:standing_signs");
+stairs_tag = block.getTag("minecraft:stairs");
+slabs_tag = block.getTag("minecraft:slabs");
+buttons_tag = block.getTag("minecraft:buttons");
+face_prop = block.getProperty("face");
+facing_prop = block.getProperty("facing");
+facing_except_up_prop = block.getProperty("facing_except_up");
+horizontal_facing_prop = block.getProperty("horizontal_facing");
+half_prop = block.getProperty("half");
+stair_shape_prop = block.getProperty("stair_shape");
+slab_type_prop = block.getProperty("slab_type");
+rotation_prop = block.getProperty("rotation");
+chest_type_prop = block.getProperty("chest_type");
+extended_prop = block.getProperty("extended");
+
+databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS hawkeye(id INT NOT NULL PRIMARY KEY, player_id INT NOT NULL, event VARCHAR(25) NOT NULL, world VARCHAR(15) NOT NULL, x INT NOT NULL, y INT NOT NULL, z INT NOT NULL, time BIGINT NOT NULL);"));
+databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS hawkeye_data(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, hawkeye_id INT NOT NULL, name VARCHAR(20) NOT NULL, value VARCHAR(100) NOT NULL, FOREIGN KEY (hawkeye_id) REFERENCES hawkeye(id) ON DELETE RESTRICT);"));
+
+hawkeye.deleteOlderThanThreeWeeks();
+
+msg("dev", "§bHawkeye §rloaded.");
+@wait
+wait();
+if(event == "block_place") {
+	item = living.getEquip(player, "hand");
+	if(hawkeye.isTool(item)) {
+		if(!perm.has(player, "hawkeye")) {
+			perm.no(player, "hawkeye");
+			goto("wait");
+		}
+		cancel = true;
+		list = hawkeye.getData(null, null, block_loc, 1, null, null, "DESC");
+		if(list.getSize(list) == 0) {
+			msg.prefix(player, prefix_hawkeye, "No results found.");
+			goto("wait");
+		}
+		hawkeye.setDataList(player, list);
+		hawkeye.print(player, list, 1);
+		goto("wait");
+	}
+}
+if(event == "block_click") {
+	item = living.getEquip(player, "hand");
+	if(action == "left" && hawkeye.isTool(item)) {
+		if(!perm.has(player, "hawkeye")) {
+			perm.no(player, "hawkeye");
+			goto("wait");
+		}
+		cancel = true;
+		list = hawkeye.getData(null, null, block_loc, 1, null, null, "DESC");
+		if(list.getSize(list) == 0) {
+			msg.prefix(player, prefix_hawkeye, "No results found.");
+			goto("wait");
+		}
+		hawkeye.setDataList(player, list);
+		hawkeye.print(player, list, 1);
+	}
+	goto("wait");
+}
+world_name = world.getName(loc.getWorld(block_loc));
+if(world.isSurvName(world_name)) {
+	if(event == "block_break" || event == "block_place") {
+		if(!cancel) {
+			id = hawkeye.getNextId();
+			hawkeye.addBlockEvent(id, event, player, block_loc);
+			hawkeye.addBlockDetail(id, "block_type", block_type);
+			if(block_type == "minecraft:piston" || block_type == "minecraft:sticky_piston") {
+				hawkeye.addBlockState(id, block_loc, "facing", facing_prop);
+				hawkeye.addBlockState(id, block_loc, "extended", extended_prop);
+			}
+			elseif(block.hasTag(chests_tag, block)) {
+				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
+				hawkeye.addBlockState(id, block_loc, "chest", chest_type_prop);
+			}
+			elseif(block.hasTag(standing_signs_tag, block)) {
+				hawkeye.addBlockState(id, block_loc, "rotation", rotation_prop);
+			}
+			elseif(block.hasTag(buttons_tag, block)) {
+				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
+				hawkeye.addBlockState(id, block_loc, "face", face_prop);
+			}
+			elseif(block_type == "minecraft:hopper") {
+				hawkeye.addBlockState(id, block_loc, "facing", facing_except_up_prop);
+			}
+			elseif(block.hasTag(wall_signs_tag, block)) {
+				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
+			}
+			elseif(block.hasTag(slabs_tag, block)) {
+				hawkeye.addBlockState(id, block_loc, "type", slab_type_prop);
+			}
+			elseif(block.hasTag(stairs_tag, block)) {
+				hawkeye.addBlockState(id, block_loc, "facing", horizontal_facing_prop);
+				hawkeye.addBlockState(id, block_loc, "half", half_prop);
+				hawkeye.addBlockState(id, block_loc, "shape", stair_shape_prop);
+			}
+		}
+	}
+}
+goto("wait");
+
+function hawkeye.addBlockState(id, block_loc, state_name, state_prop) {
+	state = block.property.getValue(block_loc, state_prop);
+	if(state != null) {
+		hawkeye.addBlockDetail(id, state_name, state);
+	}
+}
+
+function hawkeye.addBlockEvent(id, event, player, location) {
+	stmt = databank.prepare("INSERT INTO hawkeye (id, player_id, event, world, x, y, z, time) VALUES (?,?,?,?,?,?,?,?)");
+	modTimer(-5);
+	databank.setInt(stmt, 1, id);
+	databank.setInt(stmt, 2, player.getId(player));
+	databank.setString(stmt, 3, event);
+	databank.setString(stmt, 4, world.getName(loc.getWorld(location)));
+	databank.setInt(stmt, 5, loc.getX(location));
+	databank.setInt(stmt, 6, loc.getY(location));
+	databank.setInt(stmt, 7, loc.getZ(location));
+	databank.setLong(stmt, 8, time.getMillis());
+	databank.workerExecute(stmt);
+}
+
+function hawkeye.addBlockDetail(hawkeye_id, name, value) {
+	stmt = databank.prepare("INSERT INTO hawkeye_data (hawkeye_id, name, value) VALUES (?,?,?)");
+	modTimer(-5);
+	databank.setInt(stmt, 1, hawkeye_id);
+	databank.setString(stmt, 2, name);
+	databank.setString(stmt, 3, value);
+	databank.workerExecute(stmt);
+}
+
+function hawkeye.getNextId() {
+	id = 0;
+	stmt = databank.prepare("SELECT MAX(id) FROM hawkeye;");
+	result = databank.execute(stmt);
+	if(databank.next(result)) {
+		id = databank.getInt(result, 1);
+	}
+	databank.close(result);
+	databank.close(stmt);
+	return id + 1;
+}
+
+function hawkeye.deleteOlderThanThreeWeeks() {
+	three_weeks_before = time.getMillis() - 21 * 24 * 60 * 60 * 1000;
+	stmt = databank.prepare("DELETE FROM hawkeye_data WHERE hawkeye_id IN(SELECT id FROM hawkeye WHERE time < ?);");
+	databank.setLong(stmt, 1, three_weeks_before);
+	databank.workerExecute(stmt);
+	stmt2 = databank.prepare("DELETE FROM hawkeye WHERE time < ?;");
+	databank.setLong(stmt2, 1, three_weeks_before);
+	databank.workerExecute(stmt2);
+}
+
+function hawkeye.isTool(item) {
+	lore = item.getLore(item);
+	if(list.getSize(lore) > 0) {
+		return list.getIndex(lore, 0) == "Hawkeye Tool";
+	}
+	return false;
+}

+ 1 - 1
system/modt_loop.txt

@@ -1,6 +1,6 @@
 release_day = 16;
 release_hour = 15;
-sgoto(1, "release_loop");
+sgoto(2, "release_loop");
 
 msg("dev", "§bRelease-Loop §rloaded");
 @wait

+ 3 - 2
system/ranklist.txt

@@ -31,6 +31,7 @@ ranking.add("§6", "Parcour", null, "parcourranks1", "Time", "ASC", null);
 ranking.add("§e", "Halma", "halma", "halmaranks", "Wins", "DESC", null);
 ranking.add("§e", "ShoppingChaos", "sc", "shoppingranks", "Max Items", "DESC", null);
 ranking.add("§e", "MengerRun", "mr", "mrranks", "Wins", "DESC", null);
+ranking.add("§c", "AmongUs", "among_us", "among_us_ranks", "Time", "ASC", null);
 
 ranking.register("invertranks5x5");
 ranking.register("invertranks7x7");
@@ -230,7 +231,7 @@ function showPlayerStats(player, gamename, table, p_name) {
 	} else {
 		a = ranking.getPlayerStats(p_id, table, order, order2);
 		points = a[1];
-		if(gamename == "Letters") {
+		if(gamename == "Letters" || gamename == "AmongUs") {
 			sendTimedRank(player, p_name, rang, points);
 		} elseif(gamename == "Parcour") {
 			sendMsTimedRank(player, p_name, rang, points);
@@ -267,7 +268,7 @@ function showTopStats(player, gamename, table) {
 		p_name = player.getNameFromId(a[0]);
 		points = a[1];
 		rang = i + 1;
-		if(gamename == "Letters") {
+		if(gamename == "Letters" || gamename == "AmongUs") {
 			sendTimedRank(player, p_name, rang, points);
 		} elseif(gamename == "Parcour") {
 			sendMsTimedRank(player, p_name, rang, points);

+ 0 - 10
test.txt

@@ -1,10 +0,0 @@
-player.setAdventureAmounts(122, 0);
-
-//p = read.player("marvinius");
-//item = living.getEquip(p, "hand");
-//item.clearAttributes(item);
-
-//item.addAttribute(item, "generic.knockback_resistance", read.slot("feet"), 0.5, 0);
-//item.addAttribute(item, "generic.armor", read.slot("feet"), 5, 0);
-//item.addAttribute(item, "generic.movement_speed", read.slot("feet"), 0.05, 0);
-//item.addAttribute(item, "generic.armor_toughness", read.slot("feet"), 5, 0);

+ 12 - 60
utils/u_general.txt

@@ -1427,6 +1427,7 @@ function player.teleport(player, location, setBackPos) {
 	if(world_change) {
 		//Inventory
 		player.changeInv(player, from_world, to_world);
+		entity.clearEffects(player);
 		//Party
 		if(player.isInParty(player) && player.isPartyLeader(player)) {
 			party_id = player.getPartyId(player);
@@ -2407,7 +2408,7 @@ function setMoney(player_or_id, money) {
 	if(player == null) {
 		return;
 	}
-	displayMoney(player, new_money);
+	displayMoney(player, money);
 }
 
 function money.getBoostFactor() {
@@ -4239,7 +4240,7 @@ function hawkeye.getData(timeFrom, timeTo, location, radius, events, players, or
 		a[2] = databank.getString(result, 3); //event
 		a[3] = loc.new(world.get(databank.getString(result, 4)), databank.getInt(result, 5), databank.getInt(result, 6), databank.getInt(result, 7)); //location
 		a[4] = databank.getLong(result, 8); //time
-		a[5] = hawkeye.getDetailData(id);
+		a[5] = databank.getString(result, 9); //text
 		list.add(l, a);
 	}
 	databank.close(result);
@@ -4306,35 +4307,14 @@ function hawkeye.getTimeQuery(timeFrom, timeTo) {
 	return "time > ? AND time < ?";
 }
 
-function hawkeye.getDetailData(hawkeye_id) {
-	stmt = databank.prepare("SELECT name,value FROM hawkeye_data WHERE hawkeye_id = ?;");
-	databank.setInt(stmt, 1, hawkeye_id);
-	l = list.new();
-	result = databank.execute(stmt);
-	while(databank.next(result)) {
-		a = array.new(2);
-		a[0] = databank.getString(result, 1); //name
-		a[1] = databank.getString(result, 2); //value
-		list.add(l, a);
-	}
-	databank.close(result);
-	databank.close(stmt);
-	return l;
-}
-
 function hawkeye.print(player, list, side) {
 	amount = list.getSize(list);
 	a = list.getIndex(list, side - 1);
 	msg.prefix(player, "§cHawkeye", concat("§7----- Page (§c", text.number(side), "§7/§c", text.number(amount), "§7) -----"));
 	msg(player, concat("§7| ID:", text.number(a[0]), " ", getTimeString(a[4])));
-	msg(player, concat("§7| §c", a[2], " ", player.getNameFromId(a[1])));
+	msg(player, concat("§7| §c", hawkeye.getEventName(read.number(a[2])), " ", player.getNameFromId(a[1])));
 	msg(player, concat("§7| ", loc.getStringSpace(a[3])));
-	detail_l = a[5];
-	detail_iter = list.iterator(detail_l);
-	while(hasNext(detail_iter)) {
-		detail_a = next(detail_iter);
-		msg(player, concat("§7| - ", detail_a[0], ": ", detail_a[1]));
-	}
+	msg(player, concat("§7| ", a[5]));
 	if(side == 1) {
 		backward = "§7<<<<";
 		if(amount == 1) {
@@ -4369,60 +4349,32 @@ function hawkeye.getUndoList(player) {
 	return map.get(getScriptVar("ha_undo_lists"), player.getUuid(player));
 }
 
-
 function hawkeye.rollback(list) {
 	counter = 0;
 	for(i = 0; i < list.getSize(list); i++) {
 		a = list.getIndex(list, i);
 		event = a[2];
 		loc = a[3];
-		detail_l = a[5];
-		str = "";
-		detail_iter = list.iterator(detail_l);
-		while(hasNext(detail_iter)) {
-			detail_a = next(detail_iter);
-			name = detail_a[0];
-			value = detail_a[1];
-			if(name == "block_type") {
-				block_type = value;
-			} else {
-				str = concat(str, name, "=", value,",");
-			}
-		}
-		if(event == "block_place") {
-			block.set(loc, "minecraft:air", true);
+		if(event == "1") {
+			block.set(loc, a[5], true);
 			counter++;
-		} elseif(event == "block_break") {
-			block.set(loc, concat(block_type, "[", str, "]"), true);
+		} elseif(event == "2") {
+			block.set(loc, "minecraft:air", true);
 			counter++;
 		}
 	}
 	return counter;
 }
 
-
 function hawkeye.undo(list) {
 	for(i = list.getSize(list) - 1; i >= 0; i--) {
 		a = list.getIndex(list, i);
 		event = a[2];
 		loc = a[3];
-		detail_l = a[5];
-		str = "";
-		detail_iter = list.iterator(detail_l);
-		while(hasNext(detail_iter)) {
-			detail_a = next(detail_iter);
-			name = detail_a[0];
-			value = detail_a[1];
-			if(name == "block_type") {
-				block_type = value;
-			} else {
-				str = concat(str, name, "=", value,",");
-			}
-		}
-		if(event == "block_place") {
-			block.set(loc, concat(block_type, "[", str, "]"), true);
-		} elseif(event == "block_break") {
+		if(event == "1") {
 			block.set(loc, "minecraft:air", true);
+		} elseif(event == "2") {
+			block.set(loc, a[5], true);
 		}
 	}
 }