diff --git a/paper-api/src/main/java/org/bukkit/configuration/MemorySection.java b/paper-api/src/main/java/org/bukkit/configuration/MemorySection.java index 90cc523f6..09f1debef 100644 --- a/paper-api/src/main/java/org/bukkit/configuration/MemorySection.java +++ b/paper-api/src/main/java/org/bukkit/configuration/MemorySection.java @@ -251,10 +251,10 @@ public class MemorySection implements ConfigurationSection { int i1 = -1, i2; ConfigurationSection section = this; while ((i1 = path.indexOf(separator, i2 = i1 + 1)) != -1) { - section = section.getConfigurationSection(path.substring(i2, i1)); - if (section == null) { + if (section == null || !section.contains(path.substring(i2, i1), true)) { return def; } + section = section.getConfigurationSection(path.substring(i2, i1)); } String key = path.substring(i2); diff --git a/paper-api/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java b/paper-api/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java index 1e5299283..bfaacbaa3 100644 --- a/paper-api/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java +++ b/paper-api/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java @@ -110,6 +110,16 @@ public abstract class ConfigurationSectionTest { assertTrue(section.contains("doenst-exist-two", false)); } + @Test + public void testContainsDoesNotCreateSection() { + ConfigurationSection section = getConfigurationSection(); + section.addDefault("notExistingSection.Value", "Test String"); + + assertFalse(section.contains("notExistingSection", true)); + assertFalse(section.contains("notExistingSection.Value", true)); + assertFalse(section.contains("notExistingSection", true)); + } + @Test public void testIsSet() { ConfigurationSection section = getConfigurationSection();