From b79b958ca82c49a83def1f2f4e8f02fbf7ee7e9d Mon Sep 17 00:00:00 2001
From: Nik Gil <nikmanG@users.noreply.github.com>
Date: Mon, 1 Feb 2016 23:47:24 -0700
Subject: [PATCH] Made EntityDismountEvent Cancellable


diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index ef59b40..2da303f 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -33,6 +33,10 @@ import org.bukkit.event.entity.EntityPortalEvent;
 import org.bukkit.plugin.PluginManager;
 // CraftBukkit end
 
+// PaperSpigot start
+import org.spigotmc.event.entity.EntityDismountEvent;
+// PaperSpigot end
+
 public abstract class Entity implements ICommandListener {
 
     // CraftBukkit start
@@ -1576,7 +1580,11 @@ public abstract class Entity implements ICommandListener {
                     }
                 }
                 // CraftBukkit end
-                pluginManager.callEvent( new org.spigotmc.event.entity.EntityDismountEvent( this.getBukkitEntity(), this.vehicle.getBukkitEntity() ) ); // Spigot
+                // PaperSpigot start - make EntityDismountEvent cancellable
+                EntityDismountEvent dismountEvent = new EntityDismountEvent(this.getBukkitEntity(), this.vehicle.getBukkitEntity()); // Spigot
+                pluginManager.callEvent(dismountEvent);
+                if (dismountEvent.isCancelled()) return;
+                // PaperSpigot end
                 this.setPositionRotation(this.vehicle.locX, this.vehicle.getBoundingBox().b + (double) this.vehicle.length, this.vehicle.locZ, this.yaw, this.pitch);
                 this.vehicle.passenger = null;
             }
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 19a743c..c8b4e29 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -25,6 +25,11 @@ import org.bukkit.event.vehicle.VehicleExitEvent;
 
 import co.aikar.timings.SpigotTimings; // Spigot
 
+// PaperSpigot start
+import org.bukkit.Bukkit;
+import org.spigotmc.event.entity.EntityDismountEvent;
+// PaperSpigot end
+
 public abstract class EntityLiving extends Entity {
 
     private static final UUID a = UUID.fromString("662A6B8D-DA3E-4C1C-8813-96EA6097278D");
@@ -1709,8 +1714,12 @@ public abstract class EntityLiving extends Entity {
                 }
             }
             // CraftBukkit end
-            org.bukkit.Bukkit.getPluginManager().callEvent( new org.spigotmc.event.entity.EntityDismountEvent( this.getBukkitEntity(), this.vehicle.getBukkitEntity() ) ); // Spigot
-            
+            // PaperSpigot start - make dismountEvent cancellable
+            EntityDismountEvent dismountEvent = new EntityDismountEvent(this.getBukkitEntity(), this.vehicle.getBukkitEntity()); // Spigot
+            Bukkit.getPluginManager().callEvent(dismountEvent);
+            if (dismountEvent.isCancelled()) return;
+            // PaperSpigot end
+
             if (!this.world.isClientSide) {
                 this.q(this.vehicle);
             }
-- 
2.7.0.windows.2