Map handling improvements.

Fixed an NPE occurring under certain circumstances.
Made it possible for maps to exist without having to associate them with a world.
This commit is contained in:
Rigby 2011-07-26 21:04:18 +01:00 committed by EvilSeph
parent ae43b837b0
commit bb89847632

View File

@ -45,15 +45,16 @@ public class WorldMap extends WorldMapBase {
if (least != 0L && most != 0L) { if (least != 0L && most != 0L) {
this.uniqueId = new UUID(most, least); this.uniqueId = new UUID(most, least);
}
CraftWorld world = (CraftWorld) server.getWorld(this.uniqueId); CraftWorld world = (CraftWorld) server.getWorld(this.uniqueId);
// Check if the stored world details are correct. // Check if the stored world details are correct.
if (world == null) { if (world == null) {
/* All Maps which do not have their valid world loaded are set to a dimension which hopefully won't be reached. /* All Maps which do not have their valid world loaded are set to a dimension which hopefully won't be reached.
This is to prevent them being corrupted with the wrong map data. */ This is to prevent them being corrupted with the wrong map data. */
dimension = 127; dimension = 127;
} else { } else {
dimension = (byte) world.getHandle().dimension; dimension = (byte) world.getHandle().dimension;
}
} }
} }
@ -110,8 +111,12 @@ public class WorldMap extends WorldMapBase {
} }
} }
} }
nbttagcompound.setLong("UUIDLeast", this.uniqueId.getLeastSignificantBits()); /* Perform a second check to see if a matching world was found, this is a necessary
nbttagcompound.setLong("UUIDMost", this.uniqueId.getMostSignificantBits()); change incase Maps are forcefully unlinked from a World and lack a UID.*/
if (this.uniqueId != null) {
nbttagcompound.setLong("UUIDLeast", this.uniqueId.getLeastSignificantBits());
nbttagcompound.setLong("UUIDMost", this.uniqueId.getMostSignificantBits());
}
} }
// CraftBukkit end // CraftBukkit end
nbttagcompound.a("dimension", this.map); nbttagcompound.a("dimension", this.map);