mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-09-27 14:13:11 +02:00
Add ability to warn for use of deprecated paths.
This commit is contained in:
parent
228a6478a8
commit
7805d8d486
@ -15,6 +15,7 @@ package fr.neatmonster.nocheatplus.config;
|
||||
public abstract class ConfPaths {
|
||||
|
||||
// Sub-paths that are used with different path prefixes potentially.
|
||||
// TODO: These might better be in another class.
|
||||
public static final String SUB_DEBUG = "debug";
|
||||
public static final String SUB_IGNOREPASSABLE = "ignorepassable";
|
||||
public static final String SUB_ALLOWINSTANTBREAK = "allowinstantbreak";
|
||||
|
@ -164,6 +164,7 @@ public class ConfigManager {
|
||||
worldsMap.clear();
|
||||
// Try to obtain and parse the global configuration file.
|
||||
final File globalFile = new File(plugin.getDataFolder(), "config.yml");
|
||||
PathUtils.warnPaths(globalFile, "global config", false);
|
||||
final ConfigFile globalConfig = new ConfigFile();
|
||||
globalConfig.setDefaults(new DefaultConfig());
|
||||
globalConfig.options().copyDefaults(true);
|
||||
@ -210,7 +211,7 @@ public class ConfigManager {
|
||||
}
|
||||
for (final Entry<String, File> worldEntry : worldFiles.entrySet()) {
|
||||
final File worldFile = worldEntry.getValue();
|
||||
PathUtils.warnGlobalOnlyPaths(worldFile, worldEntry.getKey());
|
||||
PathUtils.warnPaths(worldFile, worldEntry.getKey(), true);
|
||||
final ConfigFile worldConfig = new ConfigFile();
|
||||
worldConfig.setDefaults(worldDefaults);
|
||||
worldConfig.options().copyDefaults(true);
|
||||
|
@ -21,6 +21,9 @@ import fr.neatmonster.nocheatplus.utilities.ds.prefixtree.SimpleCharPrefixTree;
|
||||
|
||||
public class PathUtils {
|
||||
|
||||
private static final Set<String> deprecatedFields = new LinkedHashSet<String>();
|
||||
private static final SimpleCharPrefixTree deprecatedPrefixes = new SimpleCharPrefixTree();
|
||||
|
||||
/** Field names of ConfPaths. */
|
||||
private static final Set<String> globalOnlyFields = new HashSet<String>();
|
||||
|
||||
@ -54,10 +57,23 @@ public class PathUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (field.isAnnotationPresent(Deprecated.class)){
|
||||
deprecatedFields.add(name);
|
||||
addDeprecated(field);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void addGlobalOnlyPath(final Field field) {
|
||||
private static void addDeprecated(final Field field) {
|
||||
try {
|
||||
final String path = field.get(null).toString();
|
||||
deprecatedPrefixes.feed(path);
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (IllegalAccessException e) {
|
||||
}
|
||||
}
|
||||
|
||||
private static void addGlobalOnlyPath(final Field field) {
|
||||
try {
|
||||
final String path = field.get(null).toString();
|
||||
globalOnlyPaths.add(path);
|
||||
@ -81,6 +97,51 @@ public class PathUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Run all warning checks (GlobalConfig, deprecated, ...).
|
||||
* @param file
|
||||
* @param configName
|
||||
*/
|
||||
public static void warnPaths(File file, String configName, boolean isWorldConfig){
|
||||
final ConfigFile config = new ConfigFile();
|
||||
try {
|
||||
config.load(file);
|
||||
if (isWorldConfig){
|
||||
warnGlobalOnlyPaths(config, configName);
|
||||
}
|
||||
warnDeprecatedPaths(config, configName);
|
||||
} catch (FileNotFoundException e) {
|
||||
} catch (IOException e) {
|
||||
} catch (InvalidConfigurationException e) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Warn about paths that are deprecated (not in use).
|
||||
* @param config
|
||||
* @param paths
|
||||
* @param configName
|
||||
*/
|
||||
public static void warnDeprecatedPaths(ConfigFile config, String configName){
|
||||
warnPaths(config, deprecatedPrefixes, " (" + configName + ") is not in use anymore.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Warn about paths that are deprecated (not in use).
|
||||
* @param file
|
||||
* @param configName
|
||||
*/
|
||||
public static void warnDeprecatedPaths(File file, String configName){
|
||||
final ConfigFile config = new ConfigFile();
|
||||
try {
|
||||
config.load(file);
|
||||
warnDeprecatedPaths(config, configName);
|
||||
} catch (FileNotFoundException e) {
|
||||
} catch (IOException e) {
|
||||
} catch (InvalidConfigurationException e) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Warn about paths that are only to be set in the global config.
|
||||
* @param config
|
||||
|
Loading…
Reference in New Issue
Block a user