На моем Minecraftserver мой плагин не загружается

#java #kotlin #gradle #minecraft #bukkit

#java #kotlin #gradle #Minecraft #bukkit

Вопрос:

Мой плагин Minecraft не загружается

Я попытался переустановить Java, перестроить jar и попытался переделать код, который я использовал 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

  

Мой основной класс — единственный класс, который есть в проекте (он находится в 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
    }
}
  

Мой плагин.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"
}

  

Ответ №1:

Ответ прост, ваш класс не может быть abstract ! Исправлен код:

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

Комментарии:

1. Спасибо, что работает

2. @Woody пожалуйста, примите ответ, если он решил вашу проблему