Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-16 11:30:06 +01:00
95 Zeilen
3.9 KiB
Diff
95 Zeilen
3.9 KiB
Diff
From f793fd756eb3639cd221fa0c11a6205dc0339cc3 Mon Sep 17 00:00:00 2001
|
|
From: TheCryoknight <thecryoknight1@gmail.com>
|
|
Date: Wed, 20 Mar 2013 12:20:30 -0500
|
|
Subject: [PATCH] Adds BUKKIT-3821 - Fires vehicle events for saddled pigs
|
|
|
|
---
|
|
src/main/java/net/minecraft/server/EntityPig.java | 52 ++++++++++++++++++++++-
|
|
1 file changed, 51 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java
|
|
index e9fe7cf..9c9af40 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPig.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPig.java
|
|
@@ -1,6 +1,15 @@
|
|
package net.minecraft.server;
|
|
|
|
-import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
|
+//CraftBukkit start
|
|
+import org.bukkit.Location;
|
|
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
|
+import org.bukkit.entity.Vehicle;
|
|
+import org.bukkit.event.vehicle.VehicleCreateEvent;
|
|
+import org.bukkit.event.vehicle.VehicleDestroyEvent;
|
|
+import org.bukkit.event.vehicle.VehicleEnterEvent;
|
|
+import org.bukkit.event.vehicle.VehicleMoveEvent;
|
|
+import org.bukkit.event.vehicle.VehicleUpdateEvent;
|
|
+//CraftBukkit end
|
|
|
|
public class EntityPig extends EntityAnimal {
|
|
|
|
@@ -78,6 +87,13 @@ public class EntityPig extends EntityAnimal {
|
|
if (super.a_(entityhuman)) {
|
|
return true;
|
|
} else if (this.hasSaddle() && !this.world.isStatic && (this.passenger == null || this.passenger == entityhuman)) {
|
|
+ // CraftBukkit start
|
|
+ VehicleEnterEvent enterEvent = new VehicleEnterEvent((Vehicle) this.getBukkitEntity(), entityhuman.getBukkitEntity());
|
|
+ this.world.getServer().getPluginManager().callEvent(enterEvent);
|
|
+ if (enterEvent.isCancelled()) {
|
|
+ return false;
|
|
+ }
|
|
+ // CraftBukkit end
|
|
entityhuman.mount(this);
|
|
return true;
|
|
} else {
|
|
@@ -117,7 +133,17 @@ public class EntityPig extends EntityAnimal {
|
|
public void setSaddle(boolean flag) {
|
|
if (flag) {
|
|
this.datawatcher.watch(16, Byte.valueOf((byte) 1));
|
|
+ this.world.getServer().getPluginManager().callEvent(new VehicleCreateEvent((Vehicle) this.getBukkitEntity())); // CraftBukkit
|
|
} else {
|
|
+ // CraftBukkit start
|
|
+ Vehicle vehicle = (Vehicle) this.getBukkitEntity();
|
|
+ VehicleDestroyEvent destroyEvent = new VehicleDestroyEvent(vehicle, passenger.getBukkitEntity());
|
|
+ this.world.getServer().getPluginManager().callEvent(destroyEvent);
|
|
+
|
|
+ if (destroyEvent.isCancelled()) {
|
|
+ return;
|
|
+ }
|
|
+ // CraftBukkit end
|
|
this.datawatcher.watch(16, Byte.valueOf((byte) 0));
|
|
}
|
|
}
|
|
@@ -161,4 +187,28 @@ public class EntityPig extends EntityAnimal {
|
|
public EntityAgeable createChild(EntityAgeable entityageable) {
|
|
return this.b(entityageable);
|
|
}
|
|
+
|
|
+ // CraftBukkit start
|
|
+ public void l_() {
|
|
+ final double prevX = this.locX;
|
|
+ final double prevY = this.locY;
|
|
+ final double prevZ = this.locZ;
|
|
+ final float prevYaw = this.yaw;
|
|
+ final float prevPitch = this.pitch;
|
|
+
|
|
+ super.l_();
|
|
+
|
|
+ if (this.passenger != null && this.hasSaddle()) {
|
|
+ final org.bukkit.World bukkitWorld = this.world.getWorld();
|
|
+ final Location fromLoc = new Location(bukkitWorld, prevX, prevY, prevZ, prevYaw, prevPitch);
|
|
+ final Location toLoc = new Location(bukkitWorld, this.locX, this.locY, this.locZ, this.yaw, this.pitch);
|
|
+ final Vehicle vehicle = (Vehicle) this.getBukkitEntity();
|
|
+
|
|
+ this.world.getServer().getPluginManager().callEvent(new VehicleUpdateEvent(vehicle));
|
|
+ if (!fromLoc.equals(toLoc)) {
|
|
+ this.world.getServer().getPluginManager().callEvent(new VehicleMoveEvent(vehicle, fromLoc, toLoc));
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ // CraftBukkit end
|
|
}
|
|
--
|
|
1.8.1-rc2
|
|
|