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); + } +}