[Gelöst] Vault und PermissionsEX

Um Übersicht zu schaffen, findet man hier bereits gelöste Fragen und Probleme.

[Gelöst] Vault und PermissionsEX

Beitragvon genesplicer2k » Mo 20. Jan 2014, 21:44

Hallo zusammen,

ich habe mir heute Mittag das Tutorial von PostCrafter zu Vault an geschaut und habe die Methoden auch auf ein anderes Plugin angewendet und es klappt auch alles super.
Anschließend habe ich dann versucht mit Vault in Verbindung mit PermissionsEX die JoinNachricht zu ändern.
Jedoch weiss ich noch nicht ganz wie ich es machen muss. Ich habe mir auch schon die Seiten von Vault angeschaut, doch irgendwie weiss ich nicht wie es gehen soll.

Ich möchte einfach, dass Vault, die Gruppe des joinenden Spielers aus ließt, und dann einfach eine JoinNachricht in einer anderen Farbe sendet.

Ich habe es momentan so:
Code: Alles auswählen
  1. package de.genesplicer2k.tutorial;
  2. import net.milkbowl.vault.chat.Chat;
  3. import org.bukkit.entity.Player;
  4. import org.bukkit.event.EventHandler;
  5. import org.bukkit.event.Listener;
  6. import org.bukkit.event.player.PlayerJoinEvent;
  7. import org.bukkit.event.player.PlayerQuitEvent;
  8. public class JoinListener implements Listener {
  9.    
  10.    private Tutorial chat;
  11.    
  12.    public JoinListener(Tutorial tutorial) {
  13.       chat = tutorial;
  14.    }
  15.    
  16.    
  17.    
  18. @EventHandler
  19. public void onJoin(PlayerJoinEvent e) {
  20.        if (Tutorial.chat.playerInGroup(e.getPlayer(), "Admin")) {
  21.        e.setJoinMessage(e.getPlayer() + "ist nun Online!");
  22.        }
  23.     }


und in der Main sieht es momentan so aus
Code: Alles auswählen
  1. ackage de.genesplicer2k.tutorial;
  2. import net.milkbowl.vault.chat.Chat;
  3. import org.bukkit.plugin.PluginManager;
  4. import org.bukkit.plugin.RegisteredServiceProvider;
  5. import org.bukkit.plugin.java.JavaPlugin;
  6. public class Tutorial extends JavaPlugin {
  7.    public static Chat chat = null;
  8.    
  9.    public void onDisable() {
  10.       System.out.println("{Tutorial]Gestoppt!");
  11.    }
  12.    
  13.    public void onEnable() {
  14.       System.out.println("[Tutorial]Gestartet!");
  15.    
  16.    this.getCommand("tutorial").setExecutor(new TutorialCommand());
  17.    this.getCommand("heal").setExecutor(new HealCommand());
  18.    PluginManager pm = this.getServer().getPluginManager();
  19.    pm.registerEvents(new JoinListener(this), this);
  20.    
  21. }
  22.    private boolean setupChat()
  23.     {
  24.         RegisteredServiceProvider<Chat> chatProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.chat.Chat.class);
  25.         if (chatProvider != null) {
  26.             chat = chatProvider.getProvider();
  27.         }
  28.         return (chat != null);
  29.     }
  30. }


ich habe soweit nichts vergessen und auch in der plugin.yml depend angegeben. Es kommt auch eine Nachricht die sieht aber dann so aus:
[Admin]genesplicer2k has joined the server.

und in der TabListe steht [Admin]genes (Admin jeweils in Rot).
Als ChatPlugin verwende ich MChat, was von Vault unterstützt wird.

Gruss und schon einmal danke!
Benutzeravatar
genesplicer2k
 
Beiträge: 60
Registriert: Mi 7. Aug 2013, 14:50

Re: Vault und PermissionsEX

Beitragvon PostCrafter » Mo 20. Jan 2014, 21:58

Ich würde mal behaupten, dass MChat die Nachricht verändert, sonst dürfte Admin dort gar nicht stehen, schau mal in dessen Config oder probier es mit einer anderen EventPriority.
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Re: Vault und PermissionsEX

Beitragvon genesplicer2k » Mo 20. Jan 2014, 22:19

