• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Was habe ich falsch gemacht... :/

D

deleted195658

Guest
Hey Leute!
Ich würde gerne wissen, was ich hier falsch gemacht habe:

Player p = (Player)sender;

StringBuilder text = new StringBuilder();
for(int i = 0 ; i < args.length ; i++) {
text.append(args).append("");

if(p.hasPermission("Admin")) {
if(p.getName().equalsIgnoreCase("Adminchat")) {
for (Player target : Bukkit.getServer().getOnlinePlayers()) {
if (target.hasPermission("Admin")) {
target.sendMessage("§4[ADMINCHAT] " + sender.getName() + args);
 

Baba43

Ehem. Teammitglied
Ehem. Teammitglied
Registriert
5 November 2012
Beiträge
869
Diamanten
60
Minecraft
baba43
Nein, leider nicht...
Das heißt im Umkehrschluss, dass dein Befehl erst gar nicht funktioniert und die Berechtigung damit nichts zu tun hat, korrekt?

Du nutzt in deinem Codebeispiel oben einen CommandExecutor, aber wird der auch vom Plugin registriert? Andernfalls schwebt diese Klasse im leeren Raum und wird logischerweise nirgendwo verwendet. Mehr dazu kannst du hier nachlesen.
 
F

Figz

Guest
Das heißt im Umkehrschluss, dass dein Befehl erst gar nicht funktioniert und die Berechtigung damit nichts zu tun hat, korrekt?

Du nutzt in deinem Codebeispiel oben einen CommandExecutor, aber wird der auch vom Plugin registriert? Andernfalls schwebt diese Klasse im leeren Raum und wird logischerweise nirgendwo verwendet. Mehr dazu kannst du hier nachlesen.

Ist mir garnicht aufgefallen, aber stimmt!

Dies bedeutet auch, dass die Abfrage auf cmd.getName().equals... unnötig ist. Kannst du somit weglassen.

Hast du sowas in der Art in deiner onEnable() - Methode?
Oder in einer Methode die beim Laden des Plugins aufgerufen wird?

Code:
  Bukkit.getPluginCommand("adminchat").setExecutor(new Chats());

Falls nicht, dann füg diesen Code zumindest zum Testen in deine onEnable-Methode ein.

Die Eigenschaften von Befehlen dürften in der plugin.yml durchaus leer sein. Die Zeilen mit "usage" sind also unötig.

Stimmt, habe aber schon des öfteren bei i einer Version das Problem gehabt, dass es nicht funktioniert hat, kann aber auch schon sehr lange her sein..
 
Zuletzt bearbeitet von einem Moderator:
D

deleted195658

Guest
Ist mir garnicht aufgefallen, aber stimmt!

Dies bedeutet auch, dass die Abfrage auf cmd.getName().equals... unnötig ist. Kannst du somit weglassen.

Hast du sowas in der Art in deiner onEnable() - Methode?
Oder in einer Methode die beim Laden des Plugins aufgerufen wird?

Code:
  Bukkit.getPluginCommand("adminchat").setExecutor(new Chats());

Falls nicht, dann füg diesen Code zumindest zum Testen in deine onEnable-Methode ein.



Stimmt, habe aber schon des öfteren bei i einer Version das Problem gehabt, dass es nicht funktioniert hat, kann aber auch schon sehr lange her sein..
Das ist alles im main registriert
 
D

deleted195658

Guest
Die Eigenschaften von Befehlen dürften in der plugin.yml durchaus leer sein. Die Zeilen mit "usage" sind also unötig.

@TommyboyTV Bitte verwende für deinen Quellcode und YAML-Dateien immer Codeblöcke. Dazu schreibst du ohne Leerzeichen davor [ code ] und dahinter [ /code ]. Wie dir vielleicht im ersten Beitrag auffällt wurde ein [ i ] als Beginn von kursiven Text interpretiert. Bei YAML kommt es auf jedes Leerzeichen an.

Ich vermute mal, dass du Spielern die Gruppe "Admin" zugewiesen hast, diese aber nicht über eine gesetzte Permission "Admin" verfügen. Belese dich doch mal bei dem von dir verwendeten Permissionsplugin, wie du einer Gruppe eine Permission zuweist. Ich würde dir aber auch empfhelen, einen besseren Namen für diese Permission zu verwenden. Also z.B. "tom.adminchat".
Ich mache, dass, wenn ein Spieler die Permission "Admin" hat auf alle Commands mit der Permission mit "Admin" zugreifen kann, also dass wo anders auch die Permission "Admin" genutzt wird.
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Ggf. würde es sich irgendwann lohnen einfach den ganzen Code hier zu posten, inklusive aller Klassen und Dateien. Vermutlich kommt jetzt ein "aber dann klaut mir jemand meinen tollen Code". Weil auch irgendwer kaputten Code klaut. Ein ZIP-Archiv bietet sich beispielsweise an.

Alternativ könnt ihr natürlich auch weiter Kaffeesatz lesen.
 

Baba43

Ehem. Teammitglied
Ehem. Teammitglied
Registriert
5 November 2012
Beiträge
869
Diamanten
60
Minecraft
baba43
Also eigentlich sollte man auch ohne großartige Programmiererfahrung dazu in der Lage sein, sein Problem auf eine Ursache zurückzuführen, indem man Debug-Meldungen einbaut, mögliche Fehlerquellen durch Vereinfachung / Auskommentieren ausschließt usw. Dafür muss man nur einmal seinen Kopf einschalten.

Wenn dein Code auch ohne die Rechte-Abfrage nicht funktioniert, dann haben die Permissions schon mal nichts damit zu tun. Wenn du jetzt einfach mal die gesamte onCommand-Methode leerst und dort ein Bukkit.broadcastMessage("Hallo"); einfügst, wirst du wissen, ob der CommandHandler überhaupt aufgerufen wird oder nicht. Wenn das nicht der Fall ist, kann die Ursache ja nur sein, dass du die Klasse eben nicht registrierst oder dass die Methode, welche die Klasse registrieren soll, ihrerseits nicht aufgerufen wird.

Da du aber offensichtlich nicht in der Lage bist, solche einfachen Schlussfolgerungen selbstständig zu ziehen, solltest du dir nicht anmaßen, uns irgendwelchen Code mit der Begründung vorzuenthalten, dass der Code "schon richtig ist". Denn wärst du selbst in der Lage, deinen Code auf Korrektheit zu prüfen, hätte dieser Thread nicht schon zwei Seiten.
 
Zuletzt bearbeitet:
Oben