Welcome to Bukkit France

Inscrivez-vous maintenant pour profiter d'un accès total à tout le contenu offert par la meilleur communauté Bukkit française ! Une fois inscrit et connecté, vous pourrez contribuez à la communauté en postant vos propres sujets et questions ou en répondant à ceux existants. Vous pourrez aussi customiser votre profil, recevoir des points de réputations, communiquer avec les autres membres via le chat, et plus encore! 

  • Annonces

    • Pskyco

      Bukkit France passe sous Discord !   02/20/16

      Bukkit France est désormais passé sur Discord, au revoir donc notre vieux Teamspeak ! Téléchargez le client et venez nous rejoindre sur notre salon en suivant les instructions suivantes.
      M-à-j du 25/02/2017 : Désormais, seuls les comptes actifs sur le forum se verront donner l'accès au Discord, ce dernier n'est pas une plateforme d'aide de la même manière que le chat.
Stik0u

Une erreur qui n'indique pas de classe ou de ligne de code !

8 messages dans ce sujet

Version (serveur) : 1.8.9
API utilisée : Spigot 1.11.2 qui vient d'ici : https://getbukkit.org/spigot
IDE utilisé : Intellij Idea
Explications du problème rencontré : Losrque le plugin se "load", une erreur apparaît mais sans mentionner une ligne de code ou une classe... Donc je ne sais pas d'où le problème vient. (aucune erreur lors de la compilation du plugin)
Recherches effectuées : Google, mais j'ai pas compris
Code d'erreur :

[18:44:52] [Server thread/ERROR]: Could not load 'plugins/PlayerFinder.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: net/minecraft/server/v1_11_R1/Packet
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:292) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:739) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.Bukkit.reload(Bukkit.java:535) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_112]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_112]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_112]
Caused by: java.lang.NoClassDefFoundError: net/minecraft/server/v1_11_R1/Packet
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_112]
at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_112]
at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:64) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
... 21 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_11_R1.Packet
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:91) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_112]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_112]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_112]
at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_112]
at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:64) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
... 21 more

Code : Puisque l'erreur n'indique pas d'où provient le problème, je ne sais pas quelle partie du code insérer ici, demandez moi si vous souhaitez voir une certaine partie de mon plugin
Informations supplémentaires : Après cela le plugin n'apparait pas dans le /plugin et aucune commande n'est utilisable.

 

Merci d'avance.