Okay, danke. Ich habe jetzt mal die Join-Message im Plugin (MChat) raus genommen, und jetzt überhaupt keine Nachricht mehr, sonderns es wird nur noch in der Tab [Admin]genes angezeigt.
Ich glaube es liegt am Plugin, da ich auch immer in der Konsole diese Nachricht bekomme:
Code: Alles auswählen
  1. [Server thread/INFO]: genesplicer2k[/127.0.0.1:59639] logged in with entity id 8482 at ([world] 331.9982721925555, 86.0, 407.9528196956018)
  2. [22:13:46] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to Tutorial v1.0
  3. org.bukkit.event.EventException
  4.    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  5.    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  6.    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:481) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  7.    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:466) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  8.    at net.minecraft.server.v1_7_R1.PlayerList.c(PlayerList.java:225) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  9.    at net.minecraft.server.v1_7_R1.PlayerList.a(PlayerList.java:116) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  10.    at net.minecraft.server.v1_7_R1.LoginListener.c(LoginListener.java:78) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  11.    at net.minecraft.server.v1_7_R1.LoginListener.a(LoginListener.java:42) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  12.    at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:149) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  13.    at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  14.    at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  15.    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  16.    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  17.    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  18.    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  19. Caused by: java.lang.NullPointerException
  20.    at de.genesplicer2k.tutorial.JoinListener.onJoin(JoinListener.java:23) ~[?:?]
  21.    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_45]
  22.    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_45]
  23.    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_45]
  24.    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_45]
  25.    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
  26.    ... 14 more



Ich schaue mal nach einem anderen ChatPlugin. Oder hat jemand Abhilfe.

Gruss
Benutzeravatar
genesplicer2k
 
Beiträge: 60
Registriert: Mi 7. Aug 2013, 14:50

Re: Vault und PermissionsEX

Beitragvon PostCrafter » Mo 20. Jan 2014, 22:45

Die Fehlermeldung passt irgendwie nicht zu deinem Code, Zeile 23 von PlayerListener wird von dir schließlich nie selber ausgeführt.
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Re: Vault und PermissionsEX

Beitragvon Summerfeeling » Di 21. Jan 2014, 23:37

Du kannst das ganze auch ohne Vault machen.
Der YouTuber EliteJan96 hat ein Tutoria zur PexAPI gemacht, vielleicht hilft es dir? :)
Grüße
Summerfeeling | Timo
Benutzeravatar
Summerfeeling
 
Beiträge: 1300
Registriert: Sa 15. Jun 2013, 18:43
Wohnort: Viersen

Re: Vault und PermissionsEX

Beitragvon genesplicer2k » Mi 22. Jan 2014, 15:14

Okay, danke.
Habe bei der Suche nach Abhilfe auch schon gesehen, dass EliteJan96 ein Tutorial zu einem Team Befehl veröffentlicht hat. Ich werde es mir mal genauer anschauen.

Aber theoretisch müsste es ja auch mir Vault gehen. Ich vermute, dass es am Chat-Plugin liegt. Hat jemand hier noch ein Plugin, welches mit PermissionsEX und Vault harmoniert, oder habe ich etwas falsch gemacht?

Gruss
Benutzeravatar
genesplicer2k
 
Beiträge: 60
Registriert: Mi 7. Aug 2013, 14:50

Re: Vault und PermissionsEX

Beitragvon PostCrafter » Mi 22. Jan 2014, 15:35

PostCrafter hat geschrieben:Die Fehlermeldung passt irgendwie nicht zu deinem Code, Zeile 23 von PlayerListener wird von dir schließlich nie selber ausgeführt.

Meine Aussage steht immer noch im Raum, sobald wir zusammengehörige Fehlermeldung und Code bekommen, können wir dir helfen, ansonsten ist dies nicht möglich.
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Re: Vault und PermissionsEX

Beitragvon genesplicer2k » Mi 22. Jan 2014, 16:32

Hi,

