diff --git a/src/main/java/com/moulberry/axiom/event/AxiomManipulateEntityEvent.java b/src/main/java/com/moulberry/axiom/event/AxiomManipulateEntityEvent.java new file mode 100644 index 0000000..5e418e1 --- /dev/null +++ b/src/main/java/com/moulberry/axiom/event/AxiomManipulateEntityEvent.java @@ -0,0 +1,50 @@ +package com.moulberry.axiom.event; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +public class AxiomManipulateEntityEvent extends Event implements Cancellable { + + private static final HandlerList HANDLERS = new HandlerList(); + + private final Player player; + private final Entity entity; + + private boolean cancelled = false; + + public AxiomManipulateEntityEvent(Player player, @NotNull Entity entity) { + this.player = player; + this.entity = entity; + } + + public Player getPlayer() { + return player; + } + + public Entity getEntity() { + return entity; + } + + @Override + public boolean isCancelled() { + return this.cancelled; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancelled = cancel; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/src/main/java/com/moulberry/axiom/packet/ManipulateEntityPacketListener.java b/src/main/java/com/moulberry/axiom/packet/ManipulateEntityPacketListener.java index bb9fa56..bcb2f80 100644 --- a/src/main/java/com/moulberry/axiom/packet/ManipulateEntityPacketListener.java +++ b/src/main/java/com/moulberry/axiom/packet/ManipulateEntityPacketListener.java @@ -2,6 +2,7 @@ package com.moulberry.axiom.packet; import com.moulberry.axiom.AxiomPaper; import com.moulberry.axiom.NbtSanitization; +import com.moulberry.axiom.event.AxiomManipulateEntityEvent; import com.moulberry.axiom.integration.Integration; import com.moulberry.axiom.integration.plotsquared.PlotSquaredIntegration; import com.moulberry.axiom.viaversion.UnknownVersionHelper; @@ -124,6 +125,11 @@ public class ManipulateEntityPacketListener implements PluginMessageListener { continue; } + AxiomManipulateEntityEvent manipulateEvent = new AxiomManipulateEntityEvent(player, entity.getBukkitEntity()); + if (!manipulateEvent.callEvent()) { + continue; + } + if (entry.merge != null && !entry.merge.isEmpty()) { NbtSanitization.sanitizeEntity(entry.merge);