diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index 005c5f6990..2e7e156940 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -17,9 +17,11 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; +import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; +import java.util.logging.Logger; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; @@ -39,7 +41,10 @@ import org.l2jmobius.gameserver.model.stats.functions.FuncTemplate; */ public class OptionData implements IXmlReader { - private final Map _optionData = new ConcurrentHashMap<>(); + private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); + + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +54,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -66,7 +78,7 @@ public class OptionData implements IXmlReader if ("option".equalsIgnoreCase(d.getNodeName())) { final int id = parseInteger(d.getAttributes(), "id"); - final Options op = new Options(id); + final Options option = new Options(id); for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { switch (cd.getNodeName()) @@ -86,7 +98,7 @@ public class OptionData implements IXmlReader case "enchant": case "enchanthp": { - parseFuncs(fd.getAttributes(), fd.getNodeName(), op); + parseFuncs(fd.getAttributes(), fd.getNodeName(), option); } } } @@ -94,32 +106,32 @@ public class OptionData implements IXmlReader } case "active_skill": { - op.setActiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); + option.setActiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); break; } case "passive_skill": { - op.setPassiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); + option.setPassiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); break; } case "attack_skill": { - op.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.ATTACK)); + option.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.ATTACK)); break; } case "magic_skill": { - op.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.MAGIC)); + option.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.MAGIC)); break; } case "critical_skill": { - op.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.CRITICAL)); + option.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.CRITICAL)); break; } } } - _optionData.put(op.getId(), op); + _optionMap.put(option.getId(), option); } } } @@ -141,7 +153,7 @@ public class OptionData implements IXmlReader public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index 005c5f6990..2e7e156940 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -17,9 +17,11 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; +import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; +import java.util.logging.Logger; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; @@ -39,7 +41,10 @@ import org.l2jmobius.gameserver.model.stats.functions.FuncTemplate; */ public class OptionData implements IXmlReader { - private final Map _optionData = new ConcurrentHashMap<>(); + private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); + + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +54,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -66,7 +78,7 @@ public class OptionData implements IXmlReader if ("option".equalsIgnoreCase(d.getNodeName())) { final int id = parseInteger(d.getAttributes(), "id"); - final Options op = new Options(id); + final Options option = new Options(id); for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { switch (cd.getNodeName()) @@ -86,7 +98,7 @@ public class OptionData implements IXmlReader case "enchant": case "enchanthp": { - parseFuncs(fd.getAttributes(), fd.getNodeName(), op); + parseFuncs(fd.getAttributes(), fd.getNodeName(), option); } } } @@ -94,32 +106,32 @@ public class OptionData implements IXmlReader } case "active_skill": { - op.setActiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); + option.setActiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); break; } case "passive_skill": { - op.setPassiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); + option.setPassiveSkill(new SkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"))); break; } case "attack_skill": { - op.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.ATTACK)); + option.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.ATTACK)); break; } case "magic_skill": { - op.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.MAGIC)); + option.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.MAGIC)); break; } case "critical_skill": { - op.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.CRITICAL)); + option.addActivationSkill(new OptionsSkillHolder(parseInteger(cd.getAttributes(), "id"), parseInteger(cd.getAttributes(), "level"), parseDouble(cd.getAttributes(), "chance"), OptionsSkillType.CRITICAL)); break; } } } - _optionData.put(op.getId(), op); + _optionMap.put(option.getId(), option); } } } @@ -141,7 +153,7 @@ public class OptionData implements IXmlReader public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /** diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java index b0f84ee915..5c0ae8d627 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/impl/OptionData.java @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl; import java.io.File; import java.util.Collections; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -39,7 +40,8 @@ public class OptionData implements IXmlReader { private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName()); - private final Map _optionData = new ConcurrentHashMap<>(); + private static Options[] _options; + private static Map _optionMap = new ConcurrentHashMap<>(); protected OptionData() { @@ -49,9 +51,16 @@ public class OptionData implements IXmlReader @Override public synchronized void load() { - _optionData.clear(); parseDatapackDirectory("data/stats/augmentation/options", false); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options."); + + _options = new Options[Collections.max(_optionMap.keySet()) + 1]; + for (Entry option : _optionMap.entrySet()) + { + _options[option.getKey()] = option.getValue(); + } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options."); + _optionMap.clear(); } @Override @@ -104,13 +113,13 @@ public class OptionData implements IXmlReader } } }); - _optionData.put(option.getId(), option); + _optionMap.put(option.getId(), option); })); } public Options getOptions(int id) { - return _optionData.get(id); + return _options[id]; } /**