From 34d428be10ecab6de5dd95bed214df8510723869 Mon Sep 17 00:00:00 2001 From: R0bbyYT Date: Fri, 14 May 2021 18:35:09 +0200 Subject: [PATCH] Start with the elytra implementation --- .../net/minestom/server/entity/LivingEntity.java | 8 ++++++++ .../player/PlayerStartFlyingWithElytraEvent.java | 12 ++++++++++++ .../server/listener/EntityActionListener.java | 13 +++++++++---- 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index 1c9a27c7b..0613e5347 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -595,6 +595,14 @@ public class LivingEntity extends Entity implements EquipmentHandler { } } + public boolean isFlyingWithElytra() { + return this.entityMeta.isFlyingWithElytra(); + } + + public void setFlyingWithElytra(boolean isFlying) { + this.entityMeta.setFlyingWithElytra(isFlying); + } + /** * Used to change the {@code isDead} internal field. * diff --git a/src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java b/src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java new file mode 100644 index 000000000..28ca41575 --- /dev/null +++ b/src/main/java/net/minestom/server/event/player/PlayerStartFlyingWithElytraEvent.java @@ -0,0 +1,12 @@ +package net.minestom.server.event.player; + +import net.minestom.server.entity.Player; +import net.minestom.server.event.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +public class PlayerStartFlyingWithElytraEvent extends PlayerEvent { + + public PlayerStartFlyingWithElytraEvent(@NotNull Player player) { + super(player); + } +} diff --git a/src/main/java/net/minestom/server/listener/EntityActionListener.java b/src/main/java/net/minestom/server/listener/EntityActionListener.java index e99cffc75..dea235c90 100644 --- a/src/main/java/net/minestom/server/listener/EntityActionListener.java +++ b/src/main/java/net/minestom/server/listener/EntityActionListener.java @@ -1,10 +1,7 @@ package net.minestom.server.listener; import net.minestom.server.entity.Player; -import net.minestom.server.event.player.PlayerStartSneakingEvent; -import net.minestom.server.event.player.PlayerStartSprintingEvent; -import net.minestom.server.event.player.PlayerStopSneakingEvent; -import net.minestom.server.event.player.PlayerStopSprintingEvent; +import net.minestom.server.event.player.*; import net.minestom.server.network.packet.client.play.ClientEntityActionPacket; public class EntityActionListener { @@ -24,6 +21,9 @@ public class EntityActionListener { case STOP_SPRINTING: EntityActionListener.setSprinting(player, false); break; + case START_FLYING_ELYTRA: + EntityActionListener.startFlyingElytra(player); + break; // TODO do remaining actions } } @@ -55,4 +55,9 @@ public class EntityActionListener { } } } + + private static void startFlyingElytra(Player player) { + player.setFlyingWithElytra(true); + player.callEvent(PlayerStartFlyingWithElytraEvent.class, new PlayerStartFlyingWithElytraEvent(player)); + } }