Use traits for events

This commit is contained in:
TheMode 2021-06-02 07:09:15 +02:00
parent 047d4a92ac
commit 02fe4c65a2
56 changed files with 515 additions and 220 deletions

View File

@ -1,23 +0,0 @@
package net.minestom.server.event;
import net.minestom.server.entity.Entity;
import org.jetbrains.annotations.NotNull;
public class EntityEvent extends Event {
protected final Entity entity;
public EntityEvent(@NotNull Entity entity) {
this.entity = entity;
}
/**
* Gets the entity of this event.
*
* @return the entity
*/
@NotNull
public Entity getEntity() {
return entity;
}
}

View File

@ -1,7 +1,6 @@
package net.minestom.server.event;
import net.minestom.server.event.handler.EventHandler;
import org.jetbrains.annotations.NotNull;
/**
* Object which can be listened to by an {@link EventHandler}.
@ -9,15 +8,4 @@ import org.jetbrains.annotations.NotNull;
* Called using {@link EventHandler#callEvent(Class, Event)}.
*/
public class Event {
public static EventGroup group(@NotNull EventListener<?>... listeners) {
return new EventGroup(listeners);
}
public static <T extends EntityEvent> EventListener.Builder<T> entity(Class<T> eventType) {
return new EventListener.Builder<>(eventType);
}
public static <T extends PlayerEvent> EventListener.Builder<T> player(Class<T> eventType) {
return new EventListener.Builder<>(eventType);
}
}

View File

@ -1,23 +0,0 @@
package net.minestom.server.event;
import net.minestom.server.entity.Player;
import org.jetbrains.annotations.NotNull;
public class PlayerEvent extends Event {
protected final Player player;
public PlayerEvent(@NotNull Player player) {
this.player = player;
}
/**
* Gets the player.
*
* @return the player
*/
@NotNull
public Player getPlayer() {
return player;
}
}

View File

