private static void doPlayer(EntityPlayerMP player, VoteEvent vote) {
    if (!ConfigServerVote.msgAll.equals("")) {
      player.playerNetServerHandler.sendPacket(
          new S02PacketChat(
              new ChatComponentText(
                  ChatOutputHandler.formatColors(
                      ConfigServerVote.msgAll
                          .replaceAll("%service", vote.serviceName)
                          .replaceAll("%player", vote.player)))));
    }

    if (!ConfigServerVote.msgVoter.equals("")) {
      ChatOutputHandler.sendMessage(
          player,
          ChatOutputHandler.formatColors(
              ConfigServerVote.msgAll
                  .replaceAll("%service", vote.serviceName)
                  .replaceAll("%player", vote.player)));
    }

    if (!ConfigServerVote.freeStuff.isEmpty()) {
      for (ItemStack stack : ConfigServerVote.freeStuff) {
        LoggingHandler.felog.debug(stack.toString());
        player.inventory.addItemStackToInventory(stack.copy());
      }
    }
  }
  public static void teleport(EntityPlayerMP player, WarpPoint point) {
    if (point.getWorld() == null) {
      DimensionManager.initDimension(point.getDimension());
      if (point.getWorld() == null) {
        ChatOutputHandler.chatError(
            player, Translator.translate("Unable to teleport! Target dimension does not exist"));
        return;
      }
    }

    // Check permissions
    UserIdent ident = UserIdent.get(player);
    if (!APIRegistry.perms.checkPermission(player, TELEPORT_FROM))
      throw new TranslatedCommandException("You are not allowed to teleport from here.");
    if (!APIRegistry.perms.checkUserPermission(ident, point.toWorldPoint(), TELEPORT_TO))
      throw new TranslatedCommandException("You are not allowed to teleport to that location.");
    if (player.dimension != point.getDimension()
        && !APIRegistry.perms.checkUserPermission(ident, point.toWorldPoint(), TELEPORT_CROSSDIM))
      throw new TranslatedCommandException("You are not allowed to teleport across dimensions.");

    // Get and check teleport cooldown
    int teleportCooldown =
        ServerUtil.parseIntDefault(
                APIRegistry.perms.getUserPermissionProperty(ident, TELEPORT_COOLDOWN), 0)
            * 1000;
    if (teleportCooldown > 0) {
      PlayerInfo pi = PlayerInfo.get(player);
      long cooldownDuration =
          (pi.getLastTeleportTime() + teleportCooldown) - System.currentTimeMillis();
      if (cooldownDuration >= 0) {
        ChatOutputHandler.chatNotification(
            player,
            Translator.format("Cooldown still active. %d seconds to go.", cooldownDuration / 1000));
        return;
      }
    }

    // Get and check teleport warmup
    int teleportWarmup =
        ServerUtil.parseIntDefault(
            APIRegistry.perms.getUserPermissionProperty(ident, TELEPORT_WARMUP), 0);
    if (teleportWarmup <= 0) {
      checkedTeleport(player, point);
      return;
    }

    if (!canTeleportTo(point)) {
      ChatOutputHandler.chatError(
          player, Translator.translate("Unable to teleport! Target location obstructed."));
      return;
    }

    // Setup timed teleport
    tpInfos.put(player.getPersistentID(), new TeleportInfo(player, point, teleportWarmup * 1000));
    ChatOutputHandler.chatNotification(
        player,
        Translator.format(
            "Teleporting. Please stand still for %s.",
            ChatOutputHandler.formatTimeDurationReadable(teleportWarmup, true)));
  }
 public boolean check() {
   if (playerPos.distance(new WarpPoint(player)) > 0.2) {
     ChatOutputHandler.chatWarning(player, "Teleport cancelled.");
     return true;
   }
   if (System.currentTimeMillis() - start < timeout) {
     return false;
   }
   checkedTeleport(player, point);
   ChatOutputHandler.chatConfirmation(player, "Teleported.");
   return true;
 }
  @Override
  public void processCommandPlayer(EntityPlayerMP player, String[] args) {
    /*if (!PlayerInfo.get(player).getHasFEClient())
    {
        ChatOutputHandler.chatError(player, "You need the FE client addon to use this command.");
        ChatOutputHandler.chatError(player, "Please visit https://github.com/ForgeEssentials/ForgeEssentialsMain/wiki/FE-Client-mod for more information.");
        return;
    }*/

    ChatOutputHandler.chatWarning(
        player, "Here be dragons. Proceed at own risk. Use /speed reset to reset your speed..");
    if (args.length >= 1) {
      // float speed = Float.parseFloat(args[0]);

      if (args[0].equals("reset")) {
        ChatOutputHandler.chatNotification(player, "Resetting speed to regular walking speed.");
        // NetworkUtils.netHandler.sendTo(new Packet6Speed(0.0F), player);
        NBTTagCompound tagCompound = new NBTTagCompound();
        player.capabilities.writeCapabilitiesToNBT(tagCompound);
        tagCompound.getCompoundTag("abilities").setTag("flySpeed", new NBTTagFloat(0.05F));
        tagCompound.getCompoundTag("abilities").setTag("walkSpeed", new NBTTagFloat(0.1F));
        player.capabilities.readCapabilitiesFromNBT(tagCompound);
        player.sendPlayerAbilities();
        return;
      }

      float speed = 0.05F;

      int multiplier = parseInt(player, args[0]);

      if (multiplier >= 10) {
        ChatOutputHandler.chatWarning(
            player,
            "Multiplier set too high. Bad things may happen, so we're throttling your speed to 10x walking speed.");
        multiplier = 10;
      }
      speed = speed * multiplier;
      NBTTagCompound tagCompound = new NBTTagCompound();
      player.capabilities.writeCapabilitiesToNBT(tagCompound);
      tagCompound.getCompoundTag("abilities").setTag("flySpeed", new NBTTagFloat(speed));
      tagCompound.getCompoundTag("abilities").setTag("walkSpeed", new NBTTagFloat(speed));
      player.capabilities.readCapabilitiesFromNBT(tagCompound);
      player.sendPlayerAbilities();

      ChatOutputHandler.chatNotification(player, "Walk/fly speed set to " + speed);
      // NetworkUtils.netHandler.sendTo(new Packet6Speed(speed), player);
    }
  }
  public static void checkedTeleport(EntityPlayerMP player, WarpPoint point) {
    if (!canTeleportTo(point)) {
      ChatOutputHandler.chatError(
          player, Translator.translate("Unable to teleport! Target location obstructed."));
      return;
    }

    PlayerInfo pi = PlayerInfo.get(player);
    pi.setLastTeleportOrigin(new WarpPoint(player));
    pi.setLastTeleportTime(System.currentTimeMillis());
    pi.setLastDeathLocation(null);

    doTeleport(player, point);
  }
 @Override
 public void error(String message) {
   if (!isTabCompletion) ChatOutputHandler.chatError(sender, "Error: " + message);
 }