2012-12-29 2 views
1

나는 bukkit 플러그인을 만들고 있는데 몇 분마다 메시지를 보내는 데 문제가 있습니다. 이전에는 작동했지만, 지금은 bukkit 1.4.6 베타를 사용하고 있습니다. 이전 방법은 더 이상 사용되지 않지만 나에게도 동일한 오류가 발생하여 교체가 가능하므로 운이 좋지 않습니다. 나는 그것을 위해 this을 사용하고Bukkit - runTaskTimerAsynchronously()를 시작할 수 없습니다.

Bukkit.getServer().getScheduler().runTaskTimerAsynchronously((Plugin) this, new Runnable() { 
    public void run() { 
     Bukkit.broadcastMessage(ChatColor.DARK_PURPLE + "" + ChatColor.MAGIC + "aaaaaa" + ChatColor.RESET + " Important " + ChatColor.DARK_PURPLE + "" + ChatColor.MAGIC + "aaaaaa" + ChatColor.RESET + ":"); 
     Bukkit.broadcastMessage(""); 
     Bukkit.broadcastMessage(" Hacks are stricly prohibited. A list of approved mods is available on our website. Use of mods not approved by the arenacraft team may lead to a permanent ban."); 
    }}, 60L, 36000L); 
} 

:

여기 내 코드입니다. 많은 오류가

me.silvershad0wz.arenacraft.Notices (the class this code is from) Cannot be cast to org.bukkit.plugin.Plugin. 

을 이어 :

콘솔은 다음 날 수 있습니다. 그것은 이래서 나온다.

Bukkit.getServer().getScheduler().runTaskTimerAsynchronously((Plugin) this, new Runnable() { 

줄.

"캐스팅 할 수 없음"오류가 무엇인지 전혀 알지 못해서 도움을 주시면 감사하겠습니다.

답변

4

JavaPlugin을 확장하는 메인 클래스에서 스케줄러를 호출하고 있습니까? 그렇지 않다면 플러그인의 인스턴스를 가져와야합니다. (Plugin) this ~ Bukkit.getServer().getPluginManager().getPlugin("YOUR_PLUGIN_NAME")

+1

정말 고마워요! 이전에 그 코드가 작동 했었는데, 나는 정말로 혼란 스러웠습니다. 너는 구세주 야. – HolyThunder

+0

내가 도울 수있어서 기쁩니다 : D – Kezz101

0

플러그인의 기본 클래스는 플러그인이 아니라 JavaPlugin을 확장합니다. :)

단순히, 또는이 메인 클래스 내에서 호출 경우

.runTaskTimerAsynchronously(this, new Runnable() 

에 일하는 것이

.runTaskTimerAsynchronously((JavaPlugin) this, new Runnable() 

.runTaskTimerAsynchronously((Plugin) this, new Runnable() 

을 변경하는 생각.

출처 : http://wiki.bukkit.org/Plugin_Tutorial#Creating_the_Plugin.27s_Class

+0

하지만'JavaPlugin'은'Plugin'을 확장하여 어쨌든 여전히 작동 할 것입니다 ... – Kezz101