• 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);
 

moinless

Schafhirte
Registriert
4 Oktober 2013
Beiträge
103
Diamanten
302
Es wäre von Vorteil, wenn du die ganze Klasse schicken könntest und sagen könntest, was sie machen soll.

Trotzdem würde ich raten, dass du in dieser Zeile etwas verwechselt hast:
if(p.getName().equalsIgnoreCase("Adminchat")) {

Ich denke mal, du möchtest den eingegeben Command erhalten, nicht den Namen des Spielers?
 
D

deleted195658

Guest
Jo, das habe ich mitlerweile auch schon gemerkt und korrigiert.
Hier @moinless :
package chats;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class Chats implements CommandExecutor {

@Override
public boolean onCommand(CommandSender sender, Command cmd, String string, String[] args) {

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(cmd.getName().equalsIgnoreCase("Adminchat")) {
for (Player target : Bukkit.getServer().getOnlinePlayers()) {
if (target.hasPermission("Admin")) {
target.sendMessage("§4[ADMINCHAT] " + sender.getName() + args);
}
}
}
}

}



return false;
}

}
 
Zuletzt bearbeitet von einem Moderator:
F

Figz

Guest
1. Bitte benutze Code-Tags
2. Hast du immernoch nicht gesagt, was eigentlich dein Problem ist


3....:

Code:
if(cmd.getName().equalsIgnoreCase("Adminchat"))
{
  if(sender instanceof Player)
  {
    Player p = (Player)sender;
    if(p.hasPermission("Admin")
    {
      for(Player player : Bukkit.getOnlinePlayers())
      {
        if(player.hasPermission("Admin") { player.sendMessage("§4[ADMINCHAT] " + p.getName() + args); }
      }
    }
  }
}
 
D

deleted195658

Guest
1. Bitte benutze Code-Tags
2. Hast du immernoch nicht gesagt, was eigentlich dein Problem ist
Mein Problem ist, dass ich nicht weiß, was das Problem ist :/


3....:

Code:
if(cmd.getName().equalsIgnoreCase("Adminchat"))
{
  if(sender instanceof Player)
  {
    Player p = (Player)sender;
    if(p.hasPermission("Admin")
    {
      for(Player player : Bukkit.getOnlinePlayers())
      {
        if(player.hasPermission("Admin") { player.sendMessage("§4[ADMINCHAT] " + p.getName() + args); }
      }
    }
  }
}
So funktionierts immer noch nicht :/
 
F

Figz

Guest
Ich will machen dass es so zu sagen einen extra "chat" für Admins gibt, in den nur Admins was schreiben können und nur Admins es lesen können
Das habe ich bereits verstanden, aber was funktioniert nicht? Bekommen die Spieler keine Nachricht? ist die Nachricht falsch aufgebaut? Bekommen falsche Spieler die Nachricht?
Ich sehe spontan zwei Fehler. "Richtig" wären die Zeilen so:
Code:
text.append(args[i]).append(" ");
Code:
target.sendMessage("§4[ADMINCHAT] " + sender.getName() + " " + text);

Eher Nebensache, was die Funktionalität angeht.
 
F

Figz

Guest
Moin, ich denke mal das es daran liegt, das du unter deiner for Schleife (Da, wenn es in der for Schleife steht, die for Schleife nach dem ersten Durchlauf "abricht".) , ein "return true;" vergessen hast.
Das bewirkt nur, dass der Spieler eine Meldung bekommt "/Adminchat". Der Code der dort ist sollte trotzdem ausgeführt werden.

An den TE, poste mal deine plugin.yml ...
 
D

deleted195658

Guest
Das bewirkt nur, dass der Spieler eine Meldung bekommt "/Adminchat". Der Code der dort ist sollte trotzdem ausgeführt werden.

An den TE, poste mal deine plugin.yml ...
Hier: (Hab das von der Frage dick gemacht)
name: BC
authors: [Tommyboy004]
version: 1.1
main: at.Tom.main.main
commands:
vote:
antrag:
antragannehmen:
money:
pay:
Adminchat:
aliases: [AC]
Rundruf:
aliases: [say]
Call:
permissions:
Admin:
 
Zuletzt bearbeitet von einem Moderator:
F

Figz

Guest
das Problem ist folgendes: Deine Plugin.yml ist falsch aufgebaut..
Du kannst nicht jeden Command hintereinander schreiben, du musst mindestrens eine Beschreibung dahinter haben oder eine usage..

In dem Link findest du den korrekten part der commands (leerzeichen sind wichtig)

https://pastebin.com/varGvzZp

aliases kannst du natürlich auch mit reinschreiben, habe ich jetzt nicht getan.
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
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".
 
Oben