Ошибка при загрузке плагина с использованием сервера Jedis - Minecraft - PullRequest
0 голосов
/ 27 февраля 2020

Просто интересно, что вызывает это. Понятия не имею!

Я пытаюсь создать плагин очереди. Я использую бумажный кран. Пожалуйста, не обращайте внимания на все дыры в моем коде плагинов, так как я сейчас просто тестирую его. Если у вас есть что-то, что вы думаете, я должен изменить, однако я был бы рад это здесь. Вот мое сообщение об ошибке, выдаваемое терминалом.

[19:29:52 ERROR]: Could not load 'plugins\anarchyqueuet3.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.loadPlugins(CraftServer.java:318) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:222) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:616) ~[patched_1.12.2.jar:git-Paper-1618]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]
Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis
        at com.Package.AnarchyQueue.<init>(AnarchyQueue.java:19) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_241]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_241]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:94) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[patched_1.12.2.jar:git-Paper-1618]
        ... 6 more
Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.Jedis
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_241]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:156) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:104) ~[patched_1.12.2.jar:git-Paper-1618]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241]
        at com.Package.AnarchyQueue.<init>(AnarchyQueue.java:19) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_241]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_241]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:94) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[patched_1.12.2.jar:git-Paper-1618]
        ... 6 more

И вот мой код:

package com.Package;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.logging.Logger;

public class AnarchyQueue extends JavaPlugin {
    //list of players in queue
    private ArrayList<Player> players = new ArrayList<Player>();
    //jedis object to communicate with other server
    private Jedis jedis = new Jedis("localhost");
    private int playerCount = 0;
    static int maxPlayerCount = 10;

    @Override
    public void onEnable() {
        onEnablePri();
    }

    @Override
    public void onDisable() {
        onDisablePri();
    }

    public void onPlayerJoin(PlayerJoinEvent event)
    {
        onPlayerJoinPri(event);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        onCommandPri(sender,command,label,args);
        return true;
    }

    //--------------------private methods--------------------

    private void onEnablePri() {
        log("Server test: "+jedis.ping(),1);
        BukkitScheduler scheduler = getServer().getScheduler();
        scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                runPri();
            }
        }, 0L, 10L);;
    }

    private void runPri() {
        try {
            playerCount=Integer.parseInt(jedis.get("anarchy-player-count"));
        } catch (Exception e) {
            log("Player count get failed",1);
        }
        if(playerCount<maxPlayerCount)
        {
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF("Connect");
            out.writeUTF("anarchy");
            players.get(0).sendPluginMessage(this, "BungeeCord", out.toByteArray());
            players.remove(0);
        }
    }

    private void onDisablePri() {
        //disable code
    }

    private void onPlayerJoinPri(PlayerJoinEvent event)
    {
        players.add(event.getPlayer());
    }

    private void onCommandPri(CommandSender sender, Command command, String label, String[] args) {
        if(command.getName().equalsIgnoreCase("setmaxplayercount"))
        {
            jedis.set("anarchy-player-count",args[0]);
        }
        /*if (command.getName().equalsIgnoreCase("players")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("You must be in game!");
            }
            else {
                getCount();
            }
        } */ 
    }

    //private void getCount() {   

    //}

    private void log(String str, int i)
    {
        if(i==0)
        {
            Logger.getLogger("Minecraft").info(str);
        }
        else
        {
            if(i!=1)
            {
                System.out.println("NUMBER NOT RECOGNISED: ");
            }
            System.out.println(str);
        }
    }   
}

И, наконец, вот мой plugin.yml (в случае, если это неправильно)

main: com.Package.AnarchyQueue
name: AnarchyQueue
version: '1.0'
description: The queue plugin for Ed_Silver's anarchy server.
load: postworld
author: Ed_Silver
prefix: AnarchyQueue
commands:
  setmaxplayercount:
   description: Sets max player count
   usage: /setmaxplayercount [int]

Я видел пост, в котором говорилось о необходимости добавления зависимости с помощью pom. xml, но я не знаю, относится ли это ко мне.

Заранее спасибо,

Если вам что-то нужно, просто спросите,

Эдвард

1 Ответ

0 голосов
/ 01 марта 2020

Вы пытаетесь import redis.clients.jedis.Jedis;, но Minecraft не может найти джедаев, вы должны добавить джедаев в свой проект maven или gradle.

Согласно https://github.com/xetorthio/jedis: https://github.com/xetorthio/jedis#how -do-i-use-it

Надеюсь, это помогло, я здесь, чтобы ответить на любые ваши вопросы!

...