변수 다루기
플러그인에서 변수를 사용하려면 변수를 추가를 해야한다.
플러그인에 변수를 추가를 하는법은
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;
}
}
이런식으로 적으면 된다.
이제 변수에 값을 추가하고, 빼고 남의 변수를 확인하는 기능을 만들어보겠습니다.
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부터 첫 번째 값으로 인식을 하기 때문입니다.