From c8ee5099e03ecf2c03d7caeae83d58ad63451897 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sat, 12 Jan 2019 19:29:06 -0800 Subject: [PATCH] TextComponents will no longer use a cache This will increase the cost of TextComponents by a negligible amount but in exchange I will be able to put player-specific data into them. --- Changelog.txt | 1 + .../nossr50/util/TextComponentFactory.java | 135 +++++------------- 2 files changed, 39 insertions(+), 97 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index d35c1297a..de69776d3 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -15,6 +15,7 @@ Version 2.1.0 + Added links to mcMMO related websites to various commands + Certain elements of mcMMO's UI have been restyled + Added the tagline "Overhaul Era" to various locations until 3.0.0 comes out + + (Sound) Volume and Pitch of sounds can now be configured in the new sounds.yml file + (MySQL) Added support for SSL for MySQL/MariaDB (On by default) + (Skills) Tool alerts now are sent to the Action Bar + (Skills) Super Ability activation alerts are now sent to the Action Bar diff --git a/src/main/java/com/gmail/nossr50/util/TextComponentFactory.java b/src/main/java/com/gmail/nossr50/util/TextComponentFactory.java index 7fc0fbd0e..750c4db71 100644 --- a/src/main/java/com/gmail/nossr50/util/TextComponentFactory.java +++ b/src/main/java/com/gmail/nossr50/util/TextComponentFactory.java @@ -19,19 +19,22 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +/** + * This class handles many of the JSON components that mcMMO makes and uses + */ public class TextComponentFactory { - public static HashMap subSkillTextComponents; + //public static HashMap subSkillTextComponents; //Yeah there's probably a better way to do this - public static HashMap lockedComponentMap; + //public static HashMap lockedComponentMap; - public static BaseComponent[] webComponents; + //public static BaseComponent[] webComponents; /** - * This one is a bit simple - * @param localeKey - * @param notificationType - * @param values + * Makes a text component using strings from a locale and supports passing an undefined number of variables to the LocaleLoader + * @param localeKey target locale string address + * @param notificationType type of notification + * @param values vars to be passed to the locale loader * @return */ public static TextComponent getNotificationMultipleValues(String localeKey, NotificationType notificationType, String... values) @@ -69,11 +72,11 @@ public class TextComponentFactory { public static TextComponent getNotificationTextComponent(String text, NotificationType notificationType) { TextComponent textComponent = new TextComponent(text); - textComponent.setColor(getNotificationColor(notificationType)); + //textComponent.setColor(getNotificationColor(notificationType)); return textComponent; } - public static ChatColor getNotificationColor(NotificationType notificationType) + /*public static ChatColor getNotificationColor(NotificationType notificationType) { ChatColor color = ChatColor.WHITE; switch(notificationType) @@ -93,7 +96,7 @@ public class TextComponentFactory { } return color; - } + }*/ public static void sendPlayerUrlHeader(Player player) { if(!Config.getInstance().getUrlLinksEnabled()) @@ -101,11 +104,11 @@ public class TextComponentFactory { Player.Spigot spigotPlayer = player.spigot(); - if(webComponents != null) + /*if(webComponents != null) { player.spigot().sendMessage(webComponents); return; - } + }*/ TextComponent prefix = new TextComponent("[| "); prefix.setColor(ChatColor.DARK_AQUA); @@ -128,9 +131,7 @@ public class TextComponentFactory { getWebLinkTextComponent(McMMOWebLinks.HELP_TRANSLATE), new TextComponent(suffix)}; - //Cache into memory since the links wont change - webComponents = baseComponents; - spigotPlayer.sendMessage(webComponents); + spigotPlayer.sendMessage(baseComponents); } public static void sendPlayerSubSkillList(Player player, List textComponents) @@ -296,70 +297,42 @@ public class TextComponentFactory { public static TextComponent getSubSkillTextComponent(Player player, SubSkillType subSkillType) { - //Init our maps - if (subSkillTextComponents == null) - { - subSkillTextComponents = new HashMap<>(); - lockedComponentMap = new HashMap<>(); - //hoverComponentOuterMap = new HashMap<>(); - } //Get skill name & description from our locale file - String key = subSkillType.toString(); + //String key = subSkillType.toString(); String skillName = subSkillType.getLocaleName(); - if(subSkillTextComponents.get(key) == null) - { - //Setup Text Component - TextComponent textComponent = new TextComponent(skillName); - //textComponent.setColor(ChatColor.DARK_AQUA); + //Setup Text Component + TextComponent textComponent = new TextComponent(skillName); + //textComponent.setColor(ChatColor.DARK_AQUA); - //Hover Event - textComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, getBaseComponent(player, subSkillType))); + //Hover Event + textComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, getBaseComponent(player, subSkillType))); - //Insertion - textComponent.setInsertion(skillName); - textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/mmoinfo "+subSkillType.getNiceNameNoSpaces(subSkillType))); + //Insertion + textComponent.setInsertion(skillName); + textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/mmoinfo "+subSkillType.getNiceNameNoSpaces(subSkillType))); - subSkillTextComponents.put(key, textComponent); - return subSkillTextComponents.get(key); - } else { - return subSkillTextComponents.get(key); - } + return textComponent; } public static TextComponent getSubSkillTextComponent(Player player, AbstractSubSkill abstractSubSkill) { - //Init our maps - if (subSkillTextComponents == null) - { - subSkillTextComponents = new HashMap<>(); - lockedComponentMap = new HashMap<>(); - //hoverComponentOuterMap = new HashMap<>(); - } - - //Get skill name & description from our locale file - String key = abstractSubSkill.getConfigKeyName(); + //String key = abstractSubSkill.getConfigKeyName(); String skillName = abstractSubSkill.getNiceName(); - if(subSkillTextComponents.get(key) == null) - { - //Setup Text Component - TextComponent textComponent = new TextComponent(skillName); - textComponent.setColor(ChatColor.DARK_AQUA); + //Setup Text Component + TextComponent textComponent = new TextComponent(skillName); + textComponent.setColor(ChatColor.DARK_AQUA); - //Hover Event - textComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, getBaseComponent(player, abstractSubSkill))); + //Hover Event + textComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, getBaseComponent(player, abstractSubSkill))); - //Insertion - textComponent.setInsertion(skillName); - textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/mmoinfo "+abstractSubSkill.getConfigKeyName())); + //Insertion + textComponent.setInsertion(skillName); + textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/mmoinfo "+abstractSubSkill.getConfigKeyName())); - subSkillTextComponents.put(key, textComponent); - return subSkillTextComponents.get(key); - } else { - return subSkillTextComponents.get(key); - } + return textComponent; } private static BaseComponent[] getBaseComponent(Player player, AbstractSubSkill abstractSubSkill) @@ -370,25 +343,10 @@ public class TextComponentFactory { //If the player hasn't unlocked this skill yet we use a different JSON template if(abstractSubSkill.getNumRanks() > 0 && curRank == 0) { - //If the JSON component already exists - if(lockedComponentMap.get(key) != null) - return lockedComponentMap.get(key); - BaseComponent[] newComponents = getSubSkillHoverEventJSON(abstractSubSkill, player, curRank); - lockedComponentMap.put(key, newComponents); - return lockedComponentMap.get(key); + return newComponents; } - //If the inner hashmap for this rank isn't made yet - /*if(hoverComponentOuterMap.get(curRank) == null) - hoverComponentOuterMap.put(curRank, new HashMap<>());*/ - - //Inner Hashmap for current rank - //HashMap innerMap = hoverComponentOuterMap.get(curRank); - - /*if(innerMap.get(key) == null) - innerMap.put(key, getSubSkillHoverEventJSON(abstractSubSkill, player, curRank));*/ - return getSubSkillHoverEventJSON(abstractSubSkill, player, curRank); } @@ -400,27 +358,10 @@ public class TextComponentFactory { //If the player hasn't unlocked this skill yet we use a different JSON template if(subSkillType.getNumRanks() > 0 && curRank == 0) { - //If the JSON component already exists - if(lockedComponentMap.get(key) != null) - return lockedComponentMap.get(key); - BaseComponent[] newComponents = getSubSkillHoverEventJSON(subSkillType, player, curRank); - lockedComponentMap.put(key, newComponents); - return lockedComponentMap.get(key); + return newComponents; } - //If the inner hashmap for this rank isn't made yet - /*if(hoverComponentOuterMap.get(curRank) == null) - hoverComponentOuterMap.put(curRank, new HashMap<>()); - - //Inner Hashmap for current rank - HashMap innerMap = hoverComponentOuterMap.get(curRank);*/ - - /*if(innerMap.get(key) == null) - innerMap.put(key, getSubSkillHoverEventJSON(subSkillType, player, curRank)); - - return innerMap.get(key);*/ - return getSubSkillHoverEventJSON(subSkillType, player, curRank); }