嘿,所以我在发布此消息之前确实在多个站点上都查找了此问题,并且一切都正确,但是当我尝试加载插件时仍然出现此错误,它说错误无法
无效的plugin.yml,然后只给出一堆代码行和其他内容(我假设是从bukkit文件中的代码中获取的,什么都没有,是的,我的plugin.yml保存在src文件夹中而不是程序包中,当我导出它我确实将其导出为.jar,无论如何这是我的plugin.yml文件

name: ProtHome
main: com.yahoo.m1kesanders.ProtHome.ProtHome
version: 1.0.0
Description: A simple /home plugin

commands:


  sethome:
    Description: sets players home

  home:
    Description: teleports player to their home


而且我也确实使用了4个空格,并且在命令后的两个空格中没有使用制表键:每个命令之后的另外两个空格

这是我在eclipse中插件的代码,以防万一您只需要检查名称而无需检查

package com.yahoo.m1kesanders.ProtHome;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;

public class ProtHome extends JavaPlugin{

    public static ProtHome plugin;

    public File folder = plugin.getDataFolder();
    public static File file = new File("Homes.yml");
    public static YamlConfiguration Homes = new YamlConfiguration();

    public void onEnable(){

        if(!folder.exists()){

            folder.mkdir();
        }

        if(!file.exists()){

            file.mkdir();
        }

        try {
            Homes.load(file);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvalidConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public boolean onCommand(CommandSender cmdsender, Command cmd, Player player) throws FileNotFoundException, IOException, InvalidConfigurationException{

        if(cmdsender.equals("sethome")){

            ProtHome.Homes.load(ProtHome.file);

            Homes.set(player.getName() + ".x", player.getLocation().getBlockX());
            Homes.set(player.getName() + ".y", player.getLocation().getBlockY());
            Homes.set(player.getName() + ".z", player.getLocation().getBlockZ());
            Homes.set(player.getName() + ".world", player.getWorld().getName());

            ProtHome.Homes.save(ProtHome.file);
        }

        else if(cmdsender.equals("home")){

            int x = (int) Homes.get(player.getName() + ".x");
            int y = (int) Homes.get(player.getName() + ".y");
            int z = (int) Homes.get(player.getName() + ".z");

            String world = (String) Homes.get(player.getName() + ".world");

            World realworld = Bukkit.getServer().getWorld(world);

            Location loc = new Location(realworld,x,y,z);

            player.teleport(loc);

        }

        return false;

    }

}


如果你们能帮助我,这将非常感谢您的阅读

最佳答案

问题的一部分可能是在bukkit示例plugin.yml中,所有键均为小写字母时,您将D大写为Description:

尝试使用小写的d导出,尽管这可能不是问题,但始终有助于使用正确的编码语法。 Bukkit的Yaml分析器非常精挑细选。

另外,为了将来参考,通常包名没有大写字母,只有类。

您的包裹com.yahoo.m1kesanders.ProtHome

大多数软件包com.yahoo.m1kesanders.prothome

我不确定,但是通常建议bukkit插件遵循此一般规则。我不知道bukkit的类加载器如何工作,但是这个大写的软件包名称肯定没有帮助。

10-07 21:05