org.bukkit.plugin.invalidlugineexception:main类`org.crysis.keepitems.keepitems';不扩展JavaPlugin
因此,我试图使用Bukkit API制作一个Java插件,但每当我导出JAR文件并运行它时,就会发生这种情况:org.bukkit.plugin.invalidlugineexception:main类`org.crysis.keepitems.keepitems';不扩展JavaPlugin,java,Java,因此,我试图使用Bukkit API制作一个Java插件,但每当我导出JAR文件并运行它时,就会发生这种情况: [ERROR] Could not load 'plugins/InventoryKeeper.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: main class `org.crysis.keepitems.KeepItems' does not extend JavaPlugin at org
[ERROR] Could not load 'plugins/InventoryKeeper.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: main class `org.crysis.keepitems.KeepItems' does not extend JavaPlugin
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:68) ~[spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:334) ~[spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:253) [spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.loadPlugins(CraftServer.java:350) [spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
at net.minecraft.server.v1_14_R1.DedicatedServer.init(DedicatedServer.java:202) [spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:775) [spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
at java.lang.Thread.run(Thread.java:813) [?:1.8.0_212]
Caused by: java.lang.ClassCastException: class org.crysis.keepitems.KeepItems
at java.lang.Class.asSubclass(Class.java:2604) ~[?:1.8.0_212]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:66) ~[spigot-1.14.4.jar:git-Spigot-56f8471-eafd742]
... 7 more
package org.crysis.keepitems;
import java.lang.reflect.Method;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.crysis.keepitems.metrics.Metrics;
public class KeepItems extends JavaPlugin implements Listener {
private final boolean hasMethod = hasMethod("setKeepInventory");
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
new Metrics(this);
}
@EventHandler
public void onEntityDeath(PlayerDeathEvent event) {
Player player = (Player) event.getEntity();
if (player.hasPermission("keepitems.keep")) {
if (!hasMethod) {
InventoryHandler.getInstance().saveInventoryAndArmor(player);
event.getDrops().clear();
} else {
event.setKeepInventory(true);
event.getDrops().clear();
}
}
if (player.hasPermission("keepitems.keepxp")) {
event.setKeepLevel(true);
event.setDroppedExp(0);
}
}
private boolean hasMethod(String string) {
boolean hasMethod = false;
Method[] methods = PlayerDeathEvent.class.getMethods();
for (Method m : methods) {
if (m.getName().equals(string)) {
hasMethod = true;
break;
}
}
return hasMethod;
}
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent event) {
Player player = event.getPlayer();
if (player.hasPermission("keepitems.keep")) {
InventoryHandler ih = InventoryHandler.getInstance();
if ((ih.hasInventorySaved(player)) && (ih.hasArmorSaved(player))) {
player.getInventory().setContents(ih.loadInventory(player));
player.getInventory().setArmorContents(ih.loadArmor(player));
ih.removeInventoryAndArmor(player);
}
}
}
}