From 675b1c31e516dae48b9d1ff15899444eff2a42e9 Mon Sep 17 00:00:00 2001 From: NeglectDream <3328429240@qq.com> Date: Wed, 22 Jul 2026 19:28:22 +0800 Subject: [PATCH 1/2] Avoid redundant cache writes for online user lookups --- .../essentials/userstorage/ModernUserMap.java | 5 +++++ .../java/com/earth2me/essentials/UserTest.java | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/Essentials/src/main/java/com/earth2me/essentials/userstorage/ModernUserMap.java b/Essentials/src/main/java/com/earth2me/essentials/userstorage/ModernUserMap.java index 99834d3a9ea..c2d89c3b917 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/userstorage/ModernUserMap.java +++ b/Essentials/src/main/java/com/earth2me/essentials/userstorage/ModernUserMap.java @@ -102,6 +102,11 @@ public User getUser(final UUID uuid) { @Override public User getUser(final Player base) { + final User cachedUser = userCache.getIfPresent(base.getUniqueId()); + if (cachedUser != null && cachedUser.getBase() == base) { + return cachedUser; + } + final User user = loadUncachedUser(base); userCache.put(user.getUUID(), user); debugLogCache(user); diff --git a/Essentials/src/test/java/com/earth2me/essentials/UserTest.java b/Essentials/src/test/java/com/earth2me/essentials/UserTest.java index 7136aa4233f..d02094ce075 100644 --- a/Essentials/src/test/java/com/earth2me/essentials/UserTest.java +++ b/Essentials/src/test/java/com/earth2me/essentials/UserTest.java @@ -1,5 +1,6 @@ package com.earth2me.essentials; +import com.earth2me.essentials.userstorage.ModernUserMap; import net.ess3.api.MaxMoneyException; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -14,7 +15,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; public class UserTest { private PlayerMock base1; @@ -45,6 +50,15 @@ public void testUpdate() { assertEquals(base1alt, ess.getUser(base1alt).getBase()); } + @Test + public void testCachedPlayerLookupDoesNotReloadUser() { + final User expected = ess.getUser(base1); + final ModernUserMap userMap = spy((ModernUserMap) ess.getUsers()); + + assertSame(expected, userMap.getUser(base1)); + verify(userMap, never()).loadUncachedUser(base1); + } + @Test public void testHome() { final User user = ess.getUser(base1); From 60939831e4ade2bce88be24f2c761d51954b7f6b Mon Sep 17 00:00:00 2001 From: NeglectDream <3328429240@qq.com> Date: Wed, 22 Jul 2026 19:35:43 +0800 Subject: [PATCH 2/2] Remove online user lookup regression test --- .../java/com/earth2me/essentials/UserTest.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Essentials/src/test/java/com/earth2me/essentials/UserTest.java b/Essentials/src/test/java/com/earth2me/essentials/UserTest.java index d02094ce075..7136aa4233f 100644 --- a/Essentials/src/test/java/com/earth2me/essentials/UserTest.java +++ b/Essentials/src/test/java/com/earth2me/essentials/UserTest.java @@ -1,6 +1,5 @@ package com.earth2me.essentials; -import com.earth2me.essentials.userstorage.ModernUserMap; import net.ess3.api.MaxMoneyException; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -15,11 +14,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.fail; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; public class UserTest { private PlayerMock base1; @@ -50,15 +45,6 @@ public void testUpdate() { assertEquals(base1alt, ess.getUser(base1alt).getBase()); } - @Test - public void testCachedPlayerLookupDoesNotReloadUser() { - final User expected = ess.getUser(base1); - final ModernUserMap userMap = spy((ModernUserMap) ess.getUsers()); - - assertSame(expected, userMap.getUser(base1)); - verify(userMap, never()).loadUncachedUser(base1); - } - @Test public void testHome() { final User user = ess.getUser(base1);