diff --git a/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java b/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java index 158a781c6d..884fe39604 100644 --- a/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java +++ b/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java @@ -17,21 +17,28 @@ import java.util.logging.Level; */ public class HelpYamlReader { - private final YamlConfiguration helpYaml; + private YamlConfiguration helpYaml; private final char ALT_COLOR_CODE = '&'; public HelpYamlReader(Server server) { File helpYamlFile = new File("help.yml"); + YamlConfiguration defaultConfig = YamlConfiguration.loadConfiguration(getClass().getClassLoader().getResourceAsStream("configurations/help.yml")); - helpYaml = YamlConfiguration.loadConfiguration(helpYamlFile); - helpYaml.options().copyDefaults(true); - helpYaml.setDefaults(YamlConfiguration.loadConfiguration(getClass().getClassLoader().getResourceAsStream("configurations/help.yml"))); try { - if (!helpYamlFile.exists()) { - helpYaml.save(helpYamlFile); + helpYaml = YamlConfiguration.loadConfiguration(helpYamlFile); + helpYaml.options().copyDefaults(true); + helpYaml.setDefaults(defaultConfig); + + try { + if (!helpYamlFile.exists()) { + helpYaml.save(helpYamlFile); + } + } catch (IOException ex) { + server.getLogger().log(Level.SEVERE, "Could not save " + helpYamlFile, ex); } - } catch (IOException ex) { - server.getLogger().log(Level.SEVERE, "Could not save " + helpYamlFile, ex); + } catch (Exception ex) { + server.getLogger().severe("Failed to load help.yml. Verify the yaml indentation is correct. Reverting to default help.yml."); + helpYaml = defaultConfig; } } diff --git a/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java b/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java index cdde69ce32..4e4604e5fb 100644 --- a/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java +++ b/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java @@ -90,6 +90,11 @@ public class SimpleHelpMap implements HelpMap { public synchronized void initializeCommands() { // ** Load topics from highest to lowest priority order ** Set ignoredPlugins = new HashSet(yaml.getIgnoredPlugins()); + + // Don't load any automatic help topics if All is ignored + if (ignoredPlugins.contains("All")) { + return; + } // Initialize help topics from the server's command map outer: for (Command command : server.getCommandMap().getCommands()) { diff --git a/src/main/resources/configurations/help.yml b/src/main/resources/configurations/help.yml index d7f363b122..faa7d569f6 100644 --- a/src/main/resources/configurations/help.yml +++ b/src/main/resources/configurations/help.yml @@ -33,7 +33,8 @@ # permission: you.dont.have # # Any plugin in the ignored plugins list will be excluded from help. The name must match the name displayed by -# the /plugins command. Ignore "Bukkit" to remove the standard bukkit commands from the index. +# the /plugins command. Ignore "Bukkit" to remove the standard bukkit commands from the index. Ignore "All" +# to completely disable automatic help topic generation. # ignore-plugins: # - PluginNameOne # - PluginNameTwo