ich habe den Code nun noch einmal in ein kleines Extra Plugin gepackt.
Die Main-Class sieht momentan so aus:
Code: Alles auswählen
  1. package me.genesplicer2k.joinmessanger;
  2. import net.milkbowl.vault.chat.Chat;
  3. import org.bukkit.plugin.PluginManager;
  4. import org.bukkit.plugin.RegisteredServiceProvider;
  5. import org.bukkit.plugin.java.JavaPlugin;
  6. public class JoinMessanger extends JavaPlugin {
  7.    public static Chat chat = null;
  8.    
  9.    public void onEnalbe() {
  10.       System.out.println("JoinMessanger wurde gestartet!");
  11.       
  12.       PluginManager pm = this.getServer().getPluginManager();
  13.       pm.registerEvents(new JoinListener(this), this);
  14.       
  15.    }
  16.    
  17.    private boolean setupChat()
  18.     {
  19.         RegisteredServiceProvider<Chat> chatProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.chat.Chat.class);
  20.         if (chatProvider != null) {
  21.             chat = chatProvider.getProvider();
  22.         }
  23.         return (chat != null);
  24.    
  25. }
  26. }


Die JoinListener Klasse sieht momentan so aus:
Code: Alles auswählen
  1. package me.genesplicer2k.joinmessanger;
  2. import net.milkbowl.vault.chat.Chat;
  3. import org.bukkit.entity.Player;
  4. import org.bukkit.event.EventHandler;
  5. import org.bukkit.event.EventPriority;
  6. import org.bukkit.event.Listener;
  7. import org.bukkit.event.player.PlayerJoinEvent;
  8. public class JoinListener implements Listener{
  9.    private Chat plugin;
  10.    
  11.    public JoinListener (JoinMessanger plugin) {
  12.       this.plugin = plugin.chat;
  13.    }
  14.    
  15.    @EventHandler(priority = EventPriority.HIGHEST)
  16.    public void onJoin(PlayerJoinEvent e) {
  17.       Player p = e.getPlayer();
  18.          if (JoinMessanger.chat.playerInGroup(e.getPlayer(), "admin")) {
  19.             e.setJoinMessage(p.getName() + "ist nun Online!");
  20.       
  21.       }
  22.    }
  23.    
  24. }


Ich denke in der plugin.yml solle alles stimmen:
Code: Alles auswählen
  1. name: JoinMessanger
  2. version: 1.0
  3. author: genesplicer2k
  4. depend: [Vault]
  5. main: me.genesplicer2k.joinmessanger.JoinMessanger


Ansonsten habe ich eigentlich alles gemacht, jedoch bekomme ich in der Hauptklasse eine Warnung vor: private boolean setupChat() . Diese lautet:
Code: Alles auswählen
  1. The method setupChat() from the type JoinMessanger is never used locally

In der JoinListener-Klasse bekomme ich auch zwei Warnungen:
Bei "private Chat plugin"
Code: Alles auswählen
  1. The value of the field JoinListener.plugin is not used

Und des weiteren bei "this.plugin = plugin.chat;"
Code: Alles auswählen
  1. The static field JoinMessanger.chat should be accessed in a static way


Ansonsten sollte alles rein sein: Auf dem Server sind momentan lediglich die Plugin Vault, PermissionsEX, JoinMessanger, MChat installiert. In der Konsole habe ich nun auch keine Fehlermeldungen.
Wenn ich die Events in der Config von MChat auf false setzte, erscheint die Standart Joinnachricht von Bukkit. Wen dieses auf true steht erscheint wieder "[Admin]genesplicer2k ist nun Online.
Wenn ich die JoinMessage in der Config von MChat raus nehme und das Feld dort leer lasse, erscheint keine Nachricht. Wenn ich dann auch noch die Events auf false setzt kommt wieder die Standart-Nachricht von Bukkit.

Vlt. liegt es ja an MChat, aber ich wüsste jetzt keine weitern Plugins, für Vault...

Vielen Dank für euer tolles Engagement. Ich werde mich möglichst bald, wenn mein Wissenstand höher ist, so gut wie möglich hier im Forum einsetzten.
Ich hoffe, dass ich jetzt alles wichtige genannt habe.

Gruss

PS: Lohnt es sich mal auf eurem TS vorbei zu schauen, oder ist dieser für etwas Fortgeschrittene? :P
Benutzeravatar
genesplicer2k
 
Beiträge: 60
Registriert: Mi 7. Aug 2013, 14:50

Re: Vault und PermissionsEX

Beitragvon PostCrafter » Mi 22. Jan 2014, 17:29

Wie du selber schon festgestellt hast, wird die Methode setupChat nirgends benutzt, dies ist jedoch unbedingt notwendig, da Chat ansonsten null ist und keine ihrer Methoden verwendet werden kann.

