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; package net.minestom.server.event;
import net.minestom.server.event.handler.EventHandler; import net.minestom.server.event.handler.EventHandler;
import org.jetbrains.annotations.NotNull;
/** /**
* Object which can be listened to by an {@link EventHandler}. * 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)}. * Called using {@link EventHandler#callEvent(Class, Event)}.
*/ */
public 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; package net.minestom.server.event.entity;
import net.minestom.server.entity.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; import org.jetbrains.annotations.NotNull;
/** /**
* Called when a player does a left click on an entity or with * Called when a player does a left click on an entity or with
* {@link net.minestom.server.entity.EntityCreature#attack(Entity)}. * {@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; private final Entity target;
public EntityAttackEvent(@NotNull Entity source, @NotNull Entity target) { public EntityAttackEvent(@NotNull Entity source, @NotNull Entity target) {
super(source); this.entity = source;
this.target = target; this.target = target;
} }
@Override
public @NotNull Entity getEntity() {
return entity;
}
/** /**
* @return the target of the attack * @return the target of the attack
*/ */

View File

@ -1,23 +1,26 @@
package net.minestom.server.event.entity; package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.LivingEntity; import net.minestom.server.entity.LivingEntity;
import net.minestom.server.entity.damage.DamageType; import net.minestom.server.entity.damage.DamageType;
import net.minestom.server.event.CancellableEvent; 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; import org.jetbrains.annotations.NotNull;
/** /**
* Called with {@link LivingEntity#damage(DamageType, float)}. * 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 final DamageType damageType;
private float damage; private float damage;
private boolean cancelled; private boolean cancelled;
public EntityDamageEvent(@NotNull LivingEntity entity, @NotNull DamageType damageType, float damage) { public EntityDamageEvent(@NotNull LivingEntity entity, @NotNull DamageType damageType, float damage) {
super(entity); this.entity = entity;
this.damageType = damageType; this.damageType = damageType;
this.damage = damage; this.damage = damage;
} }

View File

@ -1,14 +1,21 @@
package net.minestom.server.event.entity; package net.minestom.server.event.entity;
import net.minestom.server.entity.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; import org.jetbrains.annotations.NotNull;
public class EntityDeathEvent extends EntityEvent { public class EntityDeathEvent extends Event implements EntityEvent {
// TODO cause // TODO cause
private final Entity entity;
public EntityDeathEvent(@NotNull 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.entity.Entity;
import net.minestom.server.event.CancellableEvent; 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 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 int duration;
private TimeUnit timeUnit; private TimeUnit timeUnit;
private boolean cancelled; private boolean cancelled;
public EntityFireEvent(Entity entity, int duration, TimeUnit timeUnit) { public EntityFireEvent(Entity entity, int duration, TimeUnit timeUnit) {
super(entity); this.entity = entity;
setFireTime(duration, timeUnit); setFireTime(duration, timeUnit);
} }
@ -43,4 +46,9 @@ public class EntityFireEvent extends EntityEvent implements CancellableEvent {
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Entity getEntity() {
return entity;
}
} }

View File

@ -1,23 +1,26 @@
package net.minestom.server.event.entity; package net.minestom.server.event.entity;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.ItemEntity; import net.minestom.server.entity.ItemEntity;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called when two {@link ItemEntity} are merging their {@link ItemStack} together to form a sole entity. * 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 final ItemEntity merged;
private ItemStack result; private ItemStack result;
private boolean cancelled; private boolean cancelled;
public EntityItemMergeEvent(@NotNull ItemEntity source, @NotNull ItemEntity merged, @NotNull ItemStack result) { public EntityItemMergeEvent(@NotNull ItemEntity source, @NotNull ItemEntity merged, @NotNull ItemStack result) {
super(source); this.entity = source;
this.merged = merged; this.merged = merged;
this.result = result; this.result = result;
} }

View File

@ -1,19 +1,27 @@
package net.minestom.server.event.entity; package net.minestom.server.event.entity;
import net.minestom.server.entity.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 net.minestom.server.potion.Potion;
import org.jetbrains.annotations.NotNull; 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; private final Potion potion;
public EntityPotionAddEvent(@NotNull Entity entity, @NotNull Potion potion) { public EntityPotionAddEvent(@NotNull Entity entity, @NotNull Potion potion) {
super(entity); this.entity = entity;
this.potion = potion; this.potion = potion;
} }
@NotNull
@Override
public Entity getEntity() {
return entity;
}
/** /**
* Returns the potion that was added. * Returns the potion that was added.
* *

View File

@ -1,16 +1,18 @@
package net.minestom.server.event.entity; package net.minestom.server.event.entity;
import net.minestom.server.entity.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 net.minestom.server.potion.Potion;
import org.jetbrains.annotations.NotNull; 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; private final Potion potion;
public EntityPotionRemoveEvent(@NotNull Entity entity, @NotNull Potion potion) { public EntityPotionRemoveEvent(@NotNull Entity entity, @NotNull Potion potion) {
super(entity); this.entity = entity;
this.potion = potion; this.potion = potion;
} }
@ -23,4 +25,9 @@ public class EntityPotionRemoveEvent extends EntityEvent {
public Potion getPotion() { public Potion getPotion() {
return potion; 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.entity.Entity;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.utils.Position;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called with {@link net.minestom.server.entity.type.projectile.EntityProjectile#shoot(Position, double, double)} * 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 Entity projectile;
private final Position to; private final Position to;
private double power; private double power;
@ -19,7 +21,7 @@ public class EntityShootEvent extends EntityEvent implements CancellableEvent {
private boolean cancelled; private boolean cancelled;
public EntityShootEvent(@NotNull Entity entity, @NotNull Entity projectile, @NotNull Position to, double power, double spread) { public EntityShootEvent(@NotNull Entity entity, @NotNull Entity projectile, @NotNull Position to, double power, double spread) {
super(entity); this.entity = entity;
this.projectile = projectile; this.projectile = projectile;
this.to = to; this.to = to;
this.power = power; this.power = power;
@ -90,4 +92,8 @@ public class EntityShootEvent extends EntityEvent implements CancellableEvent {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Entity getEntity() {
return entity;
}
} }

View File

@ -1,19 +1,21 @@
package net.minestom.server.event.entity; package net.minestom.server.event.entity;
import net.minestom.server.entity.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 net.minestom.server.instance.Instance;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called when a new instance is set for an entity. * 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; private final Instance spawnInstance;
public EntitySpawnEvent(@NotNull Entity entity, @NotNull Instance spawnInstance) { public EntitySpawnEvent(@NotNull Entity entity, @NotNull Instance spawnInstance) {
super(entity); this.entity = entity;
this.spawnInstance = spawnInstance; this.spawnInstance = spawnInstance;
} }

View File

@ -1,17 +1,24 @@
package net.minestom.server.event.entity; package net.minestom.server.event.entity;
import net.minestom.server.entity.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; import org.jetbrains.annotations.NotNull;
/** /**
* Called when an entity ticks itself. * Called when an entity ticks itself.
* Same event instance used for all tick events for the same entity. * 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) { 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.entity.Entity;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.utils.Vector;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called when a velocity is applied to an entity using {@link Entity#setVelocity(Vector)}. * 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 Vector velocity;
private boolean cancelled; private boolean cancelled;
public EntityVelocityEvent(@NotNull Entity entity, @NotNull Vector velocity) { public EntityVelocityEvent(@NotNull Entity entity, @NotNull Vector velocity) {
super(entity); this.entity = entity;
this.velocity = velocity; 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.advancements.AdvancementAction;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a {@link Player} opens the advancement screens or switch the tab * Called when a {@link Player} opens the advancement screens or switch the tab
* and when he closes the screen. * 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 AdvancementAction action;
private final String tabId; private final String tabId;
public AdvancementTabEvent(@NotNull Player player, @NotNull AdvancementAction action, @NotNull String tabId) { public AdvancementTabEvent(@NotNull Player player, @NotNull AdvancementAction action, @NotNull String tabId) {
super(player); this.player = player;
this.action = action; this.action = action;
this.tabId = tabId; this.tabId = tabId;
} }
@ -41,4 +43,9 @@ public class AdvancementTabEvent extends PlayerEvent {
public String getTabId() { public String getTabId() {
return tabId; return tabId;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
import java.util.UUID; 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 * Called before the player initialization, it can be used to kick the player before any connection
* or to change his final username/uuid. * 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 String username;
private UUID playerUuid; private UUID playerUuid;
public AsyncPlayerPreLoginEvent(@NotNull Player player, @NotNull String username, @NotNull UUID playerUuid) { public AsyncPlayerPreLoginEvent(@NotNull Player player, @NotNull String username, @NotNull UUID playerUuid) {
super(player); this.player = player;
this.username = username; this.username = username;
this.playerUuid = playerUuid; this.playerUuid = playerUuid;
} }
@ -58,4 +60,9 @@ public class AsyncPlayerPreLoginEvent extends PlayerEvent {
public void setPlayerUuid(@NotNull UUID playerUuid) { public void setPlayerUuid(@NotNull UUID playerUuid) {
this.playerUuid = 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.MinecraftServer;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.BlockManager;
import net.minestom.server.instance.block.CustomBlock; import net.minestom.server.instance.block.CustomBlock;
import net.minestom.server.utils.BlockPosition; 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.NotNull;
import org.jetbrains.annotations.Nullable; 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 static final BlockManager BLOCK_MANAGER = MinecraftServer.getBlockManager();
private final Player player;
private final BlockPosition blockPosition; private final BlockPosition blockPosition;
private final short blockStateId; private final short blockStateId;
@ -28,7 +30,7 @@ public class PlayerBlockBreakEvent extends PlayerEvent implements CancellableEve
public PlayerBlockBreakEvent(@NotNull Player player, @NotNull BlockPosition blockPosition, public PlayerBlockBreakEvent(@NotNull Player player, @NotNull BlockPosition blockPosition,
short blockStateId, @Nullable CustomBlock customBlock, short blockStateId, @Nullable CustomBlock customBlock,
short resultBlockStateId, short resultCustomBlockId) { short resultBlockStateId, short resultCustomBlockId) {
super(player); this.player = player;
this.blockPosition = blockPosition; this.blockPosition = blockPosition;
@ -151,4 +153,9 @@ public class PlayerBlockBreakEvent extends PlayerEvent implements CancellableEve
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.instance.block.BlockFace;
import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.BlockPosition;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -11,8 +12,9 @@ import org.jetbrains.annotations.NotNull;
* Called when a player interacts with a block (right-click). * Called when a player interacts with a block (right-click).
* This is also called when a block is placed. * 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 BlockPosition blockPosition;
private final Player.Hand hand; private final Player.Hand hand;
private final BlockFace blockFace; private final BlockFace blockFace;
@ -27,7 +29,7 @@ public class PlayerBlockInteractEvent extends PlayerEvent implements Cancellable
public PlayerBlockInteractEvent(@NotNull Player player, public PlayerBlockInteractEvent(@NotNull Player player,
@NotNull BlockPosition blockPosition, @NotNull Player.Hand hand, @NotNull BlockFace blockFace) { @NotNull BlockPosition blockPosition, @NotNull Player.Hand hand, @NotNull BlockFace blockFace) {
super(player); this.player = player;
this.blockPosition = blockPosition; this.blockPosition = blockPosition;
this.hand = hand; this.hand = hand;
this.blockFace = blockFace; this.blockFace = blockFace;
@ -85,4 +87,9 @@ public class PlayerBlockInteractEvent extends PlayerEvent implements Cancellable
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = 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.data.Data;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.Block;
import net.minestom.server.instance.block.BlockManager; import net.minestom.server.instance.block.BlockManager;
import net.minestom.server.instance.block.CustomBlock; import net.minestom.server.instance.block.CustomBlock;
@ -16,10 +17,11 @@ import org.jetbrains.annotations.Nullable;
/** /**
* Called when a player tries placing a block. * 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 static final BlockManager BLOCK_MANAGER = MinecraftServer.getBlockManager();
private final Player player;
private short blockStateId; private short blockStateId;
private short customBlockId; private short customBlockId;
private Data blockData; private Data blockData;
@ -32,7 +34,7 @@ public class PlayerBlockPlaceEvent extends PlayerEvent implements CancellableEve
public PlayerBlockPlaceEvent(@NotNull Player player, @NotNull Block block, public PlayerBlockPlaceEvent(@NotNull Player player, @NotNull Block block,
@NotNull BlockPosition blockPosition, @NotNull Player.Hand hand) { @NotNull BlockPosition blockPosition, @NotNull Player.Hand hand) {
super(player); this.player = player;
this.blockStateId = block.getBlockId(); this.blockStateId = block.getBlockId();
this.blockPosition = blockPosition; this.blockPosition = blockPosition;
this.hand = hand; this.hand = hand;
@ -176,4 +178,9 @@ public class PlayerBlockPlaceEvent extends PlayerEvent implements CancellableEve
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.MathUtils;
import net.minestom.server.utils.validate.Check; import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.NotNull; 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). * 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 byte slot;
private boolean cancelled; private boolean cancelled;
public PlayerChangeHeldSlotEvent(@NotNull Player player, byte slot) { public PlayerChangeHeldSlotEvent(@NotNull Player player, byte slot) {
super(player); this.player = player;
this.slot = slot; this.slot = slot;
} }
@ -50,4 +52,9 @@ public class PlayerChangeHeldSlotEvent extends PlayerEvent implements Cancellabl
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = 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.chat.JsonMessage;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.NotNull;
import org.jetbrains.annotations.Nullable; 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. * 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. * 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 Collection<Player> recipients;
private final Supplier<Component> defaultChatFormat; private final Supplier<Component> defaultChatFormat;
private String message; private String message;
@ -29,7 +31,7 @@ public class PlayerChatEvent extends PlayerEvent implements CancellableEvent {
public PlayerChatEvent(@NotNull Player player, @NotNull Collection<Player> recipients, public PlayerChatEvent(@NotNull Player player, @NotNull Collection<Player> recipients,
@NotNull Supplier<Component> defaultChatFormat, @NotNull Supplier<Component> defaultChatFormat,
@NotNull String message) { @NotNull String message) {
super(player); this.player = player;
this.recipients = new ArrayList<>(recipients); this.recipients = new ArrayList<>(recipients);
this.defaultChatFormat = defaultChatFormat; this.defaultChatFormat = defaultChatFormat;
this.message = message; this.message = message;
@ -108,4 +110,9 @@ public class PlayerChatEvent extends PlayerEvent implements CancellableEvent {
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

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

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
@ -9,12 +10,13 @@ import org.jetbrains.annotations.NotNull;
* <p> * <p>
* Could be used to unload the chunk internally in order to save memory. * 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; private final int chunkX, chunkZ;
public PlayerChunkUnloadEvent(@NotNull Player player, int chunkX, int chunkZ) { public PlayerChunkUnloadEvent(@NotNull Player player, int chunkX, int chunkZ) {
super(player); this.player = player;
this.chunkX = chunkX; this.chunkX = chunkX;
this.chunkZ = chunkZ; this.chunkZ = chunkZ;
} }
@ -36,4 +38,9 @@ public class PlayerChunkUnloadEvent extends PlayerEvent {
public int getChunkZ() { public int getChunkZ() {
return chunkZ; 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.NotNull;
/** /**
* Called every time a player send a message starting by '/'. * 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 String command;
private boolean cancelled; private boolean cancelled;
public PlayerCommandEvent(@NotNull Player player, @NotNull String command) { public PlayerCommandEvent(@NotNull Player player, @NotNull String command) {
super(player); this.player = player;
this.command = command; this.command = command;
} }
@ -47,4 +49,9 @@ public class PlayerCommandEvent extends PlayerEvent implements CancellableEvent
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = 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.kyori.adventure.text.Component;
import net.minestom.server.chat.JsonMessage; import net.minestom.server.chat.JsonMessage;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
/** /**
* Called when a player die in {@link Player#kill()}. * 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 deathText;
private Component chatMessage; private Component chatMessage;
@ -24,7 +26,7 @@ public class PlayerDeathEvent extends PlayerEvent {
} }
public PlayerDeathEvent(@NotNull Player player, Component deathText, Component chatMessage) { public PlayerDeathEvent(@NotNull Player player, Component deathText, Component chatMessage) {
super(player); this.player = player;
this.deathText = deathText; this.deathText = deathText;
this.chatMessage = chatMessage; this.chatMessage = chatMessage;
} }
@ -112,4 +114,9 @@ public class PlayerDeathEvent extends PlayerEvent {
public void setChatMessage(@Nullable Component chatMessage) { public void setChatMessage(@Nullable Component chatMessage) {
this.chatMessage = chatMessage; this.chatMessage = chatMessage;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player disconnect. * 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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.item.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called when a player is finished eating. * 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 ItemStack foodItem;
private final Player.Hand hand; private final Player.Hand hand;
public PlayerEatEvent(@NotNull Player player, @NotNull ItemStack foodItem, @NotNull Player.Hand hand) { public PlayerEatEvent(@NotNull Player player, @NotNull ItemStack foodItem, @NotNull Player.Hand hand) {
super(player); this.player = player;
this.foodItem = foodItem; this.foodItem = foodItem;
this.hand = hand; this.hand = hand;
} }
@ -31,4 +33,9 @@ public class PlayerEatEvent extends PlayerEvent {
public @NotNull Player.Hand getHand() { public @NotNull Player.Hand getHand() {
return hand; 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.Entity;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a {@link Player} interacts (right-click) with an {@link Entity}. * 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 Entity entityTarget;
private final Player.Hand hand; private final Player.Hand hand;
public PlayerEntityInteractEvent(@NotNull Player player, @NotNull Entity entityTarget, @NotNull Player.Hand hand) { public PlayerEntityInteractEvent(@NotNull Player player, @NotNull Entity entityTarget, @NotNull Player.Hand hand) {
super(player); this.player = player;
this.entityTarget = entityTarget; this.entityTarget = entityTarget;
this.hand = hand; this.hand = hand;
} }
@ -38,4 +40,9 @@ public class PlayerEntityInteractEvent extends PlayerEvent {
public Player.Hand getHand() { public Player.Hand getHand() {
return hand; 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.NotNull;
/** /**
* Called when the player swings his hand. * 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 final Player.Hand hand;
private boolean cancelled; private boolean cancelled;
public PlayerHandAnimationEvent(@NotNull Player player, @NotNull Player.Hand hand) { public PlayerHandAnimationEvent(@NotNull Player player, @NotNull Player.Hand hand) {
super(player); this.player = player;
this.hand = hand; this.hand = hand;
} }
@ -38,4 +40,9 @@ public class PlayerHandAnimationEvent extends PlayerEvent implements Cancellable
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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.NotNull;
/** /**
@ -10,14 +11,15 @@ import org.jetbrains.annotations.NotNull;
* *
* @see ItemAnimationType * @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 final ItemAnimationType armAnimationType;
private boolean cancelled; private boolean cancelled;
public PlayerItemAnimationEvent(@NotNull Player player, @NotNull ItemAnimationType armAnimationType) { public PlayerItemAnimationEvent(@NotNull Player player, @NotNull ItemAnimationType armAnimationType) {
super(player); this.player = player;
this.armAnimationType = armAnimationType; this.armAnimationType = armAnimationType;
} }
@ -31,6 +33,11 @@ public class PlayerItemAnimationEvent extends PlayerEvent implements Cancellable
return armAnimationType; return armAnimationType;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
public enum ItemAnimationType { public enum ItemAnimationType {
BOW, BOW,
CROSSBOW, CROSSBOW,

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 net.minestom.server.instance.Instance;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -16,12 +17,13 @@ import org.jetbrains.annotations.Nullable;
* <p> * <p>
* WARNING: defining the spawning instance is MANDATORY. * 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; private Instance spawningInstance;
public PlayerLoginEvent(@NotNull Player player) { 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) { public void setSpawningInstance(@NotNull Instance instance) {
this.spawningInstance = 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.utils.Position;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called when a player is modifying his position. * 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 Position newPosition;
private boolean cancelled; private boolean cancelled;
public PlayerMoveEvent(@NotNull Player player, @NotNull Position newPosition) { public PlayerMoveEvent(@NotNull Player player, @NotNull Position newPosition) {
super(player); this.player = player;
this.newPosition = newPosition; this.newPosition = newPosition;
} }
@ -48,4 +50,9 @@ public class PlayerMoveEvent extends PlayerEvent implements CancellableEvent {
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

@ -1,19 +1,21 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player send {@link net.minestom.server.network.packet.client.play.ClientPluginMessagePacket}. * 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 String identifier;
private final byte[] message; private final byte[] message;
public PlayerPluginMessageEvent(@NotNull Player player, @NotNull String identifier, @NotNull byte[] message) { public PlayerPluginMessageEvent(@NotNull Player player, @NotNull String identifier, @NotNull byte[] message) {
super(player); this.player = player;
this.identifier = identifier; this.identifier = identifier;
this.message = message; this.message = message;
} }
@ -47,4 +49,9 @@ public class PlayerPluginMessageEvent extends PlayerEvent {
public String getMessageString() { public String getMessageString() {
return new String(message); 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull; 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 * or to cancel its processing, cancelling the event means that the player will
* continue the animation indefinitely. * 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 ItemStack foodItem;
private final Player.Hand hand; private final Player.Hand hand;
private long eatingTime; private long eatingTime;
@ -20,7 +22,7 @@ public class PlayerPreEatEvent extends PlayerEvent implements CancellableEvent {
private boolean cancelled; private boolean cancelled;
public PlayerPreEatEvent(@NotNull Player player, @NotNull ItemStack foodItem, @NotNull Player.Hand hand, long eatingTime) { public PlayerPreEatEvent(@NotNull Player player, @NotNull ItemStack foodItem, @NotNull Player.Hand hand, long eatingTime) {
super(player); this.player = player;
this.foodItem = foodItem; this.foodItem = foodItem;
this.hand = hand; this.hand = hand;
this.eatingTime = eatingTime; this.eatingTime = eatingTime;
@ -68,4 +70,9 @@ public class PlayerPreEatEvent extends PlayerEvent implements CancellableEvent {
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

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

View File

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

View File

@ -1,16 +1,19 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called after the player signals the server that his settings has been modified. * 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) { 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.Player;
import net.minestom.server.entity.PlayerSkin; 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.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
/** /**
* Called at the player connection to initialize his skin. * 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; private PlayerSkin skin;
public PlayerSkinInitEvent(@NotNull Player player, @Nullable PlayerSkin currentSkin) { public PlayerSkinInitEvent(@NotNull Player player, @Nullable PlayerSkin currentSkin) {
super(player); this.player = player;
this.skin = currentSkin; this.skin = currentSkin;
} }
@ -36,4 +38,9 @@ public class PlayerSkinInitEvent extends PlayerEvent {
public void setSkin(@Nullable PlayerSkin skin) { public void setSkin(@Nullable PlayerSkin skin) {
this.skin = skin; this.skin = skin;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

@ -1,20 +1,22 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 net.minestom.server.instance.Instance;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called when a new instance is set for a player. * 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 Instance spawnInstance;
private final boolean firstSpawn; private final boolean firstSpawn;
public PlayerSpawnEvent(@NotNull Player player, @NotNull Instance spawnInstance, boolean firstSpawn) { public PlayerSpawnEvent(@NotNull Player player, @NotNull Instance spawnInstance, boolean firstSpawn) {
super(player); this.player = player;
this.spawnInstance = spawnInstance; this.spawnInstance = spawnInstance;
this.firstSpawn = firstSpawn; this.firstSpawn = firstSpawn;
} }
@ -37,4 +39,9 @@ public class PlayerSpawnEvent extends PlayerEvent {
public boolean isFirstSpawn() { public boolean isFirstSpawn() {
return firstSpawn; 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.utils.BlockPosition;
import org.jetbrains.annotations.NotNull; 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 because of high latency or a modified client) so cancelling {@link PlayerBlockBreakEvent} is also necessary.
* Could be fixed in future Minestom version. * 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 BlockPosition blockPosition;
private final int blockStateId; private final int blockStateId;
private final int customBlockId; private final int customBlockId;
@ -23,7 +25,7 @@ public class PlayerStartDiggingEvent extends PlayerEvent implements CancellableE
private boolean cancelled; private boolean cancelled;
public PlayerStartDiggingEvent(@NotNull Player player, @NotNull BlockPosition blockPosition, int blockStateId, int customBlockId) { public PlayerStartDiggingEvent(@NotNull Player player, @NotNull BlockPosition blockPosition, int blockStateId, int customBlockId) {
super(player); this.player = player;
this.blockPosition = blockPosition; this.blockPosition = blockPosition;
this.blockStateId = blockStateId; this.blockStateId = blockStateId;
this.customBlockId = customBlockId; this.customBlockId = customBlockId;
@ -66,4 +68,9 @@ public class PlayerStartDiggingEvent extends PlayerEvent implements CancellableE
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player start flying. * 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player starts sneaking. * 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player starts sprinting. * 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player stop flying. * 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player stops sneaking. * 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) { 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; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called when a player stops sprinting. * 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) { 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Called when a player is trying to swap his main and off hand item. * 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 mainHandItem;
private ItemStack offHandItem; private ItemStack offHandItem;
private boolean cancelled; private boolean cancelled;
public PlayerSwapItemEvent(@NotNull Player player, @NotNull ItemStack mainHandItem, @NotNull ItemStack offHandItem) { public PlayerSwapItemEvent(@NotNull Player player, @NotNull ItemStack mainHandItem, @NotNull ItemStack offHandItem) {
super(player); this.player = player;
this.mainHandItem = mainHandItem; this.mainHandItem = mainHandItem;
this.offHandItem = offHandItem; this.offHandItem = offHandItem;
} }
@ -69,4 +71,9 @@ public class PlayerSwapItemEvent extends PlayerEvent implements CancellableEvent
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

@ -1,15 +1,23 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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 org.jetbrains.annotations.NotNull;
/** /**
* Called at each player tick. * 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) { 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.entity.Player;
import net.minestom.server.event.CancellableEvent; 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 net.minestom.server.item.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Event when an item is used without clicking on a block. * 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 Player.Hand hand;
private final ItemStack itemStack; private final ItemStack itemStack;
private boolean cancelled; private boolean cancelled;
public PlayerUseItemEvent(@NotNull Player player, @NotNull Player.Hand hand, @NotNull ItemStack itemStack) { public PlayerUseItemEvent(@NotNull Player player, @NotNull Player.Hand hand, @NotNull ItemStack itemStack) {
super(player); this.player = player;
this.hand = hand; this.hand = hand;
this.itemStack = itemStack; this.itemStack = itemStack;
} }
@ -51,4 +53,9 @@ public class PlayerUseItemEvent extends PlayerEvent implements CancellableEvent
public void setCancelled(boolean cancel) { public void setCancelled(boolean cancel) {
this.cancelled = cancel; this.cancelled = cancel;
} }
@Override
public @NotNull Player getPlayer() {
return player;
}
} }

View File

@ -1,7 +1,8 @@
package net.minestom.server.event.player; package net.minestom.server.event.player;
import net.minestom.server.entity.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.item.ItemStack;
import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.BlockPosition;
import net.minestom.server.utils.Direction; 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). * 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 Player.Hand hand;
private final ItemStack itemStack; private final ItemStack itemStack;
private final BlockPosition position; private final BlockPosition position;
@ -20,7 +22,7 @@ public class PlayerUseItemOnBlockEvent extends PlayerEvent {
public PlayerUseItemOnBlockEvent(@NotNull Player player, @NotNull Player.Hand hand, public PlayerUseItemOnBlockEvent(@NotNull Player player, @NotNull Player.Hand hand,
@NotNull ItemStack itemStack, @NotNull ItemStack itemStack,
@NotNull BlockPosition position, @NotNull Direction blockFace) { @NotNull BlockPosition position, @NotNull Direction blockFace) {
super(player); this.player = player;
this.hand = hand; this.hand = hand;
this.itemStack = itemStack; this.itemStack = itemStack;
this.position = position; this.position = position;
@ -66,4 +68,9 @@ public class PlayerUseItemOnBlockEvent extends PlayerEvent {
public ItemStack getItemStack() { public ItemStack getItemStack() {
return itemStack; 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.ItemEntity;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.entity.damage.DamageType; import net.minestom.server.entity.damage.DamageType;
import net.minestom.server.event.Event;
import net.minestom.server.event.GlobalEventHandler; import net.minestom.server.event.GlobalEventHandler;
import net.minestom.server.event.entity.EntityAttackEvent; import net.minestom.server.event.entity.EntityAttackEvent;
import net.minestom.server.event.item.ItemDropEvent; import net.minestom.server.event.item.ItemDropEvent;
@ -136,20 +135,6 @@ public class PlayerInit {
// EVENT REGISTERING // EVENT REGISTERING
GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler(); 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 -> { globalEventHandler.addEventCallback(EntityAttackEvent.class, event -> {
final Entity source = event.getEntity(); final Entity source = event.getEntity();
final Entity entity = event.getTarget(); final Entity entity = event.getTarget();