2016-08-16 3 views
0

내 플러그인의 일부로 명확한 채팅 명령이 있고 비어있는 메시지 끝에는 텍스트를 표시하는 옵션이 있습니다. 내 문제는 PlaceHolderAPI가 제대로 작동하지 않는다는 것입니다.PlaceHolderAPI가 작동하지 않습니다.

명령 코드 :

if (label.equalsIgnoreCase("clearchat") || label.equalsIgnoreCase("mcc")) { 
    if (p.hasPermission("mystic.chat.admin.clearchat")) { 
     for (int i = 0; i < getConfig().getInt("clearChat.blankLines"); i++) { 
      Bukkit.broadcastMessage(" "); 
     } 
     for (String s : getConfig().getStringList("clearChat.endMessage")) { 
      s = PlaceholderAPI.setPlaceholders(p, s); 
      // This is here to check if the PlaceHolderAPI even knows there is place holders in it 
      p.sendMessage(String.valueOf(PlaceholderAPI.containsPlaceholders(s))); 
      Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', s)); 

     } 
     return true; 
    } else { 
     p.sendMessage(ChatColor.RED + "You are lacking the required permission node!"); 
     return true; 
    } 
} 

구성 파일 섹션 : 내가 명령 "/ 고객 센터"또는 "/ clearchat"를 실행하면

clearChat: 
    blankLines: 256 
    endMessage: 
    - '&bChat was cleared by %player_name%' 

는 항상 false를 말한다 (어떤 자리를 인정하지 않는) 장소 소유자 중 누구도 교체되지 않습니다.

API가 빌드 경로에 올바르게 포함되어 있고 명령 단어가 완벽하게 변환되지 않습니다.

는 느낌 ... 메신저 바보 같은 실수를, 또는 메신저이에게 완전한 길을 잘못하고있는 것처럼

답변

0

당신은 문자열을 사용하여 다음 충분해야 p.getName()를 사용하여 다른 API를 사용할 필요가 없습니다 그런 다음 보내기 자리가없는 경우 API가 단지 try{} catch (Exception e)와 그 라인을 둘러싸고 오류가 발생한다면이

s = PlaceholderAPI.setPlaceholders(p, s); 

않았다 당신은 잘못 API 을 사용 %에게 % 이름을

+0

[답변 방법] (http://stackoverflow.com/help/how-to-answer)은 upvoted 될 답변을 쓸 수 있도록 도와줍니다. – zhon

+0

사용자가 API 내에서 모든 장소 소유자를 사용할 수 있기를 원합니다. % name % –

0

을 대체 할 .replace 그것 플레이어

p.sendMessage(s); 

에 API가 어쨌든 문자열이 어떤 개체 캐스팅 할 String s = PlaceholderAPI.setPlaceholders(p, s);을 설정, 문자열을 반환 [것으로 예상된다]로 한 String.valueOf (들)에 대한 필요가 없습니다.

+0

이해가 안됩니다. 더 설명 할 수 있습니까? (정말 늦은 답장을 드려 죄송합니다.) –

+0

첫 번째 단락 대신 다음을 수행하십시오. { s = PlaceholderAPI.setPlaceholders (p, s); } catch (예외 e) { e.printStackTrace(); } 두 번째 비트의 경우 String.valueOf ()가 필요하지 않습니다. 왜냐하면 s가 이미 String이므로 s와 똑같은 것을 반환하기 때문입니다. –