【发布时间】:2018-08-15 22:01:01
【问题描述】:
我遇到了一个问题,并且在制作 Minecraft 插件和编写一般代码方面是新手。
我正在尝试制作一个插件,该插件在执行第二个命令之前等待大约 15 秒,但是当我尝试执行时,我现在的代码出现错误(插件,new Runnable()。我已经做了一些研究,而且大部分人们说那是因为我的 Main 类中没有这个。问题是我不想在我的 Main 中使用它。所以我想知道我必须做些什么才能使这个工作。
代码如下。提前感谢您提供的任何帮助。 ~石头
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player){
//checks to see if player sent command
Player player = (Player) sender;
if (args.length >= 1) {
//too many arguments message
player.sendMessage(Utils.chat("&4There were too many arguments, I could not complete that command"));
}
if (player.hasPermission("reloadc.use")) {
//reloads server, sends message, and stores variable value
Bukkit.broadcastMessage(Utils.chat("&6Server will be reloaded in 15 seconds by &5" + player.getDisplayName()));
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
public void run() {
Bukkit.broadcastMessage(Utils.chat("&6This works"));
}
}, 20L);
Bukkit.broadcastMessage(Utils.chat("&6IT WORKED!!!!!"));
}
else if (!player.hasPermission("reloadc.use")) {
player.sendMessage(Utils.chat("&4You do not have permission to reload the server"));
player.sendMessage(Utils.chat("&5If you belive this is a mistake please contact an admin"));
}
}
return true;
}
}
给我带来问题的代码就在这里(插件这个词)
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
public void run() {
Bukkit.broadcastMessage(Utils.chat("&6This works"));
}
}, 20L);
这里有 3 张图片,其中包含它给我的错误。我没有做的唯一改变是getServer()。因为它给了我更多的错误,并且至少据我所知并没有使任何事情变得更好。
好的,所以我已经完成了更改,一切都说它可以工作,但是现在当我运行我设置的命令时,它会执行除了等待 15 秒之外的所有操作。它一个接一个地执行文本,告诉我它将在 15 秒内重新加载,然后同时告诉我它有效。现在对我来说似乎没有什么问题,它只是说它运行良好,我的等待时间是 300L,这是服务器滴答声。这应该等于 15。
以下已完成代码的图片。
【问题讨论】:
-
我已经更新了我的答案,以便为您的问题提供解决方案。只需在出现问题的行上将
plugin替换为this。 -
所以我们实际上确实将所有这些都放在了一个单独的类中,我不知道如何或在哪里引用这个插件变量如果语句开始了,但它给了我“无法启动类型插件”
-
插件插件 = new Plugin();抱歉,不知道 enter 会发送它,这是我尝试过的代码行。你会建议我做什么?
-
您是否尝试在原始代码中将
plugin替换为this?像这样Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { -
OMG 没关系,它现在可以正常工作的最后一部分。我发现我只是没有等待 15 秒才能看到说这有效的文字弹出。我忘记了我在暂停后留下了一条广播消息命令,上面写着它全部大写。再次感谢您的所有帮助,非常感谢! ~石头