Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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
org.bukkit.plugin.invalidlugineexception:main类`org.crysis.keepitems.keepitems';不扩展JavaPlugin_Java - Fatal编程技术网

org.bukkit.plugin.invalidlugineexception:main类`org.crysis.keepitems.keepitems';不扩展JavaPlugin

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

因此,我试图使用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.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);
            }
        }
    }
   }