|
@@ -112,11 +112,22 @@ function isSurvWorldName(world_name) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-function safeGiveItemPlayer(player, item) {
|
|
|
+function player.giveSingleItem(player, item, boolean) {
|
|
|
+ amount = player.getItemAmount(player, boolean, item);
|
|
|
+ if(amount == 0) {
|
|
|
+ player.safeGiveItem(player, item);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function player.safeGiveItem(player, item) {
|
|
|
rest_item = player.giveItem(player, item);
|
|
|
item.drop(entity.getLocation(player), rest_item);
|
|
|
}
|
|
|
|
|
|
+function safeGiveItemPlayer(player, item) { //Deprecated
|
|
|
+ player.safeGiveItem(player, item);
|
|
|
+}
|
|
|
+
|
|
|
function setBlockIfNotAir(location, block) {
|
|
|
if(block.getType(location) == "minecraft:air") {
|
|
|
block.set(location, block, true);
|
|
@@ -247,7 +258,7 @@ function ranking.getPoints(rankingtable, player_id) {
|
|
|
//--------------------------------------------------
|
|
|
|
|
|
function world.getServerSpawn() {
|
|
|
- return read.location(config.getString(getScriptVar("server_config"), "serverspawn", "games:0:100:0"));
|
|
|
+ return read.location(config.getString(getScriptVar("server_config"), "serverspawn", "overworld:0:100:0"));
|
|
|
}
|
|
|
|
|
|
function world.getGamesSpawn() {
|
|
@@ -255,7 +266,11 @@ function world.getGamesSpawn() {
|
|
|
}
|
|
|
|
|
|
function world.getCreativeSpawn() {
|
|
|
- return read.location(config.getString(getScriptVar("server_config"), "creativespawn", "games:0:100:0"));
|
|
|
+ return read.location(config.getString(getScriptVar("server_config"), "creativespawn", "creative:0:100:0"));
|
|
|
+}
|
|
|
+
|
|
|
+function world.getStorySpawn() {
|
|
|
+ return read.location(config.getString(getScriptVar("server_config"), "storyspawn", "story:0:100:0"));
|
|
|
}
|
|
|
|
|
|
function world.getOverWorld() {
|
|
@@ -270,6 +285,10 @@ function world.getCreative() {
|
|
|
return world.get("creative");
|
|
|
}
|
|
|
|
|
|
+function world.getStory() {
|
|
|
+ return world.get("story");
|
|
|
+}
|
|
|
+
|
|
|
function world.isCreativeName(world_name) {
|
|
|
return world_name == "creative";
|
|
|
}
|
|
@@ -322,7 +341,7 @@ function player.changeInv(player, from_world, to_world) {
|
|
|
gm = "creative";
|
|
|
} else {
|
|
|
gm = "adventure";
|
|
|
- scheduler.addFly(player, true);
|
|
|
+ scheduler.addFly(1, player, true);
|
|
|
}
|
|
|
} else {
|
|
|
gm = "survival";
|
|
@@ -356,12 +375,10 @@ function inv.saveForPlayer(sec_player, for_player_or_id, world) {
|
|
|
//Inventare
|
|
|
for(i = 0; i <= 35; i++) {
|
|
|
item_string = text.item(player.getInvSlot(sec_player, i));
|
|
|
- item_string = text.replace(item_string, "\n", "\\n");
|
|
|
config.set(config, concat("slot-", i), item_string);
|
|
|
}
|
|
|
for(i = 0; i <= 26; i++) {
|
|
|
item_string = text.item(player.getEnderSlot(sec_player, i));
|
|
|
- item_string = text.replace(item_string, "\n", "\\n");
|
|
|
config.set(config, concat("eslot-", i), item_string);
|
|
|
}
|
|
|
config.set(config, "offhand", text.item(entity.getEquip(sec_player, "offhand")));
|
|
@@ -401,13 +418,17 @@ function inv.loadFromPlayer(sec_player, from_player_or_id, world) {
|
|
|
//Inventare
|
|
|
for(i = 0; i <= 35; i++) {
|
|
|
item_string = config.getString(config, concat("slot-", i), "minecraft:air");
|
|
|
- item_string = text.replace(item_string, "\\n", "\n");
|
|
|
- player.setInvSlot(sec_player, i, read.item(item_string));
|
|
|
+ item = read.item(item_string);
|
|
|
+ if(item != null) {
|
|
|
+ player.setInvSlot(sec_player, i, item);
|
|
|
+ }
|
|
|
}
|
|
|
for(i = 0; i <= 26; i++) {
|
|
|
item_string = config.getString(config, concat("eslot-", i), "minecraft:air");
|
|
|
- item_string = text.replace(item_string, "\\n", "\n");
|
|
|
- player.setEnderSlot(sec_player, i, read.item(item_string));
|
|
|
+ item = read.item(item_string);
|
|
|
+ if(item != null) {
|
|
|
+ player.setEnderSlot(sec_player, i, item);
|
|
|
+ }
|
|
|
}
|
|
|
entity.setEquip(sec_player, "offhand", read.item(config.getString(config, "offhand", "minecraft:air")));
|
|
|
entity.setEquip(sec_player, "head", read.item(config.getString(config, "head", "minecraft:air")));
|
|
@@ -474,6 +495,12 @@ function quest.getFromPlayer(player) {
|
|
|
return map.get(quest_ids, player.getUuid(player));
|
|
|
}
|
|
|
|
|
|
+function player.isQuester(player, script) {
|
|
|
+ script_id = script.getId(script);
|
|
|
+ quest_ids = getScriptVar("quest_ids");
|
|
|
+ return map.get(quest_ids, player.getUuid(player)) == script_id;
|
|
|
+}
|
|
|
+
|
|
|
function quest.getCounter(player_or_id) {
|
|
|
config = playerdata.getSurvival(player_or_id);
|
|
|
return config.getDouble(config, "quests_solved", 0);
|
|
@@ -485,16 +512,16 @@ function quest.setCounter(player_or_id, amount) {
|
|
|
config.saveAsync(config);
|
|
|
}
|
|
|
|
|
|
-function quest.addCounter(player_or_id, amount) {
|
|
|
- config = playerdata.getSurvival(player_or_id);
|
|
|
+function quest.addCounter(player, amount) {
|
|
|
+ config = playerdata.getSurvival(player);
|
|
|
new_amount = config.getDouble(config, "quests_solved", 0) + amount;
|
|
|
config.set(config, "quests_solved", new_amount);
|
|
|
config.saveAsync(config);
|
|
|
- if(new_amount >= 500) {
|
|
|
+ if(new_amount == 500) {
|
|
|
offerRank(player, "rank.altruist");
|
|
|
- } elseif(new_amount >= 50) {
|
|
|
+ } elseif(new_amount == 50) {
|
|
|
offerRank(player, "rank.friend");
|
|
|
- } elseif(new_amount >= 15) {
|
|
|
+ } elseif(new_amount == 15) {
|
|
|
offerRank(player, "rank.volunteer");
|
|
|
}
|
|
|
}
|
|
@@ -1116,13 +1143,13 @@ function addAdventureDisplay(player, location) {
|
|
|
//Player-Data-Utils
|
|
|
//--------------------------------------------------
|
|
|
|
|
|
-function player.teleport(player, location, backPos) {
|
|
|
+function player.teleport(player, location, setBackPos) {
|
|
|
player_uuid = player.getUuid(player);
|
|
|
if(player.isOnAdventure(player)) {
|
|
|
msg(player, "[§5Adventure§r] Teleport blocked. ", text.click("[§5Cancel Adventure?§r]", concat("/stopadventure ", player)));
|
|
|
return false;
|
|
|
}
|
|
|
- if(backPos) {
|
|
|
+ if(setBackPos) {
|
|
|
player.setBackPos(player);
|
|
|
}
|
|
|
player_loc = entity.getLocation(player);
|
|
@@ -1165,7 +1192,7 @@ function player.teleport(player, location, backPos) {
|
|
|
msg.prefix(player, "§5Party", concat(p_name, "§c is afk."));
|
|
|
continue;
|
|
|
}
|
|
|
- player.teleport(p, location, backPos);
|
|
|
+ player.teleport(p, location, setBackPos);
|
|
|
}
|
|
|
}
|
|
|
//Quests
|
|
@@ -1351,6 +1378,16 @@ function msg.radius(prefix, message, location, radius) {
|
|
|
//Player-Utils
|
|
|
//--------------------------------------------------
|
|
|
|
|
|
+function player.hasClearInventory(player) {
|
|
|
+ inv = player.getInv(player);
|
|
|
+ for(slot = 0; slot < 36; slot++) {
|
|
|
+ if(item.getType(inv.getItem(inv, slot)) != "minecraft:air") {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
function player.getJoinMessage(player_or_id) {
|
|
|
config = playerdata.getSurvival(player_or_id);
|
|
|
return config.getString(config, "message.join", "null");
|
|
@@ -2520,6 +2557,18 @@ function loc.isAir(location) {
|
|
|
return type == "minecraft:air" || type == "minecraft:cave_air";
|
|
|
}
|
|
|
|
|
|
+function loc.isInSurvWorld(location) {
|
|
|
+ world_name = world.getName(loc.getWorld(location));
|
|
|
+ if(world_name == "overworld") {
|
|
|
+ return true;
|
|
|
+ } elseif(world_name == "the_end") {
|
|
|
+ return true;
|
|
|
+ } elseif(world_name == "the_nether") {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
function loc.isInGamesWorld(location) {
|
|
|
return loc.getWorld(location) == world.getGames();
|
|
|
}
|
|
@@ -2734,6 +2783,17 @@ function rank.choose(player, tech_name) {
|
|
|
msg(player, text.click(concat("[§", rank, "§r]"), concat("/setrank ", player.getName(player), " &", rank)));
|
|
|
}
|
|
|
|
|
|
+function rank.showAll(player) {
|
|
|
+ a = rank.getRankArray();
|
|
|
+ a_size = array.getSize(a);
|
|
|
+ for(i = 0; i < a_size; i++) {
|
|
|
+ tech_name = a[i, 0];
|
|
|
+ if(rank.checkCriteria(player, tech_name)) {
|
|
|
+ rank.choose(player, tech_name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
//--------------------------------------------------
|
|
|
//Perm-Utils
|
|
|
//--------------------------------------------------
|
|
@@ -3306,10 +3366,21 @@ function scheduler.add(data_array) {
|
|
|
list.add(getScriptVar("scheduler_list"), data_array);
|
|
|
}
|
|
|
|
|
|
-function scheduler.addFly(player, bool) {
|
|
|
- a = array.new(3);
|
|
|
+function scheduler.addFly(ticks, player, bool) {
|
|
|
+ a = array.new(4);
|
|
|
a[0] = 0;
|
|
|
- a[1] = player;
|
|
|
- a[2] = bool;
|
|
|
+ a[1] = ticks;
|
|
|
+ a[2] = player;
|
|
|
+ a[3] = bool;
|
|
|
+ scheduler.add(a);
|
|
|
+}
|
|
|
+
|
|
|
+function scheduler.msgPrefix(ticks, player, prefix, message) {
|
|
|
+ a = array.new(5);
|
|
|
+ a[0] = 1;
|
|
|
+ a[1] = ticks;
|
|
|
+ a[2] = player;
|
|
|
+ a[3] = prefix;
|
|
|
+ a[4] = message;
|
|
|
scheduler.add(a);
|
|
|
}
|