플레이어가 죽을 때 추방하는 서버 플러그인을 만들고 있습니다. 모든 것이 정리되었지만 켜고 끌 수 있기를 원합니다. 나는 부울을 사용하는 것을 보았지만 @EventHandler를 1 안에 넣으면 나에게 소리를 지르며 제대로 하고 있지 않다고 생각합니다... 그래서 질문은 정말, 방법이 있습니까? "/kdoff"가 실행될 때 @EventHandler는 "/kd"가 실행될 때까지 그렇게 하지 않습니다. onDisable()로 할 수 있는 일이 있는 것 같지만 솔직히 어떻게 작동하는지 잘 모르겠습니다.
package me.Cats.KickDead;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin
implements Listener {
@Override
public void onEnable() { // on server start-up
System.out.println("Death Kick is enabled");
getServer().getPluginManager().registerEvents(this, this);
}
@Override
public void onDisable() {
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { // enables command
if (label.equalsIgnoreCase("kd")) {
if (sender instanceof Player) { //player
Player player = (Player) sender;
if (player.hasPermission("kickdead.use")) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bPlayers will now be sent to the &8&lShadow Realm&b. &r(&0&aOn&r)")); // Yu-gi-oh Reference
return true;
}
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYour deck lacks the power to send someone to the &8&lShadow Realm&r&b.")); // Yet another Yu-gi-oh reference
}
if(label.equalsIgnoreCase("kdoff")) {
if(sender instanceof Player) {
Player player = (Player) sender;
if (player.hasPermission("kickdead.use")) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bPlayers will be allowed on the &a&lMoral Plane&r&b. &r(&0&4Off&r)")); // Yu-gi-oh Reference
return false;
}
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYour deck lacks the power to allow people to walk this &a&lMoral Plane&r&b."));
}
else { //console
sender.sendMessage("Currently only works if ran by a player. I'm a bit lazy...");
return true;
}
}
}
return false;
}
@EventHandler // if a player dies they're kicked
public void onDeath(EntityDeathEvent event) {
Player player = (Player)event.getEntity();
player.kickPlayer(ChatColor.RED + "" + ChatColor.BOLD + "You Died");
}
}
나는 이것을 하는 가장 쉬운 방법은 킥 온 데스(kick on death)가 활성화되었는지 여부에 대한 부울 값을 어딘가에 저장하는 것이라고 생각합니다. /kd
및 /kdoff
명령을 설정할 수 있으며, 사람이 죽었을 때마다 그들이 쫓겨해야하는지 결정하기 위해 사용하는 경우 당신은 단지 확인.
OnDisabled
플러그인이 비활성화되었을 때 호출되는 이벤트입니다. 일반적으로 서버가 종료될 때를 의미합니다(다른 경우도 있지만!). 플러그인을 완전히 비활성화하고 싶지는 않습니다 /kd
. 그러면 명령 을 잡을 수 없기 때문 입니다.
public class Main extends JavaPlugin
implements Listener {
public static boolean kickOnDeath = true;
@Override
public void onEnable() { // on server start-up
if (kickOnDeath) {
System.out.println("Death Kick is enabled");
}
getServer().getPluginManager().registerEvents(this, this);
}
@Override
public void onDisable() {
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { // enables command
if (label.equalsIgnoreCase("kd")) {
if (sender instanceof Player) { //player
Player player = (Player) sender;
if (player.hasPermission("kickdead.use")) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bPlayers will now be sent to the &8&lShadow Realm&b. &r(&0&aOn&r)")); // Yu-gi-oh Reference
kickOnDeath = true;
return true;
}
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYour deck lacks the power to send someone to the &8&lShadow Realm&r&b.")); // Yet another Yu-gi-oh reference
} else { //console
sender.sendMessage("Currently only works if ran by a player. I'm a bit lazy...");
return true;
}
} else if (label.equalsIgnoreCase("kdoff")) {
if (sender instanceof Player) {
Player player = (Player) sender;
if (player.hasPermission("kickdead.use")) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bPlayers will be allowed on the &a&lMoral Plane&r&b. &r(&0&4Off&r)")); // Yu-gi-oh Reference
kickOnDeath = false;
return true;
}
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYour deck lacks the power to allow people to walk this &a&lMoral Plane&r&b."));
} else { //console
sender.sendMessage("Currently only works if ran by a player. I'm a bit lazy...");
return true;
}
}
return false;
}
@EventHandler // if a player dies they're kicked
public void onDeath(EntityDeathEvent event) {
if (kickOnDeath) {
Player player = (Player)event.getEntity();
player.kickPlayer(ChatColor.RED + "" + ChatColor.BOLD + "You Died");
}
}
}
이 구현에는 활성화 및 비활성화만 하는 전역 플래그가 있지만 영구 또는 플레이어별로 만들 수 있다고 확신합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다