안녕하세용! 난아몰입니당.
잡담없이 바로 4강을 시작하겠습니다.
오늘도 새로운 클래스를 생성해 주세요. 이름은 마음대로 해도 상관없지만 전 Events라고 하겠습니다.
그 뒤 Listener을 implements해주세요.
public class Events implements Listener { }
이런식으로요. 다음으로 이벤트를 만들어 봅시다.
일단 Event만을 매개변수로 하는 매소드를 하나 만들어 봅시다. 매소드 이름은 마음대로 하셔도 상관 없습니다.
일단 전 입장 메시지를 만들거기에 이름은 onJoin으로 하겠습니다. 그리고 매서드 위에 @EventHandler 어노테이션을 이용해서 이 매소드가 이벤트라고 표시를 해줍시다 .
@EventHandler public void onJoin(PlayerJoinEvent e) { }
이런 식으로요. 그럼 이제 메시지를 출력해 봅시다 .
일단 Player p를 선언해 줍시다. 그리고 PlayerJoinEvent.setJoinMessage(String message); 을 사용해서 입장 메시지를 설정해 봅시다. 그러면
@EventHandler public void onJoin(PlayerJoinEvent e) { Player p = e.getPlayer(); e.setJoinMessage("§e" + p.getName() + "§f님이 접속하셨습니다!!!"); }
이런식으로 완성됩니다. 마지막으로 이벤트를 등록해 봅시다(등록을 안할시 작동을 안합니다)
onEnable안에 아래 코드를 사용하여 이벤트를 등록합니다.
Bukkit.getPluginManager().registerEvents(new Events(), this);
그리고 테스트를 해보면....
이렇게 잘 적용됩니다. 그럼 이번엔 블럭 설치/파괴를 금지하는 이벤트도 만들어 볼까요?
@EventHandler public void onPlace(BlockPlaceEvent e) { Player p = e.getPlayer(); //이벤트를 실행한 플레이어 if(p.isOp()) { //플레이어가 op가 아닐때 p.sendMessage("§c당신은 블럭을 설치할 귄한이 없습니다"); //플레이어에게 메시지 보내기 e.setCancelled(true); //설치하는 행동을 취소(설치불가) } }
이런식으로 op일때만 설치 할 수 있게 만들어 봅시다. 그리고 onPlace도 비슷하게 만들어 주세요.
@EventHandler public void onBreak(BlockBreakEvent e) { Player p = e.getPlayer(); //이벤트를 실행한 플레이어 if(!p.isOp()) { //플레이어가 op가 아닐때 p.sendMessage("§c당신은 블럭을 파괴할 귄한이 없습니다"); //플레이어에게 메시지 보내기 e.setCancelled(true); //파괴하는 행동을 취소(파괴불가) } }
이런식으로요. 이 두 매소드 모두 한 클래스 안에 작성했기에 따로 이벤트를 등록할 필요는 없습니다.
그뒤 빌드하고 테스트를 해보면...
이런식으로 메시지도 잘 뜨고 블럭설치도 잘 막아 집니다.
더 많은 이벤트들은 여기를 클릭하여 확인 가능합니다.
이상 이벤트 강좌를 미치겠습니다.
다음은 아이템에 관하여 알아보겠습니다.
댓글이 없습니다.
새로운 댓글을 등록해 주세요!