From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> Date: Sat, 13 Jan 2024 13:36:55 +0300 Subject: [PATCH] Optimize CraftServer.getWorld(UUID) Original code by MultiPaper - https://github.com/MultiPaper/MultiPaper diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 825066dbd54ef753cdc03cbbe9deb65438759449..d57338319e8267fe83ae6578322dfcc1eba336aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -269,6 +269,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper import space.bxteam.divinemc.configuration.DivineConfig; // DivineMC +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; // DivineMC public final class CraftServer implements Server { private final String serverName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); // Paper @@ -287,6 +288,7 @@ public final class CraftServer implements Server { protected final DedicatedPlayerList playerList; private final Map worlds = new LinkedHashMap(); // private final Map, Registry> registries = new HashMap<>(); // Paper - replace with RegistryAccess + private final Map worldsByUUID = new Object2ObjectLinkedOpenHashMap<>(); // DivineMC - MultiPaper - optimize getWorld(UUID) private YamlConfiguration configuration; private YamlConfiguration commandsConfiguration; private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); @@ -1521,6 +1523,7 @@ public final class CraftServer implements Server { this.getLogger().log(Level.SEVERE, null, ex); } + this.worldsByUUID.remove(world.getUID()); // DivineMC - MultiPaper - optimize getWorld(UUID) this.worlds.remove(world.getName().toLowerCase(Locale.ROOT)); this.console.removeLevel(handle); return true; @@ -1539,6 +1542,7 @@ public final class CraftServer implements Server { @Override public World getWorld(UUID uid) { + if (true) return this.worldsByUUID.get(uid); // DivineMC - MultiPaper - optimize getWorld(UUID) for (World world : this.worlds.values()) { if (world.getUID().equals(uid)) { return world; @@ -1562,6 +1566,7 @@ public final class CraftServer implements Server { System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); return; } + this.worldsByUUID.put(world.getUID(), world); // DivineMC - MultiPaper - optimize getWorld(UUID) this.worlds.put(world.getName().toLowerCase(Locale.ROOT), world); }