Finalisation of update
This commit is contained in:
parent
c0680b3511
commit
da9ad913b2
@ -1,16 +1,18 @@
|
||||
package mineplex.core.progression;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||
import mineplex.core.progression.data.KitAbilityDetail;
|
||||
import mineplex.core.progression.math.Calculations;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* The API class all kits with the new system must use
|
||||
@ -53,7 +55,7 @@ public interface ProgressiveKit
|
||||
*
|
||||
* @return The map of upgrades and their details
|
||||
*/
|
||||
List<KitAbilityDetail> getAbilityDetails();
|
||||
HashMap<Integer, ArrayList<KitAbilityDetail>> getAbilityDetails();
|
||||
|
||||
/**
|
||||
* Retrieve the current level of this kit
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -17,7 +17,6 @@ import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.GameType;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.stats.DeathBomberStatTracker;
|
||||
import nautilus.game.arcade.stats.SkywarsKillZombieStatTracker;
|
||||
import nautilus.game.arcade.stats.SkywarsTNTStatTracker;
|
||||
@ -29,6 +28,7 @@ public class SoloSkywars extends Skywars
|
||||
|
||||
private GameTeam _players;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public SoloSkywars(ArcadeManager manager)
|
||||
{
|
||||
this(manager, GameType.Skywars);
|
||||
@ -51,6 +51,7 @@ public class SoloSkywars extends Skywars
|
||||
);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public SoloSkywars(ArcadeManager manager, GameType type)
|
||||
{
|
||||
super(manager, type,
|
||||
|
@ -1,47 +0,0 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkChicken;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class KitChicken extends ProgressingKit
|
||||
{
|
||||
private static final String[] DESCRIPTION = {
|
||||
"BAWK BAWK. Eggs!",
|
||||
"",
|
||||
"Get a chicken that follows you around",
|
||||
"And lays eggs every " + C.cGreen + 8 + C.cWhite + " seconds!"
|
||||
};
|
||||
|
||||
private static final Perk[] PERKS = {
|
||||
new PerkChicken()
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.EGG);
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
ItemStackFactory.Instance.CreateStack(Material.WOOD_AXE),
|
||||
ItemStackFactory.Instance.CreateStack(Material.WOOD_PICKAXE)
|
||||
};
|
||||
|
||||
|
||||
public KitChicken(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Chicken Farmer", "skywarschickenfarmer", KitAvailability.Free, 0, DESCRIPTION, PERKS, EntityType.ZOMBIE, IN_HAND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
((PerkChicken) PERKS[0]).spawnChicken(player, player.getLocation());
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import mineplex.core.achievement.Achievement;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkDestructor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class KitDestructor extends ProgressingKit
|
||||
{
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Your Ender Pearls make the world crumble!",
|
||||
"",
|
||||
receiveItem("Seismic Charge", 1, 40, 2),
|
||||
C.cYellow + "Right-Click" + C.cWhite + " with Seismic Charge to " + C.cGreen + "Throw Seismic Charge",
|
||||
};
|
||||
|
||||
private static final Perk[] PERKS = {
|
||||
new PerkDestructor(40, 2, 2500, true)
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.ENDER_PEARL);
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
ItemStackFactory.Instance.CreateStack(Material.WOOD_AXE),
|
||||
ItemStackFactory.Instance.CreateStack(Material.WOOD_PICKAXE)
|
||||
};
|
||||
|
||||
private static final Achievement[] ACHIEVEMENTS = {
|
||||
Achievement.SKYWARS_BOMBER,
|
||||
Achievement.SKYWARS_NOARMOR,
|
||||
Achievement.SKYWARS_NOCHEST,
|
||||
Achievement.SKYWARS_PLAYER_KILLS,
|
||||
Achievement.SKYWARS_TNT,
|
||||
Achievement.SKYWARS_WINS,
|
||||
Achievement.SKYWARS_ZOMBIE_KILLS
|
||||
};
|
||||
|
||||
public KitDestructor(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Destructor", "skywarsdestructor", KitAvailability.Achievement, DESCRIPTION, PERKS, EntityType.ZOMBIE, IN_HAND);
|
||||
|
||||
this.setAchievementRequirements(ACHIEVEMENTS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkArmorUpgrade;
|
||||
|
||||
public class KitDevourer extends ProgressingKit
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Start with " + C.cGreen + "Wood Sword" + C.cGray + " and " + C.cGreen + "25 Cobblestone",
|
||||
"",
|
||||
"Each kill upgrades your lowest armor piece by 1 tier"
|
||||
};
|
||||
|
||||
private static final Perk[] PERKS = {
|
||||
new PerkArmorUpgrade()
|
||||
};
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
new ItemStack(Material.COBBLESTONE, 25)
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.OBSIDIAN);
|
||||
|
||||
public KitDevourer(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Devourer", "skywarsdevourer", KitAvailability.Gem, 4000, DESCRIPTION, PERKS, EntityType.ZOMBIE, IN_HAND);
|
||||
setPerks(PERKS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
int level = getUpgradeLevel(player.getUniqueId());
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case 0:
|
||||
player.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
|
||||
break;
|
||||
case 1:
|
||||
player.getInventory().addItem(new ItemStack(Material.STONE_SWORD));
|
||||
break;
|
||||
case 2:
|
||||
player.getInventory().addItem(new ItemStack(Material.STONE_SWORD));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_BOOTS));
|
||||
break;
|
||||
case 3:
|
||||
player.getInventory().addItem(new ItemStack(Material.STONE_SWORD));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_BOOTS));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_HELMET));
|
||||
break;
|
||||
case 4:
|
||||
player.getInventory().addItem(new ItemStack(Material.STONE_SWORD));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_BOOTS));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_HELMET));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_LEGGINGS));
|
||||
break;
|
||||
case 5:
|
||||
player.getInventory().addItem(new ItemStack(Material.STONE_SWORD));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_BOOTS));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_HELMET));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_LEGGINGS));
|
||||
player.getInventory().addItem(new ItemStack(Material.GOLD_CHESTPLATE));
|
||||
break;
|
||||
}
|
||||
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkIncreaseOre;
|
||||
|
||||
public class KitGatherer extends ProgressingKit
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Start with " + C.cGreen + "Wood Pickaxe" + C.cGray + " and " + C.cGreen + "Wood Sword",
|
||||
"",
|
||||
"Each ore mined drops double"
|
||||
};
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
new ItemStack(Material.WOOD_SWORD)
|
||||
};
|
||||
|
||||
private static final Material[] TYPES = {
|
||||
Material.COAL_ORE,
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
};
|
||||
|
||||
private static final Material[] TYPES_5 = {
|
||||
Material.COAL_ORE,
|
||||
Material.GOLD_ORE,
|
||||
Material.IRON_ORE,
|
||||
Material.DIAMOND_ORE,
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.WOOD_PICKAXE);
|
||||
|
||||
public KitGatherer(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Gatherer", "skywarsgartherer", KitAvailability.Free, DESCRIPTION, new Perk[] { new PerkIncreaseOre(1, TYPES) }, EntityType.ZOMBIE, IN_HAND);
|
||||
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
setPerks(i, new Perk[] { new PerkIncreaseOre(1, TYPES) });
|
||||
}
|
||||
|
||||
setPerks(5, new Perk[] { new PerkIncreaseOre(1, TYPES_5) });
|
||||
setOtherPerks(2, "Gain Haste I");
|
||||
setOtherPerks(3, "Gain Haste I");
|
||||
setOtherPerks(4, "Gain Haste II");
|
||||
setOtherPerks(5, "Gain Haste III", "Diamond ore drops double");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
int level = getUpgradeLevel(player.getUniqueId());
|
||||
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case 0:
|
||||
player.getInventory().addItem(new ItemStack(Material.WOOD_PICKAXE));
|
||||
break;
|
||||
case 1:
|
||||
player.getInventory().addItem(new ItemStack(Material.STONE_PICKAXE));
|
||||
break;
|
||||
case 2:
|
||||
player.getInventory().addItem(new ItemStack(Material.STONE_PICKAXE));
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, Integer.MAX_VALUE, 0));
|
||||
break;
|
||||
case 3:
|
||||
player.getInventory().addItem(new ItemStack(Material.IRON_PICKAXE));
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, Integer.MAX_VALUE, 0));
|
||||
break;
|
||||
case 4:
|
||||
player.getInventory().addItem(new ItemStack(Material.IRON_PICKAXE));
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, Integer.MAX_VALUE, 1));
|
||||
break;
|
||||
case 5:
|
||||
player.getInventory().addItem(new ItemStack(Material.IRON_PICKAXE));
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, Integer.MAX_VALUE, 2));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkMadScientist;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class KitMadScientist extends ProgressingKit
|
||||
{
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Spawn crazy animals to fight for you!",
|
||||
"",
|
||||
receiveItem("Egg", 1, 90, 3),
|
||||
"Eggs spawn a loyal minion to fight for you",
|
||||
};
|
||||
|
||||
private static final Perk[] PERKS = {
|
||||
new PerkMadScientist()
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.MONSTER_EGG);
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
ItemStackFactory.Instance.CreateStack(Material.WOOD_AXE),
|
||||
ItemStackFactory.Instance.CreateStack(Material.WOOD_PICKAXE)
|
||||
};
|
||||
|
||||
public KitMadScientist(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Mad Scientist", "skywarsmadscientist", KitAvailability.Gem, DESCRIPTION, PERKS, EntityType.ZOMBIE, IN_HAND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkDigger;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class KitMiner extends ProgressingKit
|
||||
{
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Start with better tools!",
|
||||
"",
|
||||
"Receive " + C.cGreen + "Haste II" + C.cWhite + " the entire game"
|
||||
};
|
||||
|
||||
private static final Perk[] PERKS = {
|
||||
new PerkDigger(),
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.IRON_PICKAXE);
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
ItemStackFactory.Instance.CreateStack(Material.STONE_AXE),
|
||||
ItemStackFactory.Instance.CreateStack(Material.IRON_PICKAXE)
|
||||
};
|
||||
|
||||
|
||||
public KitMiner(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Miner", "skywarsminer", KitAvailability.Gem, 5000, DESCRIPTION, PERKS, EntityType.ZOMBIE, IN_HAND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkThorns;
|
||||
|
||||
public class KitPricklyPete extends ProgressingKit
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Start with " + C.cGreen + "Wood Pickaxe" + C.cGray + " and " + C.cGreen + "Wood Sword",
|
||||
"",
|
||||
"Each armor piece reflects 0.5 damage per hit every 10 seconds"
|
||||
};
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
new ItemStack(Material.WOOD_PICKAXE),
|
||||
new ItemStack(Material.WOOD_SWORD)
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.CACTUS);
|
||||
|
||||
public KitPricklyPete(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Prickly Pete", "skywarspricklypete", KitAvailability.Gem, 4000, DESCRIPTION, new Perk[] { new PerkThorns(0.5, 10) }, EntityType.ZOMBIE, IN_HAND);
|
||||
setPerks(1, new Perk[] { new PerkThorns(1, 10) });
|
||||
setPerks(2, new Perk[] { new PerkThorns(1, 9) });
|
||||
setPerks(3, new Perk[] { new PerkThorns(1.5, 9) });
|
||||
setPerks(4, new Perk[] { new PerkThorns(1.5, 8) });
|
||||
setPerks(5, new Perk[] { new PerkThorns(2, 8) });
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkIronSkin;
|
||||
|
||||
public class KitRock extends ProgressingKit
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Start with " + C.cGreen + "Wood Pickaxe" + C.cGray + " and " + C.cGreen + "Wood Sword",
|
||||
"",
|
||||
"Take 0.1 less damage from all attacks"
|
||||
};
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
new ItemStack(Material.WOOD_PICKAXE),
|
||||
new ItemStack(Material.WOOD_SWORD)
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.STONE);
|
||||
|
||||
public KitRock(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "The Rock", "skywarsrock", KitAvailability.Gem, 4000, DESCRIPTION, new Perk[] { new PerkIronSkin(0.1) }, EntityType.ZOMBIE, IN_HAND);
|
||||
setPerks(1, new Perk[] { new PerkIronSkin(0.15) });
|
||||
setPerks(2, new Perk[] { new PerkIronSkin(0.2) });
|
||||
setPerks(3, new Perk[] { new PerkIronSkin(0.25) });
|
||||
setPerks(4, new Perk[] { new PerkIronSkin(0.3) });
|
||||
setPerks(5, new Perk[] { new PerkIronSkin(0.35) });
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package nautilus.game.arcade.game.games.skywars.kits;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.kit.KitAvailability;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
import nautilus.game.arcade.kit.ProgressingKit;
|
||||
import nautilus.game.arcade.kit.perks.PerkFletcher;
|
||||
|
||||
public class KitSharpshooter extends ProgressingKit
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Start with " + C.cGreen + "Wood Pickaxe" + C.cGray + " and " + C.cGreen + "Bow",
|
||||
"",
|
||||
receiveArrowString(1, 12, 64)
|
||||
};
|
||||
|
||||
private static final ItemStack[] PLAYER_ITEMS = {
|
||||
new ItemStack(Material.WOOD_PICKAXE),
|
||||
new ItemStack(Material.BOW)
|
||||
};
|
||||
|
||||
private static final ItemStack IN_HAND = new ItemStack(Material.BOW);
|
||||
|
||||
public KitSharpshooter(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Sharpshooter", "skywarssharpshooter", KitAvailability.Gem, 4000, DESCRIPTION, new Perk[] { new PerkFletcher(12, 64, true, false) }, EntityType.ZOMBIE, IN_HAND);
|
||||
setPerks(1, new Perk[] { new PerkFletcher(11, 64, true, false) });
|
||||
setPerks(2, new Perk[] { new PerkFletcher(10, 64, true, false) });
|
||||
setPerks(3, new Perk[] { new PerkFletcher(9, 64, true, false) });
|
||||
setPerks(4, new Perk[] { new PerkFletcher(8, 64, true, false) });
|
||||
setPerks(5, new Perk[] { new PerkFletcher(7, 64, true, false) });
|
||||
}
|
||||
|
||||
@Override
|
||||
public void GiveItems(Player player)
|
||||
{
|
||||
player.getInventory().addItem(PLAYER_ITEMS);
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,29 @@
|
||||
package nautilus.game.arcade.kit;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.FireworkEffect;
|
||||
import org.bukkit.FireworkEffect.Type;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Firework;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.FireworkMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.C;
|
||||
@ -22,27 +45,13 @@ import nautilus.game.arcade.shop.KitPackage;
|
||||
import net.minecraft.server.v1_8_R3.EntityFireworks;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityStatus;
|
||||
import net.minecraft.server.v1_8_R3.World;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.FireworkEffect.Type;
|
||||
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Firework;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.FireworkMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Kit wrapper for all new kits
|
||||
*/
|
||||
public abstract class ProgressingKit extends Kit implements ProgressiveKit
|
||||
{
|
||||
|
||||
|
||||
private static final FireworkEffect EFFECT = FireworkEffect.builder()
|
||||
.withColor(Color.AQUA)
|
||||
.with(Type.BALL)
|
||||
@ -50,18 +59,23 @@ public abstract class ProgressingKit extends Kit implements ProgressiveKit
|
||||
|
||||
private String _internalName;
|
||||
private PlayerKitDataManager _dataManager;
|
||||
private List<KitAbilityDetail> _kitAbilityDetails;
|
||||
private HashMap<Integer, ArrayList<KitAbilityDetail>> _kitAbilityDetails;
|
||||
private Perk[][] _perks;
|
||||
|
||||
public ProgressingKit(ArcadeManager manager, String name, String internalName, KitAvailability kitAvailability, String[] kitDesc, Perk[] kitPerks, EntityType entityType, ItemStack itemInHand)
|
||||
{
|
||||
super(manager, name, kitAvailability, kitDesc, kitPerks, entityType, itemInHand);
|
||||
_internalName = internalName;
|
||||
_dataManager = manager.getKitProgressionManager().getDataManager();
|
||||
_kitAbilityDetails = Lists.newArrayList();
|
||||
_kitAbilityDetails = Maps.newHashMap();
|
||||
_perks = new Perk[6][kitPerks.length];
|
||||
|
||||
ArrayList<KitAbilityDetail> details = Lists.newArrayList();
|
||||
for (Perk perk : kitPerks)
|
||||
{
|
||||
_kitAbilityDetails.add(new KitAbilityDetail(perk.getIcon(), perk.GetName(), perk.GetDesc()));
|
||||
details.add(new KitAbilityDetail(perk.getIcon(), perk.GetName(), perk.GetDesc()));
|
||||
}
|
||||
_kitAbilityDetails.put(0, details);
|
||||
}
|
||||
|
||||
public ProgressingKit(ArcadeManager manager, String name, String internalName, KitAvailability kitAvailability, int cost, String[] kitDesc, Perk[] kitPerks, EntityType entityType, ItemStack itemInHand)
|
||||
@ -69,11 +83,15 @@ public abstract class ProgressingKit extends Kit implements ProgressiveKit
|
||||
super(manager, name, kitAvailability, cost, kitDesc, kitPerks, entityType, itemInHand);
|
||||
_internalName = internalName;
|
||||
_dataManager = manager.getKitProgressionManager().getDataManager();
|
||||
_kitAbilityDetails = Lists.newArrayList();
|
||||
_kitAbilityDetails = Maps.newHashMap();
|
||||
_perks = new Perk[6][kitPerks.length];
|
||||
|
||||
ArrayList<KitAbilityDetail> details = Lists.newArrayList();
|
||||
for (Perk perk : kitPerks)
|
||||
{
|
||||
_kitAbilityDetails.add(new KitAbilityDetail(perk.getIcon(), perk.GetName(), perk.GetDesc()));
|
||||
details.add(new KitAbilityDetail(perk.getIcon(), perk.GetName(), perk.GetDesc()));
|
||||
}
|
||||
_kitAbilityDetails.put(0, details);
|
||||
}
|
||||
|
||||
|
||||
@ -102,7 +120,7 @@ public abstract class ProgressingKit extends Kit implements ProgressiveKit
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KitAbilityDetail> getAbilityDetails()
|
||||
public HashMap<Integer, ArrayList<KitAbilityDetail>> getAbilityDetails()
|
||||
{
|
||||
return _kitAbilityDetails;
|
||||
}
|
||||
@ -320,6 +338,39 @@ public abstract class ProgressingKit extends Kit implements ProgressiveKit
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setPerks(int level, Perk[] perks)
|
||||
{
|
||||
_perks[level] = perks;
|
||||
ArrayList<KitAbilityDetail> details = Lists.newArrayList();
|
||||
for (Perk perk : perks)
|
||||
{
|
||||
details.add(new KitAbilityDetail(perk.getIcon(), perk.GetName(), perk.GetDesc()));
|
||||
perk.SetHost(this);
|
||||
}
|
||||
_kitAbilityDetails.put(level, details);
|
||||
}
|
||||
|
||||
public void setPerks(Perk[] perks)
|
||||
{
|
||||
for (int i = 1; i <= 5; i++)
|
||||
{
|
||||
setPerks(i, perks);
|
||||
}
|
||||
}
|
||||
|
||||
public void setOtherPerks(int level, String... detail)
|
||||
{
|
||||
ArrayList<KitAbilityDetail> details = _kitAbilityDetails.get(level);
|
||||
//details.add(new KitAbilityDetail(getIcon(), KitMenu.OTHER_PERK_META, detail));
|
||||
_kitAbilityDetails.put(level, details);
|
||||
}
|
||||
|
||||
|
||||
public Perk[][] getPerks()
|
||||
{
|
||||
return _perks;
|
||||
}
|
||||
|
||||
public static String leap()
|
||||
{
|
||||
|
@ -0,0 +1,100 @@
|
||||
package nautilus.game.arcade.kit.perks;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
import mineplex.core.common.util.UtilItem.ArmorMaterial;
|
||||
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
|
||||
public class PerkArmorUpgrade extends Perk
|
||||
{
|
||||
|
||||
private static final ArmorMaterial[] ARMOR_PRIORTY = new ArmorMaterial[] {
|
||||
ArmorMaterial.LEATHER,
|
||||
ArmorMaterial.GOLD,
|
||||
ArmorMaterial.CHAINMAIL,
|
||||
ArmorMaterial.IRON,
|
||||
ArmorMaterial.DIAMOND
|
||||
};
|
||||
|
||||
public PerkArmorUpgrade()
|
||||
{
|
||||
super("Armor Upgrade", new String[] { "Every time you kill a player your weakest piece of armor is upgrade by 1 tier" });
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onDeath(CombatDeathEvent event)
|
||||
{
|
||||
LivingEntity player = event.GetEvent().getEntity().getKiller();
|
||||
|
||||
if (!(player instanceof Player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Kit.HasKit((Player) player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack[] armorContents = player.getEquipment().getArmorContents();
|
||||
ItemStack worstItem = null;
|
||||
int worst = ARMOR_PRIORTY.length - 1;
|
||||
int index = 0;
|
||||
|
||||
for (int i = 0; i < armorContents.length; i++)
|
||||
{
|
||||
ItemStack itemStack = armorContents[i];
|
||||
|
||||
if (!UtilItem.isArmor(itemStack))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
int cur = getIndex(ArmorMaterial.of(itemStack.getType()));
|
||||
if (cur <= worst)
|
||||
{
|
||||
worstItem = itemStack;
|
||||
worst = cur;
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (worst == ARMOR_PRIORTY.length - 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String worstItemPart = worstItem.getType().name().split("_")[1];
|
||||
String worstItemTier = ARMOR_PRIORTY[worst].name();
|
||||
String newItemTier = ARMOR_PRIORTY[worst + 1].name();
|
||||
worstItem = new ItemStack(Material.valueOf(newItemTier + "_" + worstItemPart));
|
||||
armorContents[index] = worstItem;
|
||||
player.getEquipment().setArmorContents(armorContents);
|
||||
player.sendMessage(F.main("Skill", "Your " + C.mSkill + formatItem(worstItemTier, worstItemPart) + C.cGray + " just upgraded to " + C.mSkill + formatItem(newItemTier, worstItemPart) + C.cGray + " by " + C.mSkill + "Armor Upgrade" + C.cGray + "."));
|
||||
}
|
||||
|
||||
private int getIndex(ArmorMaterial armorMaterial)
|
||||
{
|
||||
for (int i = 0; i < ARMOR_PRIORTY.length; i++)
|
||||
{
|
||||
ArmorMaterial armorMaterial2 = ARMOR_PRIORTY[i];
|
||||
if (armorMaterial == armorMaterial2)
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private String formatItem(String tier, String part)
|
||||
{
|
||||
return Character.toUpperCase(tier.charAt(0)) + tier.substring(1).toLowerCase() + " " + Character.toUpperCase(part.charAt(0)) + part.substring(1).toLowerCase();
|
||||
}
|
||||
}
|
@ -3,12 +3,12 @@ package nautilus.game.arcade.kit.perks;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilInv;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
@ -37,23 +37,35 @@ public class PerkFletcher extends Perk
|
||||
private int _time = 0;
|
||||
private boolean _remove;
|
||||
private int _slot;
|
||||
private boolean _instant = true;
|
||||
|
||||
public PerkFletcher(int time, int max, boolean remove)
|
||||
{
|
||||
this(time, max, remove, -1);
|
||||
}
|
||||
|
||||
public PerkFletcher(int time, int max, boolean remove, boolean instant)
|
||||
{
|
||||
this(time, max, remove, -1, instant);
|
||||
}
|
||||
|
||||
public PerkFletcher(int time, int max, boolean remove, int slot)
|
||||
{
|
||||
this(time, max, remove, slot, true);
|
||||
}
|
||||
|
||||
public PerkFletcher(int time, int max, boolean remove, int slot, boolean instant)
|
||||
{
|
||||
super("Fletcher", new String[]
|
||||
{
|
||||
C.cGray + "Receive 1 Arrow every " + time + " seconds. Maximum of " + max + ".",
|
||||
"Receive 1 Arrow every " + time + " seconds. Maximum of " + max + ".",
|
||||
});
|
||||
|
||||
_time = time;
|
||||
_max = max;
|
||||
_remove = remove;
|
||||
_slot = slot;
|
||||
_instant = instant;
|
||||
}
|
||||
|
||||
public boolean isFletchedArrow(ItemStack stack)
|
||||
@ -106,7 +118,12 @@ public class PerkFletcher extends Perk
|
||||
{
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
return;
|
||||
|
||||
|
||||
if (!UtilTime.elapsed(Manager.GetGame().getGameLiveTime(), _time * 1000) && !_instant)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (Player cur : UtilServer.getPlayers())
|
||||
{
|
||||
if (Manager.isSpectator(cur))
|
||||
|
@ -0,0 +1,60 @@
|
||||
package nautilus.game.arcade.kit.perks;
|
||||
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class PerkIncreaseOre extends Perk
|
||||
{
|
||||
|
||||
private int extra;
|
||||
private Material[] type;
|
||||
|
||||
public PerkIncreaseOre(int extra, Material[] type)
|
||||
{
|
||||
super("Lucky Miner", new String[] { "Every ore you mine drops another " + extra + " extra" });
|
||||
this.extra = extra;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onBlockBreak(BlockBreakEvent event)
|
||||
{
|
||||
if (!Kit.HasKit(event.getPlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Block block = event.getBlock();
|
||||
boolean contains = false;
|
||||
|
||||
for (Material type : this.type)
|
||||
{
|
||||
if (block.getType() == type)
|
||||
{
|
||||
contains = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!contains)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String type = block.getType() == Material.DIAMOND_ORE || block.getType() == Material.COAL_ORE ? block.getType().name().split("_")[0] : block.getType().name().split("_")[0] + "_INGOT";
|
||||
|
||||
for (int i = 0; i < extra; i++)
|
||||
{
|
||||
event.getBlock().getWorld().dropItem(block.getLocation(), new ItemStack(Material.valueOf(type)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -5,7 +5,6 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
|
||||
@ -17,7 +16,7 @@ public class PerkIronSkin extends Perk
|
||||
{
|
||||
super("Iron Skin", new String[]
|
||||
{
|
||||
C.cGray + "You take " + d + " less damage from attacks",
|
||||
"You take " + d + " less damage from attacks",
|
||||
});
|
||||
|
||||
_reduction = d;
|
||||
|
@ -0,0 +1,65 @@
|
||||
package nautilus.game.arcade.kit.perks;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.kit.Perk;
|
||||
|
||||
public class PerkThorns extends Perk
|
||||
{
|
||||
|
||||
private double _damage;
|
||||
private double _cooldown;
|
||||
|
||||
public PerkThorns(double damage, double cooldown)
|
||||
{
|
||||
super("Thorns", new String[] { "For each piece of armor you equip you reflect " + damage, "Cooldown of " + cooldown + " seconds" });
|
||||
this._damage = damage;
|
||||
this._cooldown = cooldown;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDamage(CustomDamageEvent event)
|
||||
{
|
||||
if (!Kit.HasKit(event.GetDamageePlayer()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.GetCause() == DamageCause.FALL || event.GetCause() == DamageCause.PROJECTILE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!Recharge.Instance.use(event.GetDamageePlayer(), "Thorns", (long) _cooldown * 1000, false, false))
|
||||
return;
|
||||
|
||||
double totalDamage = 0;
|
||||
|
||||
for (ItemStack itemStack : event.GetDamageeEntity().getEquipment().getArmorContents())
|
||||
{
|
||||
if (itemStack == null || itemStack.getType() == Material.AIR)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
totalDamage += _damage;
|
||||
}
|
||||
|
||||
if (totalDamage == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Manager.GetDamage().NewDamageEvent(event.GetDamagerEntity(false), event.GetDamageeEntity(), event.GetProjectile(), DamageCause.THORNS, totalDamage * 2, false, true, true, event.GetDamageeEntity().getName(), "Thorns");
|
||||
event.GetDamagerPlayer(false).sendMessage(F.main("Skill", C.cYellow + event.GetDamageeEntity().getName() + C.cGray + " used" + C.mSkill + " Thorns" + C.cGray + "."));
|
||||
event.GetDamageePlayer().sendMessage(F.main("Skill", "You used" + C.mSkill + " Thorns" + C.cGray + " on " + C.cYellow + event.GetDamagerEntity(false).getName() + C.cGray + "."));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user