Advertisement
Guest User

Untitled

a guest
Aug 20th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.40 KB | None | 0 0
  1. package org.guildcraft.annihilation.kits.kit;
  2.  
  3. import lombok.Getter;
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.ChatColor;
  6. import org.bukkit.Material;
  7. import org.bukkit.entity.EntityType;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.entity.Wolf;
  10. import org.bukkit.event.EventHandler;
  11. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  12. import org.bukkit.event.entity.EntityDeathEvent;
  13. import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
  14. import org.bukkit.event.entity.PlayerDeathEvent;
  15. import org.bukkit.inventory.ItemStack;
  16. import org.bukkit.potion.PotionEffect;
  17. import org.bukkit.potion.PotionEffectType;
  18. import org.guildcraft.annihilation.AnniPlayer;
  19. import org.guildcraft.annihilation.Annihilation;
  20. import org.guildcraft.annihilation.GameTeam;
  21. import org.guildcraft.annihilation.gcStatsHook.ExperienceManager;
  22. import org.guildcraft.annihilation.kits.Loadout;
  23. import org.guildcraft.annihilation.kits.kitTypes.ConfigurableKit;
  24. import org.guildcraft.annihilation.kits.kitTypes.SpecialItemAbility;
  25.  
  26. import java.util.HashMap;
  27. import java.util.Map;
  28.  
  29. public class WereWolf extends ConfigurableKit implements SpecialItemAbility {
  30.  
  31. @Getter
  32. private Map<Player, Wolf> playerWithWolf = new HashMap<Player, Wolf>();
  33.  
  34. @Getter
  35. private Map<Wolf, GameTeam> wolfMap = new HashMap<Wolf, GameTeam>();
  36.  
  37. @Override
  38. public ItemStack getSpecItem() {
  39. return new ItemStack(Material.BONE);
  40. }
  41.  
  42. @Override
  43. protected String getInternalName() {
  44. return "Wolf";
  45. }
  46.  
  47. @Override
  48. public String getSpecName() {
  49. return ChatColor.GRAY + "Spawn Wolf";
  50. }
  51.  
  52. @Override
  53. public long getSpecCooldown(Player player) {
  54. return 30000;
  55. }
  56.  
  57. @Override
  58. protected void cleanup(Player player) {
  59. AnniPlayer anniPlayer = AnniPlayer.get(player);
  60.  
  61. getPlayerWithWolf().get(anniPlayer.getPlayer()).remove();
  62. getWolfMap().remove(getPlayerWithWolf().get(player));
  63. getPlayerWithWolf().remove(player);
  64. }
  65.  
  66. @Override
  67. protected void setUp() {
  68. }
  69.  
  70. @Override
  71. protected ItemStack getIcon() {
  72. return new ItemStack(Material.BONE);
  73. }
  74.  
  75. @Override
  76. protected Loadout getFinalLoadout(int level) {
  77. return new Loadout().addStoneSword().addItem(getSpecItemStack()).addEmptySlot().addWoodPick().addWoodAxe();
  78. }
  79.  
  80. @Override
  81. public int getNumUpgrades() {
  82. return 3;
  83. }
  84.  
  85. @Override
  86. public String[] getUpgradeNames() {
  87. return new String[] { "Wolf Pack", "Hound's Rebirth", "Sweet Snack" };
  88. }
  89.  
  90. @Override
  91. public String[] getUpgradeDescriptions() {
  92. return new String[] {
  93. "Your new best friend brings some of his friends.\n\nYou can now spawn 2 wolves instead of 1.",
  94. "You can now make your prey a sacrifice.\n\nBring back a dog from the dead when you kill someone.",
  95. "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." };
  96. }
  97.  
  98. @Override
  99. public String getDescription() {
  100. 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.";
  101. }
  102.  
  103. @Override
  104. public boolean performSpec(Player player, AnniPlayer anniPlayer, boolean isLeftClick, Player clicked) {
  105. if (isLeftClick)
  106. return false;
  107.  
  108. int numUpgrades = getUpgradesBought(player);
  109.  
  110. if (numUpgrades == 0)
  111. spawnPotionWolf(player, false);
  112.  
  113. if (numUpgrades == 1) {
  114. spawnPotionWolf(player, false);
  115. spawnPotionWolf(player, false);
  116. }
  117.  
  118. if (numUpgrades == 2)
  119. spawnPotionWolf(player, false);
  120. spawnPotionWolf(player, false);
  121.  
  122. if (numUpgrades == 3) {
  123. spawnPotionWolf(player, true);
  124. spawnPotionWolf(player, true);
  125. }
  126.  
  127. return true;
  128. }
  129.  
  130. public void spawnPotionWolf(Player player, boolean potionEffects) {
  131. if (!potionEffects)
  132. spawnWolf(player, false);
  133. else
  134. spawnWolf(player, true);
  135. }
  136.  
  137. private void spawnWolf(Player player, boolean hasPotionEffect) {
  138. GameTeam team = AnniPlayer.get(player).getTeam();
  139. Wolf wolf = (Wolf) player.getWorld().spawnEntity(player.getLocation(), EntityType.WOLF);
  140. wolf.setTamed(true);
  141. wolf.setOwner(player);
  142. wolf.setBreed(false);
  143. wolf.setCustomName(player.getDisplayName() + "'s " + ChatColor.GRAY + "Wolf");
  144. wolf.setCustomNameVisible(true);
  145. wolf.setHealth(15);
  146. wolf.setCanPickupItems(false);
  147. getWolfMap().put(wolf, team);
  148. getPlayerWithWolf().put(player, wolf);
  149.  
  150. if (hasPotionEffect) {
  151. wolf.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, Integer.MAX_VALUE, 2));
  152. wolf.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 1));
  153. wolf.addPotionEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, Integer.MAX_VALUE, 1));
  154. }
  155.  
  156. despawnWolfIn40Secs(player);
  157. }
  158.  
  159. public void despawnWolfIn40Secs(Player player) {
  160. Bukkit.getServer().getScheduler().scheduleAsyncDelayedTask(Annihilation.getInstance(), new Runnable() {
  161. public void run() {
  162. getPlayerWithWolf().get(player).remove();
  163. getPlayerWithWolf().remove(player);
  164. }
  165. }, 40 * 20);
  166. }
  167.  
  168. @EventHandler
  169. public void onPlayerKill(PlayerDeathEvent event) {
  170. if (!(event.getEntity().getKiller() instanceof Player))
  171. return;
  172.  
  173. Player killer = event.getEntity().getKiller();
  174.  
  175. if (killer == null)
  176. return;
  177.  
  178. if (!AnniPlayer.get(killer).getKit().equals(this))
  179. return;
  180.  
  181. if (getUpgradesBought(killer) < 2)
  182. return;
  183.  
  184. if (getUpgradesBought(killer) == 2)
  185. spawnPotionWolf(killer, false);
  186.  
  187. if (getUpgradesBought(killer) == 3)
  188. spawnPotionWolf(killer, true);
  189. }
  190.  
  191. @EventHandler
  192. public void onWolfKill(PlayerDeathEvent e) {
  193. if (!(getUpgradesBought(e.getEntity()) < 2))
  194. return;
  195.  
  196. if (e.getEntity().getKiller() == null)
  197. return;
  198.  
  199. Wolf wolf = (Wolf) e.getEntity().getKiller();
  200. System.out.println("test wolfkill 1");
  201. if (getPlayerWithWolf().get(e.getEntity()) == wolf) {
  202. System.out.println("test wolfkill 2");
  203. getPlayerWithWolf().get(e.getEntity())
  204. .sendMessage(ChatColor.GREEN + "Your wolf has killed " + e.getEntity().getName());
  205. getPlayerWithWolf().remove(e.getEntity());
  206. ExperienceManager.getInstance().addXP(e.getEntity(), 3);
  207. wolf.remove();
  208.  
  209. if (getUpgradesBought(e.getEntity()) == 2)
  210. spawnPotionWolf(e.getEntity(), false);
  211.  
  212. if (getUpgradesBought(e.getEntity()) == 3)
  213. spawnPotionWolf(e.getEntity(), true);
  214. }
  215. }
  216.  
  217. @EventHandler
  218. public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
  219. if (!(event.getDamager() instanceof Player))
  220. return;
  221.  
  222. Player attacker = (Player) event.getDamager();
  223. if (event.getEntity() instanceof Wolf) {
  224. Wolf wolf = (Wolf) event.getEntity();
  225. if (AnniPlayer.get(attacker).getTeam() == getWolfMap().get(wolf))
  226. event.setCancelled(true);
  227. }
  228. }
  229.  
  230. @EventHandler
  231. public void onEntityTargetLivingEntity(EntityTargetLivingEntityEvent event) {
  232. if (event.getEntity() instanceof Wolf) {
  233. Wolf wolf = (Wolf) event.getEntity();
  234. if (event.getTarget() instanceof Player) {
  235. Player target = (Player) event.getTarget();
  236. if (AnniPlayer.get(target).getTeam() == getWolfMap().get(wolf))
  237. event.setCancelled(true);
  238. }
  239. }
  240. }
  241.  
  242. @EventHandler
  243. public void onEntityDeath(EntityDeathEvent e) {
  244. if (!(e.getEntity() instanceof Wolf))
  245. return;
  246.  
  247. for (Player all : Bukkit.getServer().getOnlinePlayers()) {
  248. all.sendMessage("a wolf died :(");
  249. }
  250. }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement