Hilfe bei Economy System?
Hallo Leute. ich habe angefangen ein Economy System zu schreiben aber egal was ich mache wird die Config nicht ausgelesen. Ich finde den Fehler einfach nicht. Vielleicht könnte mir ja jemand der bisschen mehr Ahnung hat mir helfen was das Problem ist. Ich benutze die 1.20.2.
habe den Code mal eingefügt.
package gems;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import org.bukkit.configuration.file.YamlConfiguration;
public class gems_config {
public static Integer getGems(UUID id) {
File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
int usergems = cfg.getInt(id+ ".gems.yml");
return usergems;
}
public static void addGems(UUID id, int amount ) {
File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
int usergems = cfg.getInt(id+ ".gems.yml");
usergems+=amount;
cfg.set(id+ ".gems.yml", usergems);
try {
cfg.save(file);
}catch(IOException ioex){
}
}
public static void removeGems(UUID id, int amount ) {
File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
int usergems = cfg.getInt(id+ ".gems.yml");
usergems-=amount;
cfg.set(id+ ".gems.yml", usergems);
try {
cfg.save(file);
}catch(IOException ioex){
}
}
public static boolean hasEnoughtGems(UUID id, int amount) {
File file = new File("plugins//MysticEcon//" +id+ ".gems.yml" );
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
int usergems = cfg.getInt(id+ ".gems.yml");
if(usergems >= amount) {
return true;
}else {
return false;
}
}
public static void EconConfig(UUID id) {
File ordner = new File("plugins//MysticEcon");
File file = new File("plugins//MysticEcon//" +id+".gems.yml");
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
if(!ordner.exists()) {
ordner.mkdir();
}
if(!file.exists()) {
try {
file.createNewFile();
cfg.set("Gems", 5000);
cfg.save(file);
}catch(IOException e) {
}
}
}
}
2 Antworten
Zum einen kann ich nicht nachvollziehen, wieso du doppelte Slashes in deinen Pfadangaben verwendest und zum anderen kannst du den Plugin-Ordner doch mit der getDataFolder-Methode deiner Plugin-Instanz ermitteln.
Beispiel:
public class GemsStore {
private final Plugin plugin;
public GemsStore(final Plugin plugin) {
this.plugin = plugin;
}
public int getNumberOfGems(UUID id) {
File file = new File(plugin.getDataFolder(), "MysticEcon/" + id + ".gems.yml");
YamlConfiguration configuration = YamlConfiguration.loadConfiguration(file);
int gems = configuration.getInt(id + ".gems.yml");
return gems;
}
}
Wenn öfter mit dem Wert gearbeitet wird, wäre es sicherlich schlauer, ihn im Speicher zu behalten und nur zu bestimmten Gelegenheiten oder in bestimmten Zeitintervallen in die Datei zu speichern.
Generell würde ich dir noch empfehlen, dich an üblichen Java-Code-Konventionen zu orientieren, Code-Redundanzen zu vermeiden und Ausnahmefälle zumindest zu loggen.
Ich finde den Fehler einfach nicht.
Du schießt dir auch selbst in den Fuß mit Code wie diesem:
try {
cfg.save(file);
}catch(IOException ioex){
}
Damit wird jede relevante Exception völlig kommentarlos geschluckt. Wenn hier ein Fehler passiert, erfährst du nichts darüber.
Es gibt eine ganze Reihe anderer fragwürdiger Dinge drin (nicht zuletzt eine Unmenge von Copy-Paste), aber die sind erstmal nicht katastrophal und entsprechen eh der üblichen Qualität von Minecraft-Plugins.