Mineplex2018-withcommit/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/Kit.java
Jonathan Williams 3fb52c5c71 Initial Commit
2013-08-27 08:14:08 -07:00

157 lines
3.3 KiB
Java

package nautilus.game.arcade.kit;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import nautilus.game.arcade.ArcadeFormat;
import nautilus.game.arcade.ArcadeManager;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Creature;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
public abstract class Kit implements Listener
{
public ArcadeManager Manager;
private String _kitName;
private String[] _kitDesc;
private KitAvailability _kitAvailability;
private Perk[] _kitPerks;
protected EntityType _entityType;
protected ItemStack _itemInHand;
public Kit(ArcadeManager manager, String name, KitAvailability kitAvailability, String[] kitDesc, Perk[] kitPerks, EntityType entityType, ItemStack itemInHand)
{
Manager = manager;
_kitName = name;
_kitDesc = kitDesc;
_kitPerks = kitPerks;
for (Perk perk : _kitPerks)
perk.SetHost(this);
_kitAvailability = kitAvailability;
_entityType = entityType;
_itemInHand = itemInHand;
}
public String GetFormattedName()
{
return GetAvailability().GetColor() + "§l" + _kitName;
}
public String GetName()
{
return _kitName;
}
public ItemStack GetItemInHand()
{
return _itemInHand;
}
public KitAvailability GetAvailability()
{
return _kitAvailability;
}
public String[] GetDesc()
{
return _kitDesc;
}
public Perk[] GetPerks()
{
return _kitPerks;
}
public boolean HasKit(Player player)
{
if (Manager.GetGame() == null)
return false;
return Manager.GetGame().HasKit(player, this);
}
public void ApplyKit(Player player)
{
UtilInv.Clear(player);
for (Perk perk : _kitPerks)
perk.Apply(player);
GiveItems(player);
}
public abstract void GiveItems(Player player);
public Creature SpawnEntity(Location loc)
{
EntityType type = _entityType;
if (type == EntityType.PLAYER)
type = EntityType.ZOMBIE;
Creature ent = (Creature)Manager.GetCreature().SpawnEntity(loc, type);
ent.setRemoveWhenFarAway(false);
ent.setCustomName(GetAvailability().GetColor() + GetName() + " Kit" + (GetAvailability() == KitAvailability.Blue ? ChatColor.GRAY + " (" + ChatColor.WHITE + "Ultra" + ChatColor.GRAY + ")" : ""));
ent.setCustomNameVisible(true);
ent.getEquipment().setItemInHand(_itemInHand);
UtilEnt.Vegetate(ent);
SpawnCustom(ent);
return ent;
}
public void SpawnCustom(Creature ent) { }
public void DisplayDesc(Player player)
{
for (int i=0 ; i<3 ; i++)
UtilPlayer.message(player, "");
UtilPlayer.message(player, ArcadeFormat.Line);
UtilPlayer.message(player, "§aKit - §f§l" + GetName());
//Desc
for (String line : GetDesc())
{
UtilPlayer.message(player, C.cGray + " " + line);
}
//Perk Descs
for (Perk perk : GetPerks())
{
if (!perk.IsVisible())
continue;
UtilPlayer.message(player, "");
UtilPlayer.message(player, C.cWhite + C.Bold + perk.GetName());
for (String line : perk.GetDesc())
{
UtilPlayer.message(player, C.cGray + " " + line);
}
}
UtilPlayer.message(player, ArcadeFormat.Line);
}
public int GetCost()
{
return 2000;
}
}