mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-24 19:46:21 +01:00
uuid changes
This commit is contained in:
parent
83fd8fad69
commit
d0f904fc50
@ -910,7 +910,8 @@ public abstract class Entity {
|
|||||||
nbttagcompound.a("Air", (short) this.airTicks);
|
nbttagcompound.a("Air", (short) this.airTicks);
|
||||||
nbttagcompound.a("OnGround", this.onGround);
|
nbttagcompound.a("OnGround", this.onGround);
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
nbttagcompound.setLong("WorldUID", this.world.worldData.getWorldUID());
|
nbttagcompound.setLong("WorldUUIDLeast", this.world.getUUID().getLeastSignificantBits());
|
||||||
|
nbttagcompound.setLong("WorldUUIDMost", this.world.getUUID().getMostSignificantBits());
|
||||||
nbttagcompound.setLong("UUIDLeast", this.uniqueId.getLeastSignificantBits());
|
nbttagcompound.setLong("UUIDLeast", this.uniqueId.getLeastSignificantBits());
|
||||||
nbttagcompound.setLong("UUIDMost", this.uniqueId.getMostSignificantBits());
|
nbttagcompound.setLong("UUIDMost", this.uniqueId.getMostSignificantBits());
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@ -983,23 +984,17 @@ public abstract class Entity {
|
|||||||
org.bukkit.World bworld = null;
|
org.bukkit.World bworld = null;
|
||||||
|
|
||||||
// TODO: Remove World related checks, replaced with WorldUID.
|
// TODO: Remove World related checks, replaced with WorldUID.
|
||||||
if (this instanceof EntityPlayer) {
|
|
||||||
EntityPlayer entityPlayer = (EntityPlayer) this;
|
|
||||||
String worldName = nbttagcompound.getString("World");
|
String worldName = nbttagcompound.getString("World");
|
||||||
|
|
||||||
if (nbttagcompound.hasKey("WorldUID")) {
|
if (nbttagcompound.hasKey("WorldUUIDMost") && nbttagcompound.hasKey("WorldUUIDLeast")) {
|
||||||
bworld = server.getWorld(nbttagcompound.getLong("WorldUID"));
|
UUID uid = new UUID(nbttagcompound.getLong("WorldUUIDMost"), nbttagcompound.getLong("WorldUUIDLeast"));
|
||||||
} else if ("".equals(worldName)) {
|
bworld = server.getWorld(uid);
|
||||||
bworld = ((org.bukkit.craftbukkit.CraftServer) server).getServer().getWorldServer(entityPlayer.dimension).getWorld();
|
|
||||||
} else {
|
} else {
|
||||||
bworld = server.getWorld(worldName);
|
bworld = server.getWorld(worldName);
|
||||||
}
|
}
|
||||||
} else {
|
if(bworld == null && this instanceof EntityPlayer) {
|
||||||
if (nbttagcompound.hasKey("WorldUID")) {
|
EntityPlayer entityPlayer = (EntityPlayer) this;
|
||||||
bworld = server.getWorld(nbttagcompound.getLong("WorldUID"));
|
bworld = ((org.bukkit.craftbukkit.CraftServer) server).getServer().getWorldServer(entityPlayer.dimension).getWorld();
|
||||||
} else {
|
|
||||||
bworld = server.getWorld(nbttagcompound.getString("World"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.spawnIn(bworld == null ? null : ((org.bukkit.craftbukkit.CraftWorld) bworld).getHandle());
|
this.spawnIn(bworld == null ? null : ((org.bukkit.craftbukkit.CraftWorld) bworld).getHandle());
|
||||||
|
26
src/main/java/net/minecraft/server/IDataManager.java
Normal file
26
src/main/java/net/minecraft/server/IDataManager.java
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface IDataManager {
|
||||||
|
|
||||||
|
WorldData c();
|
||||||
|
|
||||||
|
void b();
|
||||||
|
|
||||||
|
IChunkLoader a(WorldProvider worldprovider);
|
||||||
|
|
||||||
|
void a(WorldData worlddata, List list);
|
||||||
|
|
||||||
|
void a(WorldData worlddata);
|
||||||
|
|
||||||
|
PlayerFileData d();
|
||||||
|
|
||||||
|
void e();
|
||||||
|
|
||||||
|
File b(String s);
|
||||||
|
|
||||||
|
UUID getUUID();
|
||||||
|
}
|
246
src/main/java/net/minecraft/server/PlayerNBTManager.java
Normal file
246
src/main/java/net/minecraft/server/PlayerNBTManager.java
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import java.io.DataInputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
public class PlayerNBTManager implements PlayerFileData, IDataManager {
|
||||||
|
|
||||||
|
private static final Logger a = Logger.getLogger("Minecraft");
|
||||||
|
private final File b;
|
||||||
|
private final File c;
|
||||||
|
private final File d;
|
||||||
|
private final long e = System.currentTimeMillis();
|
||||||
|
|
||||||
|
public PlayerNBTManager(File file1, String s, boolean flag) {
|
||||||
|
this.b = new File(file1, s);
|
||||||
|
this.b.mkdirs();
|
||||||
|
this.c = new File(this.b, "players");
|
||||||
|
this.d = new File(this.b, "data");
|
||||||
|
this.d.mkdirs();
|
||||||
|
if (flag) {
|
||||||
|
this.c.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.f();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void f() {
|
||||||
|
try {
|
||||||
|
File file1 = new File(this.b, "session.lock");
|
||||||
|
DataOutputStream dataoutputstream = new DataOutputStream(new FileOutputStream(file1));
|
||||||
|
|
||||||
|
try {
|
||||||
|
dataoutputstream.writeLong(this.e);
|
||||||
|
} finally {
|
||||||
|
dataoutputstream.close();
|
||||||
|
}
|
||||||
|
} catch (IOException ioexception) {
|
||||||
|
ioexception.printStackTrace();
|
||||||
|
throw new RuntimeException("Failed to check session lock, aborting");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected File a() {
|
||||||
|
return this.b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void b() {
|
||||||
|
try {
|
||||||
|
File file1 = new File(this.b, "session.lock");
|
||||||
|
DataInputStream datainputstream = new DataInputStream(new FileInputStream(file1));
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (datainputstream.readLong() != this.e) {
|
||||||
|
throw new MinecraftException("The save is being accessed from another location, aborting");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
datainputstream.close();
|
||||||
|
}
|
||||||
|
} catch (IOException ioexception) {
|
||||||
|
throw new MinecraftException("Failed to check session lock, aborting");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IChunkLoader a(WorldProvider worldprovider) {
|
||||||
|
if (worldprovider instanceof WorldProviderHell) {
|
||||||
|
File file1 = new File(this.b, "DIM-1");
|
||||||
|
|
||||||
|
file1.mkdirs();
|
||||||
|
return new ChunkLoader(file1, true);
|
||||||
|
} else {
|
||||||
|
return new ChunkLoader(this.b, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldData c() {
|
||||||
|
File file1 = new File(this.b, "level.dat");
|
||||||
|
NBTTagCompound nbttagcompound;
|
||||||
|
NBTTagCompound nbttagcompound1;
|
||||||
|
|
||||||
|
if (file1.exists()) {
|
||||||
|
try {
|
||||||
|
nbttagcompound = CompressedStreamTools.a((InputStream) (new FileInputStream(file1)));
|
||||||
|
nbttagcompound1 = nbttagcompound.k("Data");
|
||||||
|
return new WorldData(nbttagcompound1);
|
||||||
|
} catch (Exception exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
file1 = new File(this.b, "level.dat_old");
|
||||||
|
if (file1.exists()) {
|
||||||
|
try {
|
||||||
|
nbttagcompound = CompressedStreamTools.a((InputStream) (new FileInputStream(file1)));
|
||||||
|
nbttagcompound1 = nbttagcompound.k("Data");
|
||||||
|
return new WorldData(nbttagcompound1);
|
||||||
|
} catch (Exception exception1) {
|
||||||
|
exception1.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void a(WorldData worlddata, List list) {
|
||||||
|
NBTTagCompound nbttagcompound = worlddata.a(list);
|
||||||
|
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
|
||||||
|
|
||||||
|
nbttagcompound1.a("Data", (NBTBase) nbttagcompound);
|
||||||
|
|
||||||
|
try {
|
||||||
|
File file1 = new File(this.b, "level.dat_new");
|
||||||
|
File file2 = new File(this.b, "level.dat_old");
|
||||||
|
File file3 = new File(this.b, "level.dat");
|
||||||
|
|
||||||
|
CompressedStreamTools.a(nbttagcompound1, (OutputStream) (new FileOutputStream(file1)));
|
||||||
|
if (file2.exists()) {
|
||||||
|
file2.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
file3.renameTo(file2);
|
||||||
|
if (file3.exists()) {
|
||||||
|
file3.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
file1.renameTo(file3);
|
||||||
|
if (file1.exists()) {
|
||||||
|
file1.delete();
|
||||||
|
}
|
||||||
|
} catch (Exception exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void a(WorldData worlddata) {
|
||||||
|
NBTTagCompound nbttagcompound = worlddata.a();
|
||||||
|
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
|
||||||
|
|
||||||
|
nbttagcompound1.a("Data", (NBTBase) nbttagcompound);
|
||||||
|
|
||||||
|
try {
|
||||||
|
File file1 = new File(this.b, "level.dat_new");
|
||||||
|
File file2 = new File(this.b, "level.dat_old");
|
||||||
|
File file3 = new File(this.b, "level.dat");
|
||||||
|
|
||||||
|
CompressedStreamTools.a(nbttagcompound1, (OutputStream) (new FileOutputStream(file1)));
|
||||||
|
if (file2.exists()) {
|
||||||
|
file2.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
file3.renameTo(file2);
|
||||||
|
if (file3.exists()) {
|
||||||
|
file3.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
file1.renameTo(file3);
|
||||||
|
if (file1.exists()) {
|
||||||
|
file1.delete();
|
||||||
|
}
|
||||||
|
} catch (Exception exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void a(EntityHuman entityhuman) {
|
||||||
|
try {
|
||||||
|
NBTTagCompound nbttagcompound = new NBTTagCompound();
|
||||||
|
|
||||||
|
entityhuman.d(nbttagcompound);
|
||||||
|
File file1 = new File(this.c, "_tmp_.dat");
|
||||||
|
File file2 = new File(this.c, entityhuman.name + ".dat");
|
||||||
|
|
||||||
|
CompressedStreamTools.a(nbttagcompound, (OutputStream) (new FileOutputStream(file1)));
|
||||||
|
if (file2.exists()) {
|
||||||
|
file2.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
file1.renameTo(file2);
|
||||||
|
} catch (Exception exception) {
|
||||||
|
a.warning("Failed to save player data for " + entityhuman.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void b(EntityHuman entityhuman) {
|
||||||
|
NBTTagCompound nbttagcompound = this.a(entityhuman.name);
|
||||||
|
|
||||||
|
if (nbttagcompound != null) {
|
||||||
|
entityhuman.e(nbttagcompound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public NBTTagCompound a(String s) {
|
||||||
|
try {
|
||||||
|
File file1 = new File(this.c, s + ".dat");
|
||||||
|
|
||||||
|
if (file1.exists()) {
|
||||||
|
return CompressedStreamTools.a((InputStream) (new FileInputStream(file1)));
|
||||||
|
}
|
||||||
|
} catch (Exception exception) {
|
||||||
|
a.warning("Failed to load player data for " + s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerFileData d() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void e() {}
|
||||||
|
|
||||||
|
public File b(String s) {
|
||||||
|
return new File(this.d, s + ".dat");
|
||||||
|
}
|
||||||
|
|
||||||
|
// CraftBukkit start
|
||||||
|
public UUID getUUID() {
|
||||||
|
try {
|
||||||
|
File file1 = new File(this.b, "uid.dat");
|
||||||
|
UUID id;
|
||||||
|
if(!file1.exists()) {
|
||||||
|
DataOutputStream dos = new DataOutputStream(new FileOutputStream(file1));
|
||||||
|
id = UUID.randomUUID();
|
||||||
|
dos.writeLong(id.getMostSignificantBits());
|
||||||
|
dos.writeLong(id.getLeastSignificantBits());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DataInputStream dis = new DataInputStream(new FileInputStream(file1));
|
||||||
|
id = new UUID(dis.readLong(), dis.readLong());
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
catch (IOException ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
}
|
@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -2407,4 +2408,9 @@ public class World implements IBlockAccess {
|
|||||||
((IWorldAccess) this.u.get(j1)).a(entityhuman, i, j, k, l, i1);
|
((IWorldAccess) this.u.get(j1)).a(entityhuman, i, j, k, l, i1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CraftBukkit start
|
||||||
|
public UUID getUUID() {
|
||||||
|
return this.w.getUUID();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
public class WorldData {
|
public class WorldData {
|
||||||
|
|
||||||
@ -20,7 +19,6 @@ public class WorldData {
|
|||||||
private int m;
|
private int m;
|
||||||
private boolean n;
|
private boolean n;
|
||||||
private int o;
|
private int o;
|
||||||
private long worldUID; // CraftBukkit
|
|
||||||
|
|
||||||
public WorldData(NBTTagCompound nbttagcompound) {
|
public WorldData(NBTTagCompound nbttagcompound) {
|
||||||
this.a = nbttagcompound.getLong("RandomSeed");
|
this.a = nbttagcompound.getLong("RandomSeed");
|
||||||
@ -40,24 +38,11 @@ public class WorldData {
|
|||||||
this.h = nbttagcompound.k("Player");
|
this.h = nbttagcompound.k("Player");
|
||||||
this.i = this.h.e("Dimension");
|
this.i = this.h.e("Dimension");
|
||||||
}
|
}
|
||||||
// CraftBukkit start
|
|
||||||
if (nbttagcompound.hasKey("WorldUID")) {
|
|
||||||
this.worldUID = nbttagcompound.getLong("WorldUID");
|
|
||||||
} else {
|
|
||||||
this.worldUID = (System.nanoTime() << 20) + this.a;
|
|
||||||
nbttagcompound.setLong("WorldUID", this.worldUID);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Bukkit.getServer().getWorld(worldUID) != null) {
|
|
||||||
throw new IllegalStateException("World '" + name + "' contains a conflicting UID with existing world. Please edit its level.dat and remove WorldUID, or delete its level.dat (and lose its seed/etc).");
|
|
||||||
}
|
|
||||||
// CraftBukkit end
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorldData(long i, String s) {
|
public WorldData(long i, String s) {
|
||||||
this.a = i;
|
this.a = i;
|
||||||
this.name = s;
|
this.name = s;
|
||||||
this.worldUID = (System.nanoTime() << 20) + this.a; // CraftBukkit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorldData(WorldData worlddata) {
|
public WorldData(WorldData worlddata) {
|
||||||
@ -120,7 +105,6 @@ public class WorldData {
|
|||||||
if (nbttagcompound1 != null) {
|
if (nbttagcompound1 != null) {
|
||||||
nbttagcompound.a("Player", nbttagcompound1);
|
nbttagcompound.a("Player", nbttagcompound1);
|
||||||
}
|
}
|
||||||
nbttagcompound.setLong("WorldUID", this.worldUID); // CraftBukkit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getSeed() {
|
public long getSeed() {
|
||||||
@ -208,10 +192,4 @@ public class WorldData {
|
|||||||
public void setWeatherDuration(int i) {
|
public void setWeatherDuration(int i) {
|
||||||
this.m = i;
|
this.m = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
// CraftBukkit start
|
|
||||||
public long getWorldUID() {
|
|
||||||
return this.worldUID;
|
|
||||||
}
|
|
||||||
// CraftBukkit end
|
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -25,7 +26,7 @@ public class WorldMap extends WorldMapBase {
|
|||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
private CraftServer server;
|
private CraftServer server;
|
||||||
private long worldUID = 0L;
|
private UUID uniqueId = null;
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
public WorldMap(String s) {
|
public WorldMap(String s) {
|
||||||
@ -38,8 +39,13 @@ public class WorldMap extends WorldMapBase {
|
|||||||
byte dimension = nbttagcompound.c("dimension");
|
byte dimension = nbttagcompound.c("dimension");
|
||||||
|
|
||||||
if (dimension >= 10) {
|
if (dimension >= 10) {
|
||||||
this.worldUID = nbttagcompound.getLong("WorldUID");
|
long least = nbttagcompound.getLong("UUIDLeast");
|
||||||
CraftWorld world = (CraftWorld) server.getWorld(this.worldUID);
|
long most = nbttagcompound.getLong("UUIDMost");
|
||||||
|
|
||||||
|
if (least != 0L && most != 0L) {
|
||||||
|
this.uniqueId = new UUID(most, least);
|
||||||
|
}
|
||||||
|
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.
|
||||||
@ -94,16 +100,17 @@ public class WorldMap extends WorldMapBase {
|
|||||||
public void b(NBTTagCompound nbttagcompound) {
|
public void b(NBTTagCompound nbttagcompound) {
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
if (this.map >= 10) {
|
if (this.map >= 10) {
|
||||||
if (this.worldUID == 0L) {
|
if (this.uniqueId == null) {
|
||||||
for (org.bukkit.World world : server.getWorlds()) {
|
for (org.bukkit.World world : server.getWorlds()) {
|
||||||
CraftWorld cWorld = (CraftWorld) world;
|
CraftWorld cWorld = (CraftWorld) world;
|
||||||
if (cWorld.getHandle().dimension == this.map) {
|
if (cWorld.getHandle().dimension == this.map) {
|
||||||
this.worldUID = cWorld.getUID();
|
this.uniqueId = cWorld.getUID();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nbttagcompound.setLong("WorldUID", this.worldUID);
|
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);
|
||||||
|
@ -24,6 +24,7 @@ import java.util.LinkedHashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import jline.ConsoleReader;
|
import jline.ConsoleReader;
|
||||||
@ -494,9 +495,9 @@ public final class CraftServer implements Server {
|
|||||||
return worlds.get(name.toLowerCase());
|
return worlds.get(name.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
public World getWorld(long uid) {
|
public World getWorld(UUID uid) {
|
||||||
for (World world : worlds.values()) {
|
for (World world : worlds.values()) {
|
||||||
if (world.getUID() == uid) {
|
if (world.getUID().equals(uid)) {
|
||||||
return world;
|
return world;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import net.minecraft.server.*;
|
import net.minecraft.server.*;
|
||||||
|
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.Arrow;
|
||||||
@ -400,8 +402,8 @@ public class CraftWorld implements World {
|
|||||||
return world.worldData.getSeed();
|
return world.worldData.getSeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getUID() {
|
public UUID getUID() {
|
||||||
return world.worldData.getWorldUID();
|
return world.getUUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user