mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-06-12 04:23:54 +00:00
Implement getNameUnsafe method to allow an unloaded world's name to be accessed (#1712)
* Implement getNameUnsafe method to allow an unloaded world's name to be accessed - Fixes #1671 and #504 * Add javadoc since tag Co-authored-by: Alexander Brandes <mc.cache@web.de> Co-authored-by: Alexander Brandes <mc.cache@web.de>
This commit is contained in:
@ -15,4 +15,11 @@ public class WorldUnloadedException extends WorldEditException {
|
||||
super(Caption.of("worldedit.error.world-unloaded"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance.
|
||||
*/
|
||||
public WorldUnloadedException(String name) {
|
||||
super(Caption.of("worldedit.error.named-world-unloaded", name));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -193,19 +193,34 @@ public class BukkitWorld extends AbstractWorld {
|
||||
* @return the world
|
||||
*/
|
||||
protected World getWorldChecked() throws WorldEditException {
|
||||
World world = worldRef.get();
|
||||
if (world == null) {
|
||||
throw new WorldUnloadedException();
|
||||
World tmp = worldRef.get();
|
||||
if (tmp == null) {
|
||||
tmp = Bukkit.getWorld(worldNameRef);
|
||||
if (tmp != null) {
|
||||
worldRef = new WeakReference<>(tmp);
|
||||
}
|
||||
}
|
||||
return world;
|
||||
if (tmp == null) {
|
||||
throw new WorldUnloadedException(worldNameRef);
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
//FAWE end
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return getWorld().getName();
|
||||
//FAWE start - Throw WorldUnloadedException rather than NPE when world unloaded and attempted to be accessed
|
||||
return getWorldChecked().getName();
|
||||
//FAWE end
|
||||
}
|
||||
|
||||
//FAWE start - allow history to read an unloaded world's name
|
||||
@Override
|
||||
public String getNameUnsafe() {
|
||||
return worldNameRef;
|
||||
}
|
||||
//FAWE end
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return getWorld().getName().replace(" ", "_").toLowerCase(Locale.ROOT);
|
||||
|
Reference in New Issue
Block a user