초보자들을 위한 플러그인 제작 강좌

  1. 변수 다루기

    플러그인에서 변수를 사용하려면 변수를 추가를 해야한다.

    플러그인에 변수를 추가를 하는법은

    private int (변수이름) = (값);
    

    이런식으로 하면 된다.

    기본으로 이름을 A, 값을 100으로 설정을 하면

    private int A = 100;
    

    이런식이 된다.

    그리고 이걸 채팅창에 표시를 할려면

    sender.sendMessage("현재 돈: " + A);
    

    이런식으로 하면된다.

    <aside> ❓

    전체 코드를 적어보면,

    package test.chairte;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public final class Chairte extends JavaPlugin {
    
        private int A = 100; // 변수를 선언하고 초기화합니다.
    
        @Override
        public void onEnable() {
            // Plugin startup logic
            getLogger().info("Chairte 플러그인이 활성화되었습니다.");
        }
    
        @Override
        public void onDisable() {
            // Plugin shutdown logic
            getLogger().info("Chairte 플러그인이 비활성화되었습니다.");
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if (command.getName().equalsIgnoreCase("돈")) { // 명령어
                sender.sendMessage("현재 돈: " + A); // 변수를 보여줍니다.
                return true;
            }
            return false;
        }
    }
    
    

    이런식으로 적으면 된다.

    이제 변수에 값을 추가하고, 빼고 남의 변수를 확인하는 기능을 만들어보겠습니다.

    1. arg추가하기 ex) /돈 추가 [플레이어]

      arg를 추가하려면 지금 돈 명령어의 if을 부정하는 구문이 필요하다 그것이 else OR else if 이다.

      이것을 활용해서.

      public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
              if (command.getName().equalsIgnoreCase("돈")) { // 만일 친 명령어가 '돈'이라면
                  sender.sendMessage("현재 돈: " + 돈);
                  return true;
              } else if (command.getName().equalsIgnoreCase("돈 추가")){ //만일 친 명령어가 '돈'이 아닌 '돈 추가'라면
             //구문
      	  }
      }
      

      이런식으로 하면 된다.

      이제 전체 코드로 설명을 해보겠습니다.

      전체 코드는

      package test.chairte;
      
      import org.bukkit.Bukkit;
      import org.bukkit.command.Command;
      import org.bukkit.command.CommandSender;
      import org.bukkit.entity.Player; //추가된 import
      import org.bukkit.plugin.java.JavaPlugin;
      
      public final class Chairte extends JavaPlugin {
      
          private int A = 100; // 초기 돈
      
          @Override
          public void onEnable() {
              // Plugin startup logic
              getLogger().info("Chairte 플러그인이 활성화되었습니다.");
          }
      
          @Override
          public void onDisable() {
              // Plugin shutdown logic
              getLogger().info("Chairte 플러그인이 비활성화되었습니다.");
          }
      
          @Override
          public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
              if (command.getName().equalsIgnoreCase("돈")) { // 만일 친 명령어가 '돈'이라면
                  sender.sendMessage("현재 돈: " + A);
                  return true;
              } else if (command.getName().equalsIgnoreCase("돈 추가")) { //만일 친 명령어가 '돈'이 아닌 '돈 추가'라면
                  if (args.length == 2) { //arg는 최대 2개
                      try {
                          int add = Integer.parseInt(args[0]); // 추가할 돈을 변수 add로 설정 (arg 0)
                          Player targetPlayer = Bukkit.getPlayer(args[1]); // 플레이어 이름 (arg 1)
      
                          if (targetPlayer != null) {
                              A += add; // 돈을 arg 0에 적는 수만큼 추가
                              targetPlayer.sendMessage("당신에게 " + add + "의 돈이 추가되었습니다.");
                              sender.sendMessage("플레이어 " + targetPlayer.getName() + "에게 " + add + "의 돈을 추가했습니다.");
                              return true;
                          } else {
                              sender.sendMessage("플레이어를 찾을 수 없습니다.");
                              return false;
                          }
                      } catch (NumberFormatException e) {
                          sender.sendMessage("유효한 숫자를 입력하세요.");
                          return false;
                      }
                  } else {
                      sender.sendMessage("사용법: /돈 추가 (값) [플레이어]");
                      return false;
                  }
              }
              return false;
          }
      }
      
      

      이런식으로 작성을 하면 된다.

      하지만, 여기서 이상한 점이 한개 있다.

      arg은 최대 2개인데 arg는 0, 1 이 설정 되어있다.

      그 이유는 컴퓨터는 1이 첫 번째 값으로 인식을 안하고, 0부터 첫 번째 값으로 인식을 하기 때문입니다.