我有一个问题,在制作Minecraft插件和编写代码方面是新手。
我试图制作一个插件,在执行第二个命令之前等待大约15秒,但是我现在的html" target="_blank">代码在我尝试做的时候有一个错误(插件,新的Runnable()。我做了一些研究,大多数人说这是因为我的主类中没有这个。问题是我不想让它在我的主类中。所以我想知道我必须做什么来使这个工作。
代码如下。提前感谢您能提供的任何帮助。~石头
@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。
响应您的更新/编辑:
发生错误是因为您使用插件
对代码没有任何意义。在使用in there之前,您需要将其声明为一个变量,或者假设您在一个类中为插件编写了所有代码,那么您可以轻松地将plugin
替换为this
,就像bukkit.getscheduler().scheduleSyncDelayedTask(this,new Runnable(){
。
如果它在另一个类中,那么要声明变量,您需要从另一个类传递它,或者从您的主插件类调用它。下面将向您展示如何将其传递给侦听器类。
public class Main extends JavaPlugin{
@Override
public void onEnable(){
new CommandClass(this);
}
}
然后在命令类中,我们修改它以接收变量public CommandClass(主插件)
:
public class CommandClass implements CommandExecutor{
private Main plugin;
public CommandClass(Main plugin){
this.plugin = plugin;
}
}
现在您的onCommand方法可以工作了,因为您的类中有对插件
的引用:
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
Bukkit.broadcastMessage(Utils.chat("&6This works"));
}
}, 300L);
}
原始答案编辑了一点,包括对你截图的一些回应:
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
Bukkit.broadcastMessage(Utils.chat("&6This works"));
}
}, 300L);
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
Bukkit.broadcastMessage(Utils.chat("&6This works"));
}
}, 300L);
Illuminatiiiiii发布的服务器命令:/fakeop[21:33:10 ERROR]:null org.bukkit.command.commandexception:未处理的异常在org.bukkit.command.plugincommand.execute(plugincommand.java:46)~[spigot-1.10.2.jar:git-spigot-5391d73-00
我试图使一个混合modeauth(我自己的版本的身份验证插件),但有一个问题-在与明星的行,我得到以下错误: 这是我的代码:
我已经做了一个消失插件,但我有麻烦使它,所以服务器管理员可以看到的人,当他们在消失。我想这样做,如果他们得到允许,他们可以看到人们消失。
为什么它不起作用?它阻塞每个命令。我希望它阻止除config中的命令外的所有命令
我最近想创建一个插件,它可以运行从服务器到播放器的跟踪路由。我在java方面遇到了一些困难,因为我的服务器主机不允许我访问minecraft部分以外的其他文件,所以我不能正确设置我需要的库。 我想创建一个Rest API,它将在我拥有所有权限的VPS上,但我不确定我们是否可以从本地IP以外的另一个IP运行traceroute,我需要从minecraft服务器运行它到播放器。 我目前使用的trace
遵循YouTube教程,但当我运行插件时,Minecraft根本没有注册它。该插件旨在返回“嗨!”当这出戏开始/你好或/你好时。当我把插件放在我的服务器上时,什么都没有,甚至没有在/plugins中注册 代码: Main.java: 你好,司令部。爪哇: plugin.yml: YT教程:https://www.youtube.com/watch?v=XaU8JKQW0Ao 任何帮助都将不胜感激。