/**
  * Gets the Collision Mode for colliding with the Entity specified
  *
  * @param entity to collide with
  * @return Collision Mode
  */
 public CollisionMode getCollisionMode(Entity entity) {
   if (!this.getColliding() || entity.isDead()) {
     return CollisionMode.CANCEL;
   }
   MinecartMember<?> member = MinecartMemberStore.get(entity);
   if (member != null) {
     if (this.trainCollision == CollisionMode.LINK) {
       if (member.getGroup().getProperties().trainCollision == CollisionMode.LINK) {
         return CollisionMode.LINK;
       } else {
         return CollisionMode.CANCEL;
       }
     } else {
       return this.trainCollision;
     }
   } else if (entity instanceof Player) {
     if (TrainCarts.collisionIgnoreOwners && this.playerCollision != CollisionMode.DEFAULT) {
       if (TrainCarts.collisionIgnoreGlobalOwners) {
         if (CartProperties.hasGlobalOwnership((Player) entity)) {
           return CollisionMode.DEFAULT;
         }
       }
       if (this.hasOwnership((Player) entity)) {
         return CollisionMode.DEFAULT;
       }
     }
     return this.playerCollision;
   } else if (EntityUtil.isMob(entity)) {
     return this.mobCollision;
   } else {
     return this.miscCollision;
   }
 }
 public static MinecartMember get(Object o) {
   if (o == null) return null;
   if (o instanceof UUID) {
     o = findByID((UUID) o);
     if (o == null) return null;
   }
   if (o instanceof Minecart) {
     o = EntityUtil.getNative((Minecart) o);
   }
   if (o instanceof MinecartMember) {
     return (MinecartMember) o;
   } else {
     return null;
   }
 }
 public static MinecartMember convert(Object o) {
   if (o == null) return null;
   if (o instanceof UUID) {
     o = findByID((UUID) o);
     if (o == null) return null;
   }
   if (o instanceof Minecart) {
     o = EntityUtil.getNative((Minecart) o);
   }
   if (o instanceof MinecartMember) {
     return (MinecartMember) o;
   }
   if (!o.getClass().equals(EntityMinecart.class)) {
     return null;
   }
   EntityMinecart em = (EntityMinecart) o;
   if (em.dead) return null; // prevent conversion of dead entities
   // not found, conversion allowed?
   if (denyConversion) return null;
   // convert
   MinecartMember mm = new MinecartMember(em.world, em.lastX, em.lastY, em.lastZ, em.type);
   replaceMinecarts(em, mm);
   return mm;
 }