Config now auto-updates by default, fixed modded entities trying to re-register each reload
This commit is contained in:
parent
759444090b
commit
584a7a6e7e
@ -16,6 +16,8 @@ import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
|||||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||||
import me.libraryaddict.disguise.utilities.translations.TranslateType;
|
import me.libraryaddict.disguise.utilities.translations.TranslateType;
|
||||||
|
import org.apache.commons.lang.StringEscapeUtils;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
@ -23,7 +25,9 @@ import org.bukkit.boss.BarColor;
|
|||||||
import org.bukkit.boss.BarStyle;
|
import org.bukkit.boss.BarStyle;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.craftbukkit.libs.org.apache.commons.io.FileUtils;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.permissions.Permission;
|
import org.bukkit.permissions.Permission;
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
import org.bukkit.permissions.PermissionDefault;
|
||||||
@ -475,6 +479,72 @@ public class DisguiseConfig {
|
|||||||
TranslateType.refreshTranslations();
|
TranslateType.refreshTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void saveDefaultConfig() {
|
||||||
|
String[] string = ReflectionManager.getResourceAsString(LibsDisguises.getInstance().getFile(), "config.yml")
|
||||||
|
.split("\n");
|
||||||
|
FileConfiguration savedConfig = LibsDisguises.getInstance().getConfig();
|
||||||
|
|
||||||
|
StringBuilder section = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < string.length; i++) {
|
||||||
|
String s = string[i];
|
||||||
|
|
||||||
|
if (s.trim().startsWith("#") || !s.contains(":")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String rawKey = s.split(":")[0];
|
||||||
|
|
||||||
|
if (section.length() > 0) {
|
||||||
|
int matches = StringUtils.countMatches(rawKey, " ");
|
||||||
|
|
||||||
|
int allowed = 0;
|
||||||
|
|
||||||
|
for (int a = 0; a < matches; a++) {
|
||||||
|
allowed = section.indexOf(".", allowed) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
section = new StringBuilder(section.substring(0, allowed));
|
||||||
|
}
|
||||||
|
|
||||||
|
String key = (rawKey.startsWith(" ") ? section.toString() : "") + rawKey.trim();
|
||||||
|
|
||||||
|
if (savedConfig.isConfigurationSection(key)) {
|
||||||
|
section.append(key).append(".");
|
||||||
|
} else if (savedConfig.isSet(key)) {
|
||||||
|
String rawVal = s.split(":")[1].trim();
|
||||||
|
Object val = savedConfig.get(key);
|
||||||
|
|
||||||
|
if (savedConfig.isString(key) && !rawVal.equals("true") && !rawVal.equals("false")) {
|
||||||
|
val = "'" + StringEscapeUtils.escapeJava(val.toString().replace(ChatColor.COLOR_CHAR + "", "&")) +
|
||||||
|
"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
string[i] = rawKey + ": " + val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
File config = new File(LibsDisguises.getInstance().getDataFolder(), "config.yml");
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (config.exists()) {
|
||||||
|
FileUtils.copyFile(config, new File(config.getParentFile(), "config-old.yml"));
|
||||||
|
config.delete();
|
||||||
|
|
||||||
|
DisguiseUtilities.getLogger().info("Old config has been copied to config-old.yml");
|
||||||
|
}
|
||||||
|
|
||||||
|
config.createNewFile();
|
||||||
|
|
||||||
|
try (PrintWriter out = new PrintWriter(config)) {
|
||||||
|
out.write(StringUtils.join(string, "\n"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void loadConfig() {
|
public static void loadConfig() {
|
||||||
// Always save the default config
|
// Always save the default config
|
||||||
LibsDisguises.getInstance().saveDefaultConfig();
|
LibsDisguises.getInstance().saveDefaultConfig();
|
||||||
@ -670,25 +740,6 @@ public class DisguiseConfig {
|
|||||||
|
|
||||||
boolean changed = config.getBoolean("ChangedConfig");
|
boolean changed = config.getBoolean("ChangedConfig");
|
||||||
|
|
||||||
if (!verbose) {
|
|
||||||
int missingConfigs = 0;
|
|
||||||
|
|
||||||
for (String key : config.getDefaultSection().getKeys(true)) {
|
|
||||||
if (config.contains(key, true)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
missingConfigs++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (missingConfigs > 0) {
|
|
||||||
DisguiseUtilities.getLogger().warning("Your config is missing " + missingConfigs +
|
|
||||||
" options! Please consider regenerating your config!");
|
|
||||||
DisguiseUtilities.getLogger()
|
|
||||||
.info("You can also add the missing entries yourself! Try '/libsdisguises config'");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (verbose || changed) {
|
if (verbose || changed) {
|
||||||
ArrayList<String> returns = doOutput(config, changed, verbose);
|
ArrayList<String> returns = doOutput(config, changed, verbose);
|
||||||
|
|
||||||
@ -702,13 +753,31 @@ public class DisguiseConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int missingConfigs = 0;
|
||||||
|
|
||||||
|
for (String key : config.getDefaultSection().getKeys(true)) {
|
||||||
|
if (config.contains(key, true)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
missingConfigs++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (missingConfigs > 0) {
|
||||||
|
if (config.getBoolean("UpdateConfig")) {
|
||||||
|
saveDefaultConfig();
|
||||||
|
DisguiseUtilities.getLogger().info("Config has been auto-updated!");
|
||||||
|
} else if (!verbose) {
|
||||||
|
DisguiseUtilities.getLogger().warning("Your config is missing " + missingConfigs +
|
||||||
|
" options! Please consider regenerating your config!");
|
||||||
|
DisguiseUtilities.getLogger()
|
||||||
|
.info("You can also add the missing entries yourself! Try '/libsdisguises config'");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadModdedDisguiseTypes() {
|
public static void loadModdedDisguiseTypes() {
|
||||||
if (LibsDisguises.getInstance().isReloaded()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
File disguisesFile = new File("plugins/LibsDisguises/disguises.yml");
|
File disguisesFile = new File("plugins/LibsDisguises/disguises.yml");
|
||||||
|
|
||||||
if (!disguisesFile.exists())
|
if (!disguisesFile.exists())
|
||||||
@ -752,6 +821,7 @@ public class DisguiseConfig {
|
|||||||
String[] version =
|
String[] version =
|
||||||
mod == null || !section.contains("Version") ? null : section.getString("Version").split(",");
|
mod == null || !section.contains("Version") ? null : section.getString("Version").split(",");
|
||||||
String requireMessage = mod == null ? null : section.getString("Required");
|
String requireMessage = mod == null ? null : section.getString("Required");
|
||||||
|
|
||||||
if (section.contains("Channels")) {
|
if (section.contains("Channels")) {
|
||||||
for (String s : section.getString("Channels").split(",")) {
|
for (String s : section.getString("Channels").split(",")) {
|
||||||
if (!s.contains("|")) {
|
if (!s.contains("|")) {
|
||||||
@ -769,6 +839,12 @@ public class DisguiseConfig {
|
|||||||
|
|
||||||
ModdedEntity entity = new ModdedEntity(null, name, living, mod, version, requireMessage, 0);
|
ModdedEntity entity = new ModdedEntity(null, name, living, mod, version, requireMessage, 0);
|
||||||
|
|
||||||
|
if (ModdedManager.getModdedEntity(name) != null) {
|
||||||
|
DisguiseUtilities.getLogger()
|
||||||
|
.info("Modded entity " + name + " has already been " + (register ? "registered" : "added"));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ModdedManager.registerModdedEntity(
|
ModdedManager.registerModdedEntity(
|
||||||
new NamespacedKey(key.substring(0, key.indexOf(":")), key.substring(key.indexOf(":") + 1)),
|
new NamespacedKey(key.substring(0, key.indexOf(":")), key.substring(key.indexOf(":") + 1)),
|
||||||
entity, register);
|
entity, register);
|
||||||
|
@ -34,6 +34,9 @@ Permissions:
|
|||||||
VerboseConfig: false
|
VerboseConfig: false
|
||||||
# Should the plugin output changed config options? Will also list unknown extra options
|
# Should the plugin output changed config options? Will also list unknown extra options
|
||||||
ChangedConfig: false
|
ChangedConfig: false
|
||||||
|
# Should the config automatically update itself each time there's a config entry missing?
|
||||||
|
# The old config will have any custom comments or invalid config entries wiped.
|
||||||
|
UpdateConfig: true
|
||||||
|
|
||||||
# Disables commands with the exception of /libsdisguises. Useful if you don't want the plugin to be used by anything
|
# Disables commands with the exception of /libsdisguises. Useful if you don't want the plugin to be used by anything
|
||||||
# but a plugin
|
# but a plugin
|
||||||
|
Loading…
Reference in New Issue
Block a user