use of org.bukkit.event.entity.EntityDamageEvent in project CommandHelper by EngineHub.
the class BukkitMCLivingEntity method kill.
@Override
public void kill() {
le.setLastDamageCause(new EntityDamageEvent(le, EntityDamageEvent.DamageCause.CUSTOM, le.getHealth()));
le.setHealth(0D);
}
use of org.bukkit.event.entity.EntityDamageEvent in project modules-extra by CubeEngine.
the class ListenerDeath method onEntityDeath.
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityDeath(EntityDeathEvent event) {
// TODO handle when there is no reference on lookup of dependent actions
DeathKill killAction = this.newAction(DeathKill.class, event.getEntity().getWorld());
if (killAction != null) {
// TODO check config for killer type
killAction.setLocation(event.getEntity().getLocation());
EntityDamageEvent cause = event.getEntity().getLastDamageCause();
if (cause == null) {
killAction.otherKiller = DamageCause.CUSTOM;
} else if (cause instanceof EntityDamageByEntityEvent) {
Entity damager = ((EntityDamageByEntityEvent) cause).getDamager();
if (damager instanceof Player) {
killAction.playerKiller = new PlayerSection((Player) damager);
} else if (damager instanceof Projectile) {
killAction.projectile = true;
if (((Projectile) damager).getShooter() instanceof Entity) {
if (((Projectile) damager).getShooter() instanceof Player) {
killAction.playerKiller = new PlayerSection((Player) ((Projectile) damager).getShooter());
} else {
killAction.entityKiller = new EntitySection((Entity) ((Projectile) damager).getShooter());
}
} else {
killAction.entityKiller = new EntitySection(damager);
}
} else {
killAction.entityKiller = new EntitySection(damager);
}
} else {
killAction.otherKiller = cause.getCause();
}
this.logAction(killAction);
}
Reference<DeathKill> reference = this.reference(killAction);
LivingEntity killed = event.getEntity();
if (killed instanceof Player) {
DeathPlayer action = this.newAction(DeathPlayer.class, killed.getWorld());
if (action != null) {
action.killer = reference;
action.setPlayer((Player) killed);
this.logAction(action);
}
if (this.isActive(DeathDrop.class, event.getEntity().getWorld())) {
Reference<DeathPlayer> deathRef = this.reference(action);
for (ItemStack itemStack : event.getDrops()) {
PlayerDeathDrop dropAction = newAction(PlayerDeathDrop.class);
dropAction.item = itemStack;
dropAction.death = deathRef;
this.logAction(dropAction);
}
}
return;
}
Class<? extends EntityDeathAction> actionType;
if (killed instanceof Wither || killed instanceof EnderDragon) {
actionType = DeathBoss.class;
} else if (killed instanceof Animals) {
if (killed instanceof Tameable && ((Tameable) killed).isTamed()) {
actionType = DeathPet.class;
} else {
actionType = DeathAnimal.class;
}
} else if (killed instanceof Villager) {
actionType = DeathNpc.class;
} else if (killed instanceof Monster) {
actionType = DeathMonster.class;
} else {
actionType = DeathOther.class;
}
EntityDeathAction action = this.newAction(actionType, killed.getWorld());
if (action != null) {
action.setKilled(killed);
action.setLocation(killed.getLocation());
action.killer = reference;
this.logAction(action);
}
Reference<EntityDeathAction> deathRef = this.reference(action);
if (this.isActive(DeathDrop.class, event.getEntity().getWorld())) {
for (ItemStack itemStack : event.getDrops()) {
DeathDrop dropAction = newAction(DeathDrop.class);
dropAction.item = itemStack;
dropAction.death = deathRef;
this.logAction(dropAction);
}
}
}
use of org.bukkit.event.entity.EntityDamageEvent in project Essentials by EssentialsX.
the class Commandsuicide method run.
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
final EntityDamageEvent ede = new EntityDamageEvent(user.getBase(), EntityDamageEvent.DamageCause.SUICIDE, Float.MAX_VALUE);
server.getPluginManager().callEvent(ede);
ede.getEntity().setLastDamageCause(ede);
user.getBase().setHealth(0);
user.sendMessage(tl("suicideMessage"));
user.setDisplayNick();
ess.broadcastMessage(user, tl("suicideSuccess", user.getDisplayName()));
}
use of org.bukkit.event.entity.EntityDamageEvent in project CoreProtect by PlayPro.
the class EntityDeathListener method logEntityDeath.
protected static void logEntityDeath(LivingEntity entity, String e) {
if (!Config.getConfig(entity.getWorld()).ENTITY_KILLS) {
return;
}
EntityDamageEvent damage = entity.getLastDamageCause();
if (damage == null) {
return;
}
boolean isCommand = (damage.getCause() == DamageCause.VOID && entity.getLocation().getBlockY() >= BukkitAdapter.ADAPTER.getMinHeight(entity.getWorld()));
if (e == null) {
e = isCommand ? "#command" : "";
}
boolean skip = true;
if (!Config.getConfig(entity.getWorld()).SKIP_GENERIC_DATA || (!(entity instanceof Zombie) && !(entity instanceof Skeleton))) {
skip = false;
}
if (damage instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent attack = (EntityDamageByEntityEvent) damage;
Entity attacker = attack.getDamager();
if (attacker instanceof Player) {
Player player = (Player) attacker;
e = player.getName();
} else if (attacker instanceof AbstractArrow) {
AbstractArrow arrow = (AbstractArrow) attacker;
ProjectileSource shooter = arrow.getShooter();
if (shooter instanceof Player) {
Player player = (Player) shooter;
e = player.getName();
} else if (shooter instanceof LivingEntity) {
EntityType entityType = ((LivingEntity) shooter).getType();
if (entityType != null) {
// Check for MyPet plugin
String name = entityType.name().toLowerCase(Locale.ROOT);
e = "#" + name;
}
}
} else if (attacker instanceof ThrownPotion) {
ThrownPotion potion = (ThrownPotion) attacker;
ProjectileSource shooter = potion.getShooter();
if (shooter instanceof Player) {
Player player = (Player) shooter;
e = player.getName();
} else if (shooter instanceof LivingEntity) {
EntityType entityType = ((LivingEntity) shooter).getType();
if (entityType != null) {
// Check for MyPet plugin
String name = entityType.name().toLowerCase(Locale.ROOT);
e = "#" + name;
}
}
} else if (attacker.getType().name() != null) {
e = "#" + attacker.getType().name().toLowerCase(Locale.ROOT);
}
} else {
EntityDamageEvent.DamageCause cause = damage.getCause();
if (cause.equals(EntityDamageEvent.DamageCause.FIRE)) {
e = "#fire";
} else if (cause.equals(EntityDamageEvent.DamageCause.FIRE_TICK)) {
if (!skip) {
e = "#fire";
}
} else if (cause.equals(EntityDamageEvent.DamageCause.LAVA)) {
e = "#lava";
} else if (cause.equals(EntityDamageEvent.DamageCause.BLOCK_EXPLOSION)) {
e = "#explosion";
} else if (cause.equals(EntityDamageEvent.DamageCause.MAGIC)) {
e = "#magic";
}
}
if (entity instanceof ArmorStand) {
Location entityLocation = entity.getLocation();
if (!Config.getConfig(entityLocation.getWorld()).ITEM_TRANSACTIONS) {
entityLocation.setY(entityLocation.getY() + 0.99);
Block block = entityLocation.getBlock();
Queue.queueBlockBreak(e, block.getState(), Material.ARMOR_STAND, null, (int) entityLocation.getYaw());
}
/*
else if (isCommand) {
entityLocation.setY(entityLocation.getY() + 0.99);
Block block = entityLocation.getBlock();
Database.containerBreakCheck(e, Material.ARMOR_STAND, entity, null, block.getLocation());
Queue.queueBlockBreak(e, block.getState(), Material.ARMOR_STAND, null, (int) entityLocation.getYaw());
}
*/
return;
}
EntityType entity_type = entity.getType();
if (e.length() == 0) {
// assume killed self
if (!skip) {
if (!(entity instanceof Player) && entity_type.name() != null) {
// Player player = (Player)entity;
// e = player.getName();
e = "#" + entity_type.name().toLowerCase(Locale.ROOT);
} else if (entity instanceof Player) {
e = entity.getName();
}
}
}
if (e.startsWith("#wither")) {
e = "#wither";
}
if (e.startsWith("#enderdragon")) {
e = "#enderdragon";
}
if (e.startsWith("#primedtnt") || e.startsWith("#tnt")) {
e = "#tnt";
}
if (e.startsWith("#lightning")) {
e = "#lightning";
}
if (e.length() > 0) {
List<Object> data = new ArrayList<>();
List<Object> age = new ArrayList<>();
List<Object> tame = new ArrayList<>();
List<Object> attributes = new ArrayList<>();
List<Object> details = new ArrayList<>();
List<Object> info = new ArrayList<>();
EntityType type = entity_type;
// Basic LivingEntity attributes
details.add(entity.getRemoveWhenFarAway());
details.add(entity.getCanPickupItems());
if (entity instanceof Ageable) {
Ageable ageable = (Ageable) entity;
age.add(ageable.getAge());
age.add(ageable.getAgeLock());
age.add(ageable.isAdult());
age.add(ageable.canBreed());
age.add(null);
}
if (entity instanceof Tameable) {
Tameable tameable = (Tameable) entity;
tame.add(tameable.isTamed());
if (tameable.isTamed()) {
if (tameable.getOwner() != null) {
tame.add(tameable.getOwner().getName());
}
}
}
if (entity instanceof Attributable) {
Attributable attributable = entity;
for (Attribute attribute : Attribute.values()) {
AttributeInstance attributeInstance = attributable.getAttribute(attribute);
if (attributeInstance != null) {
List<Object> attributeData = new ArrayList<>();
List<Object> attributeModifiers = new ArrayList<>();
attributeData.add(attributeInstance.getAttribute());
attributeData.add(attributeInstance.getBaseValue());
for (AttributeModifier modifier : attributeInstance.getModifiers()) {
attributeModifiers.add(modifier.serialize());
}
attributeData.add(attributeModifiers);
attributes.add(attributeData);
}
}
}
if (entity instanceof Creeper) {
Creeper creeper = (Creeper) entity;
info.add(creeper.isPowered());
} else if (entity instanceof Enderman) {
Enderman enderman = (Enderman) entity;
info.add(null);
try {
info.add(enderman.getCarriedBlock().getAsString());
} catch (Exception endermanException) {
}
} else if (entity instanceof IronGolem) {
IronGolem irongolem = (IronGolem) entity;
info.add(irongolem.isPlayerCreated());
} else if (entity instanceof Cat) {
Cat cat = (Cat) entity;
info.add(cat.getCatType());
info.add(cat.getCollarColor());
} else if (entity instanceof Fox) {
Fox fox = (Fox) entity;
info.add(fox.getFoxType());
info.add(fox.isSitting());
} else if (entity instanceof Panda) {
Panda panda = (Panda) entity;
info.add(panda.getMainGene());
info.add(panda.getHiddenGene());
} else if (entity instanceof Pig) {
Pig pig = (Pig) entity;
info.add(pig.hasSaddle());
} else if (entity instanceof Sheep) {
Sheep sheep = (Sheep) entity;
info.add(sheep.isSheared());
info.add(sheep.getColor());
} else if (entity instanceof MushroomCow) {
MushroomCow mushroomCow = (MushroomCow) entity;
info.add(mushroomCow.getVariant());
} else if (entity instanceof Skeleton) {
info.add(null);
} else if (entity instanceof Slime) {
Slime slime = (Slime) entity;
info.add(slime.getSize());
} else if (entity instanceof Parrot) {
Parrot parrot = (Parrot) entity;
info.add(parrot.getVariant());
} else if (entity instanceof TropicalFish) {
TropicalFish tropicalFish = (TropicalFish) entity;
info.add(tropicalFish.getBodyColor());
info.add(tropicalFish.getPattern());
info.add(tropicalFish.getPatternColor());
} else if (entity instanceof Phantom) {
Phantom phantom = (Phantom) entity;
info.add(phantom.getSize());
} else if (entity instanceof AbstractVillager) {
AbstractVillager abstractVillager = (AbstractVillager) entity;
List<Object> recipes = new ArrayList<>();
for (MerchantRecipe merchantRecipe : abstractVillager.getRecipes()) {
List<Object> recipe = new ArrayList<>();
List<Object> ingredients = new ArrayList<>();
List<Object> itemMap = new ArrayList<>();
ItemStack item = merchantRecipe.getResult().clone();
List<List<Map<String, Object>>> metadata = ItemMetaHandler.seralize(item, item.getType(), null, 0);
item.setItemMeta(null);
itemMap.add(item.serialize());
itemMap.add(metadata);
recipe.add(itemMap);
recipe.add(merchantRecipe.getUses());
recipe.add(merchantRecipe.getMaxUses());
recipe.add(merchantRecipe.hasExperienceReward());
for (ItemStack ingredient : merchantRecipe.getIngredients()) {
itemMap = new ArrayList<>();
item = ingredient.clone();
metadata = ItemMetaHandler.seralize(item, item.getType(), null, 0);
item.setItemMeta(null);
itemMap.add(item.serialize());
itemMap.add(metadata);
ingredients.add(itemMap);
}
recipe.add(ingredients);
recipe.add(merchantRecipe.getVillagerExperience());
recipe.add(merchantRecipe.getPriceMultiplier());
recipes.add(recipe);
}
if (abstractVillager instanceof Villager) {
Villager villager = (Villager) abstractVillager;
info.add(villager.getProfession());
info.add(villager.getVillagerType());
info.add(recipes);
info.add(villager.getVillagerLevel());
info.add(villager.getVillagerExperience());
} else {
info.add(null);
info.add(null);
info.add(recipes);
}
} else if (entity instanceof Raider) {
Raider raider = (Raider) entity;
info.add(raider.isPatrolLeader());
if (entity instanceof Spellcaster) {
Spellcaster spellcaster = (Spellcaster) entity;
info.add(spellcaster.getSpell());
}
} else if (entity instanceof Wolf) {
Wolf wolf = (Wolf) entity;
info.add(wolf.isSitting());
info.add(wolf.getCollarColor());
} else if (entity instanceof ZombieVillager) {
ZombieVillager zombieVillager = (ZombieVillager) entity;
info.add(zombieVillager.isBaby());
info.add(zombieVillager.getVillagerProfession());
} else if (entity instanceof Zombie) {
Zombie zombie = (Zombie) entity;
info.add(zombie.isBaby());
info.add(null);
info.add(null);
} else if (entity instanceof AbstractHorse) {
AbstractHorse abstractHorse = (AbstractHorse) entity;
info.add(null);
info.add(null);
info.add(abstractHorse.getDomestication());
info.add(abstractHorse.getJumpStrength());
info.add(abstractHorse.getMaxDomestication());
info.add(null);
info.add(null);
if (entity instanceof Horse) {
Horse horse = (Horse) entity;
info.add(null);
ItemStack saddle = horse.getInventory().getSaddle();
if (saddle != null) {
info.add(saddle.serialize());
} else {
info.add(null);
}
info.add(horse.getColor());
info.add(horse.getStyle());
ItemStack horseArmor = horse.getInventory().getArmor();
if (horseArmor != null) {
ItemStack armor = horseArmor.clone();
ItemMeta itemMeta = armor.getItemMeta();
Color color = null;
if (itemMeta instanceof LeatherArmorMeta) {
LeatherArmorMeta meta = (LeatherArmorMeta) itemMeta;
color = meta.getColor();
meta.setColor(null);
armor.setItemMeta(meta);
}
info.add(armor.serialize());
if (color != null) {
info.add(color.serialize());
} else {
info.add(null);
}
} else {
info.add(null);
info.add(null);
}
} else if (entity instanceof ChestedHorse) {
ChestedHorse chestedHorse = (ChestedHorse) entity;
info.add(chestedHorse.isCarryingChest());
if (entity instanceof Llama) {
Llama llama = (Llama) entity;
ItemStack decor = llama.getInventory().getDecor();
if (decor != null) {
info.add(decor.serialize());
} else {
info.add(null);
}
info.add(llama.getColor());
}
}
} else {
BukkitAdapter.ADAPTER.getEntityMeta(entity, info);
}
data.add(age);
data.add(tame);
data.add(info);
data.add(entity.isCustomNameVisible());
data.add(entity.getCustomName());
data.add(attributes);
data.add(details);
if (!(entity instanceof Player)) {
Queue.queueEntityKill(e, entity.getLocation(), data, type);
} else {
Queue.queuePlayerKill(e, entity.getLocation(), entity.getName());
}
}
}
use of org.bukkit.event.entity.EntityDamageEvent in project Denizen by DenizenScript.
the class EntityHelperImpl method damage.
@Override
public void damage(LivingEntity target, float amount, Entity source, EntityDamageEvent.DamageCause cause) {
if (target == null) {
return;
}
net.minecraft.world.entity.LivingEntity nmsTarget = ((CraftLivingEntity) target).getHandle();
net.minecraft.world.entity.Entity nmsSource = source == null ? null : ((CraftEntity) source).getHandle();
CraftEventFactory.entityDamage = nmsSource;
try {
DamageSource src = getSourceFor(nmsSource, cause);
if (src instanceof FakeDamageSrc) {
src = ((FakeDamageSrc) src).real;
EntityDamageEvent ede = fireFakeDamageEvent(target, source, cause, amount);
if (ede.isCancelled()) {
return;
}
}
nmsTarget.hurt(src, amount);
} finally {
CraftEventFactory.entityDamage = null;
}
}
Aggregations