PandaLib/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/EntityStackUtil.java

50 lines
1.4 KiB
Java

package fr.pandacube.lib.paper.util;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
/**
* Utility class to handle stacks of entities. A stack an entity is when an entity is mounting onto another one.
* For instance, a player mounting a horse. We also say that the horse is the vehicle of the player.
*/
public class EntityStackUtil {
/**
* Teleport a stack of entity, all at once.
*
* @param e An entity that is part of the stack to teleport.
* @param l The location where to send the entity stack.
* @deprecated This method has not been tested since a long time ago.
*/
@Deprecated
public static void teleportStack(Entity e, Location l) {
// on se place sur l'entité tout en bas de la pile
Entity entTemp = e;
while (entTemp.getVehicle() != null)
entTemp = entTemp.getVehicle();
/* La possibilité d'avoir plusieurs passagers sur une entité rend le code
* commenté qui suit invalide. On le remplace temporairement (voire
* définitivement si ça suffit) par le code encore en dessous
List<Entity> stack = new ArrayList<>();
do {
stack.add(entTemp);
entTemp = entTemp.getPassenger();
} while (entTemp != null);
if (stack.size() == 1) {
stack.get(0).teleport(l);
return;
}
stack.get(0).eject();
stack.get(0).teleport(l);
stack.get(0).setPassenger(stack.get(1));
*/
entTemp.teleport(l); // entTemp est l'entité le plus en bas de la "pile" d'entité
}
}