Mineplex2018-withcommit/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansServerPage.java
2016-07-26 22:32:46 -04:00

150 lines
4.9 KiB
Java

package mineplex.clanshub;
import java.util.Collection;
import java.util.Comparator;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.donation.DonationManager;
import mineplex.core.shop.item.ShopItem;
import mineplex.core.shop.page.ShopPageBase;
import mineplex.game.clans.core.repository.tokens.SimpleClanToken;
import org.bukkit.Material;
import org.bukkit.entity.Player;
/**
* GUI page for clans servers
*/
public class ClansServerPage extends ShopPageBase<ClansTransferManager, ClansServerShop>
{
public ClansServerPage(ClansTransferManager plugin, ClansServerShop shop, CoreClientManager clientManager,
DonationManager donationManager, Player player)
{
super(plugin, shop, clientManager, donationManager, "Clans", player, 54);
buildPage();
}
@Override
protected void buildPage()
{
if (!getPlugin().Get(_player).getClanName().isEmpty())
{
buildClanPage(getPlugin().Get(_player));
}
else
{
buildNoClanPage();
}
}
private void buildClanPage(SimpleClanToken clan)
{
if (getClientManager().hasRank(_player, Rank.HELPER))
{
buildStaffJoinServers(clan);
}
else
{
buildJoinHomeServer(clan);
}
}
private void buildNoClanPage()
{
Collection<ServerInfo> servers = UtilAlg.sortSet(getPlugin().getServers(), new Comparator<ServerInfo>()
{
@Override
public int compare(ServerInfo o1, ServerInfo o2)
{
return o1.Name.compareTo(o2.Name);
}
});
int currentSlot = 9;
for (ServerInfo server : servers)
{
buildJoinServer(currentSlot, server);
currentSlot++;
}
}
private void buildJoinHomeServer(SimpleClanToken clan)
{
ServerInfo serverInfo = getServerInfo(clan.getHomeServer());
boolean serverOnline = (serverInfo != null);
String serverStatus = serverOnline ? C.cGreen + "Online" : C.cRed + "Offline";
String title = (serverOnline ? C.cGreen : C.cRed) + C.Bold + "Join Home Server!";
String serverName = C.cYellow + "Server Name: " + C.cWhite + clan.getHomeServer();
String serverDesc = C.cYellow + "Server Status: " + C.cWhite + serverStatus;
String players = (serverOnline ? C.cYellow + "Players: " + C.cWhite + serverInfo.CurrentPlayers + "/" + serverInfo.MaxPlayers : "" );
String change = C.cRed + "Note: " + C.cWhite + "You must leave your Clan to ";
String change2 = C.cWhite + "play on a different Clans Server!";
ShopItem shopItem = new ShopItem(Material.EMERALD_BLOCK, title, new String[] {" ", serverName, serverDesc, players, " ", change, change2, " "}, 0, true, true);
addButton(13, shopItem, new JoinServerButton(this, getPlugin(), getServerInfo(clan.getHomeServer())));
}
private void buildJoinServer(int slot, ServerInfo server)
{
String title = C.cGreen + C.Bold + "Join Clans Server!";
String desc1 = C.cYellow + "Server Name " + C.cWhite + server.Name;
String desc2 = C.cYellow + "Players " + C.cWhite + server.CurrentPlayers + "/" + server.MaxPlayers;
String desc3 = C.cRed + "Note: " + C.cWhite + "Creating or Joining a clan on this";
String desc4 = C.cWhite + "server will set your Home Server!";
ShopItem shopItem = new ShopItem(Material.GOLD_BLOCK, title, new String[] {" ", desc1, desc2, " ", desc3, desc4}, 0, true, true);
addButton(slot, shopItem, new JoinServerButton(this, getPlugin(), server));
}
private void buildStaffJoinServers(SimpleClanToken clan)
{
ServerInfo serverInfo = getServerInfo(clan.getHomeServer());
boolean serverOnline = (serverInfo != null);
String serverStatus = serverOnline ? C.cGreen + "Online" : C.cRed + "Offline";
String title = (serverOnline ? C.cGreen : C.cRed) + C.Bold + "Join Home Server!";
String serverName = C.cYellow + "Server Name: " + C.cWhite + clan.getHomeServer();
String serverDesc = C.cYellow + "Server Status: " + C.cWhite + serverStatus;
String players = (serverOnline ? C.cYellow + "Players: " + C.cWhite + serverInfo.CurrentPlayers + "/" + serverInfo.MaxPlayers : "" );
ShopItem shopItem = new ShopItem(Material.EMERALD_BLOCK, title, new String[] {" ", serverName, serverDesc, players, " "}, 0, true, true);
addButton(13, shopItem, new JoinServerButton(this, getPlugin(), getServerInfo(clan.getHomeServer())));
Collection<ServerInfo> servers = UtilAlg.sortSet(getPlugin().getServers(), new Comparator<ServerInfo>()
{
@Override
public int compare(ServerInfo o1, ServerInfo o2)
{
return o1.Name.compareTo(o2.Name);
}
});
int currentSlot = 27;
for (ServerInfo server : servers)
{
if (server.Name.equalsIgnoreCase(clan.getHomeServer()))
{
continue;
}
buildJoinServer(currentSlot, server);
currentSlot++;
}
}
private ServerInfo getServerInfo(String serverName)
{
return getPlugin().getServer(serverName);
}
/**
* Refresh all GUI pages and buttons
*/
public void update()
{
getButtonMap().clear();
buildPage();
}
}