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