From b7a8776162620130c311cfb1ed2aee3055214588 Mon Sep 17 00:00:00 2001 From: Pyrbu Date: Wed, 24 May 2023 17:02:28 +0100 Subject: [PATCH] optimize by name lookup of properties --- .../znpcsplus/entity/EntityPropertyImpl.java | 11 +---------- .../entity/EntityPropertyRegistryImpl.java | 17 ++++++++++------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyImpl.java b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyImpl.java index c734d72..d390c58 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyImpl.java @@ -9,16 +9,7 @@ public class EntityPropertyImpl implements EntityProperty { private final Class clazz; private final PropertySerializer serializer; - protected EntityPropertyImpl(String name, Class type, PropertySerializer serializer) { - this(name, null, type, serializer); - } - - @SuppressWarnings("unchecked") - protected EntityPropertyImpl(String name, T defaultValue, PropertySerializer serializer) { - this(name, defaultValue, (Class) defaultValue.getClass(), serializer); - } - - private EntityPropertyImpl(String name, T defaultValue, Class clazz, PropertySerializer serializer) { + protected EntityPropertyImpl(String name, T defaultValue, Class clazz, PropertySerializer serializer) { this.name = name.toLowerCase(); this.defaultValue = defaultValue; this.clazz = clazz; diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java index 7f02c99..3cf1dae 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java @@ -10,15 +10,13 @@ import lol.pyr.znpcsplus.skin.cache.SkinCache; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; @SuppressWarnings("unchecked") public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { private final Map, PropertySerializer> serializerMap = new HashMap<>(); - private final List> properties = new ArrayList<>(); + private final Map> byName = new HashMap<>(); public EntityPropertyRegistryImpl(SkinCache skinCache) { registerSerializer(new BooleanPropertySerializer()); @@ -33,6 +31,7 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { registerType("silent", false); registerType("skin", SkinDescriptor.class); registerType("name", Component.class); + registerType("look", false); } private void registerSerializer(PropertySerializer serializer) { @@ -40,11 +39,16 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { } private void registerType(String name, Class type) { - properties.add(new EntityPropertyImpl<>(name, type, (PropertySerializer) serializerMap.get(type))); + registerType(name, null, type); } private void registerType(String name, T defaultValue) { - properties.add(new EntityPropertyImpl<>(name, defaultValue, (PropertySerializer) serializerMap.get(defaultValue.getClass()))); + registerType(name, defaultValue, (Class) defaultValue.getClass()); + } + + private void registerType(String name, T defaultValue, Class clazz) { + EntityPropertyImpl property = new EntityPropertyImpl<>(name, defaultValue, clazz, (PropertySerializer) serializerMap.get(clazz)); + byName.put(name.toLowerCase(), property); } public EntityPropertyImpl getByName(String name, Class type) { @@ -52,7 +56,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { } public EntityPropertyImpl getByName(String name) { - for (EntityPropertyImpl property : properties) if (property.getName().equalsIgnoreCase(name)) return property; - return null; + return byName.get(name.toLowerCase()); } }