2013-08-13 2 views
3

저는 Bukkit에서 일하고 있습니다. 기본적으로 서명을 마우스 오른쪽 버튼으로 클릭 할 때 뭔가 할 수 있도록 메소드를 만들어야합니다. 이 경우 장비 목록이 될 것이지만 그 다리에 올 때 그 다리를 건너겠습니다.Minecraft Bukkit Sign 조작

지금은 표지판을 마우스 오른쪽 버튼으로 클릭하여 작업을 수행하는 방법에 관해서는 혼란 스럽습니다. 나는 아마도 오른쪽 클릭 된 블록을 가져 와서 기호인지 확인한 다음 기호에 쓰여진 내용을 확인해야한다고 생각합니다. 그러나 나는 기호로 식별하는 방법을 모른다. 왜냐하면 나는 2 개의 사인 자료 인 SIGNSIGN_POST의 존재에 혼란스러워한다. 그 후, 특별 이벤트에 전화해야합니까?

나를위한 좋은 참조를 알고 있다면 의견에 자유롭게 게시하십시오. 그러나 나는 도처에 확인했다. 그리고 내가 발견하는 누구나는 바보 같은 SignChangeEvent 다. 그것은 내가 필요로하는 것이 아니다. 모든 도움은 대단히 감사합니다!

답변

3

기호임을 확인하려면 블록 유형 ID를 사용해야합니다. 표지판에는 두 개의 ID가 있습니다. 하나는 벽에있는 기호 (68)이고 다른 하나는 게시물 (63)에 표시된 기호입니다. 플레이어가 서명을 오른쪽 클릭했는지 확인하려면 PlayerInteractEvent를 사용하십시오. 플레이어가 블록을 오른쪽 클릭했는지 확인하십시오. 오른쪽 클릭 한 블록의 ID가 63 또는 68인지 확인하십시오. 블록 상태를 부호로 변환하십시오. 당신이하고 싶은대로하십시오. 기호의 텍스트를 변경하는 경우 나중에 해당 텍스트를 업데이트해야합니다. 그렇지 않으면 텍스트가 표시되지 않습니다. 다음은 사용해야하는 Player Listener 함수입니다.

@EventHandler 
public void onPlayerInteract(PlayerInteractEvent event) { 
    if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { 
     if(event.getClickedBlock().getTypeId() == 63 || event.getClickedBlock().getTypeId() == 68) { 

      Sign sign = (Sign) event.getClickedBlock().getState(); 
      sign.setLine(0, "Boo Yeah"); 
      sign.update(); 

      // Do other stuff if you need to 
     } 
    } 
} 
관련 문제