diff --git a/config/checkstyle/import-control.xml b/config/checkstyle/import-control.xml index 67834249..bf5dc55c 100644 --- a/config/checkstyle/import-control.xml +++ b/config/checkstyle/import-control.xml @@ -30,6 +30,7 @@ + diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java index b0cccc7a..d1f78589 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java @@ -25,6 +25,7 @@ import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; +import io.papermc.lib.PaperLib; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Entity; @@ -40,6 +41,7 @@ import org.bukkit.event.vehicle.VehicleEnterEvent; import org.bukkit.plugin.PluginManager; import org.bukkit.util.Vector; +import org.spigotmc.event.entity.EntityMountEvent; public class PlayerMoveListener implements Listener { @@ -53,6 +55,9 @@ public void registerEvents() { if (WorldGuard.getInstance().getPlatform().getGlobalStateManager().usePlayerMove) { PluginManager pm = plugin.getServer().getPluginManager(); pm.registerEvents(this, plugin); + if (PaperLib.isSpigot()) { + pm.registerEvents(new EntityMountListener(), plugin); + } } } @@ -145,4 +150,18 @@ public void onPlayerQuit(PlayerQuitEvent event) { player.teleport(BukkitAdapter.adapt(loc)); } } + + private class EntityMountListener implements Listener { + @EventHandler + public void onEntityMount(EntityMountEvent event) { + Entity entity = event.getEntity(); + if (entity instanceof Player) { + LocalPlayer player = plugin.wrapPlayer((Player) entity); + Session session = WorldGuard.getInstance().getPlatform().getSessionManager().get(player); + if (null != session.testMoveTo(player, BukkitAdapter.adapt(event.getMount().getLocation()), MoveType.EMBARK, true)) { + event.setCancelled(true); + } + } + } + } }