|
You last visited: Today at 00:28
Advertisement
Minecraft Plugin Spieler aus Config laden
Discussion on Minecraft Plugin Spieler aus Config laden within the Java forum part of the Coders Den category.
07/18/2016, 14:33
|
#1
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
Minecraft Plugin Spieler aus Config laden
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:
Java-Quellcode
Code:
cs.sendMessage("§cAdmin§8: " + this.plugin.getConfig().getString("Admins.Admin") + "\n ");
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
|
|
|
07/18/2016, 14:48
|
#2
|
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
|
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.
|
|
|
07/18/2016, 14:54
|
#3
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
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^^
|
|
|
07/18/2016, 15:07
|
#4
|
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
|
wenn du mehrere zeilen mit sendMessage ausgeben willst, dann musst du ein String-array reingeben.
also z.b.:
Code:
String[] = new String[5];
String[0] = "§cAdmin§8:";
String[1] = "Admin1";
...
cs.sendMessage(temp);
ansonsten musst du über eine ArrayList iterieren und halt pro eintrag in der ArrayList 1x sendMessage aufrufen.
|
|
|
07/18/2016, 15:12
|
#5
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
Wenn ich das über ein String mache kann ich dann einfach in der config z.b die namen eintragen udn diese werden dann untereinander angezeigt?
|
|
|
07/18/2016, 15:22
|
#6
|
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
|
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.
edit2: hatte noch nen kleinen fehler drinnen
|
|
|
07/18/2016, 15:26
|
#7
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
Ok danke werde ich mir gleich mal anschauen
|
|
|
07/18/2016, 16:27
|
#8
|
elite*gold: 7
Join Date: Dec 2013
Posts: 446
Received Thanks: 187
|
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);
}
}
|
|
|
07/18/2016, 16:31
|
#9
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
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.
|
|
|
07/18/2016, 16:37
|
#10
|
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
|
Quote:
Originally Posted by kleinkiiko
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.
|
|
|
07/18/2016, 16:51
|
#11
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
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:
Habe es grade in der Klasse Users drin wo auch der obere Code drin steht.
Pastebin der ganzen Klasse:
|
|
|
07/18/2016, 18:20
|
#12
|
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
|
so kannst du den code nicht ausführen.
dort wo du diese zeile eingefügt hattest:
Code:
cs.sendMessage("§cAdmin§8: " + this.plugin.getConfig().getString("Admins.Admin") + "\n ");
musst du folgendes hinschreiben anstelle von dem aufruf:
Code:
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);
du kannst den code nicht einfach in die Users.class packen.
nachtrag:
falls du es in einer methode schreibst, dann musst du das private vor Users asd entfernen(siehe oben).
|
|
|
07/18/2016, 19:25
|
#13
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
Habe es jetzt so gemacht wie du gesagt hast. Der Obere Code ( Lange ) ist in der Users.class und der kleinere ist dort wo du gesagt hast.
Nun bekomme ich folgenden Fehler wenn ich den Befehl nutze:
Code:
[19:21:16] [Server thread/INFO]: kleinkiko issued server command: /alist
[19:21:16] [Server thread/WARN]: java.io.FileNotFoundException: kAdmin.Admin (Das System kann die angegebene Datei nicht finden)
[19:21:16] [Server thread/WARN]: at java.io.FileInputStream.open0(Native Method)
[19:21:16] [Server thread/WARN]: at java.io.FileInputStream.open(Unknown Source)
[19:21:16] [Server thread/WARN]: at java.io.FileInputStream.<init>(Unknown Source)
[19:21:16] [Server thread/WARN]: at java.io.FileReader.<init>(Unknown Source)
[19:21:16] [Server thread/WARN]: at de.kleinkiko.kAdmin.Users.get(Users.java:24)
[19:21:16] [Server thread/WARN]: at de.kleinkiko.kAdmin.alist.onCommand(alist.java:25)
[19:21:16] [Server thread/WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[19:21:16] [Server thread/WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[19:21:16] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchCommand(CraftServer.java:646)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.PlayerConnection.handleCommand(PlayerConnection.java:1351)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1186)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:45)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:1)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13)
[19:21:16] [Server thread/WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[19:21:16] [Server thread/WARN]: at java.util.concurrent.FutureTask.run(Unknown Source)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:737)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:399)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:673)
[19:21:16] [Server thread/WARN]: at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:572)
[19:21:16] [Server thread/WARN]: at java.lang.Thread.run(Unknown Source)
Die Datei befindet sich eigentlich in dem Plugin Ordner dann in kAdmin und dort ist die Datei Admin bzw die Config
|
|
|
07/18/2016, 19:32
|
#14
|
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
|
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
versuch einfach mal letzteres
|
|
|
07/18/2016, 19:59
|
#15
|
elite*gold: 3
Join Date: Jul 2011
Posts: 384
Received Thanks: 41
|
Mit dem Pfad ging es: plugins/kAdmin/config.yml
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:
Code:
this.getConfig().addDefault("kAdmin.Admins", "kleinkiko");
this.getConfig().options().copyDefaults(true);
this.saveConfig();
|
|
|
Similar Threads
|
[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;
|
All times are GMT +2. The time now is 00:28.
|
|