Falls es im falschen Berreich ist bitte verschieben^^
Hay,
ich bin momentan dran ein Plugin zu schreiben und nun würde ich gerne Spieler in eine config file eintragen lassen und mir dann per Befehl ausgeben lassen z.b so:
Unser Admin Team:
Spieler1
Spieler2
Spieler3
usw
Halt das sie alle untereinander stehen. Ich bekomme es aber nur hin das sie nebeneinander stehen. ( Kenne mich mit Config files noch nicht so aus )
Hier mal mein Code zum ausgeben:
so werden sie nur hintereinander angezeigt obwohl ich das \n gemacht habe. Momentan füge ich die Spieler per Hand in die Config ein aber man kann das doch bestimmt auch per Command machen oder?
Würde mich über eine Antwort freuen
Wie gesagt kenne ich mich mit config files noch nicht wirklich aus
was ist cs für ein objekt? und der quellcode zu SendMessage wäre auch nicht verkehrt, vlt. kann sendMessage garnicht mit "\n" umgehen.
was du sonst auch noch machen kannst wäre die ganzen namen in einer ArrayList<String> speichern und dann über eine for-each schleife über die ArrayList iterieren und cs.sendMessage einfach jedesmal aufrufen.
Habe für den Player cs genommen ( Um ihn "anzusprechen" ) anstelle von cs könnte man auch p nehmen.
SendMessage kann mit /n umgehen da ich es an einer andere Stelle auch gemacht habe.
SendMessage ist von Bukkit bzw Spigot ja von haus aus drin^^
hier mal eine möglichkeit wie du aus einer datei ein String-array machst:
Code:
package de;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.util.ArrayList;
public class Users {
public ArrayList<String> temp;
public Users(){
temp = new ArrayList<String>();
temp.add("§cAdmin§8: ");
}
public void get(String req) {
String line;
try {
if(req == null){
return;
}
File file = new File(req);
LineNumberReader reader = new LineNumberReader(new FileReader(file));
while((line = reader.readLine())!= null){
temp.add(line);
}
reader.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
public void wrapper(){
String[] users = new String[temp.size()];
int counter = 0;
for(String a : temp){
users[counter] = a;
counter++;
}
}
}
die ArrayList kannst du von überall erreichen und im wrapper ist der code um aus der ArrayList ein String-Array zu "zaubern".
dein aufruf würde also ungefähr so aussehen:
Code:
private Users asd = new Users();
asd.get("HIERDATEIPFAD EINGEBEN");
String[] users = new String[asd.temp.size()];
int counter = 0;
for(String a : asd.temp){
users[counter] = a;
counter++;
}
cs.sendMessage(users);
es sollte so funktionieren.
Edit: ich hab's jetzt als eigene Class gemacht, müsstest also ne Users.class hinzufügen zu dem projekt oder du nimmst dir nur die methoden und packst das ganze einfach direkt über den cs.sendMessage aufruf.
Ich weiß nicht wie diese Admin-Liste als String bei dir aussieht.
Falls die Admins z.B. durch Kommas oder andere Zeichen getrennt sind, kannst du Lambda-Magie benutzen um die auszugeben.
Code:
import java.util.Arrays;
public class AdminList {
public static void main(String[] args) {
String admins = "0xfaded,.Scy,kleinkiiko";
cs.sendMessage("Die Admins sind:");
Arrays.stream(admins.split(",")).forEach(cs::sendMessage);
}
}
Würde halt gerne so haben das die Admins in einer Config datei stehen und dort ausgelesen werden . So das die dann Ingame Untereinander stehen so in etwa:
Würde halt gerne so haben das die Admins in einer Config datei stehen und dort ausgelesen werden . So das die dann Ingame Untereinander stehen so in etwa:
Unsere Admins:
0xfaded
Scy
kleinkiiko
So soll es aussehen.
genau das tut mein code
musst natürlich die datei auch genau so formatieren:
0xfaded
Scy
kleinkiiko
asd
qwe
eewq
...
mit meinem beispiel wird halt am anfang auch "§cAdmin§8: " als erstes ausgegeben, was das tut weiß ich nicht, aber bei dir stand dies am anfang.
wenn du die datei erstellen willst durch ingame-nachrichten(wie du an die nachricht selbst kommst musst du selbst gucken), geht das auch relativ einfach.
Egal wo ich den unteren Code einfüge bekomme ich immer den Error:
Code:
Description Resource Path Location Type
Syntax error on token ";", { expected after this token Users.java /kAdmin/src/de/kleinkiko/kAdmin line 48 Java Problem
Syntax error on token ".", @ expected after this token Users.java /kAdmin/src/de/kleinkiko/kAdmin line 46 Java Problem
Syntax error, insert ")" to complete MethodDeclaration Users.java /kAdmin/src/de/kleinkiko/kAdmin line 46 Java Problem
Syntax error, insert "Identifier (" to complete MethodHeaderName Users.java /kAdmin/src/de/kleinkiko/kAdmin line 46 Java Problem
Syntax error, insert "SimpleName" to complete QualifiedName Users.java /kAdmin/src/de/kleinkiko/kAdmin line 46 Java Problem
Zeile 46:
Code:
asd.get("kAdmin.Admins");
Zeile 48:
Code:
int counter = 0;
Habe es grade in der Klasse Users drin wo auch der obere Code drin steht.
Pastebin der ganzen Klasse:
mit dem dateipfad ist so ne sache, ich weiß nicht wo die datei in der du den code untergebracht hast aus geführt wird, du könntest also einfach zu der datei Admin gehen und dir den dateipfad angucken, also den kompletten, unter windows würde es so aussehen:
c:\Users\Irgend\was\Plugin\kaAdmin\admin
unter einem unix system eher so:
/Plugin/kAdmin/admin
oder du nimmst den relativen pfad:
Plugin/kAdmin/admin
Vielen dank euch alle das ihr mit mir so viel geduld hattet^^
//EDIT:
Sobald ich den Server nun reloade wird die config überschrieben und dort steht nur der Standart drin den ich vorher in der Main klasse angegeben hab.
Habe ihn so angegeben in der Main klasse bei public void onEnable:
[Minecraft Server Plugin] Problem mit der Config 12/30/2013 - General Coding - 0 Replies Hi e*pvpers!
Und zwar habe ich bei meinem Plugin das Problem, dass sich die config.yml immer automatisch leert!
Hier der Code von dem Plugin:
package tk.bukkit.gorok;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;