aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0139-Vehicle-Event-Cancellation-Changes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0139-Vehicle-Event-Cancellation-Changes.patch')
-rw-r--r--Spigot-Server-Patches/0139-Vehicle-Event-Cancellation-Changes.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0139-Vehicle-Event-Cancellation-Changes.patch b/Spigot-Server-Patches/0139-Vehicle-Event-Cancellation-Changes.patch
new file mode 100644
index 0000000000..a73b6c1723
--- /dev/null
+++ b/Spigot-Server-Patches/0139-Vehicle-Event-Cancellation-Changes.patch
@@ -0,0 +1,94 @@
+From 7c0576f1a381b34355c782f0cb34303143d7ca98 Mon Sep 17 00:00:00 2001
+From: Zach Brown <[email protected]>
+Date: Fri, 22 Apr 2016 18:20:05 -0500
+Subject: [PATCH] Vehicle Event Cancellation Changes
+
+
+diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
+index b2dc764..2374a35 100644
+--- a/src/main/java/net/minecraft/server/Entity.java
++++ b/src/main/java/net/minecraft/server/Entity.java
+@@ -1658,6 +1658,10 @@ public abstract class Entity implements ICommandListener {
+ }
+
+ public boolean a(Entity entity, boolean flag) {
++ return this.mountEntity(entity, flag, false); // Paper - forward
++ }
++
++ public boolean mountEntity(Entity entity, boolean flag, boolean suppressEvents) { // Paper
+ if (!flag && (!this.n(entity) || !entity.q(this))) {
+ return false;
+ } else {
+@@ -1666,7 +1670,7 @@ public abstract class Entity implements ICommandListener {
+ }
+
+ this.at = entity;
+- this.at.o(this);
++ this.at.addRider(this, suppressEvents); // Paper
+ return true;
+ }
+ }
+@@ -1693,12 +1697,20 @@ public abstract class Entity implements ICommandListener {
+ }
+
+ protected void o(Entity entity) {
++ // Paper start - Forward
++ this.addRider(entity, false);
++ }
++
++ private void addRider(Entity entity, boolean suppressEvents) {
++ // Paper end
+ if (entity.bz() != this) {
+ throw new IllegalStateException("Use x.startRiding(y), not y.addPassenger(x)");
+ } else {
+ // CraftBukkit start
+ com.google.common.base.Preconditions.checkState(!entity.passengers.contains(this), "Circular entity riding! %s %s", this, entity);
+
++ if (!suppressEvents) { // Paper - Make event calls suppressible
++ // =============================================================
+ CraftEntity craft = (CraftEntity) entity.getBukkitEntity().getVehicle();
+ Entity orig = craft == null ? null : craft.getHandle();
+ if (getBukkitEntity() instanceof Vehicle && entity.getBukkitEntity() instanceof LivingEntity && entity.world.isChunkLoaded((int) entity.locX >> 4, (int) entity.locZ >> 4, false)) { // Boolean not used
+@@ -1721,6 +1733,8 @@ public abstract class Entity implements ICommandListener {
+ return;
+ }
+ // Spigot end
++ // =============================================================
++ } // Paper - end suppressible block
+ if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.bu() instanceof EntityHuman)) {
+ this.passengers.add(0, entity);
+ } else {
+@@ -1746,16 +1760,29 @@ public abstract class Entity implements ICommandListener {
+ CraftEntity craftn = (CraftEntity) entity.getBukkitEntity().getVehicle();
+ Entity n = craftn == null ? null : craftn.getHandle();
+ if (event.isCancelled() || n != orig) {
++ this.cancelDismount(entity); // Paper
+ return;
+ }
+ }
+ // CraftBukkit end
+- Bukkit.getPluginManager().callEvent( new org.spigotmc.event.entity.EntityDismountEvent(entity.getBukkitEntity(), this.getBukkitEntity())); // Spigot
++ // Paper start - make EntityDismountEvent cancellable
++ if (!new org.spigotmc.event.entity.EntityDismountEvent(entity.getBukkitEntity(), this.getBukkitEntity()).callEvent()) {
++ this.cancelDismount(entity);
++ return;
++ }
++ // Paper end
+ this.passengers.remove(entity);
+ entity.j = 60;
+ }
+ }
+
++ // Paper start
++ private void cancelDismount(Entity dismounter) {
++ this.passengers.remove(dismounter);
++ dismounter.mountEntity(this, false, true);
++ }
++ // Paper end
++
+ protected boolean q(Entity entity) {
+ return this.bv().size() < 1;
+ }
+--
+2.7.4 (Apple Git-66)
+