Bonjour/bonsoir,
voilà un bon moment que je n'avais plus demandé d'aide ici, mais ce soir je suis bloqué..
Je m'explique,
Je veux créer un "TabCompleter" via la méthode
qui implémente;
Donc j'ai "return" ma liste c'est bon c'est fonctionnel. Simplement que maintenant j'aimerais ajouter cette méthode sur une commande qui ne vient pas de MON plugin.
Je m'explique, j'ai créé une fonction qui récupère tout les noms des prisons crées via le plugin Essentials. "/createjail <nom>". Et donc maintenant j'aimerais ajouter cette fonction directement sur la commande "jail" du plugin Essentials.
Pour ce faire j'ai tenté de récupérer le plugin Essentials via la méthode;
C'est fonctionnel, cependant dans mon "onEnable()" je mets ceci;
Et la console me retourne une "nullPointerException" à cette ligne.
Voilà toutes mes classes;
(Fonctionnel sur une commande crée sur MON propre plugin, c'est à dire que la commande est inscrite dans le "plugin.yml")
Je pense avoir donné toute les informations nécessaires, en attendant une réponse de votre part, je vous souhaite une très bonne soirée!
Cordialement,
Luca008.
voilà un bon moment que je n'avais plus demandé d'aide ici, mais ce soir je suis bloqué..
Je m'explique,
Je veux créer un "TabCompleter" via la méthode
Code:
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String arg2, String[] args) {
return null;
}
Code:
public class TabComplete implements TabCompleter {
Donc j'ai "return" ma liste c'est bon c'est fonctionnel. Simplement que maintenant j'aimerais ajouter cette méthode sur une commande qui ne vient pas de MON plugin.
Je m'explique, j'ai créé une fonction qui récupère tout les noms des prisons crées via le plugin Essentials. "/createjail <nom>". Et donc maintenant j'aimerais ajouter cette fonction directement sur la commande "jail" du plugin Essentials.
Pour ce faire j'ai tenté de récupérer le plugin Essentials via la méthode;
Code:
Essentials ess = (Essentials) Bukkit.getServer().getPluginManager().getPlugin("Essentials");
C'est fonctionnel, cependant dans mon "onEnable()" je mets ceci;
Code:
ess.getCommand("jail").setTabCompleter(new TabComplete());
Et la console me retourne une "nullPointerException" à cette ligne.
Voilà toutes mes classes;
Code:
package me.Luca008.Tuto;
import org.bukkit.Bukkit;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import com.earth2me.essentials.Essentials;
public class Main extends JavaPlugin{
Essentials ess = (Essentials) Bukkit.getServer().getPluginManager().getPlugin("Essentials");
public void onEnable(){
LoadConfig();
PluginManager pm = getServer().getPluginManager();
ess.getCommand("jail").setTabCompleter(new TabComplete());
}
private void LoadConfig(){
getConfig().options().copyDefaults(true);
saveConfig();
}
}
Code:
package me.Luca008.Tuto;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import com.earth2me.essentials.Essentials;
import net.ess3.api.IJails;
public class TabComplete implements TabCompleter {
Essentials ess = (Essentials) Bukkit.getServer().getPluginManager().getPlugin("Essentials");
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String arg2, String[] args) {
if(cmd.getName().equalsIgnoreCase("jail")){
Collection<String> Collec = null; //Collection qui stockera les jails(Car la fonction "getJails()" d'essentials retourne une collection)
try {
IJails jails = ess.getJails(); //récupérer tout les jails
Collec = jails.getList(); //les mettre dans ma collection
} catch (Exception e) {
e.printStackTrace();
}
ArrayList<String> listJ = new ArrayList<String>(Collec);//Transformation de ma collection en ArrayList
ArrayList<String> finalL = new ArrayList<String>();//Contiendra tout les jails sous forme de String
ArrayList<String> returns = new ArrayList<String>();//Contiendra des jails selon certaines conditions
String[] jail = listJ.toString().replace("[", "").replace("]", "").replace(" ", "").split(",");//Mettre tout les jails sous forme de tableau en replaçant les "[","]" et les espaces(car les jails sont donnés sous la forme [ Jail1, Jails2, Jail..etc ]). Et au final en les séparant à la virgule.
for(int i=0;i<jail.length;i++){
finalL.add(jail[i]);//On ajoute tout les jails à notre liste
}
Collections.sort(finalL);//Je crois que cette ligne est inutile xD
if(args.length == 1){
String pname = "";
for(Player pls : Bukkit.getOnlinePlayers()){
pname = pls.getName();
returns.add(pname);//Pour l'argument 0 de la commande /jail d'essentials, c'est le joueur, donc on ajoute tout les joueurs en ligne dans la liste
}
return returns;//On renvoit.
}
else if(args.length == 2){
if(!args[1].equals("")){
boolean firstLetter = false;//boolean
String args1letter = args[1].substring(0, 1);//Je récupère la 1ère lettre de l'argument 1
for(int i=0;i<finalL.size();i++){
firstLetter = finalL.get(i).startsWith(args1letter);//Je regarde si ma liste contient un jail qui commence par la lettre de mon argument
if(firstLetter){//Si elle en contient
returns.add(finalL.get(i));//J'ajoute le/les jails à la liste
return returns;//Je renvoie
}
}
}
else{
return finalL;//Si la liste ne contient pas de jail qui commence par la 1ere lettre de l'argument 1 je retourne à tout les jails
}
}
}
return null;//null
}
}
PHP:
[20:07:14] [Server thread/ERROR]: Error occurred while enabling TutoPlugin v1.2 (Is it up to date?)
java.lang.NullPointerException
at me.Luca008.Tuto.Main.onEnable(Main.java:15) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigotmc-1.8.8-R0.1.jar:git-Spigot-e4d4710-e1ebe52]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:741) [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_141]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_141]
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:748) [?:1.8.0_141]
Je pense avoir donné toute les informations nécessaires, en attendant une réponse de votre part, je vous souhaite une très bonne soirée!
Cordialement,
Luca008.