diff --git a/paper-api/src/main/java/org/bukkit/WorldCreator.java b/paper-api/src/main/java/org/bukkit/WorldCreator.java
index f9fa287d25..27537aeabd 100644
--- a/paper-api/src/main/java/org/bukkit/WorldCreator.java
+++ b/paper-api/src/main/java/org/bukkit/WorldCreator.java
@@ -1,5 +1,6 @@
package org.bukkit;
+import com.google.common.base.Preconditions;
import java.util.Random;
import org.bukkit.command.CommandSender;
import org.bukkit.generator.BiomeProvider;
@@ -21,6 +22,7 @@ public class WorldCreator {
private boolean generateStructures = true;
private String generatorSettings = "";
private boolean hardcore = false;
+ private boolean keepSpawnInMemory = true;
/**
* Creates an empty WorldCreationOptions for the given world name
@@ -28,9 +30,7 @@ public class WorldCreator {
* @param name Name of the world that will be created
*/
public WorldCreator(@NotNull String name) {
- if (name == null) {
- throw new IllegalArgumentException("World name cannot be null");
- }
+ Preconditions.checkArgument(name != null, "World name cannot be null");
this.name = name;
this.seed = (new Random()).nextLong();
@@ -44,9 +44,7 @@ public class WorldCreator {
*/
@NotNull
public WorldCreator copy(@NotNull World world) {
- if (world == null) {
- throw new IllegalArgumentException("World cannot be null");
- }
+ Preconditions.checkArgument(world != null, "World cannot be null");
seed = world.getSeed();
environment = world.getEnvironment();
@@ -55,6 +53,7 @@ public class WorldCreator {
type = world.getWorldType();
generateStructures = world.canGenerateStructures();
hardcore = world.isHardcore();
+ keepSpawnInMemory = world.getKeepSpawnInMemory();
return this;
}
@@ -67,9 +66,7 @@ public class WorldCreator {
*/
@NotNull
public WorldCreator copy(@NotNull WorldCreator creator) {
- if (creator == null) {
- throw new IllegalArgumentException("Creator cannot be null");
- }
+ Preconditions.checkArgument(creator != null, "Creator cannot be null");
seed = creator.seed();
environment = creator.environment();
@@ -79,6 +76,7 @@ public class WorldCreator {
generateStructures = creator.generateStructures();
generatorSettings = creator.generatorSettings();
hardcore = creator.hardcore();
+ keepSpawnInMemory = creator.keepSpawnInMemory();
return this;
}
@@ -392,6 +390,33 @@ public class WorldCreator {
return hardcore;
}
+ /**
+ * Sets whether the spawn chunks will be kept loaded.
+ * Setting this to false will also stop the spawn chunks from being generated
+ * when creating a new world.
+ *
+ * Has little performance benefit unless paired with a {@link ChunkGenerator} + * that overrides {@link ChunkGenerator#getFixedSpawnLocation(World, Random)}. + * + * @param keepSpawnInMemory Whether the spawn chunks will be kept loaded + * @return This object, for chaining + */ + @NotNull + public WorldCreator keepSpawnInMemory(boolean keepSpawnInMemory) { + this.keepSpawnInMemory = keepSpawnInMemory; + + return this; + } + + /** + * Gets whether or not the spawn chunks will be kept loaded. + * + * @return True if the spawn chunks will be kept loaded + */ + public boolean keepSpawnInMemory() { + return keepSpawnInMemory; + } + /** * Creates a world with the specified options. *
@@ -434,12 +459,9 @@ public class WorldCreator { */ @Nullable public static ChunkGenerator getGeneratorForName(@NotNull String world, @Nullable String name, @Nullable CommandSender output) { + Preconditions.checkArgument(world != null, "World name must be specified"); ChunkGenerator result = null; - if (world == null) { - throw new IllegalArgumentException("World name must be specified"); - } - if (output == null) { output = Bukkit.getConsoleSender(); } @@ -479,12 +501,9 @@ public class WorldCreator { */ @Nullable public static BiomeProvider getBiomeProviderForName(@NotNull String world, @Nullable String name, @Nullable CommandSender output) { + Preconditions.checkArgument(world != null, "World name must be specified"); BiomeProvider result = null; - if (world == null) { - throw new IllegalArgumentException("World name must be specified"); - } - if (output == null) { output = Bukkit.getConsoleSender(); }