forked from LogBlock/LogBlock
Fix armor stand logging on kill in survival mode
This commit is contained in:
@ -34,10 +34,12 @@ import org.bukkit.scheduler.BukkitRunnable;
|
|||||||
|
|
||||||
import de.diddiz.LogBlock.Actor;
|
import de.diddiz.LogBlock.Actor;
|
||||||
import de.diddiz.LogBlock.EntityChange;
|
import de.diddiz.LogBlock.EntityChange;
|
||||||
|
import de.diddiz.LogBlock.EntityChange.EntityChangeType;
|
||||||
import de.diddiz.LogBlock.LogBlock;
|
import de.diddiz.LogBlock.LogBlock;
|
||||||
import de.diddiz.LogBlock.config.Config;
|
import de.diddiz.LogBlock.config.Config;
|
||||||
import de.diddiz.LogBlock.config.EntityLogging;
|
import de.diddiz.LogBlock.config.EntityLogging;
|
||||||
import de.diddiz.worldedit.WorldEditHelper;
|
import de.diddiz.worldedit.WorldEditHelper;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class AdvancedEntityLogging extends LoggingListener {
|
public class AdvancedEntityLogging extends LoggingListener {
|
||||||
|
|
||||||
@ -45,20 +47,26 @@ public class AdvancedEntityLogging extends LoggingListener {
|
|||||||
private Class<? extends Entity> lastSpawning;
|
private Class<? extends Entity> lastSpawning;
|
||||||
private boolean lastSpawnerEgg;
|
private boolean lastSpawnerEgg;
|
||||||
|
|
||||||
|
// serialize them before the death event
|
||||||
|
private UUID lastEntityDamagedForDeathUUID;
|
||||||
|
private byte[] lastEntityDamagedForDeathSerialized;
|
||||||
|
|
||||||
public AdvancedEntityLogging(LogBlock lb) {
|
public AdvancedEntityLogging(LogBlock lb) {
|
||||||
super(lb);
|
super(lb);
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
resetLastSpawner();
|
resetOnTick();
|
||||||
}
|
}
|
||||||
}.runTaskTimer(lb, 1, 1);
|
}.runTaskTimer(lb, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetLastSpawner() {
|
private void resetOnTick() {
|
||||||
lastSpawner = null;
|
lastSpawner = null;
|
||||||
lastSpawning = null;
|
lastSpawning = null;
|
||||||
lastSpawnerEgg = false;
|
lastSpawnerEgg = false;
|
||||||
|
lastEntityDamagedForDeathUUID = null;
|
||||||
|
lastEntityDamagedForDeathSerialized = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLastSpawner(Player player, Class<? extends Entity> spawning, boolean spawnEgg) {
|
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);
|
queueEntitySpawnOrKill(entity, actor, EntityChange.EntityChangeType.CREATE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
resetLastSpawner();
|
resetOnTick();
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@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)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
@ -242,7 +254,11 @@ public class AdvancedEntityLogging extends LoggingListener {
|
|||||||
data.set("z", location.getZ());
|
data.set("z", location.getZ());
|
||||||
data.set("yaw", location.getYaw());
|
data.set("yaw", location.getYaw());
|
||||||
data.set("pitch", location.getPitch());
|
data.set("pitch", location.getPitch());
|
||||||
data.set("worldedit", WorldEditHelper.serializeEntity(entity));
|
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);
|
consumer.queueEntityModification(actor, entity.getUniqueId(), entity.getType(), location, changeType, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user