-
-
Save DeltaEvo/dc807f93102b9e3013d46efd61ec30ec to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* */ package fr.pingoo.main.Manager; | |
/* */ | |
/* */ import fr.pingoo.GraphEffect.Listener.MobDamageListener; | |
/* */ import fr.pingoo.Items.ArmorBonus; | |
/* */ import fr.pingoo.Items.CD.IncantationTimer; | |
/* */ import fr.pingoo.Items.Listener.EffectItems; | |
/* */ import fr.pingoo.SpellMain.Main; | |
/* */ import fr.pingoo.main.Events.AresPlayerDamageEntityEvent; | |
/* */ import fr.pingoo.main.Fonctions.UtilMetadata; | |
/* */ import fr.pingoo.main.Main; | |
/* */ import fr.pingoo.player.Listener.PlayerDeathListener; | |
/* */ import fr.pingoo.player.Listener.PvpListener; | |
/* */ import fr.pingoo.player.Stats.EquipStat; | |
/* */ import fr.pingoo.player.Stats.PlayerStat; | |
/* */ import fr.pingoo.player.Stats.StatsEquipStorage; | |
/* */ import fr.pingoo.player.Stats.StatsStorage; | |
/* */ import java.util.HashMap; | |
/* */ import java.util.List; | |
/* */ import java.util.Random; | |
/* */ import org.bukkit.Bukkit; | |
/* */ import org.bukkit.Material; | |
/* */ import org.bukkit.entity.Arrow; | |
/* */ import org.bukkit.entity.Entity; | |
/* */ import org.bukkit.entity.LivingEntity; | |
/* */ import org.bukkit.entity.Player; | |
/* */ import org.bukkit.entity.Projectile; | |
/* */ import org.bukkit.entity.Snowball; | |
/* */ import org.bukkit.event.Event; | |
/* */ import org.bukkit.event.EventHandler; | |
/* */ import org.bukkit.event.EventPriority; | |
/* */ import org.bukkit.event.Listener; | |
/* */ import org.bukkit.event.entity.EntityDamageByEntityEvent; | |
/* */ import org.bukkit.event.entity.EntityDamageEvent; | |
/* */ import org.bukkit.inventory.ItemStack; | |
/* */ import org.bukkit.inventory.meta.ItemMeta; | |
/* */ import org.bukkit.metadata.FixedMetadataValue; | |
/* */ import org.bukkit.metadata.MetadataValue; | |
/* */ import org.bukkit.plugin.Plugin; | |
/* */ | |
/* */ public class AttackListenerManager | |
/* */ implements Listener { | |
/* */ Main pl; | |
/* 43 */ public static HashMap<Material, Integer> armorMap = new HashMap<>(); | |
/* 44 */ public static HashMap<Arrow, Integer> arrowl = new HashMap<>(); | |
/* 45 */ public static HashMap<Snowball, Integer> snowlmagic = new HashMap<>(); | |
/* */ | |
/* */ public AttackListenerManager(Main m) { | |
/* 48 */ this.pl = m; | |
/* */ | |
/* */ | |
/* 51 */ armorMap.put(Material.LEATHER_BOOTS, Integer.valueOf(1)); | |
/* 52 */ armorMap.put(Material.LEATHER_HELMET, Integer.valueOf(1)); | |
/* 53 */ armorMap.put(Material.LEATHER_LEGGINGS, Integer.valueOf(2)); | |
/* 54 */ armorMap.put(Material.LEATHER_CHESTPLATE, Integer.valueOf(3)); | |
/* */ | |
/* 56 */ armorMap.put(Material.GOLD_BOOTS, Integer.valueOf(1)); | |
/* 57 */ armorMap.put(Material.GOLD_HELMET, Integer.valueOf(2)); | |
/* 58 */ armorMap.put(Material.GOLD_LEGGINGS, Integer.valueOf(3)); | |
/* 59 */ armorMap.put(Material.GOLD_CHESTPLATE, Integer.valueOf(5)); | |
/* */ | |
/* 61 */ armorMap.put(Material.CHAINMAIL_BOOTS, Integer.valueOf(1)); | |
/* 62 */ armorMap.put(Material.CHAINMAIL_HELMET, Integer.valueOf(2)); | |
/* 63 */ armorMap.put(Material.CHAINMAIL_LEGGINGS, Integer.valueOf(4)); | |
/* 64 */ armorMap.put(Material.CHAINMAIL_CHESTPLATE, Integer.valueOf(5)); | |
/* */ | |
/* 66 */ armorMap.put(Material.IRON_BOOTS, Integer.valueOf(2)); | |
/* 67 */ armorMap.put(Material.IRON_HELMET, Integer.valueOf(2)); | |
/* 68 */ armorMap.put(Material.IRON_LEGGINGS, Integer.valueOf(5)); | |
/* 69 */ armorMap.put(Material.IRON_CHESTPLATE, Integer.valueOf(6)); | |
/* */ | |
/* 71 */ armorMap.put(Material.DIAMOND_BOOTS, Integer.valueOf(3)); | |
/* 72 */ armorMap.put(Material.DIAMOND_HELMET, Integer.valueOf(3)); | |
/* 73 */ armorMap.put(Material.DIAMOND_LEGGINGS, Integer.valueOf(6)); | |
/* 74 */ armorMap.put(Material.DIAMOND_CHESTPLATE, Integer.valueOf(8)); | |
/* */ } | |
/* */ | |
/* */ | |
/* */ @EventHandler(priority = EventPriority.HIGH) | |
/* */ public static void onAttaque(EntityDamageByEntityEvent e) { | |
/* 80 */ if (e.getEntity().hasMetadata("P_Invulnerable")) { | |
/* 81 */ e.setCancelled(true); | |
/* 82 */ e.setDamage(0.0D); | |
/* */ } | |
/* */ | |
/* */ | |
/* 86 */ if (e.getDamager() instanceof Player) { | |
/* 87 */ if (!PathManager.hasClasse((Player)e.getDamager())) { | |
/* */ return; | |
/* */ } | |
/* */ | |
/* */ | |
/* 92 */ IncantationTimer.cancelCD((Player)e.getDamager()); | |
/* 93 */ if (!EffectItems.isAbleToUseItemInHand((Player)e.getDamager())) { | |
/* 94 */ ((Player)e.getDamager()).sendMessage("§cCet item n'est pas pour votre classe !"); | |
/* 95 */ e.setCancelled(true); | |
/* 96 */ e.setDamage(0.0D); | |
/* */ | |
/* */ return; | |
/* */ } | |
/* 100 */ Player pt = (Player)e.getDamager(); | |
/* */ | |
/* 102 */ if (pt.hasMetadata("P_Noattack")) { | |
/* 103 */ pt.sendMessage("§cVous êtes victime d'un sort vous empechant d'attaquer !"); | |
/* 104 */ e.setCancelled(true); | |
/* 105 */ e.setDamage(0.0D); | |
/* */ | |
/* */ return; | |
/* */ } | |
/* */ } | |
/* 110 */ int dmg = 0; | |
/* 111 */ int def = 0; | |
/* 112 */ int esq = 0; | |
/* 113 */ int agid = 0; | |
/* */ | |
/* 115 */ int intel = 0; | |
/* 116 */ int force = 0; | |
/* 117 */ int agi = 0; | |
/* 118 */ int penet = 0; | |
/* 119 */ int dex = 0; | |
/* 120 */ boolean magic = false; | |
/* 121 */ boolean ranged = false; | |
/* 122 */ int aa = 100; | |
/* 123 */ int av = 100; | |
/* 124 */ int moredmg = 0; | |
/* */ | |
/* 126 */ Entity ent = e.getEntity(); | |
/* 127 */ Entity damager = e.getDamager(); | |
/* */ | |
/* 129 */ MetadataValue obj = UtilMetadata.readMetadata(ent, "P_Vulnerable", (Plugin)Main.plugin); | |
/* 130 */ if (obj != null) { | |
/* 131 */ moredmg = Integer.parseInt(obj.asString()); | |
/* */ } | |
/* 133 */ if (damager instanceof Projectile && | |
/* 134 */ !(damager instanceof org.bukkit.entity.Egg)) { | |
/* 135 */ ranged = true; | |
/* */ | |
/* 137 */ if (damager.hasMetadata("npckill") && | |
/* 138 */ e.getEntity() instanceof LivingEntity && !(e.getEntity() instanceof Player)) { | |
/* 139 */ e.getEntity().setMetadata("npckill", (MetadataValue)new FixedMetadataValue((Plugin)Main.plugin, Boolean.valueOf(true))); | |
/* */ } | |
/* 141 */ if ((Entity)((Projectile)damager).getShooter() != null) { | |
/* 142 */ damager = (Entity)((Projectile)damager).getShooter(); | |
/* */ } | |
/* */ | |
/* 145 */ if (damager.hasMetadata("P_Noattack")) { | |
/* 146 */ if (damager instanceof Player) | |
/* 147 */ ((Player)damager).sendMessage("§cVous êtes victime d'un sort vous empechant d'attaquer !"); | |
/* 148 */ e.setCancelled(true); | |
/* 149 */ e.setDamage(0.0D); | |
/* */ | |
/* */ | |
/* */ return; | |
/* */ } | |
/* */ } | |
/* */ | |
/* 156 */ if (ent.getLastDamageCause() != null && ent.getLastDamageCause().getCause() == EntityDamageEvent.DamageCause.MAGIC) { | |
/* 157 */ magic = true; | |
/* 158 */ dmg = (int)e.getDamage(); | |
/* 159 */ } else if (e.getDamager() instanceof Player) { | |
/* 160 */ Player pt = (Player)e.getDamager(); | |
/* */ | |
/* 162 */ if (pt.getItemInHand().getType() == Material.STICK || pt.getItemInHand().getType().equals(Material.BOOK)) { | |
/* 163 */ e.setCancelled(true); | |
/* 164 */ e.setDamage(0.0D); | |
/* */ | |
/* */ return; | |
/* */ } | |
/* */ } | |
/* */ | |
/* 170 */ if (!magic && damager instanceof Player) | |
/* */ { | |
/* 172 */ dmg += getDamageByWeapon(e.getDamager()); | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* 177 */ if (e.getDamager() instanceof Snowball && snowlmagic.containsKey(e.getDamager())) { | |
/* 178 */ magic = true; | |
/* 179 */ dmg = ((Integer)snowlmagic.get(e.getDamager())).intValue(); | |
/* 180 */ snowlmagic.remove(e.getDamager()); | |
/* */ } | |
/* */ | |
/* */ | |
/* 184 */ if (damager instanceof Player && !ranged && !magic && ( | |
/* 185 */ (Player)damager).getItemInHand() != null && ((Player)damager).getItemInHand().getType().equals(Material.STICK)) { | |
/* */ | |
/* 187 */ e.setDamage(0.0D); | |
/* */ | |
/* */ | |
/* */ return; | |
/* */ } | |
/* */ | |
/* 193 */ if (!magic && !(damager instanceof Player)) { | |
/* 194 */ dmg = (int)e.getDamage(); | |
/* */ } | |
/* */ | |
/* 197 */ if (ent instanceof Player) { | |
/* 198 */ if (!PathManager.hasClasse((Player)ent)) { | |
/* */ return; | |
/* */ } | |
/* */ | |
/* */ | |
/* 203 */ PlayerStat ps = StatsStorage.getPlayerStats((Player)ent); | |
/* 204 */ if (ps == null) { | |
/* 205 */ e.setDamage(0.0D); | |
/* */ | |
/* */ return; | |
/* */ } | |
/* 209 */ agid += ps.getAgi(); | |
/* */ | |
/* 211 */ av = StatsStorage.getPlayerAme((Player)ent); | |
/* */ } | |
/* */ | |
/* */ | |
/* 215 */ if (ent instanceof Player) { | |
/* 216 */ EquipStat eq = StatsEquipStorage.getPlayerStats((Player)ent); | |
/* 217 */ if (eq == null) { | |
/* 218 */ e.setDamage(0.0D); | |
/* */ | |
/* */ return; | |
/* */ } | |
/* 222 */ def += eq.getDef(); | |
/* 223 */ esq += eq.getEsq(); | |
/* 224 */ agid += eq.getAgi(); | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* 232 */ if (damager instanceof Player) { | |
/* 233 */ EquipStat eq = StatsEquipStorage.getPlayerStats((Player)damager); | |
/* 234 */ if (eq == null) { | |
/* 235 */ e.setDamage(0.0D); | |
/* */ | |
/* */ return; | |
/* */ } | |
/* 239 */ intel += eq.getIntel(); | |
/* 240 */ force += eq.getForce(); | |
/* 241 */ agi += eq.getAgi(); | |
/* 242 */ dex += eq.getDext(); | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* 251 */ if (damager instanceof Player) { | |
/* 252 */ PlayerStat ps = StatsStorage.getPlayerStats((Player)damager); | |
/* 253 */ if (ps == null) { | |
/* 254 */ e.setDamage(0.0D); | |
/* */ | |
/* */ return; | |
/* */ } | |
/* 258 */ intel += ps.getIntel(); | |
/* 259 */ force += ps.getForce(); | |
/* 260 */ agi += ps.getAgi(); | |
/* 261 */ dex += ps.getDex(); | |
/* */ | |
/* 263 */ aa = StatsStorage.getPlayerAme((Player)damager); | |
/* */ } | |
/* */ | |
/* */ | |
/* 267 */ if (!ranged && damager instanceof Player && ( | |
/* 268 */ (Player)damager).getItemInHand().getType() != Material.BOOK) { | |
/* 269 */ String attr = ArmorBonus.getAttributsWeapon((Player)damager); | |
/* */ | |
/* */ | |
/* 272 */ penet += ArmorBonus.getAttrFromStr(attr, "Pénétration"); | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* 286 */ if (aa == 0) { | |
/* 287 */ agi = (int)(agi * 0.4D); | |
/* 288 */ intel = (int)(intel * 0.4D); | |
/* 289 */ force = (int)(force * 0.4D); | |
/* */ } | |
/* 291 */ if (av == 0) { | |
/* 292 */ agid = (int)(agid * 0.4D); | |
/* 293 */ esq = (int)(esq * 0.4D); | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* 298 */ if (esq > 1) { | |
/* 299 */ Random r = new Random(); | |
/* 300 */ if (esq > 35) { | |
/* 301 */ esq = 35; | |
/* */ } | |
/* 303 */ int t = r.nextInt(101) + 0; | |
/* 304 */ if (t <= esq) { | |
/* 305 */ dmg = 0; | |
/* */ } | |
/* */ } | |
/* */ | |
/* 309 */ if (dmg > 0) { | |
/* */ | |
/* 311 */ if (magic && intel > 0) { | |
/* 312 */ dmg += intel / 2; | |
/* */ } | |
/* */ | |
/* 315 */ if (!magic && !ranged && force > 0) { | |
/* 316 */ dmg += force / 2; | |
/* */ } | |
/* */ | |
/* 319 */ if (!magic && ranged && agi > 0) { | |
/* 320 */ dmg += agi / 2; | |
/* */ } | |
/* */ } | |
/* 323 */ double critc = 1.0D + dex / 4.0D; | |
/* 324 */ boolean critique = false; | |
/* */ | |
/* */ | |
/* 327 */ if (damager instanceof Player && dmg != 0) { | |
/* 328 */ Random r2 = new Random(); | |
/* 329 */ int t2 = r2.nextInt(10001) + 0; | |
/* 330 */ if (critc > 50.0D) { | |
/* 331 */ critc = 50.0D; | |
/* */ } | |
/* 333 */ if (t2 <= critc * 100.0D) { | |
/* 334 */ dmg = (int)(dmg * 1.6D); | |
/* 335 */ critique = true; | |
/* 336 */ } else if (ArmorBonus.isCritique((Player)damager)) { | |
/* 337 */ dmg = (int)(dmg * 1.6D); | |
/* 338 */ critique = true; | |
/* */ } | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* 344 */ def -= penet * 2; | |
/* 345 */ if (def < 0) { | |
/* 346 */ def = 0; | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* 352 */ double recu = (dmg - def); | |
/* 353 */ if (recu < 0.0D) | |
/* 354 */ recu = 0.0D; | |
/* 355 */ recu += dmg * 0.13D; | |
/* 356 */ recu += 0.5D; | |
/* 357 */ dmg = (int)recu; | |
/* */ | |
/* 359 */ if (dmg < 0) { | |
/* 360 */ dmg = 0; | |
/* */ } | |
/* */ | |
/* 363 */ dmg *= 1 + moredmg / 100; | |
/* */ | |
/* 365 */ int predmg = dmg; | |
/* */ | |
/* */ | |
/* 368 */ e.setDamage(dmg); | |
/* */ | |
/* */ | |
/* 371 */ PvpListener.callPvpDamage(e, damager); | |
/* */ | |
/* */ | |
/* 374 */ if (e.isCancelled()) { | |
/* 375 */ e.setDamage(0.0D); | |
/* */ } | |
/* */ | |
/* 378 */ if (damager instanceof Player && ent instanceof LivingEntity) { | |
/* 379 */ Bukkit.getPluginManager().callEvent((Event)new AresPlayerDamageEntityEvent((Player)damager, (LivingEntity)ent, dmg, critique, e.isCancelled())); | |
/* */ } | |
/* */ | |
/* 382 */ MobDamageListener.callEntityDamageEvent(ent, damager, predmg); | |
/* */ | |
/* 384 */ if (ent instanceof Player && | |
/* 385 */ !e.isCancelled() && e.getDamage() > 0.0D) | |
/* */ { | |
/* 387 */ if (((Player)ent).getHealth() - dmg <= 0.0D) { | |
/* 388 */ e.setCancelled(true); | |
/* 389 */ PlayerDeathListener.addDead(((Player)ent).getName()); | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ | |
/* */ | |
/* */ public static int getDamageByWeapon(Entity ent) { | |
/* 396 */ if (ent instanceof Arrow && | |
/* 397 */ arrowl.containsKey(ent)) { | |
/* 398 */ int dmg = ((Integer)arrowl.get(ent)).intValue(); | |
/* 399 */ arrowl.remove(ent); | |
/* */ | |
/* 401 */ return dmg; | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* 406 */ if (ent instanceof Snowball && | |
/* 407 */ snowlmagic.containsKey(ent)) { | |
/* 408 */ int dmg = ((Integer)snowlmagic.get(ent)).intValue(); | |
/* */ | |
/* 410 */ return dmg; | |
/* */ } | |
/* */ | |
/* */ | |
/* 414 */ if (ent instanceof LivingEntity) { | |
/* 415 */ LivingEntity le = (LivingEntity)ent; | |
/* 416 */ ItemStack is = null; | |
/* */ | |
/* 418 */ if (le instanceof Player) { | |
/* 419 */ is = ((Player)le).getItemInHand(); | |
/* 420 */ } else if (le.getEquipment() != null) { | |
/* 421 */ is = le.getEquipment().getItemInHand(); | |
/* */ } | |
/* */ | |
/* 424 */ if (is != null) { | |
/* */ | |
/* 426 */ if (is.getType().equals(Material.BOW)) { | |
/* 427 */ return 0; | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* 434 */ ItemMeta im = is.getItemMeta(); | |
/* */ | |
/* 436 */ if (im != null) { | |
/* */ | |
/* 438 */ List<String> lore = im.getLore(); | |
/* */ | |
/* 440 */ if (lore != null && lore.size() != 0) | |
/* */ { | |
/* 442 */ for (String s : lore) { | |
/* */ | |
/* */ | |
/* 445 */ if (s.contains("Dégats:") || s.contains("Dégâts:")) { | |
/* */ | |
/* 447 */ char[] c = s.toCharArray(); | |
/* 448 */ byte a = 0; | |
/* */ | |
/* 450 */ for (int i = 0; i < c.length; i++) { | |
/* 451 */ if (c[i] == '§') { | |
/* 452 */ c[i] = '_'; | |
/* 453 */ c[i + 1] = '_'; | |
/* 454 */ a = (byte)(a + 1); | |
/* */ } | |
/* */ } | |
/* 457 */ String sas = String.copyValueOf(c); | |
/* 458 */ if (a != 0) { | |
/* 459 */ sas = sas.replaceAll("_", ""); | |
/* */ } | |
/* */ | |
/* */ | |
/* 463 */ sas = sas.replaceAll(" ", ""); | |
/* */ | |
/* 465 */ if (s.contains("Dégâts:")) | |
/* 466 */ sas = sas.replaceAll("Dégâts:", ""); | |
/* 467 */ if (s.contains("Dégats:")) { | |
/* 468 */ sas = sas.replaceAll("Dégats:", ""); | |
/* */ } | |
/* 470 */ String[] ss = sas.split("-"); | |
/* */ | |
/* 472 */ if (ss.length != 2) { | |
/* 473 */ return 0; | |
/* */ } | |
/* 475 */ int min = Integer.parseInt(ss[0]); | |
/* 476 */ int max = Integer.parseInt(ss[1]); | |
/* */ | |
/* 478 */ if (min >= 0 && max >= 0) { | |
/* */ | |
/* 480 */ Random r = new Random(); | |
/* */ | |
/* 482 */ return r.nextInt(max - min + 1) + min; | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ | |
/* */ | |
/* */ | |
/* */ | |
/* 494 */ return 0; | |
/* */ } | |
/* */ | |
/* */ public static boolean isWeapon(ItemStack is) { | |
/* 498 */ if (is != null && | |
/* 499 */ is.hasItemMeta()) { | |
/* 500 */ ItemMeta im = is.getItemMeta(); | |
/* */ | |
/* 502 */ if (im.hasLore()) { | |
/* 503 */ for (String s : im.getLore()) { | |
/* 504 */ if (s.contains("Dégats:") || s.contains("Dégâts:")) { | |
/* 505 */ return true; | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ } | |
/* */ | |
/* 511 */ return false; | |
/* */ } | |
/* */ | |
/* */ | |
/* */ private void updateInventoryLater(final Player player) { | |
/* 516 */ Bukkit.getScheduler().runTaskLater((Plugin)Main.plugin, new Runnable() | |
/* */ { | |
/* */ public void run() { | |
/* 519 */ player.updateInventory(); | |
/* */ } | |
/* 521 */ }, 3L); | |
/* */ } | |
/* */ } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment