AhmedKing Geschrieben 23. Juli 2013 Share Geschrieben 23. Juli 2013 Hallo libe Community ich habe ein frage und zwar kann mir einer Helfen wie ich machen kann wen der Spieler Marviin on ist das der name nicht mehr Grau ist sondern Gelb... if(cmd.getName().equalsIgnoreCase("Team")){ if(args.length == 0){ p.sendMessage(ChatColor.DARK_RED + "Owner:" + ChatColor.DARK_GRAY + " Marviin "); hier ist schon der Anfang bitte helft mir danke MFG AhmedKing Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kryter Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 Ich verstehe nicht ganz was du meinst. Du willst das Owner: in rot ausgegeben wird, schreiben tut dieser in Grau und der Name des Owners soll dann gelb sein? Bin grad echt verpeilt und müde, tut mir Leid wenn das ganze total offensichtlich ist und ich das grad nicht blicke Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Arkanus Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 (bearbeitet) Außerdem: Warum arbeitest du mit einem Command? Willst du nicht lieber das PlayerLoginEvent abfangen? //Edit Achso habs falsch verstanden : Meinst du so: p.sendMessage(ChatColor.DARK_RED + "Owner:" + ChatColor.YELLOW + " Marviin "); Kann ich mir iwie kaum vorstellen bearbeitet 24. Juli 2013 von Salocin Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TuxGamer Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 (bearbeitet) Ich verstehe auch nicht genau, was jetzt ist, aber ich hätte zwei kleine Vorschläge: Sagen wir, dein onCommand sieht c.a. so aus: onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) dann kannst du an Stelle von cmd.getName() auch commandLabel benutzen, das spart ein paar Ressourcen. Außerdem schreibe in einem equalsIgnoreCare am besten alles klein. Damit sparst auch auch ein paar Bytes RAM und ein paar Rechnungen des Prozessors. Auch wenn man keinen Unterschied spürt EDIT: Ich kann auch nicht lesen. Also: Du musst den Spieler Marviin in ein Player Object umwandeln. Das kannst du mit Bukkit.getPlayer("Marviin"). Wenn der jetzt online ist, also Bukkit.getPlayer("Marviin").isOnline(), kannst du die ChatColor GOLD benutzen, aso Dunkelgelb. Der Code sähe dann so aus: onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (args.length == 0) { if (Bukkit.getPlayer("Marviin").isOnline()) { sender.sendMessage(ChatColor.DARK_RED + "Owner: " + ChatColor.GOLD + "Marviin"); } else { sender.sendMessage(ChatColor.DARK_RED + "Owner: " + ChatColor.DARK_GRAY + "Marviin"); } }} Tipp: Ich nutze nicht mehr ChatColor, sondern einfach ?4 für Rot und so weiter. Das geht (für mich) einfacher ~Tuxi bearbeitet 24. Juli 2013 von TuxGamer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Arkanus Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 Ist aber besser, Konstanten zu nehmen. Es könnte ja sein, das iwann ein Wert verändert wird (Wird sowieso nie passieren). Außerdem lesen sich solche Konstanten besser. Ist zwar mehr Schreibarbeit, dafür wird der Code aber auch nicht so kryptisch. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AhmedKing Geschrieben 24. Juli 2013 Autor Share Geschrieben 24. Juli 2013 (bearbeitet) Für mich nicht aber danke und noch eine frage @TuxGamer wie geht das mit mehreren Spieler z.B noch Supporter hinzufügen kann ich da mehrere machen... bearbeitet 24. Juli 2013 von Kryter Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kryter Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 Nutze beim nächsten mal bitte die "Bearbeiten"-Funktion um einen Doppelpost zu vermeiden. Danke. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Arkanus Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 Mach einfach noch ein paar Zeilen hinzu? Hast du überhaupt Ahnung vom programmieren? Einfach weitere Nachrichten an den Sender geben. sender.sendMessage(<Nachricht>); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AhmedKing Geschrieben 24. Juli 2013 Autor Share Geschrieben 24. Juli 2013 (bearbeitet) Ja hab ich und 2 Nachrichten geht nicht! Dann kommt "An internal error occurred while attempting to perform this command" Dumm bin ich ja auch nicht... bearbeitet 24. Juli 2013 von AhmedKing Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Arkanus Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 Dann poste mal den Stacktrace (in der Konsole) und den Code. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AhmedKing Geschrieben 24. Juli 2013 Autor Share Geschrieben 24. Juli 2013 ich habe nur Dieses Plugin auf der Console! public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(!(sender instanceof Player)){ return false; } //Team if(cmd.getName().equalsIgnoreCase("Team")){ if(args.length == 0){ if(Bukkit.getPlayer("Marviin").isOnline()){ sender.sendMessage(ChatColor.DARK_RED + "Owner: " + ChatColor.YELLOW + "Marviin"); } else { sender.sendMessage(ChatColor.DARK_RED + "Owner:" + ChatColor.DARK_GRAY + " Marviin"); } } } return false; }} Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Arkanus Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 (bearbeitet) Für mehrere Spieler würde ich jetzt ein Stringarray für das Team anlegen. Das sieht dann so aus: String[] team = { "Marviin", "Spieler2", "Spieler3"};for(String member : team) { String rank; if(member.equals("Marviin")) rank = ChatColor.DARK_RED + "Owner"; else rank = ChatColor.DARK_RED + "Admin"; if(Bukkit.getOfflinePlayer(member).isOnline()) sender.sendMessage(rank + ChatColor.YELLOW + member); else sender.sendMessage(rank + ChatColor.DARK_GRAY + member);} So sollte es gehen. bearbeitet 24. Juli 2013 von Salocin Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
idk.cpp Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 (bearbeitet) Ich hab das jz mal so verstanden,, dass du mit /team eine Liste an Teammitgliedern abrufen willst von denen die, die on sind YELLOW und die, die off sind DARK_GREY gefärbt sind. Das hätte ich so gemacht: (Vorausgesetzt du hast ein Plg wie GroupManager, PermissionsEx odgl. welches die Displaynames ändert) onCommand [...] { [...] String[] teamMitglieder; // hier evtl. eine Funktion zum lesen aus einer Datei oder so StringBuffer sb = new StringBuffer(); for (String mitglied : teamMitglieder) { if (Bukkit.getPlayer(mitglied).isOnline()) { sb.append(ChatColor.YELLOW); } else { sb.append(ChatColor.DARK_GREY); } sb.append(mitglied + ", "); } String msg = sb.toString(); msg = msg.substring(0, msg.length()-2); // Zum entfernen des letzten Beistriches sender.sendMessage(/*evtl. prefix wie "unsere Teammitglieder: " */ msg);} bearbeitet 24. Juli 2013 von idk.cpp Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Glumandala Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 (bearbeitet) ich habe nur Dieses Plugin auf der Console! public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(!(sender instanceof Player)){ return false; } //Team if(cmd.getName().equalsIgnoreCase("Team")){ if(args.length == 0){ if(Bukkit.getPlayer("Marviin").isOnline()){ sender.sendMessage(ChatColor.DARK_RED + "Owner: " + ChatColor.YELLOW + "Marviin"); } else { sender.sendMessage(ChatColor.DARK_RED + "Owner:" + ChatColor.DARK_GRAY + " Marviin"); } } } return false; }} Ich würde sagen, du hast die plugin.yml nicht erstellt oder nicht korrekt bearbeitet.. Ohne Error-Code von der Konsole kann man sowieso nicht groß weiterhelfen.. Jetzt wäre es auch nicht falsch, das Problem noch einmal ausführlich zu schildern.. Ich habe dein Problem nicht wirklich verstanden. Wie's aussieht bist du auch nicht wirklich gut mit Java Vertraut. Da würde ich ein Java Buch empfehlen. - Cookey bearbeitet 24. Juli 2013 von DarkCookieee.de Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Arkanus Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 (bearbeitet) An der Plugin.yml kann es aber nicht liegen, dann würde er das Plugin gar nicht laden. Ich habe ihn so verstanden, dass er einen Error bekommt, wenn er dem Sender eine weitere Nachricht sendet. bearbeitet 24. Juli 2013 von Salocin Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kryter Geschrieben 24. Juli 2013 Share Geschrieben 24. Juli 2013 Da wäre dann aber der Fehlercode hilfreich. Poste bitte mal den Fehlercode der dir wiedergegeben wird und bitte in einem Spoiler. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AhmedKing Geschrieben 25. Juli 2013 Autor Share Geschrieben 25. Juli 2013 Also nichmal für alle ich habe ein plguin.yml erstellt das Plugin geht auch nur wenn ich /team eigebe kommt "An internal error occurred while attempting to perform this command" ich weiß echt nicht warum es nicht geht Wenn ich /team eingebe komm in der Console: [Info] Marviin issued server command: /team[Server] nullorg.Bukkit.command.CommandException: Unhandled exeption executing command 'team' in plugin Team v.1.1at org.bukkit..command.PluginCommand.execute<PluginCommand.java:44>at org.bukkit..command.PluginCommand.dispatch<SimpleCommandMap.java:189>at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand<CraftServer.java.523>at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand<PlayerConnection.java:964>[//Hier müsste noch mehr stehen ist aber glaub ich unwichtig sonst einfach posten dann schreib ichs auch noch rein]Caused by: java.lang.NullPointerExeption at me.Marviin.Team.Team.onCommand<Team.java:35> at org.bukkit.command.PluginCommand.execute<PluginCommand.java:44> ... 15 more So das war die Conolse. MFG AhmedKing Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
idk.cpp Geschrieben 25. Juli 2013 Share Geschrieben 25. Juli 2013 if(cmd.getName().equalsIgnoreCase("Team")){ das ist wohl nicht die erste Zeile... im StackTrace steht, dass der Fehler vermutlich in Zeile 35 steckt... Falls folgendes die Zeile 35 ist, p.sendMessage(ChatColor.DARK_RED + "Owner:" + ChatColor.DARK_GRAY + " Marviin "); ist der Fehler wahrscheinlich, dass p == null Wo ist p definiert? Wie wird p zugewiesen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AhmedKing Geschrieben 25. Juli 2013 Autor Share Geschrieben 25. Juli 2013 (bearbeitet) Danke für die Antworten @salocin if(Bukkit.getOfflinePlayer(member).isOnline())sender.sendMessage(rank + ChatColor.YELLOW + member);elsesender.sendMessage(rank + ChatColor.DARK_GRAY + member); das else stimmt nicht kann man das irgendwie anders machen? bearbeitet 25. Juli 2013 von AhmedKing Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
4w3s0m3G4m3r Geschrieben 8. Oktober 2013 Share Geschrieben 8. Oktober 2013 (bearbeitet) das else stimmt nicht kann man das irgendwie anders machen? if(Bukkit.getOfflinePlayer(member).isOnline())sender.sendMessage(rank + ChatColor.YELLOW + member);elsesender.sendMessage(rank + ChatColor.DARK_GRAY + member); Das ist glaub ich was falsch dran Du hast 1. Die { } vergessen bei if (...) und else (...) Und du hast else { sender.send.....} zusammen geschrieben Versuchs mal hiermit: if(Bukkit.getOfflinePlayer(member).isOnline()) {sender.sendMessage(rank + ChatColor.YELLOW + member);}else { sender.sendMessage(rank + ChatColor.DARK_GRAY + member); } LG 4w3s0m3G4m3r (oder MrAwesome , für die die es sich nicht merken können ) bearbeitet 8. Oktober 2013 von 4w3s0m3G4m3r Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
idk.cpp Geschrieben 8. Oktober 2013 Share Geschrieben 8. Oktober 2013 Zu 1.: Wenn nur ein command hinter einem if () oder else kommt braucht man keine { } Zu 2.: Wut?? Abstände sind egal. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Arkanus Geschrieben 8. Oktober 2013 Share Geschrieben 8. Oktober 2013 (bearbeitet) Muss ich idk.cpp zustimmen. Die {} brauch man bei einerAnweisung nicht. Ich hab mir das so angewöhnt, es ist aber nicht falsch. Mit dem else: Die Abstände sind iwie verbuggt, hier noch mal der Ursprüngliche Code: String[] team = { "Marviin", "Spieler2", "Spieler3"}; for(String member : team) { String rank; if(member.equals("Marviin")) rank = ChatColor.DARK_RED + "Owner"; else rank = ChatColor.DARK_RED + "Admin"; if(Bukkit.getOfflinePlayer(member).isOnline()) sender.sendMessage(rank + ChatColor.YELLOW + member); else sender.sendMessage(rank + ChatColor.DARK_GRAY + member); } http://pastebin.com/ZMdj0G6Z bearbeitet 8. Oktober 2013 von Salocin Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AhmedKing Geschrieben 14. Oktober 2013 Autor Share Geschrieben 14. Oktober 2013 Ich danke für eure Antworten... Das PL geht, ABER ich würde jetzt z.B gerne machen: Owner: Marviin ; Spieler Admin: Spieler2 ; Spieler3 Mod: Spieler 4 Supporter: Spieler5 ; Spieler 6 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
idk.cpp Geschrieben 14. Oktober 2013 Share Geschrieben 14. Oktober 2013 (bearbeitet) Also ich würde das wie folgt machen, dabei benutze ich die Klasse "Utilman" die es nicht gibt. In dieser Klasse stehen dann Funktionen die mir spezielle Dinge verraten. Wie das in der Klasse Utilman gelöst ist, ist eine andere Geschichte. [...]String[] teammitglieder = Utilman.getAllFromTeam();Set<String> owner = new Set<>(); // Ich weiß dass das nicht geht, hier einfach das set deiner wahl nehmenSet<String> admin = new Set<>();Set<String> mod = new Set<>();Set<String> sup = new Set<>();for (String str: teammitglieder) { if (Utilman.isAdmin(str)) if (Bukkit.getOfflinePlayer(str).isOnline()) admin.add(ChatColor.YELLOW + str); else admin.add(ChatColor.DARK_GREY + str); if (Utilman.isOwner(str)) if (Bukkit.getOfflinePlayer(str).isOnline()) owner.add(ChatColor.YELLOW + str); else owner.add(ChatColor.DARK_GREY + str); if (Utilman.isMod(str)) if (Bukkit.getOfflinePlayer(str).isOnline()) mod.add(ChatColor.YELLOW + str); else mod.add(ChatColor.DARK_GREY + str); if (Utilman.isSup(str)) if (Bukkit.getOfflinePlayer(str).isOnline()) sup.add(ChatColor.YELLOW + str); else sup.add(ChatColor.DARK_GREY + str);}String res = "";for (String str : owner) { res += "; " + str;}sender.sendMessage("Owner: " + res.substring(2));res = "";for (String str : admin) { res += "; " + str;}sender.sendMessage("Admin: " + res.substring(2));res = "";for (String str : mod) { res += "; " + str;}sender.sendMessage("Mod: " + res.substring(2));res = "";for (String str : owner) { res += "; " + str;}sender.sendMessage("Supporter: " + res.substring(2)); Die Utilman Klasse findet also heraus welche Teammember es gibt und welchen Rang sie haben... Konnte dir das helfen? idk.java bearbeitet 14. Oktober 2013 von idk.cpp Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AhmedKing Geschrieben 14. Oktober 2013 Autor Share Geschrieben 14. Oktober 2013 1 das Set stimmt leider net und 2 hab ich nich nie was von einer Ultiman Klasse gehört Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden