package de.tobiyas.racesandclasses.util.damage; import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import de.tobiyas.racesandclasses.RacesAndClasses; public class PreEntityDamageEvent extends EntityDamageByEntityEvent { static{ new ListenerClass(); } private static class ListenerClass implements Listener{ public ListenerClass() { Bukkit.getPluginManager().registerEvents(this, RacesAndClasses.getPlugin()); } @EventHandler(priority = EventPriority.HIGHEST) public void checkCancle(EntityDamageByEntityEvent event){ if(event instanceof PreEntityDamageEvent){ ((PreEntityDamageEvent)event).realCancle = event.isCancelled(); event.setCancelled(true); } } } private boolean realCancle = false; @SuppressWarnings("deprecation") public PreEntityDamageEvent(Entity damager, Entity damagee, DamageCause cause, double damage) { super(damager, damagee, cause, damage); } public boolean isRealCancle() { return realCancle; } /** * Fires in intern event which is cancled! * <br>Returns 0 if cancled! * * @param damager that did damage * @param damagee that got damage * @param cause that was done. * @param damage that was done. * * @return the real damage to do. */ public static double getRealDamage(Entity damager, Entity damagee, DamageCause cause, double damage){ PreEntityDamageEvent event = new PreEntityDamageEvent(damager, damagee, cause, damage); RacesAndClasses.getPlugin().fireEventToBukkit(event); if(event.isRealCancle()) return 0; return event.getDamage(); } }