diff --git a/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java b/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java index 197275848..a22f0ca2f 100644 --- a/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java +++ b/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java @@ -16,6 +16,7 @@ import org.jetbrains.annotations.NotNull; import org.mvplugins.multiverse.core.MultiverseCore; +import org.mvplugins.multiverse.core.config.CoreConfig; import org.mvplugins.multiverse.core.config.node.serializer.NodeSerializer; import org.mvplugins.multiverse.core.event.world.MVWorldPropertyChangedEvent; import org.mvplugins.multiverse.core.config.node.ConfigNode; @@ -37,11 +38,13 @@ final class WorldConfigNodes { private final NodeGroup nodes = new NodeGroup(); private WorldManager worldManager; private EnforcementHandler enforcementHandler; + private CoreConfig config; private MultiverseWorld world = null; WorldConfigNodes(@NotNull MultiverseCore multiverseCore) { this.worldManager = multiverseCore.getServiceLocator().getService(WorldManager.class); this.enforcementHandler = multiverseCore.getServiceLocator().getService(EnforcementHandler.class); + this.config = multiverseCore.getServiceLocator().getService(CoreConfig.class); } MultiverseWorld getWorld() { @@ -244,7 +247,7 @@ public Object serialize(Material object, Class type) { })); final ConfigNode enititySpawnConfig = node(ConfigNode.builder("spawning", EntitySpawnConfig.class) - .defaultValue(() -> EntitySpawnConfig.fromSection(new MemoryConfiguration())) + .defaultValue(() -> EntitySpawnConfig.fromSection(config, new MemoryConfiguration())) .hidden() .serializer(new NodeSerializer<>() { @Override @@ -252,7 +255,7 @@ public EntitySpawnConfig deserialize(Object object, Class typ ConfigurationSection spawnSection = (object instanceof ConfigurationSection section) ? section : new MemoryConfiguration(); - return EntitySpawnConfig.fromSection(spawnSection); + return EntitySpawnConfig.fromSection(config, spawnSection); } @Override diff --git a/src/main/java/org/mvplugins/multiverse/core/world/entity/EntitySpawnConfig.java b/src/main/java/org/mvplugins/multiverse/core/world/entity/EntitySpawnConfig.java index 83607369c..c87cce96d 100644 --- a/src/main/java/org/mvplugins/multiverse/core/world/entity/EntitySpawnConfig.java +++ b/src/main/java/org/mvplugins/multiverse/core/world/entity/EntitySpawnConfig.java @@ -6,6 +6,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.SpawnCategory; import org.jetbrains.annotations.ApiStatus; +import org.mvplugins.multiverse.core.config.CoreConfig; import org.mvplugins.multiverse.core.utils.StringFormatter; import org.mvplugins.multiverse.core.world.MultiverseWorld; @@ -14,15 +15,21 @@ public final class EntitySpawnConfig { + private final CoreConfig config; private final Map spawnCategoriesConfig; - EntitySpawnConfig(Map spawnCategoriesConfig) { + EntitySpawnConfig(CoreConfig config, Map spawnCategoriesConfig) { + this.config = config; this.spawnCategoriesConfig = spawnCategoriesConfig; } public SpawnCategoryConfig getSpawnCategoryConfig(SpawnCategory spawnCategory) { return spawnCategoriesConfig.computeIfAbsent(spawnCategory, - computeSpawnCategory -> new SpawnCategoryConfig(computeSpawnCategory, new MemoryConfiguration())); + computeSpawnCategory -> new SpawnCategoryConfig( + config, + computeSpawnCategory, + new MemoryConfiguration() + )); } public boolean shouldAllowSpawn(Entity entity) { @@ -51,7 +58,7 @@ public ConfigurationSection toSection() { } @ApiStatus.Internal - public static EntitySpawnConfig fromSection(ConfigurationSection section) { + public static EntitySpawnConfig fromSection(CoreConfig config, ConfigurationSection section) { Map spawnCategoriesConfig = new LinkedHashMap<>(); section.getValues(false).forEach((key, value) -> { if (!(value instanceof ConfigurationSection sectionPart)) { @@ -59,9 +66,9 @@ public static EntitySpawnConfig fromSection(ConfigurationSection section) { return; } SpawnCategory spawnCategory = SpawnCategory.valueOf(key.toUpperCase()); - spawnCategoriesConfig.put(spawnCategory, new SpawnCategoryConfig(spawnCategory, sectionPart)); + spawnCategoriesConfig.put(spawnCategory, new SpawnCategoryConfig(config, spawnCategory, sectionPart)); }); - return new EntitySpawnConfig(spawnCategoriesConfig); + return new EntitySpawnConfig(config, spawnCategoriesConfig); } @ApiStatus.Internal diff --git a/src/main/java/org/mvplugins/multiverse/core/world/entity/SpawnCategoryConfig.java b/src/main/java/org/mvplugins/multiverse/core/world/entity/SpawnCategoryConfig.java index 590942328..2eee36ad8 100644 --- a/src/main/java/org/mvplugins/multiverse/core/world/entity/SpawnCategoryConfig.java +++ b/src/main/java/org/mvplugins/multiverse/core/world/entity/SpawnCategoryConfig.java @@ -7,7 +7,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.SpawnCategory; -import org.mvplugins.multiverse.core.MultiverseCoreApi; +import org.mvplugins.multiverse.core.config.CoreConfig; import org.mvplugins.multiverse.core.config.handle.MemoryConfigurationHandle; import org.mvplugins.multiverse.core.config.handle.StringPropertyHandle; import org.mvplugins.multiverse.core.config.node.ConfigNode; @@ -22,6 +22,7 @@ public final class SpawnCategoryConfig { + private final CoreConfig config; private final SpawnCategory spawnCategory; private final MemoryConfigurationHandle handle; private final StringPropertyHandle stringPropertyHandle; @@ -29,7 +30,8 @@ public final class SpawnCategoryConfig { private MultiverseWorld world; - SpawnCategoryConfig(SpawnCategory spawnCategory, ConfigurationSection section) { + SpawnCategoryConfig(CoreConfig config, SpawnCategory spawnCategory, ConfigurationSection section) { + this.config = config; this.spawnCategory = spawnCategory; this.nodes = new Nodes(); this.handle = MemoryConfigurationHandle.builder(section, nodes.nodes) @@ -64,7 +66,7 @@ void applyConfigToWorld() { } private void applyTickPerSpawns(World bukkitWorld) { - if (!MultiverseCoreApi.get().getCoreConfig().getApplyEntitySpawnLimit()) { + if (!config.getApplyEntitySpawnLimit()) { Logging.finer("World %s %s skipping setTicksPerSpawns due to core config", world.getName(), spawnCategory); return; } @@ -83,7 +85,7 @@ private void applyTickPerSpawns(World bukkitWorld) { } private void applySpawnLimit(World bukkitWorld) { - if (!MultiverseCoreApi.get().getCoreConfig().getApplyEntitySpawnLimit()) { + if (!config.getApplyEntitySpawnLimit()) { Logging.finer("Skipping World %s %s setSpawnLimit due to core config", world.getName(), spawnCategory); return; }