Clans Gui
This commit is contained in:
parent
27c6ef4e9d
commit
4794cc6924
@ -1,6 +1,13 @@
|
|||||||
package mineplex.core.common.util;
|
package mineplex.core.common.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
|
|
||||||
public class UtilSkull
|
public class UtilSkull
|
||||||
{
|
{
|
||||||
@ -25,6 +32,17 @@ public class UtilSkull
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ItemStack getPlayerHead(String playerName, String itemName, List<String> itemLore)
|
||||||
|
{
|
||||||
|
ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 3);
|
||||||
|
SkullMeta meta = ((SkullMeta) skull.getItemMeta());
|
||||||
|
meta.setOwner(playerName);
|
||||||
|
meta.setDisplayName(itemName);
|
||||||
|
meta.setLore(itemLore);
|
||||||
|
skull.setItemMeta(meta);
|
||||||
|
return skull;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isPlayerHead(byte data)
|
public static boolean isPlayerHead(byte data)
|
||||||
{
|
{
|
||||||
return data == 3;
|
return data == 3;
|
||||||
|
@ -58,8 +58,8 @@ public class TablistFix extends MiniPlugin
|
|||||||
{
|
{
|
||||||
if (player.canSee(other))
|
if (player.canSee(other))
|
||||||
{
|
{
|
||||||
PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.updateDisplayName(((CraftPlayer) player).getHandle(), ((CraftPlayer) other).getHandle());
|
// PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.updateDisplayName(((CraftPlayer) player).getHandle(), ((CraftPlayer) other).getHandle());
|
||||||
UtilPlayer.sendPacket(player, packet);
|
// UtilPlayer.sendPacket(player, packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -577,6 +577,16 @@ public class ClanInfo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ClanWar> getInitiatedWars()
|
||||||
|
{
|
||||||
|
return new ArrayList<ClanWar>(_initiatedWars.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ClanWar> getInitiatedOnWars()
|
||||||
|
{
|
||||||
|
return new ArrayList<ClanWar>(_initiatedOnWars.values());
|
||||||
|
}
|
||||||
|
|
||||||
public ClanWar getWar(String againstClan)
|
public ClanWar getWar(String againstClan)
|
||||||
{
|
{
|
||||||
ClanWar initiated = getInitiatedWar(againstClan);
|
ClanWar initiated = getInitiatedWar(againstClan);
|
||||||
|
@ -2,6 +2,23 @@ package mineplex.game.clans.clans;
|
|||||||
|
|
||||||
public enum ClanRole
|
public enum ClanRole
|
||||||
{
|
{
|
||||||
NONE, RECRUIT, MEMBER, ADMIN, LEADER;
|
NONE(0), RECRUIT(100), MEMBER(500), ADMIN(1000), LEADER(Integer.MAX_VALUE);
|
||||||
|
|
||||||
|
private int _powerValue;
|
||||||
|
|
||||||
|
ClanRole(int powerValue)
|
||||||
|
{
|
||||||
|
_powerValue = powerValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean has(ClanRole role)
|
||||||
|
{
|
||||||
|
return getPowerValue() >= role.getPowerValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPowerValue()
|
||||||
|
{
|
||||||
|
return _powerValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,7 +656,7 @@ public class ClansDataAccessLayer
|
|||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
final boolean ran = _repository.updateWar(clanA.getId(), clanB.getId(), war.getScore(), war.isCompleted(), war.getLastUpdated(), war.getEnded());
|
final boolean ran = _repository.updateWar(clanA.getId(), clanB.getId(), war.getClanAScore(), war.isCompleted(), war.getLastUpdated(), war.getEnded());
|
||||||
runSync(new Runnable()
|
runSync(new Runnable()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
@ -678,7 +678,7 @@ public class ClansDataAccessLayer
|
|||||||
* EnemyData iData = initiator.getEnemyData(); ClanInfo other = clan ==
|
* EnemyData iData = initiator.getEnemyData(); ClanInfo other = clan ==
|
||||||
* initiator ? otherClan : clan; EnemyData oData = other.getEnemyData();
|
* initiator ? otherClan : clan; EnemyData oData = other.getEnemyData();
|
||||||
* _repository.updateEnemy(initiator.getId(), other.getId(),
|
* _repository.updateEnemy(initiator.getId(), other.getId(),
|
||||||
* iData.getScore(), oData.getScore(), iData.getKills(), oData.getKills());
|
* iData.getClanAScore(), oData.getClanAScore(), iData.getKills(), oData.getKills());
|
||||||
* //Log _manager.log("Updated Enemy Data for [" + clan.getName() + ", " +
|
* //Log _manager.log("Updated Enemy Data for [" + clan.getName() + ", " +
|
||||||
* otherClan.getName() + "]"); }
|
* otherClan.getName() + "]"); }
|
||||||
*/
|
*/
|
||||||
|
@ -19,6 +19,7 @@ import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
|||||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerItemBreakEvent;
|
import org.bukkit.event.player.PlayerItemBreakEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
@ -63,6 +64,7 @@ import mineplex.game.clans.clans.commands.MapCommand;
|
|||||||
import mineplex.game.clans.clans.commands.RegionsCommand;
|
import mineplex.game.clans.clans.commands.RegionsCommand;
|
||||||
import mineplex.game.clans.clans.data.PlayerClan;
|
import mineplex.game.clans.clans.data.PlayerClan;
|
||||||
import mineplex.game.clans.clans.event.ClansPlayerDeathEvent;
|
import mineplex.game.clans.clans.event.ClansPlayerDeathEvent;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
import mineplex.game.clans.clans.loot.LootManager;
|
import mineplex.game.clans.clans.loot.LootManager;
|
||||||
import mineplex.game.clans.clans.map.ItemMapManager;
|
import mineplex.game.clans.clans.map.ItemMapManager;
|
||||||
import mineplex.game.clans.clans.murder.MurderManager;
|
import mineplex.game.clans.clans.murder.MurderManager;
|
||||||
@ -158,6 +160,9 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
|
|||||||
private long _reclaimTime = 1800000;
|
private long _reclaimTime = 1800000;
|
||||||
private long _onlineTime = 1200000;
|
private long _onlineTime = 1200000;
|
||||||
|
|
||||||
|
// Command Shop
|
||||||
|
private ClansCommandShop _commandShop;
|
||||||
|
|
||||||
//Clans
|
//Clans
|
||||||
private NautHashMap<String, ClanInfo> _clanMap = new NautHashMap<String, ClanInfo>();
|
private NautHashMap<String, ClanInfo> _clanMap = new NautHashMap<String, ClanInfo>();
|
||||||
// private NautHashMap<String, ClanInfo> _clanMemberNameMap = new NautHashMap<String, ClanInfo>();
|
// private NautHashMap<String, ClanInfo> _clanMemberNameMap = new NautHashMap<String, ClanInfo>();
|
||||||
@ -215,7 +220,9 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
|
|||||||
|
|
||||||
_explosion = new Explosion(plugin, blockRestore);
|
_explosion = new Explosion(plugin, blockRestore);
|
||||||
|
|
||||||
new ClansLoginManager(getPlugin(), clientManager, _serverName);
|
// new ClansLoginManager(getPlugin(), clientManager, _serverName);
|
||||||
|
|
||||||
|
_commandShop = new ClansCommandShop(this, clientManager, donationManager);
|
||||||
|
|
||||||
Energy energy = new Energy(plugin);
|
Energy energy = new Energy(plugin);
|
||||||
// TODO: Re-enable customtagfix with NCP update?
|
// TODO: Re-enable customtagfix with NCP update?
|
||||||
@ -839,6 +846,16 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void openShop(PlayerCommandPreprocessEvent event)
|
||||||
|
{
|
||||||
|
if (event.getMessage().equals("/cgui"))
|
||||||
|
{
|
||||||
|
_commandShop.attemptShopOpen(event.getPlayer());
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void handleClansDeath(PlayerDeathEvent event)
|
public void handleClansDeath(PlayerDeathEvent event)
|
||||||
{
|
{
|
||||||
|
@ -15,11 +15,17 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.common.util.C;
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.Callback;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UtilInput;
|
||||||
import mineplex.core.common.util.UtilPlayer;
|
import mineplex.core.common.util.UtilPlayer;
|
||||||
|
import mineplex.core.common.util.UtilServer;
|
||||||
import mineplex.core.common.util.UtilTime;
|
import mineplex.core.common.util.UtilTime;
|
||||||
import mineplex.core.common.util.UtilWorld;
|
import mineplex.core.common.util.UtilWorld;
|
||||||
|
import mineplex.game.clans.clans.event.ClanDisbandedEvent;
|
||||||
import mineplex.game.clans.core.repository.ClanTerritory;
|
import mineplex.game.clans.core.repository.ClanTerritory;
|
||||||
|
import mineplex.game.clans.tutorials.TutorialManager;
|
||||||
|
import mineplex.game.clans.tutorials.types.TutorialGettingStarted;
|
||||||
|
|
||||||
public class ClansUtility
|
public class ClansUtility
|
||||||
{
|
{
|
||||||
@ -588,4 +594,143 @@ public class ClansUtility
|
|||||||
{
|
{
|
||||||
return Math.abs(loc.getBlockX()) > ClansManager.CLAIMABLE_RADIUS || Math.abs(loc.getBlockZ()) > ClansManager.CLAIMABLE_RADIUS;
|
return Math.abs(loc.getBlockX()) > ClansManager.CLAIMABLE_RADIUS || Math.abs(loc.getBlockZ()) > ClansManager.CLAIMABLE_RADIUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for commands
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void join(final Player caller, final ClanInfo clanInfo)
|
||||||
|
{
|
||||||
|
if (Clans.getClanMemberUuidMap().containsKey(caller.getUniqueId()))
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You are already in a Clan."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Clans.Get(caller).canJoin())
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You cannot join a Clan for " + C.mTime + UtilTime.convertString(System.currentTimeMillis() - Clans.Get(caller).getDelay(), 1, UtilTime.TimeUnit.FIT) + C.mBody + "."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clanInfo == null)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "Error: Clan does not exist"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!clanInfo.isInvited(caller.getName()))
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You are not invited to " + F.elem("Clan " + clanInfo.getName()) + "."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clanInfo.getSize() >= clanInfo.getMaxSize())
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "The clan " + F.elem("Clan " + clanInfo.getName()) + " is full and cannot be joined!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Task
|
||||||
|
Clans.getClanDataAccess().join(clanInfo, caller, ClanRole.RECRUIT, new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run(Boolean data)
|
||||||
|
{
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
// Inform
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You joined " + F.elem("Clan " + clanInfo.getName()) + "."));
|
||||||
|
clanInfo.inform(F.name(caller.getName()) + " has joined your Clan.", caller.getName());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "There was an error processing your request"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void leave(final Player caller)
|
||||||
|
{
|
||||||
|
final ClanInfo clan = getClanByPlayer(caller);
|
||||||
|
|
||||||
|
if (clan == null)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You are not in a Clan."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clan.getMembers().get(caller.getUniqueId()).getRole() == ClanRole.LEADER && clan.getMembers().size() > 1)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You must pass on " + F.elem("Leadership") + " before leaving."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Leave or Delete
|
||||||
|
if (clan.getMembers().size() > 1)
|
||||||
|
{
|
||||||
|
// Task
|
||||||
|
Clans.getClanDataAccess().leave(clan, caller, new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run(Boolean data)
|
||||||
|
{
|
||||||
|
// Inform
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You left " + F.elem("Clan " + clan.getName()) + "."));
|
||||||
|
clan.inform(F.name(caller.getName()) + " has left your Clan.", null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delete(caller);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(final Player caller)
|
||||||
|
{
|
||||||
|
final ClanInfo clan = getClanByPlayer(caller);
|
||||||
|
|
||||||
|
if (clan == null)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "You are not in a Clan."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getRole(caller) != ClanRole.LEADER)
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "Only the Clan Leader can disband the Clan."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Event
|
||||||
|
ClanDisbandedEvent event = new ClanDisbandedEvent(clan, caller);
|
||||||
|
UtilServer.getServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
if (event.isCancelled())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Task
|
||||||
|
Clans.getClanDataAccess().delete(clan, new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run(Boolean data)
|
||||||
|
{
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
// Inform
|
||||||
|
UtilServer.broadcast(F.main("Clans", F.name(caller.getName()) + " disbanded " + F.elem("Clan " + clan.getName()) + "."));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UtilPlayer.message(caller, F.main("Clans", "There was an error processing your request. Try again later"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package mineplex.game.clans.clans.gui;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.CurrencyType;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.ShopBase;
|
||||||
|
import mineplex.core.shop.page.ShopPageBase;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.gui.page.ClansMainPage;
|
||||||
|
|
||||||
|
public class ClansCommandShop extends ShopBase<ClansManager>
|
||||||
|
{
|
||||||
|
public ClansCommandShop(ClansManager plugin, CoreClientManager clientManager, DonationManager donationManager)
|
||||||
|
{
|
||||||
|
super(plugin, clientManager, donationManager, "Clans Commands");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ShopPageBase<ClansManager, ? extends ShopBase<ClansManager>> buildPagesFor(Player player)
|
||||||
|
{
|
||||||
|
return new ClansMainPage(getPlugin(), this, getClientManager(), getDonationManager(), player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.common.jsonchat.ClickEvent;
|
||||||
|
import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
|
||||||
|
public class ClanAddAllyButton implements IButton
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
JsonMessage message = new JsonMessage(C.cRed + C.Bold + "Click here to add an Ally").click(ClickEvent.SUGGEST_COMMAND, "/c ally ");
|
||||||
|
message.sendToPlayer(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.common.jsonchat.ClickEvent;
|
||||||
|
import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
|
||||||
|
public class ClanAddTrustedButton implements IButton
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
JsonMessage message = new JsonMessage(C.cRed + C.Bold + "Click here to trust a clan").click(ClickEvent.SUGGEST_COMMAND, "/c trust ");
|
||||||
|
message.sendToPlayer(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.common.jsonchat.ClickEvent;
|
||||||
|
import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
|
||||||
|
public class ClanAddWarButton implements IButton
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
JsonMessage message = new JsonMessage(C.cRed + C.Bold + "Click here to war a clan").click(ClickEvent.SUGGEST_COMMAND, "/war ");
|
||||||
|
message.sendToPlayer(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
|
||||||
|
public abstract class ClanButton implements IButton
|
||||||
|
{
|
||||||
|
private ClansManager _clansManager;
|
||||||
|
private Player _player;
|
||||||
|
private ClanInfo _clanInfo;
|
||||||
|
private ClanRole _clanRole;
|
||||||
|
|
||||||
|
public ClanButton(ClansManager clansManager, Player player, ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
_clansManager = clansManager;
|
||||||
|
_player = player;
|
||||||
|
_clanInfo = clanInfo;
|
||||||
|
_clanRole = clanRole;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClansManager getClansManager()
|
||||||
|
{
|
||||||
|
return _clansManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return _player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClanInfo getClanInfo()
|
||||||
|
{
|
||||||
|
return _clanInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClanRole getClanRole()
|
||||||
|
{
|
||||||
|
return _clanRole;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.common.jsonchat.ClickEvent;
|
||||||
|
import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
|
||||||
|
public class ClanCreateButton implements IButton
|
||||||
|
{
|
||||||
|
public ClanCreateButton()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
JsonMessage message = new JsonMessage(C.cRed + C.Bold + "Click here to create a clan").click(ClickEvent.SUGGEST_COMMAND, "/c create ");
|
||||||
|
message.sendToPlayer(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
|
||||||
|
public class ClanDisbandButton extends ClanButton
|
||||||
|
{
|
||||||
|
public ClanDisbandButton(ClansManager clansManager, Player player, ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
super(clansManager, player, clanInfo, clanRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getPlayer().closeInventory();
|
||||||
|
getClansManager().getClanUtility().delete(getPlayer());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.common.jsonchat.ClickEvent;
|
||||||
|
import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
|
||||||
|
public class ClanInviteButton implements IButton
|
||||||
|
{
|
||||||
|
private Player _player;
|
||||||
|
|
||||||
|
public ClanInviteButton(Player player)
|
||||||
|
{
|
||||||
|
_player = player;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
_player.closeInventory();
|
||||||
|
|
||||||
|
JsonMessage message = new JsonMessage(C.cRed + C.Bold + "Click Here to invite a player to your Clan").click(ClickEvent.SUGGEST_COMMAND, "/c invite ");
|
||||||
|
message.sendToPlayer(_player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
|
||||||
|
public class ClanJoinButton implements IButton
|
||||||
|
{
|
||||||
|
private ClansManager _clansManager;
|
||||||
|
private ClanInfo _clanInfo;
|
||||||
|
|
||||||
|
public ClanJoinButton(ClansManager clansManager, ClanInfo clanInfo)
|
||||||
|
{
|
||||||
|
_clansManager = clansManager;
|
||||||
|
_clanInfo = clanInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
player.closeInventory();
|
||||||
|
_clansManager.getClanUtility().join(player, _clanInfo);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
|
||||||
|
public class ClanLeaveButton extends ClanButton
|
||||||
|
{
|
||||||
|
public ClanLeaveButton(ClansManager clansManager, Player player, ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
super(clansManager, player, clanInfo, clanRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getPlayer().closeInventory();
|
||||||
|
getClansManager().getClanUtility().leave(getPlayer());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by phina on 10/31/2015.
|
||||||
|
*/
|
||||||
|
public class ClanRelationsButton
|
||||||
|
{
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by phina on 10/31/2015.
|
||||||
|
*/
|
||||||
|
public class ClanTerritoryButton
|
||||||
|
{
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.common.jsonchat.ClickEvent;
|
||||||
|
import mineplex.core.common.jsonchat.JsonMessage;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
|
||||||
|
public class ClanWhoButton implements IButton
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
player.closeInventory();
|
||||||
|
|
||||||
|
JsonMessage message = new JsonMessage(C.cRed + C.Bold + "Click here to lookup a clan").click(ClickEvent.SUGGEST_COMMAND, "/c who ");
|
||||||
|
message.sendToPlayer(player);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
|
||||||
|
public class MemberButton implements IButton
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
Bukkit.broadcastMessage("Member button click");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.button;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by phina on 10/31/2015.
|
||||||
|
*/
|
||||||
|
public class MemberManagementButton
|
||||||
|
{
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.core.shop.page.ShopPageBase;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
|
||||||
|
public abstract class ClansCommandPageBase extends ShopPageBase<ClansManager, ClansCommandShop>
|
||||||
|
{
|
||||||
|
public ClansCommandPageBase(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, int size)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, name, player, size);
|
||||||
|
|
||||||
|
buildPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final void buildPage()
|
||||||
|
{
|
||||||
|
ClanInfo clanInfo = getPlugin().getClan(getPlayer());
|
||||||
|
|
||||||
|
if (clanInfo == null)
|
||||||
|
{
|
||||||
|
buildNoClan();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClanRole role = getPlugin().getClanUtility().getRole(getPlayer());
|
||||||
|
buildClan(clanInfo, role);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void buildNoClan();
|
||||||
|
|
||||||
|
public abstract void buildClan(ClanInfo clanInfo, ClanRole clanRole);
|
||||||
|
|
||||||
|
protected void addBackButton()
|
||||||
|
{
|
||||||
|
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||||
|
{
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
ShopPageBase<ClansManager, ClansCommandShop> mainPage = new ClansMainPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer());
|
||||||
|
|
||||||
|
getShop().openPageForPlayer(getPlayer(), mainPage);
|
||||||
|
player.playSound(player.getLocation(), Sound.CLICK, 1, 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanJoinButton;
|
||||||
|
|
||||||
|
public class ClansJoinPage extends ClansCommandPageBase
|
||||||
|
{
|
||||||
|
public ClansJoinPage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, "Join Clan", player, 54);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildNoClan()
|
||||||
|
{
|
||||||
|
int currentIndex = 9;
|
||||||
|
|
||||||
|
for (ClanInfo clanInfo : getPlugin().getClanMap().values())
|
||||||
|
{
|
||||||
|
if (clanInfo.isInvited(getPlayer().getName()))
|
||||||
|
{
|
||||||
|
addInvitation(currentIndex, clanInfo);
|
||||||
|
currentIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentIndex == 9)
|
||||||
|
{
|
||||||
|
// No invitations :(
|
||||||
|
ShopItem shopItem = new ShopItem(Material.BOOK, "You have no Clan Invitations!", new String[] {}, 1, true, false);
|
||||||
|
setItem(22, shopItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
addBackButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addInvitation(int index, ClanInfo clanInfo)
|
||||||
|
{
|
||||||
|
ShopItem shopItem = new ShopItem(Material.BOOK_AND_QUILL, clanInfo.getName(), new String[] {}, 1, false, false);
|
||||||
|
addButton(index, shopItem, new ClanJoinButton(getPlugin(), clanInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildClan(ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,68 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
import mineplex.game.clans.clans.war.ClanWar;
|
||||||
|
|
||||||
|
public class ClansListWarPage extends ClansCommandPageBase
|
||||||
|
{
|
||||||
|
public ClansListWarPage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, "Active Wars", player, 54);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildNoClan()
|
||||||
|
{
|
||||||
|
// Nothing to do here
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildClan(ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
List<ClanWar> initiatedWars = clanInfo.getInitiatedWars();
|
||||||
|
List<ClanWar> initiatedOnWars = clanInfo.getInitiatedOnWars();
|
||||||
|
|
||||||
|
int currentIndex = 9;
|
||||||
|
|
||||||
|
for (ClanWar war : initiatedWars)
|
||||||
|
{
|
||||||
|
addWar(currentIndex, war, true);
|
||||||
|
currentIndex++;
|
||||||
|
}
|
||||||
|
for (ClanWar war : initiatedOnWars)
|
||||||
|
{
|
||||||
|
addWar(currentIndex, war, false);
|
||||||
|
currentIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentIndex == 9)
|
||||||
|
{
|
||||||
|
ShopItem shopItem = new ShopItem(Material.BOOK, "You are not at war with any clan!", new String[] {}, 1, true, false);
|
||||||
|
setItem(22, shopItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
addBackButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addWar(int index, ClanWar war, boolean initiated)
|
||||||
|
{
|
||||||
|
String enemyName = initiated ? war.getClanB() : war.getClanA();
|
||||||
|
int score = initiated ? war.getClanAScore() : war.getClanBScore();
|
||||||
|
ShopItem shopItem = new ShopItem(initiated ? Material.BOW : Material.GOLD_SWORD, enemyName,
|
||||||
|
new String[] {ChatColor.RESET + C.cGray + "Score: " + C.cYellow + score }, 1, false, false);
|
||||||
|
setItem(index, shopItem);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,142 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.core.shop.page.ShopPageBase;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanCreateButton;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanWhoButton;
|
||||||
|
|
||||||
|
public class ClansMainPage extends ShopPageBase<ClansManager, ClansCommandShop>
|
||||||
|
{
|
||||||
|
public ClansMainPage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, "Clans", player, 9);
|
||||||
|
|
||||||
|
buildPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void buildPage()
|
||||||
|
{
|
||||||
|
ClanInfo clanInfo = getPlugin().getClan(getPlayer());
|
||||||
|
|
||||||
|
if (clanInfo == null)
|
||||||
|
{
|
||||||
|
// Clan does not exist state
|
||||||
|
|
||||||
|
// Clan Create
|
||||||
|
ShopItem clanCreate = new ShopItem(Material.BOOK_AND_QUILL, "Create Clan", new String[] {}, 1, false, false);
|
||||||
|
addButton(2, clanCreate, new ClanCreateButton());
|
||||||
|
|
||||||
|
// Clan Join
|
||||||
|
ShopItem clanJoin = new ShopItem(Material.BOOK, "Join Clan", new String[] {}, 1, false, false);
|
||||||
|
addButton(4, clanJoin, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getShop().openPageForPlayer(getPlayer(), new ClansJoinPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Clan Who
|
||||||
|
ShopItem clanWho = new ShopItem(Material.MAP, "Lookup Clan", new String[] {}, 1, false, false);
|
||||||
|
addButton(6, clanWho, new ClanWhoButton());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Clan does exist state
|
||||||
|
|
||||||
|
ClanRole role = getPlugin().getClanUtility().getRole(getPlayer());
|
||||||
|
|
||||||
|
boolean canOpenClanManagement = role.has(ClanRole.MEMBER);
|
||||||
|
boolean canOpenClanRelations = role.has(ClanRole.MEMBER);
|
||||||
|
boolean canOpenMemberManagement = role.has(ClanRole.MEMBER);
|
||||||
|
boolean canOpenClanTerritory = role.has(ClanRole.MEMBER);
|
||||||
|
|
||||||
|
ShopItem clanManagement = new ShopItem(Material.BOOK_AND_QUILL, "Clan Management", new String[]{}, 1, !canOpenClanManagement, false);
|
||||||
|
ShopItem clanRelations = new ShopItem(Material.DIAMOND_SWORD, "Clan Relations", new String[]{}, 1, !canOpenClanRelations, false);
|
||||||
|
ShopItem memberManagement = new ShopItem(Material.SKULL_ITEM, (byte) 3, "Member Management", new String[]{}, 1, !canOpenMemberManagement, false);
|
||||||
|
ShopItem clanTerritory = new ShopItem(Material.MAP, "Clan Territory", new String[]{}, 1, !canOpenClanTerritory, false);
|
||||||
|
|
||||||
|
// Clan Manage
|
||||||
|
if (canOpenClanManagement)
|
||||||
|
{
|
||||||
|
addButton(1, clanManagement, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getShop().openPageForPlayer(getPlayer(), new ClansManagePage(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setItem(1, clanManagement);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clan Relations
|
||||||
|
if (canOpenClanRelations)
|
||||||
|
{
|
||||||
|
addButton(3, clanRelations, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getShop().openPageForPlayer(getPlayer(), new ClansRelationsPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setItem(3, clanRelations);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Member Management
|
||||||
|
if (canOpenMemberManagement)
|
||||||
|
{
|
||||||
|
addButton(5, memberManagement, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getShop().openPageForPlayer(getPlayer(), new MemberManagementPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setItem(5, memberManagement);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clan Territory
|
||||||
|
if (canOpenClanTerritory)
|
||||||
|
{
|
||||||
|
addButton(7, clanTerritory, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getShop().openPageForPlayer(getPlayer(), new ClansTerritoryPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setItem(7, clanTerritory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.core.shop.page.ShopPageBase;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanDisbandButton;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanInviteButton;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanLeaveButton;
|
||||||
|
|
||||||
|
public class ClansManagePage extends ClansCommandPageBase
|
||||||
|
{
|
||||||
|
public ClansManagePage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, "Clan Management", player, 18);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildNoClan()
|
||||||
|
{
|
||||||
|
// Nothing to do here
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildClan(ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
// Invite
|
||||||
|
boolean canInvite = clanRole.has(clanRole.ADMIN);
|
||||||
|
ShopItem invite = new ShopItem(Material.PAPER, "Invite Player", new String[] {}, 1, !canInvite, false);
|
||||||
|
if (canInvite)
|
||||||
|
addButton(11, invite, new ClanInviteButton(getPlayer()));
|
||||||
|
else
|
||||||
|
setItem(11, invite);
|
||||||
|
|
||||||
|
// Leave
|
||||||
|
ShopItem leave = new ShopItem(Material.POTATO, "Leave Clan", new String[] {}, 1, false, false);
|
||||||
|
addButton(13, leave, new ClanLeaveButton(getPlugin(), getPlayer(), clanInfo, clanRole));
|
||||||
|
|
||||||
|
// Disband
|
||||||
|
boolean canDisband = clanRole == ClanRole.LEADER;
|
||||||
|
ShopItem disband = new ShopItem(Material.TNT, "Disband Clan", new String[] {}, 1, !canDisband, false);
|
||||||
|
if (canDisband)
|
||||||
|
addButton(15, disband, new ClanDisbandButton(getPlugin(), getPlayer(), clanInfo, clanRole));
|
||||||
|
else
|
||||||
|
setItem(15, disband);
|
||||||
|
|
||||||
|
addBackButton();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,93 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.core.shop.item.ShopItem;
|
||||||
|
import mineplex.core.shop.page.ShopPageBase;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.commands.ClansCommand;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanAddAllyButton;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanAddTrustedButton;
|
||||||
|
import mineplex.game.clans.clans.gui.button.ClanAddWarButton;
|
||||||
|
|
||||||
|
public class ClansRelationsPage extends ClansCommandPageBase
|
||||||
|
{
|
||||||
|
public ClansRelationsPage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, "Clan Relations", player, 27);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildNoClan()
|
||||||
|
{
|
||||||
|
// Nothing!
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildClan(ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
// Add Ally
|
||||||
|
boolean canAddAlly = clanRole.has(ClanRole.ADMIN);
|
||||||
|
ShopItem addAlly = new ShopItem(Material.DIAMOND_SWORD, "Add Ally", new String[] {}, 1, !canAddAlly, false);
|
||||||
|
if (canAddAlly)
|
||||||
|
addButton(11, addAlly, new ClanAddAllyButton());
|
||||||
|
else
|
||||||
|
setItem(11, addAlly);
|
||||||
|
|
||||||
|
// List Allys
|
||||||
|
ShopItem listAlly = new ShopItem(Material.POTATO, "List Allies", new String[] {}, 1, false, false);
|
||||||
|
addButton(20, listAlly, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add Trust
|
||||||
|
boolean canAddTrusted = clanRole.has(ClanRole.ADMIN);
|
||||||
|
ShopItem addTrusted = new ShopItem(Material.RED_ROSE, "Add Trusted", new String[] {}, 1, !canAddTrusted, false);
|
||||||
|
if (canAddTrusted)
|
||||||
|
addButton(13, addTrusted, new ClanAddTrustedButton());
|
||||||
|
else
|
||||||
|
setItem(13, addTrusted);
|
||||||
|
// List Trusted
|
||||||
|
ShopItem listTrusted = new ShopItem(Material.POTATO, "List Trusted", new String[] {}, 1, false, false);
|
||||||
|
addButton(22, listTrusted, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add War
|
||||||
|
boolean canAddWar = clanRole.has(ClanRole.ADMIN);
|
||||||
|
ShopItem addWar = new ShopItem(Material.BOW, "Add War", new String[] {}, 1, !canAddWar, false);
|
||||||
|
if (canAddWar)
|
||||||
|
addButton(15, addWar, new ClanAddWarButton());
|
||||||
|
|
||||||
|
// List War
|
||||||
|
ShopItem listWar = new ShopItem(Material.POTATO, "List Wars", new String[] {}, 1, false, false);
|
||||||
|
addButton(24, listWar, new IButton()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(Player player, ClickType clickType)
|
||||||
|
{
|
||||||
|
getShop().openPageForPlayer(getPlayer(), new ClansListWarPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
addBackButton();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.page.ShopPageBase;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
|
||||||
|
public class ClansTerritoryPage extends ClansCommandPageBase
|
||||||
|
{
|
||||||
|
public ClansTerritoryPage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, "Clan Territory", player, 18);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildNoClan()
|
||||||
|
{
|
||||||
|
// Nothing!
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildClan(ClanInfo clanInfo, ClanRole clanRole)
|
||||||
|
{
|
||||||
|
addBackButton();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
package mineplex.game.clans.clans.gui.page;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.util.C;
|
||||||
|
import mineplex.core.common.util.UtilSkull;
|
||||||
|
import mineplex.core.donation.DonationManager;
|
||||||
|
import mineplex.core.shop.item.IButton;
|
||||||
|
import mineplex.core.shop.page.ShopPageInventory;
|
||||||
|
import mineplex.game.clans.clans.ClanInfo;
|
||||||
|
import mineplex.game.clans.clans.ClanRole;
|
||||||
|
import mineplex.game.clans.clans.ClansManager;
|
||||||
|
import mineplex.game.clans.clans.ClansPlayer;
|
||||||
|
import mineplex.game.clans.clans.ClansPlayerComparator;
|
||||||
|
import mineplex.game.clans.clans.gui.ClansCommandShop;
|
||||||
|
import mineplex.game.clans.clans.gui.button.MemberButton;
|
||||||
|
|
||||||
|
public class MemberManagementPage extends ShopPageInventory<ClansManager, ClansCommandShop>
|
||||||
|
{
|
||||||
|
private IButton[] _buttons;
|
||||||
|
private ItemStack[] _items;
|
||||||
|
|
||||||
|
public MemberManagementPage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||||
|
{
|
||||||
|
super(plugin, shop, clientManager, donationManager, "Member Manager", player);
|
||||||
|
|
||||||
|
buildPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected IButton[] getButtons()
|
||||||
|
{
|
||||||
|
return _buttons;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemStack[] getItems()
|
||||||
|
{
|
||||||
|
return _items;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void buildItems()
|
||||||
|
{
|
||||||
|
ClanInfo clanInfo = getPlugin().getClan(getPlayer());
|
||||||
|
|
||||||
|
if (clanInfo == null)
|
||||||
|
{
|
||||||
|
// do nothing
|
||||||
|
_buttons = new IButton[0];
|
||||||
|
_items = new ItemStack[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClanRole role = getPlugin().getClanUtility().getRole(getPlayer());
|
||||||
|
|
||||||
|
List<ClansPlayer> playerList = new ArrayList<ClansPlayer>(clanInfo.getMembers().values());
|
||||||
|
Collections.sort(playerList, new ClansPlayerComparator());
|
||||||
|
|
||||||
|
_buttons = new IButton[playerList.size()];
|
||||||
|
_items = new ItemStack[_buttons.length];
|
||||||
|
|
||||||
|
|
||||||
|
int currentIndex = 0;
|
||||||
|
for (ClansPlayer clansPlayer : playerList)
|
||||||
|
{
|
||||||
|
addPlayerButton(clansPlayer, currentIndex);
|
||||||
|
currentIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addPlayerButton(ClansPlayer player, int index)
|
||||||
|
{
|
||||||
|
ItemStack playerHead = UtilSkull.getPlayerHead(player.getPlayerName(), C.cGreen + player.getPlayerName(), Arrays.asList(new String[] {ChatColor.RESET + "Role: " + player.getRole().ordinal()}));
|
||||||
|
_items[index] = playerHead;
|
||||||
|
_buttons[index] = new MemberButton();
|
||||||
|
}
|
||||||
|
}
|
@ -61,11 +61,16 @@ public class ClanWar
|
|||||||
* Get the score of the war. Score is represented as an int value with the initiator clan's score. The score
|
* Get the score of the war. Score is represented as an int value with the initiator clan's score. The score
|
||||||
* works as a tug of war, score starts at 20 and either the initiator will get to 40 or 0 to trigger the end of war
|
* works as a tug of war, score starts at 20 and either the initiator will get to 40 or 0 to trigger the end of war
|
||||||
*/
|
*/
|
||||||
public int getScore()
|
public int getClanAScore()
|
||||||
{
|
{
|
||||||
return _score;
|
return _score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getClanBScore()
|
||||||
|
{
|
||||||
|
return WarManager.WAR_MAX_SCORE - getClanAScore();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is the war finished (has a clan won already)
|
* Is the war finished (has a clan won already)
|
||||||
*/
|
*/
|
||||||
@ -132,7 +137,7 @@ public class ClanWar
|
|||||||
if (obj instanceof ClanWar)
|
if (obj instanceof ClanWar)
|
||||||
{
|
{
|
||||||
ClanWar war = ((ClanWar) obj);
|
ClanWar war = ((ClanWar) obj);
|
||||||
return _clanA.equals(war.getClanA()) && _clanB.equals(war.getClanB()) && _completed == war.isCompleted() && _score == war.getScore()
|
return _clanA.equals(war.getClanA()) && _clanB.equals(war.getClanB()) && _completed == war.isCompleted() && _score == war.getClanAScore()
|
||||||
&& _created.equals(war.getCreated());
|
&& _created.equals(war.getCreated());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package mineplex.game.clans.clans.war;
|
package mineplex.game.clans.clans.war;
|
||||||
|
|
||||||
import mineplex.game.clans.clans.ClanInfo;
|
|
||||||
|
|
||||||
public class WarInvasion
|
public class WarInvasion
|
||||||
{
|
{
|
||||||
private static final long INVADE_LENGTH = 60000L * 30; // 30 Minutes
|
private static final long INVADE_LENGTH = 60000L * 30; // 30 Minutes
|
||||||
@ -13,7 +11,7 @@ public class WarInvasion
|
|||||||
|
|
||||||
public WarInvasion(ClanWar clanWar)
|
public WarInvasion(ClanWar clanWar)
|
||||||
{
|
{
|
||||||
if (clanWar.getScore() > WarManager.WAR_START_SCORE)
|
if (clanWar.getClanAScore() > WarManager.WAR_START_SCORE)
|
||||||
{
|
{
|
||||||
// Initiator Won
|
// Initiator Won
|
||||||
_invaderClan = clanWar.getClanA();
|
_invaderClan = clanWar.getClanA();
|
||||||
|
@ -32,6 +32,7 @@ import mineplex.game.clans.clans.war.event.WarInvasionStartEvent;
|
|||||||
public class WarManager extends MiniPlugin
|
public class WarManager extends MiniPlugin
|
||||||
{
|
{
|
||||||
public static final int WAR_START_SCORE = 20;
|
public static final int WAR_START_SCORE = 20;
|
||||||
|
public static final int WAR_MAX_SCORE = 40;
|
||||||
|
|
||||||
private final ClansManager _clansManager;
|
private final ClansManager _clansManager;
|
||||||
|
|
||||||
@ -113,12 +114,12 @@ public class WarManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
boolean completed = false;
|
boolean completed = false;
|
||||||
|
|
||||||
if (clanWar.getScore() >= WAR_START_SCORE * 2)
|
if (clanWar.getClanAScore() >= WAR_START_SCORE * 2)
|
||||||
{
|
{
|
||||||
// Initiator Won
|
// Initiator Won
|
||||||
completed = true;
|
completed = true;
|
||||||
}
|
}
|
||||||
else if (clanWar.getScore() <= 0)
|
else if (clanWar.getClanAScore() <= 0)
|
||||||
{
|
{
|
||||||
// Initiated On Won
|
// Initiated On Won
|
||||||
completed = true;
|
completed = true;
|
||||||
|
@ -48,10 +48,10 @@ public class DominanceCommand extends CommandBase<WarManager>
|
|||||||
{
|
{
|
||||||
System.out.println("Initiator: " + war.getClanA());
|
System.out.println("Initiator: " + war.getClanA());
|
||||||
System.out.println("Other Clan: " + war.getClanB());
|
System.out.println("Other Clan: " + war.getClanB());
|
||||||
System.out.println("Score: " + war.getScore());
|
System.out.println("Score: " + war.getClanAScore());
|
||||||
UtilPlayer.message(caller, F.main("War", "War Status with " + searchName));
|
UtilPlayer.message(caller, F.main("War", "War Status with " + searchName));
|
||||||
UtilPlayer.message(caller, F.main("War", "Initiated by: " + (war.getClanA().equals(clan.getName()) ? selfName : searchName)));
|
UtilPlayer.message(caller, F.main("War", "Initiated by: " + (war.getClanA().equals(clan.getName()) ? selfName : searchName)));
|
||||||
UtilPlayer.message(caller, F.main("War", "Initiator Dominance: " + F.elem("" + war.getScore())));
|
UtilPlayer.message(caller, F.main("War", "Initiator Dominance: " + F.elem("" + war.getClanAScore())));
|
||||||
UtilPlayer.message(caller, F.main("War", "Age: " + F.elem(UtilTime.convertString(System.currentTimeMillis() - war.getCreated().getTime(), 1, UtilTime.TimeUnit.FIT))));
|
UtilPlayer.message(caller, F.main("War", "Age: " + F.elem(UtilTime.convertString(System.currentTimeMillis() - war.getCreated().getTime(), 1, UtilTime.TimeUnit.FIT))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user