1

我正在创建一个 bukkit 插件,但每隔几分钟发送一条消息时遇到问题。它曾经可以工作,但我现在使用的是 bukkit 1.4.6 测试版,但事实并非如此。以前的方法已被弃用,但它给了我同样的错误,所以我决定切换到它的替代品,但没有运气。

这是我的代码:

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

2 回答 2

4

您是否从扩展 JavaPlugin 的主类调用调度程序?如果你不是,那么你将不得不通过更改它所说的位置来获取插件的(Plugin) this实例Bukkit.getServer().getPluginManager().getPlugin("YOUR_PLUGIN_NAME")

于 2012-12-29T19:26:58.160 回答
0

您的插件的主类扩展了 JavaPlugin,而不是 Plugin。:)

我认为只是改变

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

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

会工作,甚至

.runTaskTimerAsynchronously(this, new Runnable()

如果在您的主类中调用它。

来源:http ://wiki.bukkit.org/Plugin_Tutorial#Creating_the_Plugin.27s_Class

于 2013-01-03T23:18:27.410 回答