diff --git a/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java index 77a380537b..0eae1c027c 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java +++ b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java @@ -23,12 +23,14 @@ import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.AbstractConstruct; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.Tag; +import org.yaml.snakeyaml.representer.Representer; /** * This type is the runtime-container for the information in the plugin.yml. @@ -201,6 +203,7 @@ public final class PluginDescriptionFile { @Override @NotNull protected Yaml initialValue() { + DumperOptions dumperOptions = new DumperOptions(); return new Yaml(new SafeConstructor(new LoaderOptions()) { { yamlConstructors.put(null, new AbstractConstruct() { @@ -230,7 +233,7 @@ public final class PluginDescriptionFile { }); } } - }); + }, new Representer(dumperOptions), dumperOptions, new PluginDescriptionResolver()); } }; String rawName = null; diff --git a/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionResolver.java b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionResolver.java new file mode 100644 index 0000000000..2697841d0a --- /dev/null +++ b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionResolver.java @@ -0,0 +1,18 @@ +package org.bukkit.plugin; + +import org.yaml.snakeyaml.nodes.Tag; +import org.yaml.snakeyaml.resolver.Resolver; + +final class PluginDescriptionResolver extends Resolver { + + @Override + protected void addImplicitResolvers() { + addImplicitResolver(Tag.BOOL, BOOL, "yYnNtTfFoO"); + // addImplicitResolver(Tag.FLOAT, FLOAT, "-+0123456789."); // Don't resolve floats. Preserve strings - SPIGOT-7370 + addImplicitResolver(Tag.INT, INT, "-+0123456789"); + addImplicitResolver(Tag.MERGE, MERGE, "<"); + addImplicitResolver(Tag.NULL, NULL, "~nN\0"); + addImplicitResolver(Tag.NULL, EMPTY, null); + addImplicitResolver(Tag.TIMESTAMP, TIMESTAMP, "0123456789"); + } +}