Java Minecraft 플러그인 EventHandler?

고양이

플레이어가 죽을 때 추방하는 서버 플러그인을 만들고 있습니다. 모든 것이 정리되었지만 켜고 끌 수 있기를 원합니다. 나는 부울을 사용하는 것을 보았지만 @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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

클래스 가져 오기 Java 문제 Minecraft 플러그인

Vanish 플러그인 Minecraft

Vanish 플러그인 Minecraft

해결; minecraft 플러그인(Java)에서 명령 인수 유형 설정

Minecraft 플러그인 코딩(Jar)

Minecraft 플러그인 빌드 번호

BuildTools를 실행할 공간이 충분하지 않음-Java-Minecraft 플러그인 테스트 서버

Minecraft Java 플러그인의 플레이어 채팅 이벤트가 수행 할 작업을 수행하지 않습니다.

Minecraft bukkit 플러그인을위한 자바 프로그래밍

Minecraft 플러그인 게임 모드 체인저 GUI

Bukkit 플러그인 EventHandler 레지스트리 오류

플레이어가 원본인지 확인하는 플러그인-Minecraft

Eclipse의 Minecraft 플러그인 오류 (색상, replaceall)

minecraft bukkit 플러그인에서 피라미드 만들기

Eclipse의 Minecraft 플러그인 오류 (색상, replaceall)

활성화하는 동안 Minecraft bukkit API 플러그인 충돌

Minecraft 및 Java 문제

사용자 지정 플러그인이 Minecraft에 표시되지 않습니까?

minecraft player.sendMessage 명령 플러그인이 작동하지 않습니다.

MInecraft Java 실행 인수는 자산을 무시합니다.

한 명의 플레이어로만 명령을 실행 하시겠습니까? Minecraft 플러그인 개발

Nvidia GPU로 Java / Minecraft 실행

Java로드 플러그인 jar ClassNotFoundException

Java 플러그인 용 Android Studio Cucumber

Java 플러그인 업데이트

node.js의 Java Fillo 플러그인

IntelliJ IDEA에서 Bukkit / Minecraft 플러그인을 디버그하도록 구성을 실행 하시겠습니까?

EventHandler로 그래프 변경

Gradle 빌드: Android 플러그인과 호환되지 않는 Java 플러그인

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관