Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的bukkit插件赢得了';t载荷_Java_Plugins_Minecraft_Bukkit - Fatal编程技术网

Java 我的bukkit插件赢得了';t载荷

Java 我的bukkit插件赢得了';t载荷,java,plugins,minecraft,bukkit,Java,Plugins,Minecraft,Bukkit,我对制作bukkit插件比较陌生,对java有基本的了解。我的插件坏了。从我在其他论坛上看到的情况来看,这是一个常见的错误,但没有一个解决方案有效 这是我的错误: [16:18:19 ERROR]: Could not load 'plugins/MtgCraft.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.sporech.MagictgCraft' 我

我对制作bukkit插件比较陌生,对java有基本的了解。我的插件坏了。从我在其他论坛上看到的情况来看,这是一个常见的错误,但没有一个解决方案有效

这是我的错误:

[16:18:19 ERROR]: Could not load 'plugins/MtgCraft.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.sporech.MagictgCraft' 我的代码是:

package me.sporech;

import java.util.Set;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class MagictgCraft extends JavaPlugin {
    public static MagictgCraft plugin;

    @Override
    public void onEnable(){
        getLogger().info("this is the plugin doing it");
    }
    @Override
    public void onDisable(){

    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("hello") && sender instanceof Player) {
            Player player = (Player) sender;
            player.sendMessage("Hello, " + player.getName() + "!");
            return true;
        }
        return false;
    }
    @EventHandler
    public void onPlayerInteractBlock(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        if (player.getItemInHand().getType() == Material.STICK) {
            player.getWorld().strikeLightning(player.getTargetBlock((Set<Material>) null, 200).getLocation());
        }
    }
}
package me.sporech;
导入java.util.Set;
导入org.bukkit.Material;
导入org.bukkit.command.command;
导入org.bukkit.command.CommandSender;
导入org.bukkit.entity.Player;
导入org.bukkit.event.EventHandler;
导入org.bukkit.event.player.PlayerInteractEvent;
导入org.bukkit.plugin.java.JavaPlugin;
公共类MagictgCraft扩展了JavaPlugin{
公共静态MagictgCraft插件;
@凌驾
public void onEnable(){
getLogger().info(“这是执行此操作的插件”);
}
@凌驾
公共无效不可撤销(){
}
公共布尔onCommand(CommandSender、Command cmd、字符串标签、字符串[]args){
if(cmd.getName().equalsIgnoreCase(“hello”)&播放器的发送方实例){
玩家=(玩家)发送者;
发送消息(“你好,+player.getName()+”!”;
返回true;
}
返回false;
}
@事件处理程序
PlayerInteractBlock上的公共无效(PlayerInteractEvent事件){
Player=event.getPlayer();
if(player.getItemInHand().getType()==Material.STICK){
player.getWorld();
}
}
}

错误在于您的
plugin.yml,而不是您的代码。确保plugin.yml包含在默认包中,并在导出/压缩它之后位于jar中

它表示您的描述无效(“
InvalidDescriptionException
”);它可能太短了,但那只是一个猜测。如果加长描述不起作用,请尝试在描述后加上“
”和换行符,然后在下一行至少加上8个空格,如下面的示例所示,从我的一个插件开始:

description: >
             This super simple plugin has so many features your head may just implode.
上面的内容在我的插件中起作用,不过老实说,这是不必要的。不过,还是值得一试

编辑:


对于不想筛选评论的未来读者,这里的问题是,
plugin.yml
未包含在“src”文件夹或导出jar的默认包中。始终确保您的
plugin.yml
在默认包中的导出jar中

您可能也应该用[bukkit]标记此错误。您可以在
logs
文件夹中的
latest.log
文件中搜索此错误吗?日志应该包含更多信息。@JarrodRobertson此问题与发布的问题不同。在您声称是重复的问题中,有两个错误在解决后导致了问题的解决:他们使用的
onCommand()
方法使用了不正确的参数,
plugin.yml
说明
键被大写。在这个问题上,这两件事都不是真的;因此,它不是复制品。我将试一试。任何有用的东西都对我有好处。我没想到描述的长度会产生重大影响,但值得一试。My plugin.yml位于项目文件夹中;不在src源文件夹中。我尝试将描述更改为您的建议;它不起作用。出于某种原因,当我加载服务器时(在更改描述之前),它出现了一个不同的错误。我编辑了我的问题,改为使用那个错误。我的plugin.yml放错地方了!我遵循的教程一定是过时了或是什么的。我为我之前的评论道歉,我说它应该在项目文件夹中。在其他论坛上,人们总是说它不应该在包中,我认为它根本不应该在src文件夹中。好的,当我执行/pl并且我的onEnable()正在工作时,我的插件就会显示出来。但它没有做任何其他事情。当玩家打“/hello”并让棍子击中闪电时,它应该会回复:D。有人帮忙吗?@sporch啊,是的。plugin.yml应该在jar的默认包中。lightning sticks不起作用,因为您在方法上正确使用了
EventHandler
,但未将该类注册为
侦听器。将“
implements Listener
”添加到类头和您的
onEnable()
,添加
getServer().getPluginManager().registerEvents(this,this)。这将告诉Bukkit,您的主类(
MagictgCraft
)具有事件处理功能,因此将使用带有
@EventHandler
标记的方法。
description: >
             This super simple plugin has so many features your head may just implode.