在我的 Minecraft 服务器上,我的插件没有加载

On my Minecraftserver my Plugin doesn't load

我的 Minecraft 插件无法加载

我尝试重新安装 Java 重建罐子 并尝试重新编写代码 我用了 java 11 在 IntelliJ Idea 中 我用的是 Minecraft 1.15.2 在 MacOS 10.15.7 上 我用 Kotlin

编码

错误信息:

org.bukkit.plugin.InvalidPluginException: Abnormal plugin type
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:80) ~[spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:394) ~[spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:301) [spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    at org.bukkit.craftbukkit.v1_15_R1.CraftServer.loadPlugins(CraftServer.java:353) [spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    at net.minecraft.server.v1_15_R1.DedicatedServer.init(DedicatedServer.java:210) [spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:784) [spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.InstantiationException
    at jdk.internal.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48) ~[?:?]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
    at java.lang.Class.newInstance(Class.java:584) ~[?:?]
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot-1.15.2.jar:git-Spigot-a99063f-be6aaf0]
    ... 7 more

My Main Class 项目唯一的 Class(在 Kotlin 中):

package main

import org.bukkit.Bukkit
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.entity.Entity
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerJoinEvent
import org.bukkit.inventory.PlayerInventory
import org.bukkit.plugin.PluginManager

import org.bukkit.plugin.java.JavaPlugin


public abstract class Loader : JavaPlugin(), Listener, CommandExecutor{




    override fun onEnable() {
        Bukkit.broadcastMessage("Aura Plugin test by Woody1474747")
    }

    override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
        if(sender is Player){
            when(command.name){
                "aura" -> {
                    val plinv:PlayerInventory = sender.getInventory()

                    val item1 = plinv.getItem(0)
                    val item8 = plinv.getItem(8)
                    sender.sendMessage(item1.toString())

                }
            }
        }
        return true
    }
}

我的plugin.yml

name: auraplugtest
version: 1.0.0
description: fsaf
main: main.Loader

commands:
  aura:
    usage: /<command>

我的build.gradle:

    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.61'
    id 'com.github.johnrengelman.shadow' version '2.0.4'
}

group 'org.example'
version '1-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

repositories {
    maven {
        url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'

        content {
            includeGroup 'org.bukkit'
            includeGroup 'org.spigotmc'
        }
    }
    maven {
        url = 'https://oss.sonatype.org/content/repositories/snapshots'
    }
}

dependencies {
    compileOnly 'org.bukkit:bukkit:1.14.4-R0.1-SNAPSHOT'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8


compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

答案很简单,你的class不可能是abstract! 固定码:

// removed abstract keyword
public class Loader : JavaPlugin(), Listener, CommandExecutor {
 // ...
}