mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-14 04:02:04 +01:00
Expand world key API
This commit is contained in:
parent
bcd78c9bf2
commit
07c1829d7f
@ -865,6 +865,29 @@ public final class Bukkit {
|
|||||||
public static World getWorld(@NotNull UUID uid) {
|
public static World getWorld(@NotNull UUID uid) {
|
||||||
return server.getWorld(uid);
|
return server.getWorld(uid);
|
||||||
}
|
}
|
||||||
|
// Paper start
|
||||||
|
/**
|
||||||
|
* Gets the world from the given NamespacedKey
|
||||||
|
*
|
||||||
|
* @param worldKey the NamespacedKey of the world to retrieve
|
||||||
|
* @return a world with the given NamespacedKey, or null if none exists
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public static World getWorld(@NotNull NamespacedKey worldKey) {
|
||||||
|
return server.getWorld(worldKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the world from the given Key
|
||||||
|
*
|
||||||
|
* @param worldKey the Key of the world to retrieve
|
||||||
|
* @return a world with the given Key, or null if none exists
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public static World getWorld(@NotNull net.kyori.adventure.key.Key worldKey) {
|
||||||
|
return server.getWorld(worldKey);
|
||||||
|
}
|
||||||
|
// Paper end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new virtual {@link WorldBorder}.
|
* Create a new virtual {@link WorldBorder}.
|
||||||
|
@ -18,7 +18,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
* A RegionAccessor gives access to getting, modifying and spawning {@link Biome}, {@link BlockState} and {@link Entity},
|
* A RegionAccessor gives access to getting, modifying and spawning {@link Biome}, {@link BlockState} and {@link Entity},
|
||||||
* as well as generating some basic structures.
|
* as well as generating some basic structures.
|
||||||
*/
|
*/
|
||||||
public interface RegionAccessor {
|
public interface RegionAccessor extends Keyed { // Paper
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@link Biome} at the given {@link Location}.
|
* Gets the {@link Biome} at the given {@link Location}.
|
||||||
@ -452,5 +452,14 @@ public interface RegionAccessor {
|
|||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
io.papermc.paper.world.MoonPhase getMoonPhase();
|
io.papermc.paper.world.MoonPhase getMoonPhase();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the world's key
|
||||||
|
*
|
||||||
|
* @return the world's key
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
NamespacedKey getKey();
|
||||||
// Paper end
|
// Paper end
|
||||||
}
|
}
|
||||||
|
@ -726,6 +726,28 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
|||||||
@Nullable
|
@Nullable
|
||||||
public World getWorld(@NotNull UUID uid);
|
public World getWorld(@NotNull UUID uid);
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
/**
|
||||||
|
* Gets the world from the given NamespacedKey
|
||||||
|
*
|
||||||
|
* @param worldKey the NamespacedKey of the world to retrieve
|
||||||
|
* @return a world with the given NamespacedKey, or null if none exists
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
default World getWorld(@NotNull NamespacedKey worldKey) {
|
||||||
|
return getWorld((net.kyori.adventure.key.Key) worldKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the world from the given Key
|
||||||
|
*
|
||||||
|
* @param worldKey the Key of the world to retrieve
|
||||||
|
* @return a world with the given Key, or null if none exists
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
World getWorld(@NotNull net.kyori.adventure.key.Key worldKey);
|
||||||
|
// Paper end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new virtual {@link WorldBorder}.
|
* Create a new virtual {@link WorldBorder}.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -175,5 +175,10 @@ public interface UnsafeValues {
|
|||||||
* Use this when sending custom packets, so that there are no collisions on the client or server.
|
* Use this when sending custom packets, so that there are no collisions on the client or server.
|
||||||
*/
|
*/
|
||||||
public int nextEntityId();
|
public int nextEntityId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Just don't use it.
|
||||||
|
*/
|
||||||
|
@org.jetbrains.annotations.NotNull String getMainLevelName();
|
||||||
// Paper end
|
// Paper end
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
* Represents various types of options that may be used to create a world.
|
* Represents various types of options that may be used to create a world.
|
||||||
*/
|
*/
|
||||||
public class WorldCreator {
|
public class WorldCreator {
|
||||||
|
private final NamespacedKey key; // Paper
|
||||||
private final String name;
|
private final String name;
|
||||||
private long seed;
|
private long seed;
|
||||||
private World.Environment environment = World.Environment.NORMAL;
|
private World.Environment environment = World.Environment.NORMAL;
|
||||||
@ -30,12 +31,81 @@ public class WorldCreator {
|
|||||||
* @param name Name of the world that will be created
|
* @param name Name of the world that will be created
|
||||||
*/
|
*/
|
||||||
public WorldCreator(@NotNull String name) {
|
public WorldCreator(@NotNull String name) {
|
||||||
Preconditions.checkArgument(name != null, "World name cannot be null");
|
// Paper start
|
||||||
|
this(name, getWorldKey(name));
|
||||||
this.name = name;
|
|
||||||
this.seed = (new Random()).nextLong();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static NamespacedKey getWorldKey(String name) {
|
||||||
|
final String mainLevelName = Bukkit.getUnsafe().getMainLevelName();
|
||||||
|
if (name.equals(mainLevelName)) {
|
||||||
|
return NamespacedKey.minecraft("overworld");
|
||||||
|
} else if (name.equals(mainLevelName + "_nether")) {
|
||||||
|
return NamespacedKey.minecraft("the_nether");
|
||||||
|
} else if (name.equals(mainLevelName + "_the_end")) {
|
||||||
|
return NamespacedKey.minecraft("the_end");
|
||||||
|
} else {
|
||||||
|
return NamespacedKey.minecraft(name.toLowerCase(java.util.Locale.ENGLISH).replace(" ", "_"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an empty WorldCreator for the given world name and key
|
||||||
|
*
|
||||||
|
* @param levelName LevelName of the world that will be created
|
||||||
|
* @param worldKey NamespacedKey of the world that will be created
|
||||||
|
*/
|
||||||
|
public WorldCreator(@NotNull String levelName, @NotNull NamespacedKey worldKey) {
|
||||||
|
if (levelName == null || worldKey == null) {
|
||||||
|
throw new IllegalArgumentException("World name and key cannot be null");
|
||||||
|
}
|
||||||
|
this.name = levelName;
|
||||||
|
this.seed = (new Random()).nextLong();
|
||||||
|
this.key = worldKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an empty WorldCreator for the given key.
|
||||||
|
* LevelName will be the Key part of the NamespacedKey.
|
||||||
|
*
|
||||||
|
* @param worldKey NamespacedKey of the world that will be created
|
||||||
|
*/
|
||||||
|
public WorldCreator(@NotNull NamespacedKey worldKey) {
|
||||||
|
this(worldKey.getKey(), worldKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the key for this WorldCreator
|
||||||
|
*
|
||||||
|
* @return the key
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public NamespacedKey key() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an empty WorldCreator for the given world name and key
|
||||||
|
*
|
||||||
|
* @param levelName LevelName of the world that will be created
|
||||||
|
* @param worldKey NamespacedKey of the world that will be created
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public static WorldCreator ofNameAndKey(@NotNull String levelName, @NotNull NamespacedKey worldKey) {
|
||||||
|
return new WorldCreator(levelName, worldKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an empty WorldCreator for the given key.
|
||||||
|
* LevelName will be the Key part of the NamespacedKey.
|
||||||
|
*
|
||||||
|
* @param worldKey NamespacedKey of the world that will be created
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public static WorldCreator ofKey(@NotNull NamespacedKey worldKey) {
|
||||||
|
return new WorldCreator(worldKey);
|
||||||
|
}
|
||||||
|
// Paper end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copies the options from the specified world
|
* Copies the options from the specified world
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user