@ -1,22 +1,29 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
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 extends EntityEvent {
public class EntityAttackEvent extends Event implements EntityEvent {
private final Entity entity;
private final Entity target;
public EntityAttackEvent(@NotNull Entity source, @NotNull Entity target) {
super(source);
this.entity = source;
this.target = target;
}
@Override
public @NotNull Entity getEntity() {
return entity;
}
/**
* @return the target of the attack
*/

View File

@ -1,23 +1,26 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.LivingEntity;
import net.minestom.server.entity.damage.DamageType;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called with {@link LivingEntity#damage(DamageType, float)}.
*/
public class EntityDamageEvent extends EntityEvent implements CancellableEvent {
public class EntityDamageEvent extends Event implements EntityEvent, CancellableEvent {
private final Entity entity;
private final DamageType damageType;
private float damage;
private boolean cancelled;
public EntityDamageEvent(@NotNull LivingEntity entity, @NotNull DamageType damageType, float damage) {
super(entity);
this.entity = entity;
this.damageType = damageType;
this.damage = damage;
}

View File

@ -1,14 +1,21 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import org.jetbrains.annotations.NotNull;
public class EntityDeathEvent extends EntityEvent {
public class EntityDeathEvent extends Event implements EntityEvent {
// TODO cause
private final Entity entity;
public EntityDeathEvent(@NotNull Entity entity) {
super(entity);
this.entity = entity;
}
@Override
public @NotNull Entity getEntity() {
return entity;
}
}

View File

@ -2,18 +2,21 @@ package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import net.minestom.server.utils.time.TimeUnit;
import org.jetbrains.annotations.NotNull;
public class EntityFireEvent extends EntityEvent implements CancellableEvent {
public class EntityFireEvent extends Event implements EntityEvent, CancellableEvent {
private final Entity entity;
private int duration;
private TimeUnit timeUnit;
private boolean cancelled;
public EntityFireEvent(Entity entity, int duration, TimeUnit timeUnit) {
super(entity);
this.entity = entity;
setFireTime(duration, timeUnit);
}
@ -43,4 +46,9 @@ public class EntityFireEvent extends EntityEvent implements CancellableEvent {
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Entity getEntity() {
return entity;
}
}

View File

@ -1,23 +1,26 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.ItemEntity;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
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 extends EntityEvent implements CancellableEvent {
public class EntityItemMergeEvent extends Event implements EntityEvent, CancellableEvent {
private Entity entity;
private final ItemEntity merged;
private ItemStack result;
private boolean cancelled;
public EntityItemMergeEvent(@NotNull ItemEntity source, @NotNull ItemEntity merged, @NotNull ItemStack result) {
super(source);
this.entity = source;
this.merged = merged;
this.result = result;
}

View File

@ -1,19 +1,27 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import net.minestom.server.potion.Potion;
import org.jetbrains.annotations.NotNull;
public class EntityPotionAddEvent extends EntityEvent {
public class EntityPotionAddEvent extends Event implements EntityEvent {
private final Entity entity;
private final Potion potion;
public EntityPotionAddEvent(@NotNull Entity entity, @NotNull Potion potion) {
super(entity);
this.entity = entity;
this.potion = potion;
}
@NotNull
@Override
public Entity getEntity() {
return entity;
}
/**
* Returns the potion that was added.
*

View File

@ -1,16 +1,18 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import net.minestom.server.potion.Potion;
import org.jetbrains.annotations.NotNull;
public class EntityPotionRemoveEvent extends EntityEvent {
public class EntityPotionRemoveEvent extends Event implements EntityEvent {
private final Entity entity;
private final Potion potion;
public EntityPotionRemoveEvent(@NotNull Entity entity, @NotNull Potion potion) {
super(entity);
this.entity = entity;
this.potion = potion;
}
@ -23,4 +25,9 @@ public class EntityPotionRemoveEvent extends EntityEvent {
public Potion getPotion() {
return potion;
}
@Override
public @NotNull Entity getEntity() {
return entity;
}
}

View File

@ -2,15 +2,17 @@ package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import net.minestom.server.utils.Position;
import org.jetbrains.annotations.NotNull;
/**
* Called with {@link net.minestom.server.entity.type.projectile.EntityProjectile#shoot(Position, double, double)}
*/
public class EntityShootEvent extends EntityEvent implements CancellableEvent {
public class EntityShootEvent extends Event implements EntityEvent, CancellableEvent {
private final Entity entity;
private final Entity projectile;
private final Position to;
private double power;
@ -19,7 +21,7 @@ public class EntityShootEvent extends EntityEvent implements CancellableEvent {
private boolean cancelled;
public EntityShootEvent(@NotNull Entity entity, @NotNull Entity projectile, @NotNull Position to, double power, double spread) {
super(entity);
this.entity = entity;
this.projectile = projectile;
this.to = to;
this.power = power;
@ -90,4 +92,8 @@ public class EntityShootEvent extends EntityEvent implements CancellableEvent {
this.cancelled = cancel;
}
@Override
public @NotNull Entity getEntity() {
return entity;
}
}

View File

@ -1,19 +1,21 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import net.minestom.server.instance.Instance;
import org.jetbrains.annotations.NotNull;
/**
* Called when a new instance is set for an entity.
*/
public class EntitySpawnEvent extends EntityEvent {
public class EntitySpawnEvent extends Event implements EntityEvent {
private final Entity entity;
private final Instance spawnInstance;
public EntitySpawnEvent(@NotNull Entity entity, @NotNull Instance spawnInstance) {
super(entity);
this.entity = entity;
this.spawnInstance = spawnInstance;
}

View File

@ -1,17 +1,24 @@
package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
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 extends EntityEvent {
public class EntityTickEvent extends Event implements EntityEvent {
private final Entity entity;
public EntityTickEvent(@NotNull Entity entity) {
super(entity);
this.entity = entity;
}
@Override
public @NotNull Entity getEntity() {
return entity;
}
}

View File

@ -2,21 +2,23 @@ package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.EntityEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.EntityEvent;
import net.minestom.server.utils.Vector;
import org.jetbrains.annotations.NotNull;
/**
* Called when a velocity is applied to an entity using {@link Entity#setVelocity(Vector)}.
*/
public class EntityVelocityEvent extends EntityEvent implements CancellableEvent {
public class EntityVelocityEvent extends Event implements EntityEvent, CancellableEvent {
private final Entity entity;
private Vector velocity;
private boolean cancelled;
public EntityVelocityEvent(@NotNull Entity entity, @NotNull Vector velocity) {
super(entity);
this.entity = entity;
this.velocity = velocity;
}

View File

@ -2,20 +2,22 @@ package net.minestom.server.event.player;
import net.minestom.server.advancements.AdvancementAction;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
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 extends PlayerEvent {
public class AdvancementTabEvent extends Event implements PlayerEvent {
private final Player player;
private final AdvancementAction action;
private final String tabId;
public AdvancementTabEvent(@NotNull Player player, @NotNull AdvancementAction action, @NotNull String tabId) {
super(player);
this.player = player;
this.action = action;
this.tabId = tabId;
}
@ -41,4 +43,9 @@ public class AdvancementTabEvent extends PlayerEvent {
public String getTabId() {
return tabId;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
import java.util.UUID;
@ -10,13 +11,14 @@ import java.util.UUID;
* Called before the player initialization, it can be used to kick the player before any connection
* or to change his final username/uuid.
*/
public class AsyncPlayerPreLoginEvent extends PlayerEvent {
public class AsyncPlayerPreLoginEvent extends Event implements PlayerEvent {
private final Player player;
private String username;
private UUID playerUuid;
public AsyncPlayerPreLoginEvent(@NotNull Player player, @NotNull String username, @NotNull UUID playerUuid) {
super(player);
this.player = player;
this.username = username;
this.playerUuid = playerUuid;
}
@ -58,4 +60,9 @@ public class AsyncPlayerPreLoginEvent extends PlayerEvent {
public void setPlayerUuid(@NotNull UUID playerUuid) {
this.playerUuid = playerUuid;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -3,7 +3,8 @@ package net.minestom.server.event.player;
import net.minestom.server.MinecraftServer;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.instance.block.BlockManager;
import net.minestom.server.instance.block.CustomBlock;
import net.minestom.server.utils.BlockPosition;
@ -11,10 +12,11 @@ import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class PlayerBlockBreakEvent extends PlayerEvent implements CancellableEvent {
public class PlayerBlockBreakEvent extends Event implements PlayerEvent, CancellableEvent {
private static final BlockManager BLOCK_MANAGER = MinecraftServer.getBlockManager();
private final Player player;
private final BlockPosition blockPosition;
private final short blockStateId;
@ -28,7 +30,7 @@ public class PlayerBlockBreakEvent extends PlayerEvent implements CancellableEve
public PlayerBlockBreakEvent(@NotNull Player player, @NotNull BlockPosition blockPosition,
short blockStateId, @Nullable CustomBlock customBlock,
short resultBlockStateId, short resultCustomBlockId) {
super(player);
this.player = player;
this.blockPosition = blockPosition;
@ -151,4 +153,9 @@ public class PlayerBlockBreakEvent extends PlayerEvent implements CancellableEve
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,7 +2,8 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.instance.block.BlockFace;
import net.minestom.server.utils.BlockPosition;
import org.jetbrains.annotations.NotNull;
@ -11,8 +12,9 @@ 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 extends PlayerEvent implements CancellableEvent {
public class PlayerBlockInteractEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private final BlockPosition blockPosition;
private final Player.Hand hand;
private final BlockFace blockFace;
@ -27,7 +29,7 @@ public class PlayerBlockInteractEvent extends PlayerEvent implements Cancellable
public PlayerBlockInteractEvent(@NotNull Player player,
@NotNull BlockPosition blockPosition, @NotNull Player.Hand hand, @NotNull BlockFace blockFace) {
super(player);
this.player = player;
this.blockPosition = blockPosition;
this.hand = hand;
this.blockFace = blockFace;
@ -85,4 +87,9 @@ public class PlayerBlockInteractEvent extends PlayerEvent implements Cancellable
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -4,7 +4,8 @@ import net.minestom.server.MinecraftServer;
import net.minestom.server.data.Data;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.instance.block.Block;
import net.minestom.server.instance.block.BlockManager;
import net.minestom.server.instance.block.CustomBlock;
@ -16,10 +17,11 @@ import org.jetbrains.annotations.Nullable;
/**
* Called when a player tries placing a block.
*/
public class PlayerBlockPlaceEvent extends PlayerEvent implements CancellableEvent {
public class PlayerBlockPlaceEvent extends Event implements PlayerEvent, CancellableEvent {
private static final BlockManager BLOCK_MANAGER = MinecraftServer.getBlockManager();
private final Player player;
private short blockStateId;
private short customBlockId;
private Data blockData;
@ -32,7 +34,7 @@ public class PlayerBlockPlaceEvent extends PlayerEvent implements CancellableEve
public PlayerBlockPlaceEvent(@NotNull Player player, @NotNull Block block,
@NotNull BlockPosition blockPosition, @NotNull Player.Hand hand) {
super(player);
this.player = player;
this.blockStateId = block.getBlockId();
this.blockPosition = blockPosition;
this.hand = hand;
@ -176,4 +178,9 @@ public class PlayerBlockPlaceEvent extends PlayerEvent implements CancellableEve
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,7 +2,8 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.utils.MathUtils;
import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.NotNull;
@ -10,14 +11,15 @@ import org.jetbrains.annotations.NotNull;
/**
* Called when a player change his held slot (by pressing 1-9 keys).
*/
public class PlayerChangeHeldSlotEvent extends PlayerEvent implements CancellableEvent {
public class PlayerChangeHeldSlotEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private byte slot;
private boolean cancelled;
public PlayerChangeHeldSlotEvent(@NotNull Player player, byte slot) {
super(player);
this.player = player;
this.slot = slot;
}
@ -50,4 +52,9 @@ public class PlayerChangeHeldSlotEvent extends PlayerEvent implements Cancellabl
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -4,7 +4,8 @@ import net.kyori.adventure.text.Component;
import net.minestom.server.chat.JsonMessage;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -17,8 +18,9 @@ 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 extends PlayerEvent implements CancellableEvent {
public class PlayerChatEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private final Collection<Player> recipients;
private final Supplier<Component> defaultChatFormat;
private String message;
@ -29,7 +31,7 @@ public class PlayerChatEvent extends PlayerEvent implements CancellableEvent {
public PlayerChatEvent(@NotNull Player player, @NotNull Collection<Player> recipients,
@NotNull Supplier<Component> defaultChatFormat,
@NotNull String message) {
super(player);
this.player = player;
this.recipients = new ArrayList<>(recipients);
this.defaultChatFormat = defaultChatFormat;
this.message = message;
@ -108,4 +110,9 @@ public class PlayerChatEvent extends PlayerEvent implements CancellableEvent {
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,18 +1,20 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player receive a new chunk data.
*/
public class PlayerChunkLoadEvent extends PlayerEvent {
public class PlayerChunkLoadEvent extends Event implements PlayerEvent {
private final Player player;
private final int chunkX, chunkZ;
public PlayerChunkLoadEvent(@NotNull Player player, int chunkX, int chunkZ) {
super(player);
this.player = player;
this.chunkX = chunkX;
this.chunkZ = chunkZ;
}
@ -34,4 +36,9 @@ public class PlayerChunkLoadEvent extends PlayerEvent {
public int getChunkZ() {
return chunkZ;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
@ -9,12 +10,13 @@ import org.jetbrains.annotations.NotNull;
* <p>
* Could be used to unload the chunk internally in order to save memory.
*/
public class PlayerChunkUnloadEvent extends PlayerEvent {
public class PlayerChunkUnloadEvent extends Event implements PlayerEvent {
private final Player player;
private final int chunkX, chunkZ;
public PlayerChunkUnloadEvent(@NotNull Player player, int chunkX, int chunkZ) {
super(player);
this.player = player;
this.chunkX = chunkX;
this.chunkZ = chunkZ;
}
@ -36,4 +38,9 @@ public class PlayerChunkUnloadEvent extends PlayerEvent {
public int getChunkZ() {
return chunkZ;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,20 +2,22 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
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 extends PlayerEvent implements CancellableEvent {
public class PlayerCommandEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private String command;
private boolean cancelled;
public PlayerCommandEvent(@NotNull Player player, @NotNull String command) {
super(player);
this.player = player;
this.command = command;
}
@ -47,4 +49,9 @@ public class PlayerCommandEvent extends PlayerEvent implements CancellableEvent
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -3,15 +3,17 @@ package net.minestom.server.event.player;
import net.kyori.adventure.text.Component;
import net.minestom.server.chat.JsonMessage;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Called when a player die in {@link Player#kill()}.
*/
public class PlayerDeathEvent extends PlayerEvent {
public class PlayerDeathEvent extends Event implements PlayerEvent {
private final Player player;
private Component deathText;
private Component chatMessage;
@ -24,7 +26,7 @@ public class PlayerDeathEvent extends PlayerEvent {
}
public PlayerDeathEvent(@NotNull Player player, Component deathText, Component chatMessage) {
super(player);
this.player = player;
this.deathText = deathText;
this.chatMessage = chatMessage;
}
@ -112,4 +114,9 @@ public class PlayerDeathEvent extends PlayerEvent {
public void setChatMessage(@Nullable Component chatMessage) {
this.chatMessage = chatMessage;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player disconnect.
*/
public class PlayerDisconnectEvent extends PlayerEvent {
public class PlayerDisconnectEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerDisconnectEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,20 +1,22 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player is finished eating.
*/
public class PlayerEatEvent extends PlayerEvent {
public class PlayerEatEvent extends Event implements PlayerEvent {
private final Player player;
private final ItemStack foodItem;
private final Player.Hand hand;
public PlayerEatEvent(@NotNull Player player, @NotNull ItemStack foodItem, @NotNull Player.Hand hand) {
super(player);
this.player = player;
this.foodItem = foodItem;
this.hand = hand;
}
@ -31,4 +33,9 @@ public class PlayerEatEvent extends PlayerEvent {
public @NotNull Player.Hand getHand() {
return hand;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,19 +2,21 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
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 extends PlayerEvent {
public class PlayerEntityInteractEvent extends Event implements PlayerEvent {
private final Player player;
private final Entity entityTarget;
private final Player.Hand hand;
public PlayerEntityInteractEvent(@NotNull Player player, @NotNull Entity entityTarget, @NotNull Player.Hand hand) {
super(player);
this.player = player;
this.entityTarget = entityTarget;
this.hand = hand;
}
@ -38,4 +40,9 @@ public class PlayerEntityInteractEvent extends PlayerEvent {
public Player.Hand getHand() {
return hand;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,20 +2,22 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when the player swings his hand.
*/
public class PlayerHandAnimationEvent extends PlayerEvent implements CancellableEvent {
public class PlayerHandAnimationEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private final Player.Hand hand;
private boolean cancelled;
public PlayerHandAnimationEvent(@NotNull Player player, @NotNull Player.Hand hand) {
super(player);
this.player = player;
this.hand = hand;
}
@ -38,4 +40,9 @@ public class PlayerHandAnimationEvent extends PlayerEvent implements Cancellable
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,7 +2,8 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
@ -10,14 +11,15 @@ import org.jetbrains.annotations.NotNull;
*
* @see ItemAnimationType
*/
public class PlayerItemAnimationEvent extends PlayerEvent implements CancellableEvent {
public class PlayerItemAnimationEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private final ItemAnimationType armAnimationType;
private boolean cancelled;
public PlayerItemAnimationEvent(@NotNull Player player, @NotNull ItemAnimationType armAnimationType) {
super(player);
this.player = player;
this.armAnimationType = armAnimationType;
}
@ -31,6 +33,11 @@ public class PlayerItemAnimationEvent extends PlayerEvent implements Cancellable
return armAnimationType;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
public enum ItemAnimationType {
BOW,
CROSSBOW,

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.instance.Instance;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -16,12 +17,13 @@ import org.jetbrains.annotations.Nullable;
* <p>
* WARNING: defining the spawning instance is MANDATORY.
*/
public class PlayerLoginEvent extends PlayerEvent {
public class PlayerLoginEvent extends Event implements PlayerEvent {
private final Player player;
private Instance spawningInstance;
public PlayerLoginEvent(@NotNull Player player) {
super(player);
this.player = player;
}
/**
@ -44,4 +46,9 @@ public class PlayerLoginEvent extends PlayerEvent {
public void setSpawningInstance(@NotNull Instance instance) {
this.spawningInstance = instance;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,21 +2,23 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.utils.Position;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player is modifying his position.
*/
public class PlayerMoveEvent extends PlayerEvent implements CancellableEvent {
public class PlayerMoveEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private Position newPosition;
private boolean cancelled;
public PlayerMoveEvent(@NotNull Player player, @NotNull Position newPosition) {
super(player);
this.player = player;
this.newPosition = newPosition;
}
@ -48,4 +50,9 @@ public class PlayerMoveEvent extends PlayerEvent implements CancellableEvent {
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,19 +1,21 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
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 extends PlayerEvent {
public class PlayerPluginMessageEvent extends Event implements PlayerEvent {
private final Player player;
private final String identifier;
private final byte[] message;
public PlayerPluginMessageEvent(@NotNull Player player, @NotNull String identifier, @NotNull byte[] message) {
super(player);
this.player = player;
this.identifier = identifier;
this.message = message;
}
@ -47,4 +49,9 @@ public class PlayerPluginMessageEvent extends PlayerEvent {
public String getMessageString() {
return new String(message);
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,7 +2,8 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull;
@ -11,8 +12,9 @@ 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 extends PlayerEvent implements CancellableEvent {
public class PlayerPreEatEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private final ItemStack foodItem;
private final Player.Hand hand;
private long eatingTime;
@ -20,7 +22,7 @@ public class PlayerPreEatEvent extends PlayerEvent implements CancellableEvent {
private boolean cancelled;
public PlayerPreEatEvent(@NotNull Player player, @NotNull ItemStack foodItem, @NotNull Player.Hand hand, long eatingTime) {
super(player);
this.player = player;
this.foodItem = foodItem;
this.hand = hand;
this.eatingTime = eatingTime;
@ -68,4 +70,9 @@ public class PlayerPreEatEvent extends PlayerEvent implements CancellableEvent {
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,19 +1,21 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.resourcepack.ResourcePackStatus;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player warns the server of a resource pack status.
*/
public class PlayerResourcePackStatusEvent extends PlayerEvent {
public class PlayerResourcePackStatusEvent extends Event implements PlayerEvent {
private final Player player;
private final ResourcePackStatus status;
public PlayerResourcePackStatusEvent(@NotNull Player player, @NotNull ResourcePackStatus status) {
super(player);
this.player = player;
this.status = status;
}
@ -26,4 +28,9 @@ public class PlayerResourcePackStatusEvent extends PlayerEvent {
public ResourcePackStatus getStatus() {
return status;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.utils.Position;
import org.jetbrains.annotations.NotNull;
@ -9,12 +10,13 @@ import org.jetbrains.annotations.NotNull;
* Called when {@link Player#respawn()} is executed (for custom respawn or as a result of
* {@link net.minestom.server.network.packet.client.play.ClientStatusPacket}
*/
public class PlayerRespawnEvent extends PlayerEvent {
public class PlayerRespawnEvent extends Event implements PlayerEvent {
private final Player player;
private Position respawnPosition;
public PlayerRespawnEvent(@NotNull Player player) {
super(player);
this.player = player;
this.respawnPosition = player.getRespawnPoint();
}
@ -38,4 +40,9 @@ public class PlayerRespawnEvent extends PlayerEvent {
public void setRespawnPosition(@NotNull Position respawnPosition) {
this.respawnPosition = respawnPosition;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,16 +1,19 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called after the player signals the server that his settings has been modified.
*/
public class PlayerSettingsChangeEvent extends PlayerEvent {
public class PlayerSettingsChangeEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerSettingsChangeEvent(@NotNull Player player) {
super(player);
this.player = player;
}
/**

View File

@ -2,19 +2,21 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.PlayerSkin;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Called at the player connection to initialize his skin.
*/
public class PlayerSkinInitEvent extends PlayerEvent {
public class PlayerSkinInitEvent extends Event implements PlayerEvent {
private final Player player;
private PlayerSkin skin;
public PlayerSkinInitEvent(@NotNull Player player, @Nullable PlayerSkin currentSkin) {
super(player);
this.player = player;
this.skin = currentSkin;
}
@ -36,4 +38,9 @@ public class PlayerSkinInitEvent extends PlayerEvent {
public void setSkin(@Nullable PlayerSkin skin) {
this.skin = skin;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,20 +1,22 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.instance.Instance;
import org.jetbrains.annotations.NotNull;
/**
* Called when a new instance is set for a player.
*/
public class PlayerSpawnEvent extends PlayerEvent {
public class PlayerSpawnEvent extends Event implements PlayerEvent {
private final Player player;
private final Instance spawnInstance;
private final boolean firstSpawn;
public PlayerSpawnEvent(@NotNull Player player, @NotNull Instance spawnInstance, boolean firstSpawn) {
super(player);
this.player = player;
this.spawnInstance = spawnInstance;
this.firstSpawn = firstSpawn;
}
@ -37,4 +39,9 @@ public class PlayerSpawnEvent extends PlayerEvent {
public boolean isFirstSpawn() {
return firstSpawn;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,7 +2,8 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.utils.BlockPosition;
import org.jetbrains.annotations.NotNull;
@ -14,8 +15,9 @@ 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 extends PlayerEvent implements CancellableEvent {
public class PlayerStartDiggingEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private final BlockPosition blockPosition;
private final int blockStateId;
private final int customBlockId;
@ -23,7 +25,7 @@ public class PlayerStartDiggingEvent extends PlayerEvent implements CancellableE
private boolean cancelled;
public PlayerStartDiggingEvent(@NotNull Player player, @NotNull BlockPosition blockPosition, int blockStateId, int customBlockId) {
super(player);
this.player = player;
this.blockPosition = blockPosition;
this.blockStateId = blockStateId;
this.customBlockId = customBlockId;
@ -66,4 +68,9 @@ public class PlayerStartDiggingEvent extends PlayerEvent implements CancellableE
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player start flying.
*/
public class PlayerStartFlyingEvent extends PlayerEvent {
public class PlayerStartFlyingEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStartFlyingEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,12 +1,20 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
public class PlayerStartFlyingWithElytraEvent extends PlayerEvent {
public class PlayerStartFlyingWithElytraEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStartFlyingWithElytraEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player starts sneaking.
*/
public class PlayerStartSneakingEvent extends PlayerEvent {
public class PlayerStartSneakingEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStartSneakingEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player starts sprinting.
*/
public class PlayerStartSprintingEvent extends PlayerEvent {
public class PlayerStartSprintingEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStartSprintingEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player stop flying.
*/
public class PlayerStopFlyingEvent extends PlayerEvent {
public class PlayerStopFlyingEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStopFlyingEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,12 +1,20 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
public class PlayerStopFlyingWithElytraEvent extends PlayerEvent {
public class PlayerStopFlyingWithElytraEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStopFlyingWithElytraEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player stops sneaking.
*/
public class PlayerStopSneakingEvent extends PlayerEvent {
public class PlayerStopSneakingEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStopSneakingEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player stops sprinting.
*/
public class PlayerStopSprintingEvent extends PlayerEvent {
public class PlayerStopSprintingEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerStopSprintingEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,22 +2,24 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull;
/**
* Called when a player is trying to swap his main and off hand item.
*/
public class PlayerSwapItemEvent extends PlayerEvent implements CancellableEvent {
public class PlayerSwapItemEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private ItemStack mainHandItem;
private ItemStack offHandItem;
private boolean cancelled;
public PlayerSwapItemEvent(@NotNull Player player, @NotNull ItemStack mainHandItem, @NotNull ItemStack offHandItem) {
super(player);
this.player = player;
this.mainHandItem = mainHandItem;
this.offHandItem = offHandItem;
}
@ -69,4 +71,9 @@ public class PlayerSwapItemEvent extends PlayerEvent implements CancellableEvent
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Called at each player tick.
*/
public class PlayerTickEvent extends PlayerEvent {
public class PlayerTickEvent extends Event implements PlayerEvent {
private final Player player;
public PlayerTickEvent(@NotNull Player player) {
super(player);
this.player = player;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -2,22 +2,24 @@ package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull;
/**
* Event when an item is used without clicking on a block.
*/
public class PlayerUseItemEvent extends PlayerEvent implements CancellableEvent {
public class PlayerUseItemEvent extends Event implements PlayerEvent, CancellableEvent {
private final Player player;
private final Player.Hand hand;
private final ItemStack itemStack;
private boolean cancelled;
public PlayerUseItemEvent(@NotNull Player player, @NotNull Player.Hand hand, @NotNull ItemStack itemStack) {
super(player);
this.player = player;
this.hand = hand;
this.itemStack = itemStack;
}
@ -51,4 +53,9 @@ public class PlayerUseItemEvent extends PlayerEvent implements CancellableEvent
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player;
import net.minestom.server.entity.Player;
import net.minestom.server.event.PlayerEvent;
import net.minestom.server.event.Event;
import net.minestom.server.event.trait.PlayerEvent;
import net.minestom.server.item.ItemStack;
import net.minestom.server.utils.BlockPosition;
import net.minestom.server.utils.Direction;
@ -10,8 +11,9 @@ 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 extends PlayerEvent {
public class PlayerUseItemOnBlockEvent extends Event implements PlayerEvent {
private final Player player;
private final Player.Hand hand;
private final ItemStack itemStack;
private final BlockPosition position;
@ -20,7 +22,7 @@ public class PlayerUseItemOnBlockEvent extends PlayerEvent {
public PlayerUseItemOnBlockEvent(@NotNull Player player, @NotNull Player.Hand hand,
@NotNull ItemStack itemStack,
@NotNull BlockPosition position, @NotNull Direction blockFace) {
super(player);
this.player = player;
this.hand = hand;
this.itemStack = itemStack;
this.position = position;
@ -66,4 +68,9 @@ public class PlayerUseItemOnBlockEvent extends PlayerEvent {
public ItemStack getItemStack() {
return itemStack;
}
@Override
public @NotNull Player getPlayer() {
return player;
}
}

View File

@ -0,0 +1,14 @@
package net.minestom.server.event.trait;
import net.minestom.server.entity.Entity;
import org.jetbrains.annotations.NotNull;
public interface EntityEvent {
/**
* Gets the entity of this event.
*
* @return the entity
*/
@NotNull Entity getEntity();
}

View File

@ -0,0 +1,8 @@
package net.minestom.server.event.trait;
import net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull;
public interface ItemEvent {
@NotNull ItemStack getItemStack();
}

View File

@ -0,0 +1,14 @@
package net.minestom.server.event.trait;
import net.minestom.server.entity.Player;
import org.jetbrains.annotations.NotNull;
public interface PlayerEvent {
/**
* Gets the player.
*
* @return the player
*/
@NotNull Player getPlayer();
}

View File

@ -11,7 +11,6 @@ import net.minestom.server.entity.GameMode;
import net.minestom.server.entity.ItemEntity;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.damage.DamageType;
import net.minestom.server.event.Event;
import net.minestom.server.event.GlobalEventHandler;
import net.minestom.server.event.entity.EntityAttackEvent;
import net.minestom.server.event.item.ItemDropEvent;
@ -136,20 +135,6 @@ public class PlayerInit {
// EVENT REGISTERING
GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
connectionManager.addPlayerInitialization(player -> {
var listener = Event.player(PlayerChatEvent.class)
.filter(playerChatEvent -> player.isCreative())
.handler(playerChatEvent -> Audiences.players().sendMessage(Component.text("Listener is working!")))
.build();
//listener.attachTo(player);
var group = Event.group(listener);
group.attachTo(player);
});
globalEventHandler.addEventCallback(EntityAttackEvent.class, event -> {
final Entity source = event.getEntity();
final Entity entity = event.getTarget();