Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.guildcraft.annihilation.kits.kit;
- import lombok.Getter;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Wolf;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.entity.EntityDeathEvent;
- import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import org.guildcraft.annihilation.AnniPlayer;
- import org.guildcraft.annihilation.Annihilation;
- import org.guildcraft.annihilation.GameTeam;
- import org.guildcraft.annihilation.gcStatsHook.ExperienceManager;
- import org.guildcraft.annihilation.kits.Loadout;
- import org.guildcraft.annihilation.kits.kitTypes.ConfigurableKit;
- import org.guildcraft.annihilation.kits.kitTypes.SpecialItemAbility;
- import java.util.HashMap;
- import java.util.Map;
- public class WereWolf extends ConfigurableKit implements SpecialItemAbility {
- @Getter
- private Map<Player, Wolf> playerWithWolf = new HashMap<Player, Wolf>();
- @Getter
- private Map<Wolf, GameTeam> wolfMap = new HashMap<Wolf, GameTeam>();
- @Override
- public ItemStack getSpecItem() {
- return new ItemStack(Material.BONE);
- }
- @Override
- protected String getInternalName() {
- return "Wolf";
- }
- @Override
- public String getSpecName() {
- return ChatColor.GRAY + "Spawn Wolf";
- }
- @Override
- public long getSpecCooldown(Player player) {
- return 30000;
- }
- @Override
- protected void cleanup(Player player) {
- AnniPlayer anniPlayer = AnniPlayer.get(player);
- getPlayerWithWolf().get(anniPlayer.getPlayer()).remove();
- getWolfMap().remove(getPlayerWithWolf().get(player));
- getPlayerWithWolf().remove(player);
- }
- @Override
- protected void setUp() {
- }
- @Override
- protected ItemStack getIcon() {
- return new ItemStack(Material.BONE);
- }
- @Override
- protected Loadout getFinalLoadout(int level) {
- return new Loadout().addStoneSword().addItem(getSpecItemStack()).addEmptySlot().addWoodPick().addWoodAxe();
- }
- @Override
- public int getNumUpgrades() {
- return 3;
- }
- @Override
- public String[] getUpgradeNames() {
- return new String[] { "Wolf Pack", "Hound's Rebirth", "Sweet Snack" };
- }
- @Override
- public String[] getUpgradeDescriptions() {
- return new String[] {
- "Your new best friend brings some of his friends.\n\nYou can now spawn 2 wolves instead of 1.",
- "You can now make your prey a sacrifice.\n\nBring back a dog from the dead when you kill someone.",
- "Your Wolves find something colorful looking on the floor.\nThey ate it and gained a sugar rush!\n\n Your wolves now have Regeneration 2, Speed 2 and Fire Resistance." };
- }
- @Override
- public String getDescription() {
- return "Bring out the inner hound in yourself.\n\nEvery 30 seconds, you spawn a furry friend to help you.\nUnfortunatly, wolves don't last a lifetime. Your dog will die once it has been alive for 40 seconds!\n\nRip Doggo.";
- }
- @Override
- public boolean performSpec(Player player, AnniPlayer anniPlayer, boolean isLeftClick, Player clicked) {
- if (isLeftClick)
- return false;
- int numUpgrades = getUpgradesBought(player);
- if (numUpgrades == 0)
- spawnPotionWolf(player, false);
- if (numUpgrades == 1) {
- spawnPotionWolf(player, false);
- spawnPotionWolf(player, false);
- }
- if (numUpgrades == 2)
- spawnPotionWolf(player, false);
- spawnPotionWolf(player, false);
- if (numUpgrades == 3) {
- spawnPotionWolf(player, true);
- spawnPotionWolf(player, true);
- }
- return true;
- }
- public void spawnPotionWolf(Player player, boolean potionEffects) {
- if (!potionEffects)
- spawnWolf(player, false);
- else
- spawnWolf(player, true);
- }
- private void spawnWolf(Player player, boolean hasPotionEffect) {
- GameTeam team = AnniPlayer.get(player).getTeam();
- Wolf wolf = (Wolf) player.getWorld().spawnEntity(player.getLocation(), EntityType.WOLF);
- wolf.setTamed(true);
- wolf.setOwner(player);
- wolf.setBreed(false);
- wolf.setCustomName(player.getDisplayName() + "'s " + ChatColor.GRAY + "Wolf");
- wolf.setCustomNameVisible(true);
- wolf.setHealth(15);
- wolf.setCanPickupItems(false);
- getWolfMap().put(wolf, team);
- getPlayerWithWolf().put(player, wolf);
- if (hasPotionEffect) {
- wolf.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, Integer.MAX_VALUE, 2));
- wolf.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 1));
- wolf.addPotionEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, Integer.MAX_VALUE, 1));
- }
- despawnWolfIn40Secs(player);
- }
- public void despawnWolfIn40Secs(Player player) {
- Bukkit.getServer().getScheduler().scheduleAsyncDelayedTask(Annihilation.getInstance(), new Runnable() {
- public void run() {
- getPlayerWithWolf().get(player).remove();
- getPlayerWithWolf().remove(player);
- }
- }, 40 * 20);
- }
- @EventHandler
- public void onPlayerKill(PlayerDeathEvent event) {
- if (!(event.getEntity().getKiller() instanceof Player))
- return;
- Player killer = event.getEntity().getKiller();
- if (killer == null)
- return;
- if (!AnniPlayer.get(killer).getKit().equals(this))
- return;
- if (getUpgradesBought(killer) < 2)
- return;
- if (getUpgradesBought(killer) == 2)
- spawnPotionWolf(killer, false);
- if (getUpgradesBought(killer) == 3)
- spawnPotionWolf(killer, true);
- }
- @EventHandler
- public void onWolfKill(PlayerDeathEvent e) {
- if (!(getUpgradesBought(e.getEntity()) < 2))
- return;
- if (e.getEntity().getKiller() == null)
- return;
- Wolf wolf = (Wolf) e.getEntity().getKiller();
- System.out.println("test wolfkill 1");
- if (getPlayerWithWolf().get(e.getEntity()) == wolf) {
- System.out.println("test wolfkill 2");
- getPlayerWithWolf().get(e.getEntity())
- .sendMessage(ChatColor.GREEN + "Your wolf has killed " + e.getEntity().getName());
- getPlayerWithWolf().remove(e.getEntity());
- ExperienceManager.getInstance().addXP(e.getEntity(), 3);
- wolf.remove();
- if (getUpgradesBought(e.getEntity()) == 2)
- spawnPotionWolf(e.getEntity(), false);
- if (getUpgradesBought(e.getEntity()) == 3)
- spawnPotionWolf(e.getEntity(), true);
- }
- }
- @EventHandler
- public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
- if (!(event.getDamager() instanceof Player))
- return;
- Player attacker = (Player) event.getDamager();
- if (event.getEntity() instanceof Wolf) {
- Wolf wolf = (Wolf) event.getEntity();
- if (AnniPlayer.get(attacker).getTeam() == getWolfMap().get(wolf))
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void onEntityTargetLivingEntity(EntityTargetLivingEntityEvent event) {
- if (event.getEntity() instanceof Wolf) {
- Wolf wolf = (Wolf) event.getEntity();
- if (event.getTarget() instanceof Player) {
- Player target = (Player) event.getTarget();
- if (AnniPlayer.get(target).getTeam() == getWolfMap().get(wolf))
- event.setCancelled(true);
- }
- }
- }
- @EventHandler
- public void onEntityDeath(EntityDeathEvent e) {
- if (!(e.getEntity() instanceof Wolf))
- return;
- for (Player all : Bukkit.getServer().getOnlinePlayers()) {
- all.sendMessage("a wolf died :(");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement