Example #1
0
  @Override
  public void execute(Player admin, String... params) {
    if (params == null || params.length < 1) {
      onFail(admin, null);
      return;
    }

    VisibleObject target = admin.getTarget();
    Player player;

    if (target == null) player = admin;
    else player = (Player) target;

    if (params[0].equals("reset")) {
      PlayerAppearance savedPlayerAppearance = player.getSavedPlayerAppearance();

      if (savedPlayerAppearance == null) {
        PacketSendUtility.sendMessage(admin, "The target has already the normal appearance.");
        return;
      }

      // Edit the current player's appearance with the saved player's appearance
      player.setPlayerAppearance(savedPlayerAppearance);

      // See line 44
      player.setSavedPlayerAppearance(null);

      // Warn the player
      PacketSendUtility.sendMessage(player, "An admin has resetted your appearance.");

      // Send update packets
      TeleportService2.teleportTo(
          player,
          player.getWorldId(),
          player.getInstanceId(),
          player.getX(),
          player.getY(),
          player.getZ(),
          player.getHeading());

      return;
    }

    if (params.length < 2) {
      onFail(player, null);
      return;
    }

    // Get the current player's appearance
    PlayerAppearance playerAppearance = player.getPlayerAppearance();

    // Save a clean player's appearance
    if (player.getSavedPlayerAppearance() == null)
      player.setSavedPlayerAppearance((PlayerAppearance) playerAppearance.clone());

    if (params[0].equals("size")) // Edit player's size. Min: 0, Max: 50 (prevent bug)
    {
      float height;

      try {
        height = Float.parseFloat(params[1]);
      } catch (NumberFormatException e) {
        PacketSendUtility.sendMessage(admin, "The value must be a number !");
        onFail(player, e.getMessage());
        return;
      }

      if (height < 0 || height > 50) {
        PacketSendUtility.sendMessage(admin, "Size: Min value : 0 - Max value : 50");
        return;
      }

      // Edit the height
      playerAppearance.setHeight(height);
    } else if (params[0].equals("voice")) // Min: 0, Max: 3
    {
      int voice;

      try {
        voice = Integer.parseInt(params[1]);
      } catch (NumberFormatException e) {
        PacketSendUtility.sendMessage(admin, "The value must be a number !");
        onFail(player, e.getMessage());
        return;
      }

      if (voice < 0 || voice > 3) {
        PacketSendUtility.sendMessage(admin, "Voice: Min value : 0 - Max value : 3");
        return;
      }

      // Edit the voice
      playerAppearance.setVoice(voice);
    } else if (params[0].equals("hair")) // Min: 1, Max: 43
    {
      int hair;

      try {
        hair = Integer.parseInt(params[1]);
      } catch (NumberFormatException e) {
        PacketSendUtility.sendMessage(admin, "The value must be a number !");
        onFail(player, e.getMessage());
        return;
      }

      if (hair < 1 || hair > 43) {
        PacketSendUtility.sendMessage(admin, "Hair: Min value : 1 - Max value : 43");
        return;
      }

      // Edit the hair
      playerAppearance.setHair(hair);
    } else if (params[0].equals("face")) // Min: 1, Max: 24
    {
      int face;

      try {
        face = Integer.parseInt(params[1]);
      } catch (NumberFormatException e) {
        PacketSendUtility.sendMessage(admin, "The value must be a number !");
        onFail(player, e.getMessage());
        return;
      }

      if (face < 1 || face > 24) {
        PacketSendUtility.sendMessage(admin, "Face: Min value : 1 - Max value : 24");
        return;
      }

      // Edit the face
      playerAppearance.setFace(face);
    } else if (params[0].equals("deco")) // Min: 1, Max: 18
    {
      int deco;

      try {
        deco = Integer.parseInt(params[1]);
      } catch (NumberFormatException e) {
        PacketSendUtility.sendMessage(admin, "The value must be a number !");
        onFail(player, e.getMessage());
        return;
      }

      if (deco < 1 || deco > 18) {
        PacketSendUtility.sendMessage(admin, "Deco: Min value : 1 - Max value : 18");
        return;
      }

      // Edit the deco
      playerAppearance.setDeco(deco);
    } else if (params[0].equals("head_size")) // Min: 0, Max: 100
    {
      int head;

      try {
        head = Integer.parseInt(params[1]);
      } catch (NumberFormatException e) {
        PacketSendUtility.sendMessage(admin, "The value must be a number !");
        onFail(player, e.getMessage());
        return;
      }

      if (head < 0 || head > 100) {
        PacketSendUtility.sendMessage(admin, "Head Size: Min value : 0 - Max value : 100");
        return;
      }

      // Edit the head
      playerAppearance.setHeadSize(head + 200);
    } else if (params[0].equals("tattoo")) // Min: 1, Max: 13
    {
      int tattoo;

      try {
        tattoo = Integer.parseInt(params[1]);
      } catch (NumberFormatException e) {
        PacketSendUtility.sendMessage(admin, "The value must be a number !");
        onFail(player, e.getMessage());
        return;
      }

      if (tattoo < 1 || tattoo > 13) {
        PacketSendUtility.sendMessage(admin, "Tattoo: Min value : 1 - Max value : 13");
        return;
      }

      // Edit the tattoo
      playerAppearance.setTattoo(tattoo);
    } else {
      onFail(player, null);
      return;
    }

    // Edit the current player's appearance with our modifications
    player.setPlayerAppearance(playerAppearance);

    // Warn the player
    PacketSendUtility.sendMessage(player, "An admin has changed your appearance.");

    // Send update packets
    TeleportService2.teleportTo(
        player,
        player.getWorldId(),
        player.getInstanceId(),
        player.getX(),
        player.getY(),
        player.getZ(),
        player.getHeading());
  }