无法加载“plugins”文件夹中的“plugins\TownTheServer-1.0-SNAPSHOT.jar”

问题描述 投票:0回答:1

启动服务器时,拒绝加载我的插件并出现错误

Could not load 'plugins\TownTheServer-1.0-SNAPSHOT.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: main class `me.fixegg.towntheserver.CityCreateCommand' does not extend JavaPlugin
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:145) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:394) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:301) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:381) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:224) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:928) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:273) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
        at java.lang.Thread.run(Thread.java:831) [?:?]
Caused by: java.lang.ClassCastException: class me.fixegg.towntheserver.CityCreateCommand
        at java.lang.Class.asSubclass(Class.java:3853) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:74) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]

我的代码:

1) CityCreateCommand.java:

package me.fixegg.towntheserver;

import org.bukkit.Chunk;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.HashMap;
import java.util.Map;

public class CityCreateCommand implements CommandExecutor {
    private final Map<String, Chunk> cityChunks;

    public CityCreateCommand() {
        this.cityChunks = new HashMap<>();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("This command can only be executed by a player.");
            return true;
        }

        if (args.length != 1) {
            sender.sendMessage("Usage: /t citycreate <cityName>");
            return true;
        }

        Player player = (Player) sender;
        String cityName = args[0];
        Chunk chunk = player.getLocation().getChunk();

        cityChunks.put(cityName, chunk);

        sender.sendMessage("City '" + cityName + "' created with coordinates: " +
                "X: " + chunk.getX() + ", Z: " + chunk.getZ());

        return true;
    }

    // Run this method periodically to check if players are standing on the saved city chunks
    public void checkCityChunks() {
        for (Map.Entry<String, Chunk> entry : cityChunks.entrySet()) {
            String cityName = entry.getKey();
            Chunk chunk = entry.getValue();

            for (Player player : chunk.getWorld().getPlayers()) {
                if (player.getLocation().getChunk().equals(chunk)) {
                    System.out.println(player.getName() + " is in city: " + cityName);
                }
            }
        }
    }
}

2)plugin.yml

name: CityCreateCommand
version: 1.0

main: me.fixegg.towntheserver.CityCreateCommand

api-version: '1.16'
# Chat Command Description /t citycreate
commands:
  citycreate:
    description: Create new Town on player position
    aliases: [cc]
    usage: /t citycreate <cityName>

# Rights for command
permissions:
  towntheserver.citycreate:
    description: Allows the player to use the command /t citycreate
    default: true

  1. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>me.fixegg</groupId>
    <artifactId>TownTheServer</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>TownTheServer</name>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

    <repositories>
        <repository>
            <id>spigotmc-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
        <repository>
            <id>sonatype</id>
            <url>https://oss.sonatype.org/content/groups/public/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>.

我尝试自己寻找答案并解决这个问题,但没有成功。我的 Java 运行时没有检测到任何语法错误,编译也成功。我不知道问题是什么,所以我很高兴得到任何答案,祝你一切顺利!

java minecraft bukkit spigot
1个回答
0
投票

你应该有一个扩展

JavaPlugin
的主类。例如:

public class TownTheServer extends JavaPlugin {
   @Override
   public void onEnable() {
       getCommand("citycreate").setExecutor(new CityCreateCommand());
   }
}

然后,编辑

plugin.yml
文件,让“main”值成为 JavaPlugin 类的方向,如下所示:

main: me.fixegg.towntheserver.TownTheServer
© www.soinside.com 2019 - 2024. All rights reserved.