Java 我的bukkit插件赢得了';t载荷
我对制作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' 我的代码是: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' 我
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.