summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authormd_5 <git@md-5.net>2017-01-04 10:53:07 +1100
committermd_5 <git@md-5.net>2017-01-04 10:53:07 +1100
commit7e19325845e2cb8bcd94f46b4cc9de8ce1ad54cc (patch)
treea6e4062e8a1af6b1ad1b91ac21a51e8b81c31ed3 /src/main/java
parentce89845fdaa23072fc014f4c09a3d155ee3f505e (diff)
downloadcraftbukkit-7e19325845e2cb8bcd94f46b4cc9de8ce1ad54cc.tar
craftbukkit-7e19325845e2cb8bcd94f46b4cc9de8ce1ad54cc.tar.gz
craftbukkit-7e19325845e2cb8bcd94f46b4cc9de8ce1ad54cc.tar.lz
craftbukkit-7e19325845e2cb8bcd94f46b4cc9de8ce1ad54cc.tar.xz
craftbukkit-7e19325845e2cb8bcd94f46b4cc9de8ce1ad54cc.zip
SPIGOT-2640: API for multiple passengers per entity
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 9fac33bd..c21e49b9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1,6 +1,8 @@
package org.bukkit.craftbukkit.entity;
+import com.google.common.base.Function;
import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@@ -331,13 +333,37 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
Preconditions.checkArgument(!this.equals(passenger), "Entity cannot ride itself.");
if (passenger instanceof CraftEntity) {
eject();
- ((CraftEntity) passenger).getHandle().startRiding(getHandle());
- return true;
+ return ((CraftEntity) passenger).getHandle().startRiding(getHandle());
} else {
return false;
}
}
+ @Override
+ public List<org.bukkit.entity.Entity> getPassengers() {
+ return Lists.newArrayList(Lists.transform(getHandle().passengers, new Function<Entity, org.bukkit.entity.Entity>() {
+ @Override
+ public org.bukkit.entity.Entity apply(Entity input) {
+ return input.getBukkitEntity();
+ }
+ }));
+ }
+
+ @Override
+ public boolean addPassenger(org.bukkit.entity.Entity passenger) {
+ Preconditions.checkArgument(passenger != null, "passenger == null");
+
+ return ((CraftEntity) passenger).getHandle().a(getHandle(), true);
+ }
+
+ @Override
+ public boolean removePassenger(org.bukkit.entity.Entity passenger) {
+ Preconditions.checkArgument(passenger != null, "passenger == null");
+
+ ((CraftEntity) passenger).getHandle().stopRiding();
+ return true;
+ }
+
public boolean isEmpty() {
return !getHandle().isVehicle();
}
@@ -347,7 +373,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return false;
}
- getPassenger().leaveVehicle();
+ getHandle().az(); // PAIL: rename
return true;
}