Skip to content

Instantly share code, notes, and snippets.

@DeltaEvo
Created January 16, 2021 17:26
Show Gist options
  • Save DeltaEvo/dc807f93102b9e3013d46efd61ec30ec to your computer and use it in GitHub Desktop.
Save DeltaEvo/dc807f93102b9e3013d46efd61ec30ec to your computer and use it in GitHub Desktop.
/* */ 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