mirror of
https://github.com/BX-Team/DivineMC.git
synced 2025-12-20 07:19:23 +00:00
Upstream has released updates that appear to apply and compile correctly Purpur Changes: PurpurMC/Purpur@0601f87 Updated Upstream (Paper) PurpurMC/Purpur@06dde9d Add Ridable and Attribute options for Creaking mob (#1613) PurpurMC/Purpur@420a1ce Set the bee's `takes-damage-from-water` option to true by default (#1614) PurpurMC/Purpur@2b6f273 Updated Upstream (Paper)
52 lines
2.9 KiB
Diff
52 lines
2.9 KiB
Diff
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<String, World> worlds = new LinkedHashMap<String, World>();
|
|
// private final Map<Class<?>, Registry<?>> registries = new HashMap<>(); // Paper - replace with RegistryAccess
|
|
+ private final Map<UUID, World> 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);
|
|
}
|
|
|