Last active
July 7, 2021 05:46
-
-
Save Oskang09/15e47b304b8a535ff2294d174c80f446 to your computer and use it in GitHub Desktop.
Minecraft FightAPI Listener
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 me.oska.cf.listener; | |
import me.oska.cf.CustomFight; | |
import me.oska.cf.event.enums.DamageType; | |
import me.oska.cf.util.Invoker; | |
import org.bukkit.block.Block; | |
import org.bukkit.entity.*; | |
import org.bukkit.event.EventHandler; | |
import org.bukkit.event.EventPriority; | |
import org.bukkit.event.Listener; | |
import org.bukkit.event.entity.*; | |
import org.bukkit.event.player.PlayerRespawnEvent; | |
import org.bukkit.event.weather.WeatherChangeEvent; | |
import org.bukkit.projectiles.ProjectileSource; | |
public class FightListener implements Listener | |
{ | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onPlayerDeath(PlayerDeathEvent event) | |
{ | |
CustomFight.pm.getFighter(event.getEntity().getUniqueId()).clearStatus(); | |
Invoker.playerPostDeadEvent(event, event.getEntity()); | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onPlayerRevive(PlayerRespawnEvent event) | |
{ | |
Invoker.playerReviveEvent(event, event.getPlayer()); | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onDamageByBlock(EntityDamageByBlockEvent event) | |
{ | |
Entity victim = event.getEntity(); | |
Block attacker = event.getDamager(); | |
if (victim instanceof Player) | |
{ | |
switch (attacker.getType()) | |
{ | |
case CACTUS: | |
Invoker.cactusDamagePlayerEvent(event, attacker, victim); | |
break; | |
case LAVA: | |
Invoker.lavaDamagePlayerEvent(event, attacker, victim); | |
break; | |
case FIRE: | |
Invoker.fireDamagePlayerEvent(event, attacker, victim); | |
break; | |
} | |
} | |
} | |
@EventHandler | |
public void onCombust(EntityCombustEvent event) | |
{ | |
Entity victim = event.getEntity(); | |
if (victim instanceof Player) | |
{ | |
Invoker.playerCombustEvent(event, event.getEntity()); | |
} | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onChange(WeatherChangeEvent event) | |
{ | |
Invoker.worldWeatherChangeEvent(event, event.getWorld().getPlayers()); | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onDamage(EntityDamageByEntityEvent event) | |
{ | |
Entity attacker = event.getDamager(); | |
Entity victim = event.getEntity(); | |
if (attacker instanceof TNTPrimed && ((TNTPrimed) attacker).getSource() instanceof Player) | |
{ | |
if (victim instanceof Player) | |
{ | |
Invoker.playerBoomPlayerEvent(event, ((TNTPrimed) attacker).getSource(), attacker, victim); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.playerKillPlayerEvent(event, ((TNTPrimed) attacker).getSource(), victim, DamageType.TNT); | |
} | |
} | |
else if (victim instanceof LivingEntity) | |
{ | |
Invoker.playerBoomEntityEvent(event, ((TNTPrimed) attacker).getSource(), attacker, victim); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.playerKillEntityEvent(event, ((TNTPrimed) attacker).getSource(), victim, DamageType.TNT); | |
} | |
} | |
} | |
else if (attacker instanceof Player || ( attacker instanceof Projectile && ((Projectile)attacker).getShooter() instanceof Player) ) | |
{ | |
if (victim instanceof Player) | |
{ | |
if (attacker instanceof Projectile) | |
{ | |
attacker = (Entity) ((Projectile) attacker).getShooter(); | |
Invoker.playerDamagePlayerEvent(event, attacker, victim, DamageType.PROJECTILE_DAMAGE); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.playerKillPlayerEvent(event, attacker, victim, DamageType.PROJECTILE_DAMAGE); | |
} | |
} | |
else | |
{ | |
Invoker.playerDamagePlayerEvent(event, attacker, victim, DamageType.CONTACT_DAMAGE); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.playerKillPlayerEvent(event, attacker, victim, DamageType.CONTACT_DAMAGE); | |
} | |
} | |
} | |
else if (victim instanceof LivingEntity) | |
{ | |
if (attacker instanceof Projectile) | |
{ | |
attacker = (Entity) ((Projectile) attacker).getShooter(); | |
Invoker.playerDamageEntityEvent(event, attacker, victim, DamageType.PROJECTILE_DAMAGE); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.playerKillEntityEvent(event, attacker, victim, DamageType.CONTACT_DAMAGE); | |
} | |
} | |
else | |
{ | |
Invoker.playerDamageEntityEvent(event, attacker, victim, DamageType.CONTACT_DAMAGE); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.playerKillEntityEvent(event, attacker, victim, DamageType.CONTACT_DAMAGE); | |
} | |
} | |
} | |
} | |
else if (attacker instanceof LivingEntity || (attacker instanceof Projectile && ((Projectile)attacker).getShooter() instanceof Entity) ) | |
{ | |
if (victim instanceof Player) | |
{ | |
if (attacker instanceof Projectile) | |
{ | |
Invoker.entityDamagePlayerEvent(event, attacker, victim, DamageType.PROJECTILE_DAMAGE); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.entityKillPlayerEvent(event, attacker, victim, DamageType.PROJECTILE_DAMAGE); | |
} | |
} | |
else | |
{ | |
Invoker.entityDamagePlayerEvent(event, attacker, victim, DamageType.CONTACT_DAMAGE); | |
if (((LivingEntity) victim).getHealth() - event.getFinalDamage() <= 0) | |
{ | |
Invoker.entityKillPlayerEvent(event, attacker, victim, DamageType.CONTACT_DAMAGE); | |
} | |
} | |
} | |
} | |
} | |
@EventHandler | |
public void onProjectileShoot(ProjectileLaunchEvent event) | |
{ | |
Projectile projectile = event.getEntity(); | |
ProjectileSource shooter = projectile.getShooter(); | |
if (shooter instanceof Player) | |
{ | |
Invoker.playerLaunchProjectileEvent(event, shooter, projectile); | |
} | |
} | |
@EventHandler | |
public void onProjectileHit(ProjectileHitEvent event) | |
{ | |
Projectile projectile = event.getEntity(); | |
ProjectileSource shooter = projectile.getShooter(); | |
Block block = event.getHitBlock(); | |
Entity victim = event.getHitEntity(); | |
if (shooter instanceof Player) | |
{ | |
if (block != null) | |
{ | |
Invoker.playerProjectileHitBlockEvent(event, shooter, projectile, block); | |
} | |
if (victim != null) | |
{ | |
if (victim instanceof Player) | |
{ | |
Invoker.playerProjectileHitPlayerEvent(event, shooter, projectile, victim); | |
} | |
else if (victim instanceof Entity) | |
{ | |
Invoker.playerProjectileHitEntityEvent(event, shooter, projectile, victim); | |
} | |
} | |
} | |
else if (shooter instanceof Entity) | |
{ | |
if (victim instanceof Player) | |
{ | |
Invoker.entityProjectileHitPlayerEvent(event, shooter, projectile, victim); | |
} | |
} | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onBowShoot(EntityShootBowEvent event) | |
{ | |
Entity shooter = event.getEntity(); | |
if (shooter instanceof Player) | |
{ | |
Invoker.playerBowShootEvent(event, shooter); | |
} | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onPotionSplash(PotionSplashEvent event) | |
{ | |
ThrownPotion potion = event.getPotion(); | |
ProjectileSource shooter = potion.getShooter(); | |
if (shooter instanceof Player) | |
{ | |
Invoker.playerSplashPotionEvent(event, shooter, potion); | |
} | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onAECApply(AreaEffectCloudApplyEvent event) | |
{ | |
AreaEffectCloud aec = event.getEntity(); | |
ProjectileSource shooter = aec.getSource(); | |
if (shooter instanceof Player) | |
{ | |
Invoker.playerAreaEffectCloudApplyEvent(event, shooter, aec); | |
} | |
} | |
@EventHandler( priority = EventPriority.MONITOR ) | |
public void onLingeringPotionSplash(LingeringPotionSplashEvent event) | |
{ | |
LingeringPotion potion = event.getEntity(); | |
ProjectileSource shooter = potion.getShooter(); | |
if (shooter instanceof Player) | |
{ | |
Invoker.playerSplashLingeringPotionEvent(event, shooter, potion); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment