Fix armor stand logging on kill in survival mode

This commit is contained in:
Brokkonaut
2019-01-14 03:29:07 +01:00
parent dc62524d0d
commit 025950a8c4

View File

@ -34,10 +34,12 @@ import org.bukkit.scheduler.BukkitRunnable;
import de.diddiz.LogBlock.Actor;
import de.diddiz.LogBlock.EntityChange;
import de.diddiz.LogBlock.EntityChange.EntityChangeType;
import de.diddiz.LogBlock.LogBlock;
import de.diddiz.LogBlock.config.Config;
import de.diddiz.LogBlock.config.EntityLogging;
import de.diddiz.worldedit.WorldEditHelper;
import java.util.UUID;
public class AdvancedEntityLogging extends LoggingListener {
@ -45,20 +47,26 @@ public class AdvancedEntityLogging extends LoggingListener {
private Class<? extends Entity> lastSpawning;
private boolean lastSpawnerEgg;
// serialize them before the death event
private UUID lastEntityDamagedForDeathUUID;
private byte[] lastEntityDamagedForDeathSerialized;
public AdvancedEntityLogging(LogBlock lb) {
super(lb);
new BukkitRunnable() {
@Override
public void run() {
resetLastSpawner();
resetOnTick();
}
}.runTaskTimer(lb, 1, 1);
}
private void resetLastSpawner() {
private void resetOnTick() {
lastSpawner = null;
lastSpawning = null;
lastSpawnerEgg = false;
lastEntityDamagedForDeathUUID = null;
lastEntityDamagedForDeathSerialized = null;
}
private void setLastSpawner(Player player, Class<? extends Entity> spawning, boolean spawnEgg) {
@ -145,7 +153,7 @@ public class AdvancedEntityLogging extends LoggingListener {
queueEntitySpawnOrKill(entity, actor, EntityChange.EntityChangeType.CREATE);
}
}
resetLastSpawner();
resetOnTick();
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
@ -205,6 +213,10 @@ public class AdvancedEntityLogging extends LoggingListener {
}
}
}
if (Config.isLogging(entity.getWorld(), EntityLogging.DESTROY, entity)) {
lastEntityDamagedForDeathUUID = entity.getUniqueId();
lastEntityDamagedForDeathSerialized = WorldEditHelper.serializeEntity(entity);
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
@ -242,7 +254,11 @@ public class AdvancedEntityLogging extends LoggingListener {
data.set("z", location.getZ());
data.set("yaw", location.getYaw());
data.set("pitch", location.getPitch());
if (changeType == EntityChangeType.KILL && entity.getUniqueId().equals(lastEntityDamagedForDeathUUID)) {
data.set("worldedit", lastEntityDamagedForDeathSerialized);
} else {
data.set("worldedit", WorldEditHelper.serializeEntity(entity));
}
consumer.queueEntityModification(actor, entity.getUniqueId(), entity.getType(), location, changeType, data);
}
}