(J'espère que ma demande d'aide est bien formulée et qu'elle se situe dans la bonne catégorie, si ce n'est pas le cas, je m'en excuse)

Partager ce message


Lien à poster
Partager sur d’autres sites
Caused by: java.lang.NoClassDefFoundError: net/minecraft/server/v1_11_R1/Packet

 

Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_11_R1.Packet

Partager ce message


Lien à poster
Partager sur d’autres sites

Re,

Merci de ta réponse, mais je suis débutant en programmation, et je n'ai pas compris ce que tu essayes de m'expliquer...

Peux-tu réessayer ?

Merci :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Serait-il possible de voir la classe principale et le plugin.yml ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

Re,

Bien sûr !

Juste avant, pour que tu comprennes, mon plugin contient 3 commandes :

  1. /find : elle permet d'indiquer les coordonnées d'un joueur

  2. /follow : elle permet de "suivre" un joueur et donc d'afficher, à chaque fois que le joueur se déplace, ses coordonnées au dessus de la barre d'inventaire.

  3. /unfollow : elle permet d’arrêter le /follow

Il y a aussi une config simple avec juste "follow:" et en enfant le nom du joueur et celui qu'il suit.

Par exemple si le joueur Stik0u suit Siphano et le joueur aypierre suit Frigiel la config se présentera comme ceci :

follow:
  Stik0u: Siphano
  aypierre: Frigiel

Je les ai mis en spoiler juste en dessous, le premier c'est le plugin.yml et le deuxième c'est la classe principale

Spoiler

name: PlayerFinder
version: 1.2
author: Stik0u
main: fr.Stik0u.PlayerFinder.Main
description: A plugin to locate players
commands:
  find:
    description: To find a player
    permission: playerfinder.find
    usage: /find <player>
  follow:
    description: To follow a player
    permission: playerfinder.follow
    usage: /follow <player>
  unfollow:
    description: To unfollow your followed player
    permission: playerfinder.unfollow
    usage: /unfollow

 

Spoiler

package fr.Stik0u.PlayerFinder;
import net.minecraft.server.v1_11_R1.IChatBaseComponent;
import net.minecraft.server.v1_11_R1.PacketPlayOutChat;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;

public class Main extends JavaPlugin implements Listener{

    @Override
    public void onEnable() {
        getCommand("find").setExecutor(new FindCommand(this));
        getCommand("follow").setExecutor(new FollowCommand(this));
        getCommand("unfollow").setExecutor(new UnfollowCommand(this));
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onPlayerMove(PlayerMoveEvent e){
        //on met dans "p" le player qui bouge
        Player p = e.getPlayer();
        //on vérifie si celui-ci suit quelqu'un
        if(getConfig().get("follow."+p.getName())!=null){
            //si oui, on met dans cible le player qu'il suit
            Player cible = Bukkit.getPlayerExact(getConfig().getString("follow."+p.getName()));
            //on vérifie si le joueur qu'il suit est connecté
            if(Bukkit.getOnlinePlayers().contains(cible)){
                //on met dans des variables les coordonnées de la cible
                int cibleX = cible.getLocation().getBlockX();
                int cibleY = cible.getLocation().getBlockY();
                int cibleZ = cible.getLocation().getBlockZ();
                String cibleMonde = cible.getLocation().getWorld().getName();
                //si les deux joueurs sont dans le même monde
                String directionDistance = "";
                if(p.getWorld()==cible.getWorld()){
                    //on crée des "fausses locations" pour les deux joueurs en indiquant qu'ils sont à la couche 0 même si ce n'est pas vrai
                    Location locDistance1 = new Location(cible.getWorld(),(double) cibleX, 0.0, (double)cibleZ);
                    Location locDistance2 = new Location(p.getWorld(), (double) p.getLocation().getBlockX(), 0.0, (double) p.getLocation().getBlockZ());
                    //on détermine la distance avec une méthode
                    int distance = (int) locDistance1.distance(locDistance2);
                    //si la distance est plus petite que 1 on met juste (0m)
                    if(distance<1){
                        directionDistance = " | Direction = "+ChatColor.GREEN+"(0m)";
                    }else{
                        directionDistance = " | Direction = "+ChatColor.GREEN+ChatColor.BOLD+setDirection(p, cible.getLocation())+ChatColor.RESET+ChatColor.GREEN+" ("+distance+"m)";
                    }
                }
                sendActionBar(p, ChatColor.GREEN+ cible.getName()+ ChatColor.RESET+" » X = "+ChatColor.GREEN+cibleX
                +ChatColor.RESET+" | Y = "+ChatColor.GREEN+cibleY
                +ChatColor.RESET+" | Z = "+ChatColor.GREEN+cibleZ
                +ChatColor.RESET+" | Monde = "+ChatColor.GREEN+cibleMonde
                +ChatColor.RESET+directionDistance);
            }

        }

    }


    @Override
    public void onDisable() {
    }

    public String setDirection(Player p, Location point)
    {
        Location pLoc = p.getLocation();
        // on ignore l'axe y
        pLoc.setY(0);
        point.setY(0);
        // on récupère la direction de la tête du player
        Vector d = pLoc.getDirection();
        // on récupère la direction du point par rapport au player
        Vector v = point.subtract(pLoc).toVector().normalize();
        // on convertit le tout en un angle en degrés
        double a = Math.toDegrees(Math.atan2(d.getX(), d.getZ()));
        a -= Math.toDegrees(Math.atan2(v.getX(), v.getZ()));
        // on se décale de 22.5 degrés pour se caler sur les demi points cardinaux
        a = (int)(a + 22.5) % 360;
        // on  s'assure d'avoir un angle strictement positif
        if (a < 0)
            a += 360;

        String direction = ("" + "↑↗→↘↓↙←↖".charAt((int)a / 45));
        return direction;
    }

    public static void sendActionBar(Player player, String message) {
        IChatBaseComponent cbc = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + message + "\"}");
        PacketPlayOutChat ppoc = new PacketPlayOutChat(cbc, (byte) 2);
        ((CraftPlayer)player).getHandle().playerConnection.sendPacket(ppoc);
    }
}

 

Merci encore !

Modifié par Stik0u
Oubli d'une partie du message

Partager ce message


Lien à poster
Partager sur d’autres sites

Mmh...

org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: net/minecraft/server/v1_11_R1/Packet
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
import net.minecraft.server.v1_11_R1.IChatBaseComponent;

 

Petit soucis de version non? :)

Tu lances ton serveur dans une version antérieure.

5 personnes aiment ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci ! Problème résolu, je continue donc à avancer le développement du plugin ! ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 21 heures, Stik0u a dit :

Merci ! Problème résolu, je continue donc à avancer le développement du plugin ! ;)

Pour éviter ce genre de problème, tu peux utiliser la réflexion :

Ça permet de rendre ton plugin qui utilise NMS de fonctionner dans une assez grande plage de version.

2 personnes aiment ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.