From 065b5eba16aeb8c6a26e4654cdbb5ad8f16aa8ab Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Sat, 3 Jun 2023 16:55:03 -0500 Subject: [PATCH] NpcAPI: -Cached scripted player objects so their tempdata is persisted after death. --- src/main/java/noppes/npcs/scripted/NpcAPI.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index f388863f2..57234cc5a 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -73,6 +73,7 @@ public class NpcAPI extends AbstractNpcAPI { private static final Map worldCache = new LRUHashMap<>(10); private static final CacheHashMap> scriptItemCache = new CacheHashMap<>(60*1000); public static final HashMap engineObjects = new HashMap<>(); + public static final HashMap playerCache = new HashMap<>(); public static final EventBus EVENT_BUS = new EventBus(); private static AbstractNpcAPI instance = null; @@ -195,8 +196,12 @@ public class NpcAPI extends AbstractNpcAPI { ScriptEntityData data = (ScriptEntityData) entity.getExtendedProperties("ScriptedObject"); if(data != null) return data.base; - if(entity instanceof EntityPlayerMP) - data = new ScriptEntityData(new ScriptPlayer<>((EntityPlayerMP) entity)); + if(entity instanceof EntityPlayerMP) { + if (!playerCache.containsKey(((EntityPlayerMP) entity).getDisplayName())) { + playerCache.put(((EntityPlayerMP) entity).getDisplayName(),new ScriptEntityData(new ScriptPlayer<>((EntityPlayerMP) entity))); + } + data = playerCache.get(((EntityPlayerMP) entity).getDisplayName()); + } else if(PixelmonHelper.isPixelmon(entity)) return new ScriptPixelmon((EntityTameable) entity); else if(entity instanceof EntityAnimal)