嘿,所以我在发布此消息之前确实在多个站点上都查找了此问题,并且一切都正确,但是当我尝试加载插件时仍然出现此错误,它说错误无法
无效的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的类加载器如何工作,但是这个大写的软件包名称肯定没有帮助。