Skip to content

Commit b7a452b

Browse files
committed
Added logging for villagers killed by lightning (fixes #674)
1 parent 7f7de03 commit b7a452b

3 files changed

Lines changed: 30 additions & 6 deletions

File tree

src/main/java/net/coreprotect/listener/ListenerHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import net.coreprotect.listener.entity.EntityInteractListener;
3131
import net.coreprotect.listener.entity.EntityPickupItemListener;
3232
import net.coreprotect.listener.entity.EntitySpawnListener;
33+
import net.coreprotect.listener.entity.EntityTransformListener;
3334
import net.coreprotect.listener.entity.HangingBreakByEntityListener;
3435
import net.coreprotect.listener.entity.HangingBreakListener;
3536
import net.coreprotect.listener.entity.HangingPlaceListener;
@@ -133,6 +134,7 @@ public ListenerHandler(CoreProtect plugin) {
133134
pluginManager.registerEvents(new EntityInteractListener(), plugin);
134135
pluginManager.registerEvents(new EntityPickupItemListener(), plugin);
135136
pluginManager.registerEvents(new EntitySpawnListener(), plugin);
137+
pluginManager.registerEvents(new EntityTransformListener(), plugin);
136138
pluginManager.registerEvents(new HangingPlaceListener(), plugin);
137139
pluginManager.registerEvents(new HangingBreakListener(), plugin);
138140
pluginManager.registerEvents(new HangingBreakByEntityListener(), plugin);

src/main/java/net/coreprotect/listener/entity/EntityDeathListener.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,24 +132,24 @@ protected static void logEntityDeath(LivingEntity entity, String e) {
132132
}
133133

134134
EntityDamageEvent damage = entity.getLastDamageCause();
135-
if (damage == null) {
135+
if (damage == null && e == null) {
136136
return;
137137
}
138138

139-
boolean isCommand = (damage.getCause() == DamageCause.VOID && entity.getLocation().getBlockY() >= BukkitAdapter.ADAPTER.getMinHeight(entity.getWorld()));
139+
EntityDamageEvent.DamageCause cause = damage == null ? null : damage.getCause();
140+
boolean isCommand = (cause == DamageCause.VOID && entity.getLocation().getBlockY() >= BukkitAdapter.ADAPTER.getMinHeight(entity.getWorld()));
140141
if (e == null) {
141142
e = isCommand ? "#command" : "";
142143
}
143144

144-
if (entity.getType().name().equals("GLOW_SQUID") && damage.getCause() == DamageCause.DROWNING) {
145+
if (entity.getType().name().equals("GLOW_SQUID") && cause == DamageCause.DROWNING) {
145146
return;
146147
}
147148

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

150151
boolean skip = true;
151-
EntityDamageEvent.DamageCause cause = damage.getCause();
152-
if (!Config.getConfig(entity.getWorld()).SKIP_GENERIC_DATA || (!(entity instanceof Zombie) && !(entity instanceof Skeleton)) || (validDamageCauses.contains(cause) || cause.name().equals("KILL"))) {
152+
if (cause != null && (!Config.getConfig(entity.getWorld()).SKIP_GENERIC_DATA || (!(entity instanceof Zombie) && !(entity instanceof Skeleton)) || (validDamageCauses.contains(cause) || cause.name().equals("KILL")))) {
153153
skip = false;
154154
}
155155

@@ -197,7 +197,7 @@ else if (attacker.getType().name() != null) {
197197
e = "#" + attacker.getType().name().toLowerCase(Locale.ROOT);
198198
}
199199
}
200-
else {
200+
else if (cause != null) {
201201
if (cause.equals(EntityDamageEvent.DamageCause.FIRE)) {
202202
e = "#fire";
203203
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package net.coreprotect.listener.entity;
2+
3+
import org.bukkit.entity.Entity;
4+
import org.bukkit.entity.LivingEntity;
5+
import org.bukkit.event.EventHandler;
6+
import org.bukkit.event.EventPriority;
7+
import org.bukkit.event.Listener;
8+
import org.bukkit.event.entity.EntityTransformEvent;
9+
import org.bukkit.event.entity.EntityTransformEvent.TransformReason;
10+
11+
public final class EntityTransformListener implements Listener {
12+
13+
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
14+
protected void onEntityTransform(EntityTransformEvent event) {
15+
Entity entity = event.getEntity();
16+
if (event.getTransformReason() != TransformReason.LIGHTNING || !(entity instanceof LivingEntity)) {
17+
return;
18+
}
19+
20+
EntityDeathListener.logEntityDeath((LivingEntity) entity, "#lightning");
21+
}
22+
}

0 commit comments

Comments
 (0)