AhmedKing Posted July 23, 2013 Share Posted July 23, 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 to comment Share on other sites More sharing options...
Kryter Posted July 24, 2013 Share Posted July 24, 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 to comment Share on other sites More sharing options...
Arkanus Posted July 24, 2013 Share Posted July 24, 2013 (edited) 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 Edited July 24, 2013 by Salocin Link to comment Share on other sites More sharing options...
TuxGamer Posted July 24, 2013 Share Posted July 24, 2013 (edited) 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 Edited July 24, 2013 by TuxGamer Link to comment Share on other sites More sharing options...
Arkanus Posted July 24, 2013 Share Posted July 24, 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 to comment Share on other sites More sharing options...
AhmedKing Posted July 24, 2013 Author Share Posted July 24, 2013 (edited) 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... Edited July 24, 2013 by Kryter Link to comment Share on other sites More sharing options...
Kryter Posted July 24, 2013 Share Posted July 24, 2013 Nutze beim nächsten mal bitte die "Bearbeiten"-Funktion um einen Doppelpost zu vermeiden. Danke. Link to comment Share on other sites More sharing options...
Arkanus Posted July 24, 2013 Share Posted July 24, 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 to comment Share on other sites More sharing options...
AhmedKing Posted July 24, 2013 Author Share Posted July 24, 2013 (edited) 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... Edited July 24, 2013 by AhmedKing Link to comment Share on other sites More sharing options...
Arkanus Posted July 24, 2013 Share Posted July 24, 2013 Dann poste mal den Stacktrace (in der Konsole) und den Code. Link to comment Share on other sites More sharing options...
AhmedKing Posted July 24, 2013 Author Share Posted July 24, 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 to comment Share on other sites More sharing options...
Arkanus Posted July 24, 2013 Share Posted July 24, 2013 (edited) 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. Edited July 24, 2013 by Salocin Link to comment Share on other sites More sharing options...
idk.cpp Posted July 24, 2013 Share Posted July 24, 2013 (edited) 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);} Edited July 24, 2013 by idk.cpp Link to comment Share on other sites More sharing options...
Glumandala Posted July 24, 2013 Share Posted July 24, 2013 (edited) 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 Edited July 24, 2013 by DarkCookieee.de Link to comment Share on other sites More sharing options...
Arkanus Posted July 24, 2013 Share Posted July 24, 2013 (edited) 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. Edited July 24, 2013 by Salocin Link to comment Share on other sites More sharing options...
Kryter Posted July 24, 2013 Share Posted July 24, 2013 Da wäre dann aber der Fehlercode hilfreich. Poste bitte mal den Fehlercode der dir wiedergegeben wird und bitte in einem Spoiler. Link to comment Share on other sites More sharing options...
AhmedKing Posted July 25, 2013 Author Share Posted July 25, 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 to comment Share on other sites More sharing options...
idk.cpp Posted July 25, 2013 Share Posted July 25, 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 to comment Share on other sites More sharing options...
AhmedKing Posted July 25, 2013 Author Share Posted July 25, 2013 (edited) 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? Edited July 25, 2013 by AhmedKing Link to comment Share on other sites More sharing options...
4w3s0m3G4m3r Posted October 8, 2013 Share Posted October 8, 2013 (edited) 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 ) Edited October 8, 2013 by 4w3s0m3G4m3r Link to comment Share on other sites More sharing options...
idk.cpp Posted October 8, 2013 Share Posted October 8, 2013 Zu 1.: Wenn nur ein command hinter einem if () oder else kommt braucht man keine { } Zu 2.: Wut?? Abstände sind egal. Link to comment Share on other sites More sharing options...
Arkanus Posted October 8, 2013 Share Posted October 8, 2013 (edited) 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 Edited October 8, 2013 by Salocin Link to comment Share on other sites More sharing options...
AhmedKing Posted October 14, 2013 Author Share Posted October 14, 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 to comment Share on other sites More sharing options...
idk.cpp Posted October 14, 2013 Share Posted October 14, 2013 (edited) 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 Edited October 14, 2013 by idk.cpp Link to comment Share on other sites More sharing options...
AhmedKing Posted October 14, 2013 Author Share Posted October 14, 2013 1 das Set stimmt leider net und 2 hab ich nich nie was von einer Ultiman Klasse gehört Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now