package com.mengcraft.team;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
public class TeamUtils {
public static boolean setPlayerLeader(String playerName, String leaderName) {
String path = "players." + playerName + ".leader";
TeamPlugin.plugin.getConfig().set(path, leaderName);
return true;
}
public static boolean setPlayerOnlineTime(String playerName) {
long currentTime = System.currentTimeMillis() / 60000;
String path = "players." + playerName + ".join";
long joinTime = TeamPlugin.tempConfig.getLong(path, currentTime);
TeamPlugin.tempConfig.set(path, currentTime);
path = "players." + playerName + ".online";
long onlineTime = TeamPlugin.plugin.getConfig().getInt(path, 0);
onlineTime = onlineTime + currentTime - joinTime;
TeamPlugin.plugin.getConfig().set(path, onlineTime);
return true;
}
public static boolean setPlayerJoinTime(String playerName) {
long currentTime = System.currentTimeMillis() / 60000;
String string = "players." + playerName + ".join";
TeamPlugin.tempConfig.set(string, currentTime);
return true;
}
public static boolean setRequestList(String leaderName, String playerName, boolean isAdd) {
String path = "requests." + leaderName;
List<String> requestList = TeamPlugin.tempConfig.getStringList(path);
boolean status = isAdd;
if (status) {
status = !requestList.contains(playerName);
if (status) requestList.add(playerName);
} else requestList.remove(playerName);
TeamPlugin.tempConfig.set(path, requestList);
return true;
}
public static boolean setTeamLevel(String leaderName, int level) {
String path = "teams." + leaderName + ".level";
TeamPlugin.plugin.getConfig().set(path, level);
return true;
}
public static boolean setTeamMate(String leaderName, String playerName, boolean isAdd) {
String path;
List<String> memberList;
path = "teams." + leaderName + ".members";
memberList = TeamPlugin.plugin.getConfig().getStringList(path);
if (isAdd) {
memberList.add(playerName);
} else {
memberList.remove(playerName);
path = "players." + playerName;
TeamPlugin.plugin.getConfig().set(path, null);
path = "teams." + leaderName + ".members";
}
TeamPlugin.plugin.getConfig().set(path, memberList);
return true;
}
public static boolean setTeamMessage(String teamName, String senderName, String msg) {
List<Player> memberList = getTeamMateOnline(teamName);
Player senderPlayer = TeamPlugin.plugin.getServer().getPlayerExact(senderName);
memberList.remove(senderPlayer);
for (Player memberPlayer : memberList) {
memberPlayer.sendMessage(msg);
}
return true;
}
public static boolean setTeamMessage(String teamName, String msg) {
List<Player> memberList = getTeamMateOnline(teamName);
for (Player memberPlayer : memberList) {
memberPlayer.sendMessage(msg);
}
return true;
}
public static boolean setTeamExp(String leaderName, String playerName) {
Player playerPlayer = TeamPlugin.plugin.getServer().getPlayerExact(playerName);
List<Player> memberPlayerList = getTeamMateOnline(leaderName);
memberPlayerList.remove(playerPlayer);
for (Player memberPlayer : memberPlayerList) {
memberPlayer.giveExp(1);
}
return true;
}
public static boolean setTeamSkillTime(String leaderName) {
String path = "teams." + leaderName + ".skilltime";
long currentTime = System.currentTimeMillis() / 1000;
TeamPlugin.tempConfig.set(path, currentTime);
return true;
}
public static String getPlayerLeader(String playerName) {
String path = "players." + playerName + ".leader";
return TeamPlugin.plugin.getConfig().getString(path);
}
public static int getPlayerOnlineTime(String playerName) {
String path = "players." + playerName + ".online";
return TeamPlugin.plugin.getConfig().getInt(path);
}
public static List<String> getRequestList(String leaderName) {
String path = "requests." + leaderName;
return TeamPlugin.tempConfig.getStringList(path);
}
public static double getTeamExpNeed(int teamLevel) {
String path = "config.team.leastexp";
double expNeed = TeamPlugin.plugin.getConfig().getInt(path, 24) * 60;
if (teamLevel > 1) {
teamLevel = teamLevel - 1;
expNeed = expNeed * Math.pow(2, teamLevel);
}
return expNeed;
}
public static int getTeamLevel(String leaderName) {
String path = "teams." + leaderName + ".level";
return TeamPlugin.plugin.getConfig().getInt(path, 0);
}
public static int getTeamLimit(int teamLevel) {
FileConfiguration getConfig = TeamPlugin.plugin.getConfig();
String path = "config.team.size";
int configSize = getConfig.getInt(path, 4);
path = "config.team.growperlevel";
int growSize = getConfig.getInt(path, 2) * (teamLevel - 1);
return configSize + growSize;
}
public static List<Player> getTeamMateOnline(String teamName) {
Server getServer = TeamPlugin.plugin.getServer();
List<Player> onlineMemberList = new ArrayList<Player>();
List<String> memberList = getTeamMate(teamName);
Player player;
boolean status;
for (String memberName : memberList) {
player = getServer.getPlayerExact(memberName);
status = player != null && player.isOnline();
if (status) onlineMemberList.add(player);
}
return onlineMemberList;
}
public static List<String> getTeamMate(String teamName) {
String path = "teams." + teamName + ".members";
return TeamPlugin.plugin.getConfig().getStringList(path);
}
public static List<Player> getTeamMateNearby(String playerName) {
boolean status;
Player getPlayer;
String getPlayerName;
String getLeaderName;
String leaderName = TeamUtils.getPlayerLeader(playerName);
List<Player> playerList = new ArrayList<Player>();
Player leader = TeamPlugin.plugin.getServer().getPlayerExact(playerName);
playerList.add(leader);
String path = "config.team.effectnear";
int d = TeamPlugin.plugin.getConfig().getInt(path, 16);
List<Entity> nearbyEntities = leader.getNearbyEntities(d, d, d);
for (Entity entity : nearbyEntities) {
if (entity instanceof Player) {
getPlayer = (Player) entity;
getPlayerName = getPlayer.getName();
getLeaderName = TeamUtils.getPlayerLeader(getPlayerName);
status = leaderName.equals(getLeaderName);
if (status) playerList.add(getPlayer);
}
}
return playerList;
}
public static long getTeamSkillTime(String leaderName) {
String path = "teams." + leaderName + ".skilltime";
return TeamPlugin.tempConfig.getLong(path);
}
public static boolean setPlayerList(String playerName, boolean b) {
String path = "members";
List<String> memberList = TeamPlugin.tempConfig.getStringList(path);
if (b) memberList.add(playerName);
else memberList.remove(playerName);
TeamPlugin.tempConfig.set(path, memberList);
return true;
}
public static List<String> getPlayerList() {
String path = "members";
return TeamPlugin.tempConfig.getStringList(path);
}
public static boolean setTeamPrefix(String leaderName, String string) {
String path = "teams." + leaderName + ".prefix";
TeamPlugin.plugin.getConfig().set(path, string);
return true;
}
public static String getTeamPrefix(String leaderName) {
String path = "teams." + leaderName + ".prefix";
return TeamPlugin.plugin.getConfig().getString(path);
}
public static void setTeamSpawn(String leaderName, Location location) {
StringBuilder builder = new StringBuilder();
String worldName = location.getWorld().getName();
builder.append(worldName);
builder.append(";");
double x = location.getX();
builder.append(x);
builder.append(";");
double y = location.getY();
builder.append(y);
builder.append(";");
double z = location.getZ();
builder.append(z);
String path = "teams." + leaderName + ".spawn";
String spawn = builder.toString();
TeamPlugin.plugin.getConfig().set(path, spawn);
}
public static Location getTeamSpawn(String leaderName) {
String path = "teams." + leaderName + ".spawn";
String spawn = TeamPlugin.plugin.getConfig().getString(path, null);
if (spawn != null) {
String[] str = spawn.split(";");
World world = TeamPlugin.plugin.getServer().getWorld(str[0]);
double x = Double.valueOf(str[1]);
double y = Double.valueOf(str[2]);
double z = Double.valueOf(str[3]);
return new Location(world, x, y, z);
}
return null;
}
}