summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/bukkit/configuration/file/YamlConfiguration.java')
-rw-r--r--src/main/java/org/bukkit/configuration/file/YamlConfiguration.java23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
index 55918f7d..f9523b39 100644
--- a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
+++ b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
@@ -39,13 +39,14 @@ public class YamlConfiguration extends FileConfiguration {
serializeValues(output, getValues(false));
+ String header = buildHeader();
String dump = yaml.dump(output);
if (dump.equals(BLANK_CONFIG)) {
dump = "";
}
- return buildHeader() + dump;
+ return header + dump;
}
@Override
@@ -61,7 +62,12 @@ public class YamlConfiguration extends FileConfiguration {
throw new InvalidConfigurationException("Specified contents is not a valid Configuration", ex);
}
- options().header(parseHeader(contents));
+ String header = parseHeader(contents);
+
+ if (header.length() > 0) {
+ options().header(header);
+ }
+
deserializeValues(input, this);
}
@@ -159,6 +165,19 @@ public class YamlConfiguration extends FileConfiguration {
protected String buildHeader() {
String header = options().header();
+ if (options().copyHeader()) {
+ Configuration def = getDefaults();
+
+ if ((def != null) && (def instanceof FileConfiguration)) {
+ FileConfiguration filedefaults = (FileConfiguration)def;
+ String defaultsHeader = filedefaults.buildHeader();
+
+ if ((defaultsHeader != null) && (defaultsHeader.length() > 0)) {
+ return defaultsHeader;
+ }
+ }
+ }
+
if (header == null) {
return "";
}