Merge branch 'clans-beta' of ssh://184.154.0.242:7999/min/Mineplex into clans-beta
This commit is contained in:
commit
0409d7ffef
@ -1,6 +1,13 @@
|
||||
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.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
public class UtilSkull
|
||||
{
|
||||
@ -25,6 +32,17 @@ public class UtilSkull
|
||||
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)
|
||||
{
|
||||
return data == 3;
|
||||
|
@ -58,8 +58,8 @@ public class TablistFix extends MiniPlugin
|
||||
{
|
||||
if (player.canSee(other))
|
||||
{
|
||||
PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.updateDisplayName(((CraftPlayer) player).getHandle(), ((CraftPlayer) other).getHandle());
|
||||
UtilPlayer.sendPacket(player, packet);
|
||||
// PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.updateDisplayName(((CraftPlayer) player).getHandle(), ((CraftPlayer) other).getHandle());
|
||||
// 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)
|
||||
{
|
||||
ClanWar initiated = getInitiatedWar(againstClan);
|
||||
|
@ -2,6 +2,23 @@ package mineplex.game.clans.clans;
|
||||
|
||||
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
|
||||
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()
|
||||
{
|
||||
@Override
|
||||
@ -678,7 +678,7 @@ public class ClansDataAccessLayer
|
||||
* EnemyData iData = initiator.getEnemyData(); ClanInfo other = clan ==
|
||||
* initiator ? otherClan : clan; EnemyData oData = other.getEnemyData();
|
||||
* _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() + ", " +
|
||||
* otherClan.getName() + "]"); }
|
||||
*/
|
||||
|
@ -19,6 +19,7 @@ import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerItemBreakEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
@ -64,6 +65,7 @@ import mineplex.game.clans.clans.commands.MapCommand;
|
||||
import mineplex.game.clans.clans.commands.RegionsCommand;
|
||||
import mineplex.game.clans.clans.data.PlayerClan;
|
||||
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.map.ItemMapManager;
|
||||
import mineplex.game.clans.clans.murder.MurderManager;
|
||||
@ -159,6 +161,9 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
|
||||
private long _reclaimTime = 1800000;
|
||||
private long _onlineTime = 1200000;
|
||||
|
||||
// Command Shop
|
||||
private ClansCommandShop _commandShop;
|
||||
|
||||
//Clans
|
||||
private NautHashMap<String, ClanInfo> _clanMap = new NautHashMap<String, ClanInfo>();
|
||||
// private NautHashMap<String, ClanInfo> _clanMemberNameMap = new NautHashMap<String, ClanInfo>();
|
||||
@ -218,7 +223,9 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
|
||||
|
||||
_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);
|
||||
// TODO: Re-enable customtagfix with NCP update?
|
||||
@ -844,6 +851,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)
|
||||
public void handleClansDeath(PlayerDeathEvent event)
|
||||
{
|
||||
|
@ -15,11 +15,17 @@ import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilInput;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.common.util.UtilWorld;
|
||||
import mineplex.game.clans.clans.event.ClanDisbandedEvent;
|
||||
import mineplex.game.clans.core.repository.ClanTerritory;
|
||||
import mineplex.game.clans.tutorials.TutorialManager;
|
||||
import mineplex.game.clans.tutorials.types.TutorialGettingStarted;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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,26 @@
|
||||
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;
|
||||
import mineplex.game.clans.clans.gui.page.ClansPage;
|
||||
|
||||
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 ClansPage(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,61 @@
|
||||
package mineplex.game.clans.clans.gui.button;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.common.util.UtilTextMiddle;
|
||||
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;
|
||||
}
|
||||
|
||||
protected void displayText(String header, String message)
|
||||
{
|
||||
UtilTextMiddle.display(header, message, _player);
|
||||
}
|
||||
|
||||
protected void displayClan(String header, String message, boolean displayForClicker)
|
||||
{
|
||||
for (Player player : _clanInfo.getOnlinePlayers())
|
||||
{
|
||||
if (displayForClicker || !player.equals(getPlayer()))
|
||||
UtilTextMiddle.display(header, message, player);
|
||||
}
|
||||
|
||||
_clansManager.messageClan(_clanInfo, message);
|
||||
}
|
||||
}
|
@ -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,22 @@
|
||||
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 ClanEnergyButton extends ClanButton
|
||||
{
|
||||
public ClanEnergyButton(ClansManager clansManager, Player player, ClanInfo clanInfo, ClanRole clanRole)
|
||||
{
|
||||
super(clansManager, player, clanInfo, clanRole);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(Player player, ClickType clickType)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -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,51 @@
|
||||
package mineplex.game.clans.clans.gui.button;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilWorld;
|
||||
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 ClanTerritoryButton extends ClanButton
|
||||
{
|
||||
public ClanTerritoryButton(ClansManager clansManager, Player player, ClanInfo clanInfo, ClanRole clanRole)
|
||||
{
|
||||
super(clansManager, player, clanInfo, clanRole);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(Player player, ClickType clickType)
|
||||
{
|
||||
if (clickType == ClickType.LEFT)
|
||||
{
|
||||
player.closeInventory();
|
||||
|
||||
Chunk chunk = player.getLocation().getChunk();
|
||||
String chunkName = UtilWorld.chunkToStrClean(chunk);
|
||||
displayText(C.cGreen + "Territory", "You claimed the chunk " + chunkName);
|
||||
displayClan(C.cGreen + "Territory", C.cYellow + getPlayer().getName() + ChatColor.RESET + " claimed the chunk " + chunkName, false);
|
||||
}
|
||||
else if (clickType == ClickType.SHIFT_LEFT)
|
||||
{
|
||||
player.closeInventory();
|
||||
|
||||
Chunk chunk = player.getLocation().getChunk();
|
||||
String chunkName = UtilWorld.chunkToStrClean(chunk);
|
||||
displayText(C.cGreen + "Territory", "You unclaimed the chunk " + chunkName);
|
||||
displayClan(C.cGreen + "Territory", C.cYellow + getPlayer().getName() + ChatColor.RESET + " unclaimed the chunk " + chunkName, false);
|
||||
}
|
||||
else if (clickType == ClickType.SHIFT_RIGHT)
|
||||
{
|
||||
player.closeInventory();
|
||||
|
||||
displayText(C.cGreen + "Territory", "You unclaimed all chunks");
|
||||
displayClan(C.cGreen + "Territory", C.cYellow + getPlayer().getName() + ChatColor.RESET + " unclaimed all chunks", false);
|
||||
}
|
||||
}
|
||||
}
|
@ -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,136 @@
|
||||
package mineplex.game.clans.clans.gui.page;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
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.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.ClanEnergyButton;
|
||||
import mineplex.game.clans.clans.gui.button.ClanInviteButton;
|
||||
import mineplex.game.clans.clans.gui.button.ClanLeaveButton;
|
||||
import mineplex.game.clans.clans.gui.button.ClanTerritoryButton;
|
||||
import mineplex.game.clans.clans.gui.button.ClanWhoButton;
|
||||
|
||||
public class ClansPage extends ClansCommandPageBase
|
||||
{
|
||||
private boolean _useResourceIcons;
|
||||
|
||||
public ClansPage(ClansManager plugin, ClansCommandShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||
{
|
||||
super(plugin, shop, clientManager, donationManager, "Manage Clan", player, 54);
|
||||
|
||||
_useResourceIcons = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildNoClan()
|
||||
{
|
||||
// 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());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildClan(ClanInfo clanInfo, ClanRole clanRole)
|
||||
{
|
||||
// Invites
|
||||
{
|
||||
String inviteName = "Invites";
|
||||
Material inviteMaterial = _useResourceIcons ? Material.MONSTER_EGG : Material.RED_ROSE;
|
||||
byte inviteDate = _useResourceIcons ? (byte) 0 : 0;
|
||||
ArrayList<String> inviteLore = new ArrayList<String>();
|
||||
inviteLore.add("Text about inviting players");
|
||||
inviteLore.add(" ");
|
||||
inviteLore.add("Click to Invite Player");
|
||||
|
||||
ShopItem inviteItem = new ShopItem(inviteMaterial, inviteDate, inviteName, inviteLore.toArray(new String[0]), 1, false, false);
|
||||
ClanInviteButton inviteButton = new ClanInviteButton(getPlayer());
|
||||
addButton(0, inviteItem, inviteButton);
|
||||
}
|
||||
|
||||
// Territory
|
||||
{
|
||||
String territoryName = "Territory";
|
||||
Material territoryMaterial = _useResourceIcons ? Material.MONSTER_EGG : Material.GRASS;
|
||||
byte territoryData = _useResourceIcons ? (byte) 0 : 0;
|
||||
ArrayList<String> territoryLore = new ArrayList<String>();
|
||||
territoryLore.add("Territory Information");
|
||||
territoryLore.add(" ");
|
||||
territoryLore.add(ChatColor.RESET + C.cGray + "Left Click " + C.cWhite + "Claim Land");
|
||||
territoryLore.add(ChatColor.RESET + C.cGray + "Shift-Left Click " + C.cWhite + "Unclaim Land");
|
||||
territoryLore.add(ChatColor.RESET + C.cGray + "Shift-Right Click " + C.cWhite + "Unclaim All Land");
|
||||
|
||||
ShopItem territoryItem = new ShopItem(territoryMaterial, territoryData, territoryName, territoryLore.toArray(new String[0]), 1, false, false);
|
||||
ClanTerritoryButton territoryButton = new ClanTerritoryButton(getPlugin(), getPlayer(), clanInfo, clanRole);
|
||||
addButton(2, territoryItem, territoryButton);
|
||||
}
|
||||
|
||||
// Energy
|
||||
{
|
||||
String energyName = "Energy";
|
||||
Material energyMaterial = _useResourceIcons ? Material.MONSTER_EGG : Material.GOLD_BLOCK;
|
||||
byte energyData = _useResourceIcons ? (byte) 0 : 0;
|
||||
ArrayList<String> energyLore = new ArrayList<String>();
|
||||
|
||||
ShopItem energyItem = new ShopItem(energyMaterial, energyData, energyName, energyLore.toArray(new String[0]), 1, false, false);
|
||||
ClanEnergyButton energyButton = new ClanEnergyButton(getPlugin(), getPlayer(), clanInfo, clanRole);
|
||||
addButton(4, energyItem, energyButton);
|
||||
}
|
||||
|
||||
// Leave
|
||||
{
|
||||
String leaveName = "Leave";
|
||||
Material leaveMaterial = _useResourceIcons ? Material.MONSTER_EGG : Material.TNT;
|
||||
byte leaveData = _useResourceIcons ? (byte) 0 : 0;
|
||||
ArrayList<String> leaveLore = new ArrayList<String>();
|
||||
|
||||
ShopItem leaveItem = new ShopItem(leaveMaterial, leaveData, leaveName, leaveLore.toArray(new String[0]), 1, false, false);
|
||||
ClanLeaveButton leaveButton = new ClanLeaveButton(getPlugin(), getPlayer(), clanInfo, clanRole);
|
||||
addButton(6, leaveItem, leaveButton);
|
||||
}
|
||||
|
||||
// Commands
|
||||
{
|
||||
String commandsName = "Commands";
|
||||
Material commandsMaterial = _useResourceIcons ? Material.MONSTER_EGG : Material.PAPER;
|
||||
byte commandsData = _useResourceIcons ? (byte) 0 : 0;
|
||||
ArrayList<String> commandsLore = new ArrayList<String>();
|
||||
|
||||
ShopItem commandsItem = new ShopItem(commandsMaterial, commandsData, commandsName, commandsLore.toArray(new String[0]), 1, false, false);
|
||||
setItem(8, commandsItem);
|
||||
}
|
||||
|
||||
// Players
|
||||
|
||||
// Allies
|
||||
|
||||
// Wars
|
||||
}
|
||||
}
|
@ -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
|
||||
* 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;
|
||||
}
|
||||
|
||||
public int getClanBScore()
|
||||
{
|
||||
return WarManager.WAR_MAX_SCORE - getClanAScore();
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the war finished (has a clan won already)
|
||||
*/
|
||||
@ -132,7 +137,7 @@ public class ClanWar
|
||||
if (obj instanceof ClanWar)
|
||||
{
|
||||
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());
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
package mineplex.game.clans.clans.war;
|
||||
|
||||
import mineplex.game.clans.clans.ClanInfo;
|
||||
|
||||
public class WarInvasion
|
||||
{
|
||||
private static final long INVADE_LENGTH = 60000L * 30; // 30 Minutes
|
||||
@ -13,7 +11,7 @@ public class WarInvasion
|
||||
|
||||
public WarInvasion(ClanWar clanWar)
|
||||
{
|
||||
if (clanWar.getScore() > WarManager.WAR_START_SCORE)
|
||||
if (clanWar.getClanAScore() > WarManager.WAR_START_SCORE)
|
||||
{
|
||||
// Initiator Won
|
||||
_invaderClan = clanWar.getClanA();
|
||||
|
@ -32,6 +32,7 @@ import mineplex.game.clans.clans.war.event.WarInvasionStartEvent;
|
||||
public class WarManager extends MiniPlugin
|
||||
{
|
||||
public static final int WAR_START_SCORE = 20;
|
||||
public static final int WAR_MAX_SCORE = 40;
|
||||
|
||||
private final ClansManager _clansManager;
|
||||
|
||||
@ -113,12 +114,12 @@ public class WarManager extends MiniPlugin
|
||||
{
|
||||
boolean completed = false;
|
||||
|
||||
if (clanWar.getScore() >= WAR_START_SCORE * 2)
|
||||
if (clanWar.getClanAScore() >= WAR_START_SCORE * 2)
|
||||
{
|
||||
// Initiator Won
|
||||
completed = true;
|
||||
}
|
||||
else if (clanWar.getScore() <= 0)
|
||||
else if (clanWar.getClanAScore() <= 0)
|
||||
{
|
||||
// Initiated On Won
|
||||
completed = true;
|
||||
|
@ -48,10 +48,10 @@ public class DominanceCommand extends CommandBase<WarManager>
|
||||
{
|
||||
System.out.println("Initiator: " + war.getClanA());
|
||||
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", "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))));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user