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

YML -- bekomme Hauptsection durch untersection

KleinDev

Minecrafter
Registriert
15 August 2015
Beiträge
25
Diamanten
301
Minecraft
KleinDev
Ich hoffe der Titel ist nicht allzu verwirrend.
Ich habe ein Problem mit einer beliebigen Config, es geht darum einen bestimmten Wert zu bekommen.

Hier ein beispiel der Config Struktur
---------------------
UUID des Spielers:
ID3:
- ID1
- ID2
- ID3
---------------------

Nun stehe ich vor folgendem Problem:
Ich besitze "ID2", aber nicht die UUID des Spieler die in der ersten Sektion der Config ist.
Wie bekomme ich denn nun die UUID des Spielers wenn ich nur "ID2" besitze?
Ich kann garantieren dass es niemals 2x den selben Wert geben wird, da dies von Java generierte UUID's sind,
und diese Notfalls erneut generiert werden sollte es diese ID schon geben.

Ich hoffe ihr könnt mir da folgen.
Es gibt Fälle, in denen ich nur "ID2" oder "ID3" etc. kenne, aber nicht die UUID des Spielers selber...
Klar könnte ich noch eine extra Datei anfertigen in denen dann die ganzen IDs drinnen sind mit der jeweiligen UUID des Spielers,
jedoch möchte ich es erst einmal so versuchen.
Ich hoffe ihr könnt mir da weiter helfen.
 

KleinDev

Minecrafter
Registriert
15 August 2015
Beiträge
25
Diamanten
301
Minecraft
KleinDev
Okay dann werde ich das so machen.
Und diese werte kann ich mittels cfg.set(ID1, null); löschen?
Bisher hat dies leider nicht zu 1ßß% geklappt..

Ich bezwecke damit ein Eigenes ID System, oder zumindest den Versuch.
 

KleinDev

Minecrafter
Registriert
15 August 2015
Beiträge
25
Diamanten
301
Minecraft
KleinDev
Nur leider funktioniert dies nicht in meinem Warps Plugin :/

Save:

cfg.set("warps." + args[0].toLowerCase() + ".w", w);
cfg.set("warps." + args[0].toLowerCase() + ".x", x);
cfg.set("warps." + args[0].toLowerCase() + ".y", y);
cfg.set("warps." + args[0].toLowerCase() + ".z", z);
cfg.set("warps." + args[0].toLowerCase() + ".yaw", yaw);
cfg.set("warps." + args[0].toLowerCase() + ".pitch", pitch);
Config.save("plugins/Warps/", "warps.yml", p);

Delete:
cfg.set("warps." + args[0].toLowerCase() + ".pitch", null);
cfg.set("warps." + args[0].toLowerCase() + ".yaw", null);
cfg.set("warps." + args[0].toLowerCase() + ".z", null);
cfg.set("warps." + args[0].toLowerCase() + ".y", null);
cfg.set("warps." + args[0].toLowerCase() + ".x", null);
cfg.set("warps." + args[0].toLowerCase() + ".w", null);
cfg.set("warps." + args[0].toLowerCase(), null);
Config.save("plugins/Warps/", "warps.yml", sender);
 

Leon338

Minecrafter
Registriert
16 Mai 2012
Beiträge
8
Diamanten
0
Einerseits ist die Config Klasse echt nicht schön programmiert ^^
Versuche das File warps.yml einmal als FileConfiguration zu laden und anschließend immer zu nutzen.

Und wen du die Oberen Wert einer Configration Section haben willst, musst du mit einer For Schleife durch alle Einträge gehen und abfragen ob dieser Wert in der Sektion vorhanden ist.

Aber ich würde an deiner Stelle die Art des Abspeicherns nochmal überdenken ^^
Ist nicht so effizient und belastet stark die CPU.
 
Zuletzt bearbeitet:

Leon338

Minecrafter
Registriert
16 Mai 2012
Beiträge
8
Diamanten
0
Ich werde es dann einfach so bewerkstelligen, dass ich zusätzlich eine Datei anlege, in der die siD und die UUID des spielers stehen.
Um so eine Identifikation zu ermöglichen.

Hast du den vor beim Laden des Servers alle Warps zu laden?
Das wäre an sich eigentlich am klügsten, damit man diese auch nutzen kann ^^
Somit speicherst du diese in einen Cache und fragst die dort ab
 

Leon338

Minecrafter
Registriert
16 Mai 2012
Beiträge
8
Diamanten
0
RAM ist heutzutage eigentlich nicht mehr das Problem bei ca 1-2€ pro GB ^^
Minecraft benötigt immer mehr CPU. Und immer wieder neu laden bei einem Warp ist sehr uneffizient
Vor allem wen die Datei dann irgendwann 2000 Zeilen lang ist oder so

So paar Warps brauchen auch nicht viel RAM
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Ich möchte so wenig wie möglich in den RAM laden :/
Für Shooter und ähnliches ist es absolut üblich, dass die komplette Map inklusiver aller 3D Daten vorgeladen werden. Du musst das immer so betrachten: Alles was während der Laufzeit geladen wird erzeugt eine Verzögerung. Deine Festplatte, auch wenn es eine SSD ist, ist unglaublich langsam, verglichen mit dem RAM. Wenn du wirklich den Warp für jeden Befehl von der Festplatte lädst sind das vermutlich 2-3 Ticks, die dein Mainloop einfriert. Alternativ lädst du das asynchron, aber das wirst du nicht hinbekommen und es führt zu ganz anderen Problemen.

Nehm mir mal einen Taschenrechner und rechne dir aus was es kostet 100 Positionen zu speichern. Guck dir einfach den Quellcode der Location Klasse an und dann rechne das aus. Du hast vermutlich eine völlig falsche Vorstellung davon, wie viel Daten in so ein Megabyte passen.
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
mein größtes Plugin bisher nur 111KB hat, und um die 40 Klassen mit je 70-200 Zeilen Code
Das sind ja auch bloß Zeichenfolgen.
Es besteht kein Sinn darin kein Caching anzuwenden - was schätzt du wie viele Locations du cachen kannst, allein in einem Kilobyte?

RAM ist heutzutage ohnehin billig - und die pff... meinetwegen 2MB mehr fallen absolut nicht ins Gewicht, außer bei der Ladezeit, denn die geht in den Mikro- bis Nanosekunden Bereich.
Arbeitsspeicher toppt alles in Sachen Zugriffszeit - zumindest alles was du hernehmen könntest.

Du magst vielleicht ne Vorstellung davon haben, wie viel in einen Megabyte rein passt, aber du kannst glaube ich nicht real abschätzen, wann es sich lohnt diesen Platz auch zu nutzen und wann man es lieber bleiben lassen sollte.

Ein Location Objekt ist winzig, mikroskopisch - da brichst du dir absolut kein Zacken aus der Krone.
 
Oben