An sich würde ich zudem nur einen direkten Verweise auf Chat aufrecht erhalten, also im JoinListener über JoinMessanger.chat auf Chat zugreifen. Genau so machst du es aktuell bereits, daher kannst du das private Feld (Chat plugin) im JoinListener wieder entfernen.

Das Hauptproblem sollte lediglich sein, dass JoinMessanger.chat nicht initiiert wird, was durch das Einfügen der setupChat-Methode im onEnable (übrigens onEnable, nicht onEnalbe wie es bei dir aktuell steht) gelöst wird.

Auf dem TeamSpeak darfst du gerne jederzeit kommen, allerdings sind dort aktuell größtenteils ein paar Freunde, die verschiedene Spiele (League of Legends, Diablo 3, Hearthstone, etc) spielen, du wirst also außer mir selten andere Programmierer antreffen. Solltest du jedoch irgendwelche spontanen Fragen haben, so bin ich dort meist auch erreichbar.
TeamSpeak-Server zur freien Nutzung: postcrafter.de
Benutzeravatar
PostCrafter
Administrator
 
Beiträge: 1443
Registriert: Do 6. Jun 2013, 19:16
Wohnort: Ebersberg

Re: Vault und PermissionsEX

Beitragvon genesplicer2k » Mi 22. Jan 2014, 18:17

Okay, danke.

Ich habe es soweit umgesetzt wie du es beschrieben hast, doch weiss ich jetzt nicht, was ich hier eintragen muss:

Code: Alles auswählen
  1. public JoinListener (JoinMessanger plugin) {
  2.    }

Die beiden Klassen sehen momentan so aus:
Code: Alles auswählen
  1. package me.genesplicer2k.joinmessanger;
  2. import net.milkbowl.vault.chat.Chat;
  3. import org.bukkit.plugin.PluginManager;
  4. import org.bukkit.plugin.RegisteredServiceProvider;
  5. import org.bukkit.plugin.java.JavaPlugin;
  6. public class JoinMessanger extends JavaPlugin {
  7.    public static Chat chat = null;
  8.    
  9.    public void onEnable() {
  10.       this.setupChat();
  11.       System.out.println("JoinMessanger wurde gestartet!");
  12.       PluginManager pm = this.getServer().getPluginManager();
  13.       pm.registerEvents(new JoinListener(this), this);
  14.    
  15. }
  16.     private boolean setupChat()
  17.     {
  18.         RegisteredServiceProvider<Chat> chatProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.chat.Chat.class);
  19.         if (chatProvider != null) {
  20.             JoinMessanger.chat = chatProvider.getProvider();
  21.         }
  22.         return (JoinMessanger.chat != null);
  23.     }
  24. }

die JoinListener:
Code: Alles auswählen
  1. package me.genesplicer2k.joinmessanger;
  2. import net.milkbowl.vault.chat.Chat;
  3. import org.bukkit.entity.Player;
  4. import org.bukkit.event.EventHandler;
  5. import org.bukkit.event.EventPriority;
  6. import org.bukkit.event.Listener;
  7. import org.bukkit.event.player.PlayerJoinEvent;
  8. public class JoinListener implements Listener{
  9.    
  10.    public JoinListener (JoinMessanger plugin) {
  11.    }
  12.    
  13.    @EventHandler(priority = EventPriority.HIGHEST)
  14.    public void onJoin(PlayerJoinEvent e) {
  15.       Player p = e.getPlayer();
  16.          if (JoinMessanger.chat.playerInGroup(e.getPlayer(), "Admin")) {
  17.             e.setJoinMessage(p.getName() + "ist nun Online!");
  18.       
  19.       }
  20.    }
  21.    
  22. }

Soweit ich das richtig von dir verstanden habe, meintest du es doch so oder?

In der JoinMessanger-Klasse habe ich soweit keine Warnungen mehr. Lediglich in der JoinListener-Klasse kommt vor "import net.milkbowl.vault.chat.Chat;" noch die Warnung "The import net.milkbowl.vault.chat.Chat is never used".
Was muss ich also noch verändern im Constructor?

Gruss
Benutzeravatar
genesplicer2k
 
Beiträge: 60
Registriert: Mi 7. Aug 2013, 14:50

Nächste

Zurück zu Bereits gelöst

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 5 Gäste

cron