All source projects
MrUltimateLibrary Source
Standalone source project / 68 files
MrUltimateLibrary is the backbone of all my plugins; it offers features that facilitate plugin creation, maintenance, and updates.
java
MrUltimateLibrary/src/main/java/eu/mrneznamy/mrultimatelibrary/config/MrLibWrappedConfig.java
JAVA · Read-only source
package eu.mrneznamy.mrultimatelibrary.config;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.util.List;
import java.util.Set;
/**
* A double-sided compatibility bridge between flat and nested configurations.
* Wraps an existing FileConfiguration and automatically routes calls targeting
* nested paths (like "MrPlugin.Settings.Prefix") to flat paths (like "Settings.Prefix"),
* and vice versa.
*/
public class MrLibWrappedConfig extends YamlConfiguration {
private final String pluginName;
private final FileConfiguration original;
public MrLibWrappedConfig(String pluginName, FileConfiguration original) {
this.pluginName = pluginName;
this.original = original;
if (original != null) {
if (original.getDefaults() != null) {
this.setDefaults(original.getDefaults());
}
this.options().copyDefaults(original.options().copyDefaults());
}
}
private String resolvePath(String path) {
if (original == null || path == null) return path;
if ("MrUltimateJobs".equalsIgnoreCase(pluginName)) {
if (path.equalsIgnoreCase("MrUltimateJobs.Settings.Disabled-Worlds")) {
return "MrUltimateJobs.Config.DisabledWorlds.Worlds";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Jobs-System.Max-Jobs-Per-Player")) {
return "MrUltimateJobs.Config.Limits.MaxJobs";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Economy.Current-Economy")) {
return "MrUltimateJobs.Config.Economy.CurrentProvider";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Auto-Join.Enabled")) {
return "MrUltimateJobs.Config.AutoJobJoin.Enabled";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Auto-Join.Jobs")) {
return "MrUltimateJobs.Config.AutoJobJoin.Jobs";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Tournaments.Enabled")) {
return "MrUltimateJobs.Config.Tournaments.Enabled";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Tournaments.Min-Players")) {
return "MrUltimateJobs.Config.Tournaments.Min-Players";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Tournaments.Max-Players")) {
return "MrUltimateJobs.Config.Tournaments.Max-Players";
}
if (path.equalsIgnoreCase("MrUltimateJobs.Events.Enabled") || path.equalsIgnoreCase("Events.Enabled")) {
return "MrUltimateJobs.Config.Events.Enabled";
}
}
if (original.contains(path)) return path;
String[] prefixes = {pluginName + ".", pluginName + ".config.", pluginName + ".Config."};
for (String prefix : prefixes) {
if (path.startsWith(prefix)) {
String flatPath = path.substring(prefix.length());
if (original.contains(flatPath)) {
return flatPath;
}
}
}
for (String prefix : prefixes) {
String nestedPath = prefix + path;
if (original.contains(nestedPath)) {
return nestedPath;
}
}
return path;
}
@Override
public Object get(String path) {
return original != null ? original.get(resolvePath(path)) : null;
}
@Override
public Object get(String path, Object def) {
return original != null ? original.get(resolvePath(path), def) : def;
}
@Override
public String getString(String path) {
return original != null ? original.getString(resolvePath(path)) : null;
}
@Override
public String getString(String path, String def) {
return original != null ? original.getString(resolvePath(path), def) : def;
}
@Override
public int getInt(String path) {
return original != null ? original.getInt(resolvePath(path)) : 0;
}
@Override
public int getInt(String path, int def) {
return original != null ? original.getInt(resolvePath(path), def) : def;
}
@Override
public double getDouble(String path) {
return original != null ? original.getDouble(resolvePath(path)) : 0.0;
}
@Override
public double getDouble(String path, double def) {
return original != null ? original.getDouble(resolvePath(path), def) : def;
}
@Override
public boolean getBoolean(String path) {
return original != null ? original.getBoolean(resolvePath(path)) : false;
}
@Override
public boolean getBoolean(String path, boolean def) {
return original != null ? original.getBoolean(resolvePath(path), def) : def;
}
@Override
public List<String> getStringList(String path) {
return original != null ? original.getStringList(resolvePath(path)) : new java.util.ArrayList<>();
}
@Override
public ConfigurationSection getConfigurationSection(String path) {
if (original == null) return null;
String resolved = resolvePath(path);
return original.getConfigurationSection(resolved);
}
@Override
public boolean contains(String path) {
if (original == null) return false;
if (original.contains(path)) return true;
String[] prefixes = {pluginName + ".", pluginName + ".config.", pluginName + ".Config."};
for (String prefix : prefixes) {
if (path.startsWith(prefix)) {
if (original.contains(path.substring(prefix.length()))) return true;
} else {
if (original.contains(prefix + path)) return true;
}
}
return false;
}
@Override
public Set<String> getKeys(boolean deep) {
return original != null ? original.getKeys(deep) : new java.util.HashSet<>();
}
@Override
public void set(String path, Object val) {
super.set(path, val);
if (original != null) {
original.set(resolvePath(path), val);
}
}
@Override
public void save(java.io.File file) throws java.io.IOException {
if (original != null) {
original.save(file);
} else {
super.save(file);
}
}
@Override
public void save(String file) throws java.io.IOException {
if (original != null) {
original.save(file);
} else {
super.save(file);
}
}
@Override
public String saveToString() {
if (original != null) {
return original.saveToString();
}
return super.saveToString();
}
}
211 linesGNU GENERAL PUBLIC LICENSE · Version 3, 29 June 2007 · UTF-8 · Read only