Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -112,446 +112,458 @@
}
}

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" : "";
}

if (entity.getType().name().equals("GLOW_SQUID") && damage.getCause() == DamageCause.DROWNING) {
return;
}

List<DamageCause> validDamageCauses = Arrays.asList(DamageCause.SUICIDE, DamageCause.POISON, DamageCause.THORNS, DamageCause.MAGIC, DamageCause.WITHER);

boolean skip = true;
EntityDamageEvent.DamageCause cause = damage.getCause();
if (!Config.getConfig(entity.getWorld()).SKIP_GENERIC_DATA || (!(entity instanceof Zombie) && !(entity instanceof Skeleton)) || (validDamageCauses.contains(cause) || cause.name().equals("KILL"))) {
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 {
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";
}
else if (cause.equals(EntityDamageEvent.DamageCause.WITHER)) {
e = "#wither_effect";
}
else if (!cause.name().contains("_")) {
e = "#" + cause.name().toLowerCase(Locale.ROOT);
}
}

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.equals("#wither_effect")) {
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 : Lists.newArrayList(Registry.ATTRIBUTE)) {
AttributeInstance attributeInstance = attributable.getAttribute(attribute);
if (attributeInstance != null) {
List<Object> attributeData = new ArrayList<>();
List<Object> attributeModifiers = new ArrayList<>();
attributeData.add(BukkitAdapter.ADAPTER.getRegistryKey(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(BukkitAdapter.ADAPTER.getRegistryKey(cat.getCatType()));
info.add(cat.getCollarColor());
info.add(cat.isSitting());
}
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.serialize(item, item.getType(), null, 0);
item.setItemMeta(null);
try {
if (item.hasItemMeta() && item.getItemMeta() != null) {
item.setItemMeta(null);
}
}
catch (Exception ignored) {
}
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.serialize(item, item.getType(), null, 0);
item.setItemMeta(null);
try {
if (item.hasItemMeta() && item.getItemMeta() != null) {
item.setItemMeta(null);
}
}
catch (Exception ignored) {
}
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(BukkitAdapter.ADAPTER.getRegistryKey(villager.getProfession()));
info.add(BukkitAdapter.ADAPTER.getRegistryKey(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());
BukkitAdapter.ADAPTER.getWolfVariant(wolf, info);
}
else if (entity instanceof ZombieVillager) {
ZombieVillager zombieVillager = (ZombieVillager) entity;
info.add(zombieVillager.isBaby());
info.add(BukkitAdapter.ADAPTER.getRegistryKey(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 if (entity instanceof Bee) {
Bee bee = (Bee) entity;
info.add(bee.getAnger());
info.add(bee.hasNectar());
info.add(bee.hasStung());
}
else if (entity instanceof Piglin) {
Piglin piglin = (Piglin) entity;
info.add(piglin.isBaby());
}
else if (entity instanceof Zoglin) {
Zoglin zoglin = (Zoglin) entity;
info.add(zoglin.isBaby());
}
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());
}
}
}

Check warning on line 566 in src/main/java/net/coreprotect/listener/entity/EntityDeathListener.java

View check run for this annotation

codefactor.io / CodeFactor

src/main/java/net/coreprotect/listener/entity/EntityDeathListener.java#L115-L566

Very Complex Method
@EventHandler(priority = EventPriority.MONITOR)
public void onEntityDeath(EntityDeathEvent event) {
/*
Expand Down
Loading