Program: 20031
Project: 20031
Buggy source:
@Override public void onPlayerToggleSneak(PlayerToggleSneakEvent event){
  Player player=event.getPlayer();
  if (player.isSneaking()) {
    Material playerBoots=Util.getPlayerBoots(player);
    if (Material.DIAMOND_BOOTS.equals(playerBoots) && permissions.canUseDiamondBoots(player)) {
      Vector playerDirection=player.getLocation().getDirection();
      playerDirection.multiply(0.5);
      playerDirection.setY(0.6);
      player.setVelocity(playerDirection);
    }
 else     if (Material.IRON_BOOTS.equals(playerBoots) && permissions.canUseIronBoots(player)) {
      List<Entity> nearbyEntities=player.getNearbyEntities(12,5,12);
      Location playerLocation=player.getLocation();
      for (      Entity entity : nearbyEntities) {
        if (entity instanceof Player && !permissions.canLaunchPlayers(player))         continue;
        Location entityLocation=entity.getLocation();
        double dX=entityLocation.getX() - playerLocation.getX();
        double dZ=entityLocation.getZ() - playerLocation.getZ();
        double angle=Math.atan(dZ / dX);
        double angleDegrees=Math.toDegrees(angle);
        int speed=2;
        double speedX=speed * Math.cos(angleDegrees);
        double speedZ=speed * Math.sin(angleDegrees);
        if (dX < 0)         speedX*=-1.0;
        if (dZ < 0)         speedZ*=-1.0;
        Vector entityVelocity=entity.getVelocity();
        entityVelocity.setX(speedX);
        entityVelocity.setZ(speedZ);
        entityVelocity.setY(0.7);
        entity.setVelocity(entityVelocity);
      }
    }
  }
}

Fixed version (ground truth):
@Override public void onPlayerToggleSneak(PlayerToggleSneakEvent event){
  Player player=event.getPlayer();
  if (player.isSneaking()) {
    Material playerBoots=Util.getPlayerBoots(player);
    if (Material.DIAMOND_BOOTS.equals(playerBoots) && permissions.canUseDiamondBoots(player)) {
      Vector playerDirection=player.getLocation().getDirection();
      playerDirection.multiply(0.5);
      playerDirection.setY(0.6);
      player.setVelocity(playerDirection);
    }
 else     if (Material.IRON_BOOTS.equals(playerBoots) && permissions.canUseIronBoots(player)) {
      List<Entity> nearbyEntities=player.getNearbyEntities(12,5,12);
      Location playerLocation=player.getLocation();
      for (      Entity entity : nearbyEntities) {
        if (entity instanceof Player && !permissions.canLaunchPlayers(player))         continue;
 else         if (!(entity instanceof LivingEntity))         continue;
        Location entityLocation=entity.getLocation();
        double dX=entityLocation.getX() - playerLocation.getX();
        double dZ=entityLocation.getZ() - playerLocation.getZ();
        double angle=Math.atan(dZ / dX);
        double angleDegrees=Math.toDegrees(angle);
        int speed=2;
        double speedX=speed * Math.cos(angleDegrees);
        double speedZ=speed * Math.sin(angleDegrees);
        if (dX < 0)         speedX*=-1.0;
        if (dZ < 0)         speedZ*=-1.0;
        Vector entityVelocity=entity.getVelocity();
        entityVelocity.setX(speedX);
        entityVelocity.setZ(speedZ);
        entityVelocity.setY(0.7);
        entity.setVelocity(entityVelocity);
      }
    }
  }
}