From 45071cebd81eb9183a568f6606072cf7eb1f067f Mon Sep 17 00:00:00 2001 From: TheMode Date: Wed, 6 Oct 2021 20:40:17 +0200 Subject: [PATCH] Add EntityInstanceEvent (#480) --- .../event/entity/EntityAttackEvent.java | 4 ++-- .../event/entity/EntityDamageEvent.java | 4 ++-- .../server/event/entity/EntityDeathEvent.java | 4 ++-- .../server/event/entity/EntityFireEvent.java | 4 ++-- .../event/entity/EntityItemMergeEvent.java | 4 ++-- .../event/entity/EntityPotionAddEvent.java | 4 ++-- .../event/entity/EntityPotionRemoveEvent.java | 4 ++-- .../server/event/entity/EntityShootEvent.java | 4 ++-- .../server/event/entity/EntitySpawnEvent.java | 4 ++-- .../server/event/entity/EntityTickEvent.java | 4 ++-- .../event/entity/EntityVelocityEvent.java | 6 ++--- .../event/inventory/InventoryClickEvent.java | 3 ++- .../event/inventory/InventoryCloseEvent.java | 3 ++- .../event/inventory/InventoryOpenEvent.java | 3 ++- .../inventory/InventoryPreClickEvent.java | 3 ++- .../PlayerInventoryItemChangeEvent.java | 5 ++-- .../server/event/item/EntityEquipEvent.java | 3 ++- .../server/event/item/ItemDropEvent.java | 3 ++- .../event/item/ItemUpdateStateEvent.java | 3 ++- .../event/item/PickupExperienceEvent.java | 3 ++- .../server/event/item/PickupItemEvent.java | 3 ++- .../event/player/AdvancementTabEvent.java | 3 ++- .../event/player/PlayerBlockBreakEvent.java | 5 ++-- .../player/PlayerBlockInteractEvent.java | 5 ++-- .../event/player/PlayerBlockPlaceEvent.java | 3 ++- .../player/PlayerChangeHeldSlotEvent.java | 3 ++- .../server/event/player/PlayerChatEvent.java | 3 ++- .../event/player/PlayerChunkLoadEvent.java | 3 ++- .../event/player/PlayerChunkUnloadEvent.java | 3 ++- .../event/player/PlayerCommandEvent.java | 3 ++- .../server/event/player/PlayerDeathEvent.java | 3 ++- .../event/player/PlayerDisconnectEvent.java | 3 ++- .../server/event/player/PlayerEatEvent.java | 3 ++- .../player/PlayerEntityInteractEvent.java | 3 ++- .../player/PlayerHandAnimationEvent.java | 3 ++- .../player/PlayerItemAnimationEvent.java | 3 ++- .../server/event/player/PlayerMoveEvent.java | 5 ++-- .../event/player/PlayerPacketEvent.java | 3 ++- .../player/PlayerPluginMessageEvent.java | 3 ++- .../event/player/PlayerPreEatEvent.java | 3 ++- .../event/player/PlayerStartDiggingEvent.java | 5 ++-- .../event/player/PlayerStartFlyingEvent.java | 3 ++- .../PlayerStartFlyingWithElytraEvent.java | 3 ++- .../player/PlayerStartSneakingEvent.java | 3 ++- .../player/PlayerStartSprintingEvent.java | 3 ++- .../event/player/PlayerStopFlyingEvent.java | 3 ++- .../PlayerStopFlyingWithElytraEvent.java | 3 ++- .../event/player/PlayerStopSneakingEvent.java | 3 ++- .../player/PlayerStopSprintingEvent.java | 3 ++- .../event/player/PlayerSwapItemEvent.java | 3 ++- .../server/event/player/PlayerTickEvent.java | 3 ++- .../event/player/PlayerUseItemEvent.java | 3 ++- .../player/PlayerUseItemOnBlockEvent.java | 5 ++-- .../event/trait/EntityInstanceEvent.java | 23 +++++++++++++++++++ 54 files changed, 136 insertions(+), 71 deletions(-) create mode 100644 src/main/java/net/minestom/server/event/trait/EntityInstanceEvent.java diff --git a/src/main/java/net/minestom/server/event/entity/EntityAttackEvent.java b/src/main/java/net/minestom/server/event/entity/EntityAttackEvent.java index b56323bfe..3cf1fcecc 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityAttackEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityAttackEvent.java @@ -1,14 +1,14 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player does a left click on an entity or with * {@link net.minestom.server.entity.EntityCreature#attack(Entity)}. */ -public class EntityAttackEvent implements EntityEvent { +public class EntityAttackEvent implements EntityInstanceEvent { private final Entity entity; private final Entity target; diff --git a/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java b/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java index 2060c5238..3b0b3cab6 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java @@ -4,13 +4,13 @@ import net.minestom.server.entity.Entity; import net.minestom.server.entity.LivingEntity; import net.minestom.server.entity.damage.DamageType; import net.minestom.server.event.trait.CancellableEvent; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import org.jetbrains.annotations.NotNull; /** * Called with {@link LivingEntity#damage(DamageType, float)}. */ -public class EntityDamageEvent implements EntityEvent, CancellableEvent { +public class EntityDamageEvent implements EntityInstanceEvent, CancellableEvent { private final Entity entity; private final DamageType damageType; diff --git a/src/main/java/net/minestom/server/event/entity/EntityDeathEvent.java b/src/main/java/net/minestom/server/event/entity/EntityDeathEvent.java index 875a84dea..14e4eafa5 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityDeathEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityDeathEvent.java @@ -1,10 +1,10 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import org.jetbrains.annotations.NotNull; -public class EntityDeathEvent implements EntityEvent { +public class EntityDeathEvent implements EntityInstanceEvent { // TODO cause private final Entity entity; diff --git a/src/main/java/net/minestom/server/event/entity/EntityFireEvent.java b/src/main/java/net/minestom/server/event/entity/EntityFireEvent.java index 3eac073d4..a7b4e301e 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityFireEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityFireEvent.java @@ -2,13 +2,13 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; import net.minestom.server.event.trait.CancellableEvent; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import org.jetbrains.annotations.NotNull; import java.time.Duration; import java.time.temporal.TemporalUnit; -public class EntityFireEvent implements EntityEvent, CancellableEvent { +public class EntityFireEvent implements EntityInstanceEvent, CancellableEvent { private final Entity entity; private Duration duration; diff --git a/src/main/java/net/minestom/server/event/entity/EntityItemMergeEvent.java b/src/main/java/net/minestom/server/event/entity/EntityItemMergeEvent.java index b57c631f7..ec0496b4e 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityItemMergeEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityItemMergeEvent.java @@ -3,14 +3,14 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; import net.minestom.server.entity.ItemEntity; import net.minestom.server.event.trait.CancellableEvent; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; /** * Called when two {@link ItemEntity} are merging their {@link ItemStack} together to form a sole entity. */ -public class EntityItemMergeEvent implements EntityEvent, CancellableEvent { +public class EntityItemMergeEvent implements EntityInstanceEvent, CancellableEvent { private final Entity entity; private final ItemEntity merged; diff --git a/src/main/java/net/minestom/server/event/entity/EntityPotionAddEvent.java b/src/main/java/net/minestom/server/event/entity/EntityPotionAddEvent.java index ee5517b21..013afc9d4 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityPotionAddEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityPotionAddEvent.java @@ -1,11 +1,11 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.potion.Potion; import org.jetbrains.annotations.NotNull; -public class EntityPotionAddEvent implements EntityEvent { +public class EntityPotionAddEvent implements EntityInstanceEvent { private final Entity entity; private final Potion potion; diff --git a/src/main/java/net/minestom/server/event/entity/EntityPotionRemoveEvent.java b/src/main/java/net/minestom/server/event/entity/EntityPotionRemoveEvent.java index e320cf4be..dadf2de75 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityPotionRemoveEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityPotionRemoveEvent.java @@ -1,11 +1,11 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.potion.Potion; import org.jetbrains.annotations.NotNull; -public class EntityPotionRemoveEvent implements EntityEvent { +public class EntityPotionRemoveEvent implements EntityInstanceEvent { private final Entity entity; private final Potion potion; diff --git a/src/main/java/net/minestom/server/event/entity/EntityShootEvent.java b/src/main/java/net/minestom/server/event/entity/EntityShootEvent.java index 557e60b54..4401f54fa 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityShootEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityShootEvent.java @@ -4,13 +4,13 @@ import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityProjectile; import net.minestom.server.event.trait.CancellableEvent; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import org.jetbrains.annotations.NotNull; /** * Called with {@link EntityProjectile#shoot(Point, double, double)} */ -public class EntityShootEvent implements EntityEvent, CancellableEvent { +public class EntityShootEvent implements EntityInstanceEvent, CancellableEvent { private final Entity entity; private final Entity projectile; diff --git a/src/main/java/net/minestom/server/event/entity/EntitySpawnEvent.java b/src/main/java/net/minestom/server/event/entity/EntitySpawnEvent.java index 1fa94e1b3..f62e77b44 100644 --- a/src/main/java/net/minestom/server/event/entity/EntitySpawnEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntitySpawnEvent.java @@ -1,14 +1,14 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.instance.Instance; import org.jetbrains.annotations.NotNull; /** * Called when a new instance is set for an entity. */ -public class EntitySpawnEvent implements EntityEvent { +public class EntitySpawnEvent implements EntityInstanceEvent { private final Entity entity; private final Instance spawnInstance; diff --git a/src/main/java/net/minestom/server/event/entity/EntityTickEvent.java b/src/main/java/net/minestom/server/event/entity/EntityTickEvent.java index 7ab2eb97b..449fea3fc 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityTickEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityTickEvent.java @@ -1,14 +1,14 @@ package net.minestom.server.event.entity; import net.minestom.server.entity.Entity; -import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import org.jetbrains.annotations.NotNull; /** * Called when an entity ticks itself. * Same event instance used for all tick events for the same entity. */ -public class EntityTickEvent implements EntityEvent { +public class EntityTickEvent implements EntityInstanceEvent { private final Entity entity; diff --git a/src/main/java/net/minestom/server/event/entity/EntityVelocityEvent.java b/src/main/java/net/minestom/server/event/entity/EntityVelocityEvent.java index a52429b5d..c48abe753 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityVelocityEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityVelocityEvent.java @@ -1,15 +1,15 @@ package net.minestom.server.event.entity; +import net.minestom.server.coordinate.Vec; import net.minestom.server.entity.Entity; import net.minestom.server.event.trait.CancellableEvent; -import net.minestom.server.event.trait.EntityEvent; -import net.minestom.server.coordinate.Vec; +import net.minestom.server.event.trait.EntityInstanceEvent; import org.jetbrains.annotations.NotNull; /** * Called when a velocity is applied to an entity using {@link Entity#setVelocity(Vec)}. */ -public class EntityVelocityEvent implements EntityEvent, CancellableEvent { +public class EntityVelocityEvent implements EntityInstanceEvent, CancellableEvent { private final Entity entity; private Vec velocity; diff --git a/src/main/java/net/minestom/server/event/inventory/InventoryClickEvent.java b/src/main/java/net/minestom/server/event/inventory/InventoryClickEvent.java index c7ce5381b..b2de7cbd4 100644 --- a/src/main/java/net/minestom/server/event/inventory/InventoryClickEvent.java +++ b/src/main/java/net/minestom/server/event/inventory/InventoryClickEvent.java @@ -1,6 +1,7 @@ package net.minestom.server.event.inventory; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.InventoryEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.inventory.Inventory; @@ -13,7 +14,7 @@ import org.jetbrains.annotations.Nullable; * Called after {@link InventoryPreClickEvent}, this event cannot be cancelled and items related to the click * are already moved. */ -public class InventoryClickEvent implements InventoryEvent, PlayerEvent { +public class InventoryClickEvent implements InventoryEvent, PlayerEvent, EntityInstanceEvent { private final Inventory inventory; private final Player player; diff --git a/src/main/java/net/minestom/server/event/inventory/InventoryCloseEvent.java b/src/main/java/net/minestom/server/event/inventory/InventoryCloseEvent.java index ec6579799..42a915cc8 100644 --- a/src/main/java/net/minestom/server/event/inventory/InventoryCloseEvent.java +++ b/src/main/java/net/minestom/server/event/inventory/InventoryCloseEvent.java @@ -1,6 +1,7 @@ package net.minestom.server.event.inventory; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.InventoryEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.inventory.Inventory; @@ -10,7 +11,7 @@ import org.jetbrains.annotations.Nullable; /** * Called when an {@link Inventory} is closed by a player. */ -public class InventoryCloseEvent implements InventoryEvent, PlayerEvent { +public class InventoryCloseEvent implements InventoryEvent, PlayerEvent, EntityInstanceEvent { private final Inventory inventory; private final Player player; diff --git a/src/main/java/net/minestom/server/event/inventory/InventoryOpenEvent.java b/src/main/java/net/minestom/server/event/inventory/InventoryOpenEvent.java index f4a30129b..a9942db9c 100644 --- a/src/main/java/net/minestom/server/event/inventory/InventoryOpenEvent.java +++ b/src/main/java/net/minestom/server/event/inventory/InventoryOpenEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.inventory; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.InventoryEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.inventory.Inventory; @@ -13,7 +14,7 @@ import org.jetbrains.annotations.Nullable; *

* Executed by {@link Player#openInventory(Inventory)}. */ -public class InventoryOpenEvent implements InventoryEvent, PlayerEvent, CancellableEvent { +public class InventoryOpenEvent implements InventoryEvent, PlayerEvent, EntityInstanceEvent, CancellableEvent { private Inventory inventory; private final Player player; diff --git a/src/main/java/net/minestom/server/event/inventory/InventoryPreClickEvent.java b/src/main/java/net/minestom/server/event/inventory/InventoryPreClickEvent.java index 13abd19bb..5f1a884b5 100644 --- a/src/main/java/net/minestom/server/event/inventory/InventoryPreClickEvent.java +++ b/src/main/java/net/minestom/server/event/inventory/InventoryPreClickEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.inventory; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.InventoryEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.inventory.Inventory; @@ -13,7 +14,7 @@ import org.jetbrains.annotations.Nullable; /** * Called before {@link InventoryClickEvent}, used to potentially cancel the click. */ -public class InventoryPreClickEvent implements InventoryEvent, PlayerEvent, CancellableEvent { +public class InventoryPreClickEvent implements InventoryEvent, PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Inventory inventory; private final Player player; diff --git a/src/main/java/net/minestom/server/event/inventory/PlayerInventoryItemChangeEvent.java b/src/main/java/net/minestom/server/event/inventory/PlayerInventoryItemChangeEvent.java index 4265fa6a6..178476435 100644 --- a/src/main/java/net/minestom/server/event/inventory/PlayerInventoryItemChangeEvent.java +++ b/src/main/java/net/minestom/server/event/inventory/PlayerInventoryItemChangeEvent.java @@ -1,6 +1,7 @@ package net.minestom.server.event.inventory; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.inventory.AbstractInventory; import net.minestom.server.inventory.PlayerInventory; @@ -10,12 +11,12 @@ import org.jetbrains.annotations.NotNull; /** * Called when {@link AbstractInventory#safeItemInsert(int, ItemStack)} is being invoked on a {@link PlayerInventory}. * This event cannot be cancelled and items related to the change are already moved. - * + *

* When this event is being called, {@link InventoryItemChangeEvent} listeners will also be triggered, so you can * listen only for an ancestor event and check whether it is an instance of that class. */ @SuppressWarnings("JavadocReference") -public class PlayerInventoryItemChangeEvent extends InventoryItemChangeEvent implements PlayerEvent { +public class PlayerInventoryItemChangeEvent extends InventoryItemChangeEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/item/EntityEquipEvent.java b/src/main/java/net/minestom/server/event/item/EntityEquipEvent.java index c761989d0..282a1147f 100644 --- a/src/main/java/net/minestom/server/event/item/EntityEquipEvent.java +++ b/src/main/java/net/minestom/server/event/item/EntityEquipEvent.java @@ -3,11 +3,12 @@ package net.minestom.server.event.item; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EquipmentSlot; import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.ItemEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; -public class EntityEquipEvent implements EntityEvent, ItemEvent { +public class EntityEquipEvent implements EntityEvent, EntityInstanceEvent, ItemEvent { private final Entity entity; private ItemStack equippedItem; diff --git a/src/main/java/net/minestom/server/event/item/ItemDropEvent.java b/src/main/java/net/minestom/server/event/item/ItemDropEvent.java index 0652d854d..329477ddc 100644 --- a/src/main/java/net/minestom/server/event/item/ItemDropEvent.java +++ b/src/main/java/net/minestom/server/event/item/ItemDropEvent.java @@ -2,12 +2,13 @@ package net.minestom.server.event.item; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.ItemEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; -public class ItemDropEvent implements PlayerEvent, ItemEvent, CancellableEvent { +public class ItemDropEvent implements PlayerEvent, EntityInstanceEvent, ItemEvent, CancellableEvent { private final Player player; private final ItemStack itemStack; diff --git a/src/main/java/net/minestom/server/event/item/ItemUpdateStateEvent.java b/src/main/java/net/minestom/server/event/item/ItemUpdateStateEvent.java index 817f08b7c..362c3a1b7 100644 --- a/src/main/java/net/minestom/server/event/item/ItemUpdateStateEvent.java +++ b/src/main/java/net/minestom/server/event/item/ItemUpdateStateEvent.java @@ -1,12 +1,13 @@ package net.minestom.server.event.item; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.ItemEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; -public class ItemUpdateStateEvent implements PlayerEvent, ItemEvent { +public class ItemUpdateStateEvent implements PlayerEvent, EntityInstanceEvent, ItemEvent { private final Player player; private final Player.Hand hand; diff --git a/src/main/java/net/minestom/server/event/item/PickupExperienceEvent.java b/src/main/java/net/minestom/server/event/item/PickupExperienceEvent.java index f6f391729..1c7003a64 100644 --- a/src/main/java/net/minestom/server/event/item/PickupExperienceEvent.java +++ b/src/main/java/net/minestom/server/event/item/PickupExperienceEvent.java @@ -3,10 +3,11 @@ package net.minestom.server.event.item; import net.minestom.server.entity.ExperienceOrb; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class PickupExperienceEvent implements CancellableEvent, PlayerEvent { +public class PickupExperienceEvent implements CancellableEvent, PlayerEvent, EntityInstanceEvent { private final Player player; private final ExperienceOrb experienceOrb; diff --git a/src/main/java/net/minestom/server/event/item/PickupItemEvent.java b/src/main/java/net/minestom/server/event/item/PickupItemEvent.java index de5310458..3c943c372 100644 --- a/src/main/java/net/minestom/server/event/item/PickupItemEvent.java +++ b/src/main/java/net/minestom/server/event/item/PickupItemEvent.java @@ -5,11 +5,12 @@ import net.minestom.server.entity.ItemEntity; import net.minestom.server.entity.LivingEntity; import net.minestom.server.event.trait.CancellableEvent; import net.minestom.server.event.trait.EntityEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.ItemEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; -public class PickupItemEvent implements EntityEvent, ItemEvent, CancellableEvent { +public class PickupItemEvent implements EntityEvent, EntityInstanceEvent, ItemEvent, CancellableEvent { private final LivingEntity livingEntity; private final ItemEntity itemEntity; diff --git a/src/main/java/net/minestom/server/event/player/AdvancementTabEvent.java b/src/main/java/net/minestom/server/event/player/AdvancementTabEvent.java index e1acc72e4..3459ab069 100644 --- a/src/main/java/net/minestom/server/event/player/AdvancementTabEvent.java +++ b/src/main/java/net/minestom/server/event/player/AdvancementTabEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.player; import net.minestom.server.advancements.AdvancementAction; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; @@ -9,7 +10,7 @@ import org.jetbrains.annotations.NotNull; * Called when a {@link Player} opens the advancement screens or switch the tab * and when he closes the screen. */ -public class AdvancementTabEvent implements PlayerEvent { +public class AdvancementTabEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; private final AdvancementAction action; diff --git a/src/main/java/net/minestom/server/event/player/PlayerBlockBreakEvent.java b/src/main/java/net/minestom/server/event/player/PlayerBlockBreakEvent.java index 050099c71..63e2c117e 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerBlockBreakEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerBlockBreakEvent.java @@ -1,14 +1,15 @@ package net.minestom.server.event.player; +import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.BlockEvent; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.instance.block.Block; -import net.minestom.server.coordinate.Point; import org.jetbrains.annotations.NotNull; -public class PlayerBlockBreakEvent implements PlayerEvent, BlockEvent, CancellableEvent { +public class PlayerBlockBreakEvent implements PlayerEvent, EntityInstanceEvent, BlockEvent, CancellableEvent { private final Player player; private final Block block; diff --git a/src/main/java/net/minestom/server/event/player/PlayerBlockInteractEvent.java b/src/main/java/net/minestom/server/event/player/PlayerBlockInteractEvent.java index 2de072bd9..835cd6f43 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerBlockInteractEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerBlockInteractEvent.java @@ -1,19 +1,20 @@ package net.minestom.server.event.player; +import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.BlockEvent; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.BlockFace; -import net.minestom.server.coordinate.Point; import org.jetbrains.annotations.NotNull; /** * Called when a player interacts with a block (right-click). * This is also called when a block is placed. */ -public class PlayerBlockInteractEvent implements PlayerEvent, BlockEvent, CancellableEvent { +public class PlayerBlockInteractEvent implements PlayerEvent, EntityInstanceEvent, BlockEvent, CancellableEvent { private final Player player; private final Player.Hand hand; diff --git a/src/main/java/net/minestom/server/event/player/PlayerBlockPlaceEvent.java b/src/main/java/net/minestom/server/event/player/PlayerBlockPlaceEvent.java index 7d6b568f6..8eb50da4c 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerBlockPlaceEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerBlockPlaceEvent.java @@ -4,6 +4,7 @@ import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.BlockEvent; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.BlockFace; @@ -12,7 +13,7 @@ import org.jetbrains.annotations.NotNull; /** * Called when a player tries placing a block. */ -public class PlayerBlockPlaceEvent implements PlayerEvent, BlockEvent, CancellableEvent { +public class PlayerBlockPlaceEvent implements PlayerEvent, EntityInstanceEvent, BlockEvent, CancellableEvent { private final Player player; private Block block; diff --git a/src/main/java/net/minestom/server/event/player/PlayerChangeHeldSlotEvent.java b/src/main/java/net/minestom/server/event/player/PlayerChangeHeldSlotEvent.java index 1f37650d3..6131d3d9a 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerChangeHeldSlotEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerChangeHeldSlotEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.utils.MathUtils; import net.minestom.server.utils.validate.Check; @@ -10,7 +11,7 @@ import org.jetbrains.annotations.NotNull; /** * Called when a player change his held slot (by pressing 1-9 keys). */ -public class PlayerChangeHeldSlotEvent implements PlayerEvent, CancellableEvent { +public class PlayerChangeHeldSlotEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private byte slot; diff --git a/src/main/java/net/minestom/server/event/player/PlayerChatEvent.java b/src/main/java/net/minestom/server/event/player/PlayerChatEvent.java index 75d895905..6c052f0f4 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerChatEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerChatEvent.java @@ -3,6 +3,7 @@ package net.minestom.server.event.player; import net.kyori.adventure.text.Component; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -16,7 +17,7 @@ import java.util.function.Supplier; * Called every time a {@link Player} write and send something in the chat. * The event can be cancelled to do not send anything, and the format can be changed. */ -public class PlayerChatEvent implements PlayerEvent, CancellableEvent { +public class PlayerChatEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private final Collection recipients; diff --git a/src/main/java/net/minestom/server/event/player/PlayerChunkLoadEvent.java b/src/main/java/net/minestom/server/event/player/PlayerChunkLoadEvent.java index 285fb49c3..6db1e2da6 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerChunkLoadEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerChunkLoadEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player receive a new chunk data. */ -public class PlayerChunkLoadEvent implements PlayerEvent { +public class PlayerChunkLoadEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; private final int chunkX, chunkZ; diff --git a/src/main/java/net/minestom/server/event/player/PlayerChunkUnloadEvent.java b/src/main/java/net/minestom/server/event/player/PlayerChunkUnloadEvent.java index 3a67b5b14..6490dd4d7 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerChunkUnloadEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerChunkUnloadEvent.java @@ -1,6 +1,7 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; @@ -9,7 +10,7 @@ import org.jetbrains.annotations.NotNull; *

* Could be used to unload the chunk internally in order to save memory. */ -public class PlayerChunkUnloadEvent implements PlayerEvent { +public class PlayerChunkUnloadEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; private final int chunkX, chunkZ; diff --git a/src/main/java/net/minestom/server/event/player/PlayerCommandEvent.java b/src/main/java/net/minestom/server/event/player/PlayerCommandEvent.java index 648c68975..361d0c718 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerCommandEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerCommandEvent.java @@ -2,13 +2,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called every time a player send a message starting by '/'. */ -public class PlayerCommandEvent implements PlayerEvent, CancellableEvent { +public class PlayerCommandEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private String command; diff --git a/src/main/java/net/minestom/server/event/player/PlayerDeathEvent.java b/src/main/java/net/minestom/server/event/player/PlayerDeathEvent.java index 3e5b47fb4..8a6de9498 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerDeathEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerDeathEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.player; import net.kyori.adventure.text.Component; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -9,7 +10,7 @@ import org.jetbrains.annotations.Nullable; /** * Called when a player die in {@link Player#kill()}. */ -public class PlayerDeathEvent implements PlayerEvent { +public class PlayerDeathEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; private Component deathText; diff --git a/src/main/java/net/minestom/server/event/player/PlayerDisconnectEvent.java b/src/main/java/net/minestom/server/event/player/PlayerDisconnectEvent.java index eff25733a..d463afab8 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerDisconnectEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerDisconnectEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player disconnect. */ -public class PlayerDisconnectEvent implements PlayerEvent { +public class PlayerDisconnectEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerEatEvent.java b/src/main/java/net/minestom/server/event/player/PlayerEatEvent.java index 4755e8fdf..27d92157c 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerEatEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerEatEvent.java @@ -1,6 +1,7 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; @@ -8,7 +9,7 @@ import org.jetbrains.annotations.NotNull; /** * Called when a player is finished eating. */ -public class PlayerEatEvent implements PlayerEvent { +public class PlayerEatEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; private final ItemStack foodItem; diff --git a/src/main/java/net/minestom/server/event/player/PlayerEntityInteractEvent.java b/src/main/java/net/minestom/server/event/player/PlayerEntityInteractEvent.java index 1e7833d4f..b9614cbe7 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerEntityInteractEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerEntityInteractEvent.java @@ -2,13 +2,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a {@link Player} interacts (right-click) with an {@link Entity}. */ -public class PlayerEntityInteractEvent implements PlayerEvent { +public class PlayerEntityInteractEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; private final Entity entityTarget; diff --git a/src/main/java/net/minestom/server/event/player/PlayerHandAnimationEvent.java b/src/main/java/net/minestom/server/event/player/PlayerHandAnimationEvent.java index 598e00d77..cc889c0eb 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerHandAnimationEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerHandAnimationEvent.java @@ -2,13 +2,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when the player swings his hand. */ -public class PlayerHandAnimationEvent implements PlayerEvent, CancellableEvent { +public class PlayerHandAnimationEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private final Player.Hand hand; diff --git a/src/main/java/net/minestom/server/event/player/PlayerItemAnimationEvent.java b/src/main/java/net/minestom/server/event/player/PlayerItemAnimationEvent.java index 0c0b7661c..a9628df27 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerItemAnimationEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerItemAnimationEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; @@ -10,7 +11,7 @@ import org.jetbrains.annotations.NotNull; * * @see ItemAnimationType */ -public class PlayerItemAnimationEvent implements PlayerEvent, CancellableEvent { +public class PlayerItemAnimationEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private final ItemAnimationType armAnimationType; diff --git a/src/main/java/net/minestom/server/event/player/PlayerMoveEvent.java b/src/main/java/net/minestom/server/event/player/PlayerMoveEvent.java index 1951ee0a0..4b567a83a 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerMoveEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerMoveEvent.java @@ -1,15 +1,16 @@ package net.minestom.server.event.player; +import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; -import net.minestom.server.coordinate.Pos; import org.jetbrains.annotations.NotNull; /** * Called when a player is modifying his position. */ -public class PlayerMoveEvent implements PlayerEvent, CancellableEvent { +public class PlayerMoveEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private Pos newPosition; diff --git a/src/main/java/net/minestom/server/event/player/PlayerPacketEvent.java b/src/main/java/net/minestom/server/event/player/PlayerPacketEvent.java index e2ff8fe2a..6929e781e 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerPacketEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerPacketEvent.java @@ -2,11 +2,12 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.network.packet.client.ClientPacket; import org.jetbrains.annotations.NotNull; -public class PlayerPacketEvent implements PlayerEvent, CancellableEvent { +public class PlayerPacketEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private final ClientPacket packet; diff --git a/src/main/java/net/minestom/server/event/player/PlayerPluginMessageEvent.java b/src/main/java/net/minestom/server/event/player/PlayerPluginMessageEvent.java index 1b7e7c3c3..77b8efa9b 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerPluginMessageEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerPluginMessageEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player send {@link net.minestom.server.network.packet.client.play.ClientPluginMessagePacket}. */ -public class PlayerPluginMessageEvent implements PlayerEvent { +public class PlayerPluginMessageEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; private final String identifier; diff --git a/src/main/java/net/minestom/server/event/player/PlayerPreEatEvent.java b/src/main/java/net/minestom/server/event/player/PlayerPreEatEvent.java index ee6638de5..02d603cb5 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerPreEatEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerPreEatEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; @@ -11,7 +12,7 @@ import org.jetbrains.annotations.NotNull; * or to cancel its processing, cancelling the event means that the player will * continue the animation indefinitely. */ -public class PlayerPreEatEvent implements PlayerEvent, CancellableEvent { +public class PlayerPreEatEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private final ItemStack foodItem; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartDiggingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartDiggingEvent.java index dcba7aecc..a7550abd6 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStartDiggingEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStartDiggingEvent.java @@ -1,11 +1,12 @@ package net.minestom.server.event.player; +import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.BlockEvent; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.instance.block.Block; -import net.minestom.server.coordinate.Point; import org.jetbrains.annotations.NotNull; /** @@ -16,7 +17,7 @@ import org.jetbrains.annotations.NotNull; * (could be because of high latency or a modified client) so cancelling {@link PlayerBlockBreakEvent} is also necessary. * Could be fixed in future Minestom version. */ -public class PlayerStartDiggingEvent implements PlayerEvent, BlockEvent, CancellableEvent { +public class PlayerStartDiggingEvent implements PlayerEvent, EntityInstanceEvent, BlockEvent, CancellableEvent { private final Player player; private final Block block; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartFlyingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartFlyingEvent.java index 82b3276fd..3362e2cee 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStartFlyingEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStartFlyingEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player start flying. */ -public class PlayerStartFlyingEvent implements PlayerEvent { +public class PlayerStartFlyingEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java index dff86c4d5..f9a00cb55 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java @@ -1,10 +1,11 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class PlayerStartFlyingWithElytraEvent implements PlayerEvent { +public class PlayerStartFlyingWithElytraEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java index 609c7e08b..cac0b0e27 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStartSneakingEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player starts sneaking. */ -public class PlayerStartSneakingEvent implements PlayerEvent { +public class PlayerStartSneakingEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java index 5f637aa8f..21bf891a2 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStartSprintingEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player starts sprinting. */ -public class PlayerStartSprintingEvent implements PlayerEvent { +public class PlayerStartSprintingEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStopFlyingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStopFlyingEvent.java index 6ee1fe5c6..c9d1cc25c 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStopFlyingEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStopFlyingEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player stop flying. */ -public class PlayerStopFlyingEvent implements PlayerEvent { +public class PlayerStopFlyingEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStopFlyingWithElytraEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStopFlyingWithElytraEvent.java index 252a06d35..1b2d77e34 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStopFlyingWithElytraEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStopFlyingWithElytraEvent.java @@ -1,10 +1,11 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; -public class PlayerStopFlyingWithElytraEvent implements PlayerEvent { +public class PlayerStopFlyingWithElytraEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java index 70b50895b..244954a25 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStopSneakingEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player stops sneaking. */ -public class PlayerStopSneakingEvent implements PlayerEvent { +public class PlayerStopSneakingEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java index 25a318234..583ae3663 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerStopSprintingEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called when a player stops sprinting. */ -public class PlayerStopSprintingEvent implements PlayerEvent { +public class PlayerStopSprintingEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerSwapItemEvent.java b/src/main/java/net/minestom/server/event/player/PlayerSwapItemEvent.java index e7cfef32d..b0f2ea827 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerSwapItemEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerSwapItemEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.item.ItemStack; import org.jetbrains.annotations.NotNull; @@ -9,7 +10,7 @@ import org.jetbrains.annotations.NotNull; /** * Called when a player is trying to swap his main and off hand item. */ -public class PlayerSwapItemEvent implements PlayerEvent, CancellableEvent { +public class PlayerSwapItemEvent implements PlayerEvent, EntityInstanceEvent, CancellableEvent { private final Player player; private ItemStack mainHandItem; diff --git a/src/main/java/net/minestom/server/event/player/PlayerTickEvent.java b/src/main/java/net/minestom/server/event/player/PlayerTickEvent.java index 57472ba7a..a8b827e38 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerTickEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerTickEvent.java @@ -1,13 +1,14 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.PlayerEvent; import org.jetbrains.annotations.NotNull; /** * Called at each player tick. */ -public class PlayerTickEvent implements PlayerEvent { +public class PlayerTickEvent implements PlayerEvent, EntityInstanceEvent { private final Player player; diff --git a/src/main/java/net/minestom/server/event/player/PlayerUseItemEvent.java b/src/main/java/net/minestom/server/event/player/PlayerUseItemEvent.java index 2e1db2ce1..5b8a2e5b5 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerUseItemEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerUseItemEvent.java @@ -2,6 +2,7 @@ package net.minestom.server.event.player; import net.minestom.server.entity.Player; import net.minestom.server.event.trait.CancellableEvent; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.ItemEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.item.ItemStack; @@ -10,7 +11,7 @@ import org.jetbrains.annotations.NotNull; /** * Event when an item is used without clicking on a block. */ -public class PlayerUseItemEvent implements PlayerEvent, ItemEvent, CancellableEvent { +public class PlayerUseItemEvent implements PlayerEvent, EntityInstanceEvent, ItemEvent, CancellableEvent { private final Player player; private final Player.Hand hand; diff --git a/src/main/java/net/minestom/server/event/player/PlayerUseItemOnBlockEvent.java b/src/main/java/net/minestom/server/event/player/PlayerUseItemOnBlockEvent.java index e7416088b..00a295e36 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerUseItemOnBlockEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerUseItemOnBlockEvent.java @@ -1,17 +1,18 @@ package net.minestom.server.event.player; +import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Player; +import net.minestom.server.event.trait.EntityInstanceEvent; import net.minestom.server.event.trait.ItemEvent; import net.minestom.server.event.trait.PlayerEvent; import net.minestom.server.item.ItemStack; import net.minestom.server.utils.Direction; -import net.minestom.server.coordinate.Point; import org.jetbrains.annotations.NotNull; /** * Used when a player is clicking on a block with an item (but is not a block in item form). */ -public class PlayerUseItemOnBlockEvent implements PlayerEvent, ItemEvent { +public class PlayerUseItemOnBlockEvent implements PlayerEvent, EntityInstanceEvent, ItemEvent { private final Player player; private final Player.Hand hand; diff --git a/src/main/java/net/minestom/server/event/trait/EntityInstanceEvent.java b/src/main/java/net/minestom/server/event/trait/EntityInstanceEvent.java new file mode 100644 index 000000000..4e36d53d4 --- /dev/null +++ b/src/main/java/net/minestom/server/event/trait/EntityInstanceEvent.java @@ -0,0 +1,23 @@ +package net.minestom.server.event.trait; + +import net.minestom.server.entity.Entity; +import net.minestom.server.instance.Instance; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an {@link EntityEvent} which happen in {@link Entity#getInstance()}. + * Useful if you need to listen to entity events happening in its instance. + *

+ * Be aware that the entity's instance must be non-null. + */ +@ApiStatus.Internal +@ApiStatus.Experimental +public interface EntityInstanceEvent extends EntityEvent, InstanceEvent { + @Override + default @NotNull Instance getInstance() { + final Instance instance = getEntity().getInstance(); + assert instance != null : "EntityInstanceEvent is only supported on events where the entity's instance is non-null!"; + return instance; + } +}