• 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!

Config int Problem!

Masterfran99

Schafhirte
Gesperrt
Registriert
13 Oktober 2012
Beiträge
100
Diamanten
0
Hallo Leute,

Code:
			}else if(args[0].equalsIgnoreCase("setslot")){
				if(args[0].length() == 0){
					p.sendMessage("§cGebe ein Argument an!");
					return true;
				}
				String name = args[1].toLowerCase();
				String slotx = args[2].toLowerCase();
				Integer i;
				try {
					int slot = Integer.parseInt(slotx);
					invsetslot(p, name, slotx);
					cs.sendMessage("§aErfolgreich Slots gesetzt!");
				} catch (Exception e) {
				    p.sendMessage("§cDu musst eine Zahl angeben!");
				}
				return true;

Damit setze ich in meiner Config die Slot Anzahl eines Inventars jedoch setzt es immer einen String also "5" aber eigendlich sollte dort nur 5 stehen als Beispiel.

..
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Wie genau sieht es in deiner Config aus? Steht da wirklich "5" mit "? Eigentlich sollte dort nur 5 ohne "" stehen. Außerdem solltest du etwas nur mit einer Exception catchen, die du auch erwartest, also in dem Fall "NumberFormatException", da du, falls es noch andere (unabsichtiche) Fehler gibt, diese sonst schlecht finden kannst.

Code:
args[0].length() == 0
^ Ist falsch. Die Anzahl an Objekten in einem Array werden abgefragt mit: "args.length". So wie du es machst, fragts du die Länge des ersten Objektes im Array ab.

Code:
invsetslot(p, name, slot);
^ Damit übergibst du den Integer (int) an die Konfigdatei und nicht den String aus dem Befehl.
 
Zuletzt bearbeitet:

Masterfran99

Schafhirte
Gesperrt
Registriert
13 Oktober 2012
Beiträge
100
Diamanten
0
Danke aber ich habe es nun selbst geschafft.

Nur eine Frage ist es möglich mit einer for-Schleife für jeden Wert z.B. in einer Config etwas auszuführen?
z.B. sieht jetzt die Config so aus:

Items:
Item 1:
slot: 0
id: 2
Item 2:
slot: 1
id: 155

Es soll für Item 1 & 2 etwas passieren das macht man normaler Weise mit einer for-Schleife diese verlangt aber eine ArrayLists oder Ähnliches nun geht es auch anders und wenn nicht wie kann ich die Items beim onEnable in eine ArrayList packen?

Danke
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Ja, ist möglich. Bitte beim nächsten mal die Config als Code mit entsprechend richtigen Leerzeichen posten.

Code:
for (String path : getConfig().getConfiguration***tion("Items").getKeys(false)) {
  int slot = getConfig.getString("Items." path + ".slot");
}

"path" sind die Unterpunkte von "Items", die Nacheinander in der for-Schleife benutzt werden.
 

Masterfran99

Schafhirte
Gesperrt
Registriert
13 Oktober 2012
Beiträge
100
Diamanten
0
Folgendes:

Code:
Code:
for(String path : invc.getConfigurationSection("Items.").getKeys(false)){
			String iname = invc.getString("Items.");
			int id = invc.getInt("Items." + iname + ".ItemID");
			int islot = invc.getInt("Items." + name + ".Slot");
			ItemStack istack = new ItemStack(id);
			ItemMeta istackMeta = istack.getItemMeta();
			//istackMeta.setDisplayName(invc.getString("Items."));
			istack.setItemMeta(istackMeta);
			
			inv.setItem(islot, istack);
		}

Config:
Code:
Items:
  mega:
    Slot: 0
    ItemID: 3
    Command: dd

Für das Item mega sollte eigendlich 1 Item im Inventar erstellt werden jedoch passiert nix aber auch keine Fehler.
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Ich vestehe nicht ganz, was du da gemacht hast. "path" ist immer der aktuelle Unterpunkt von "Items", der im Moment in der For-Schleife benutzt wird. Diesen musst du auch benutzen!
Also mache das hier weg: "String iname = invc.getString("Items.");" und benutze überall, wo du "iname" benutzt "path".
 
Oben