From ef99403c2e61ac21a1c5b2d12a9ad5b6ddc7ba4e Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 17 Feb 2024 09:53:12 +0100 Subject: [PATCH] Added TeleportEvent and updated event registration The update introduces a new TeleportEvent which modifies teleport behavior for players who are mounted by dismounting them and changing their teleport location to be one higher. Also, the event registration process within the PlayerUtils class has been refactored for better readability and additional registration of the new TeleportEvent. --- .../com/alttd/playerutils/PlayerUtils.java | 8 ++++-- .../event_listeners/TeleportEvent.java | 27 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/alttd/playerutils/event_listeners/TeleportEvent.java diff --git a/src/main/java/com/alttd/playerutils/PlayerUtils.java b/src/main/java/com/alttd/playerutils/PlayerUtils.java index 651e524..6393273 100644 --- a/src/main/java/com/alttd/playerutils/PlayerUtils.java +++ b/src/main/java/com/alttd/playerutils/PlayerUtils.java @@ -5,8 +5,10 @@ import com.alttd.playerutils.commands.playerutils_subcommands.RotateBlock; import com.alttd.playerutils.config.Config; import com.alttd.playerutils.config.Messages; import com.alttd.playerutils.event_listeners.RotateBlockEvent; +import com.alttd.playerutils.event_listeners.TeleportEvent; import com.alttd.playerutils.event_listeners.XpBottleEvent; import com.alttd.playerutils.util.Logger; +import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public final class PlayerUtils extends JavaPlugin { @@ -31,10 +33,12 @@ public final class PlayerUtils extends JavaPlugin { } private void registerEvents() { - getServer().getPluginManager().registerEvents(new XpBottleEvent(this, logger), this); + PluginManager pluginManager = getServer().getPluginManager(); + pluginManager.registerEvents(new XpBottleEvent(this, logger), this); + pluginManager.registerEvents(new TeleportEvent(), this); RotateBlockEvent rotateBlockEvent = new RotateBlockEvent(); - getServer().getPluginManager().registerEvents(rotateBlockEvent, this); + pluginManager.registerEvents(rotateBlockEvent, this); playerUtilsCommand.addSubCommand(new RotateBlock(rotateBlockEvent)); } diff --git a/src/main/java/com/alttd/playerutils/event_listeners/TeleportEvent.java b/src/main/java/com/alttd/playerutils/event_listeners/TeleportEvent.java new file mode 100644 index 0000000..58620b3 --- /dev/null +++ b/src/main/java/com/alttd/playerutils/event_listeners/TeleportEvent.java @@ -0,0 +1,27 @@ +package com.alttd.playerutils.event_listeners; + +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerTeleportEvent; + +public class TeleportEvent implements Listener { + + /** + * Modifies teleport behavior for mounted players by dismounting them + * and changing their teleport location to location + 1y + * + * @param event the PlayerTeleportEvent being triggered + */ + @EventHandler() + public void modifyTeleportForMountedPlayers(PlayerTeleportEvent event) { + Player player = event.getPlayer(); + if (player.getVehicle() == null) + return; + player.getVehicle().removePassenger(player); + Location eventTo = event.getTo(); + eventTo.setY(eventTo.getBlockY() + 1); + event.setTo(eventTo); + } +}