Use simple array to store option data.

This commit is contained in:
MobiusDevelopment
2020-10-28 17:36:44 +00:00
parent 296e06df6e
commit d041780984
19 changed files with 288 additions and 111 deletions

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -17,9 +17,11 @@
package org.l2jmobius.gameserver.data.xml.impl; package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Logger;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@@ -39,7 +41,10 @@ import org.l2jmobius.gameserver.model.stats.functions.FuncTemplate;
*/ */
public class OptionData implements IXmlReader public class OptionData implements IXmlReader
{ {
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +54,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); 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<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @Override
@@ -66,7 +78,7 @@ public class OptionData implements IXmlReader
if ("option".equalsIgnoreCase(d.getNodeName())) if ("option".equalsIgnoreCase(d.getNodeName()))
{ {
final int id = parseInteger(d.getAttributes(), "id"); 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()) for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
{ {
switch (cd.getNodeName()) switch (cd.getNodeName())
@@ -86,7 +98,7 @@ public class OptionData implements IXmlReader
case "enchant": case "enchant":
case "enchanthp": 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": 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; break;
} }
case "passive_skill": 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; break;
} }
case "attack_skill": 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; break;
} }
case "magic_skill": 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; break;
} }
case "critical_skill": 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; 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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -17,9 +17,11 @@
package org.l2jmobius.gameserver.data.xml.impl; package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Logger;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@@ -39,7 +41,10 @@ import org.l2jmobius.gameserver.model.stats.functions.FuncTemplate;
*/ */
public class OptionData implements IXmlReader public class OptionData implements IXmlReader
{ {
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +54,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); 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<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @Override
@@ -66,7 +78,7 @@ public class OptionData implements IXmlReader
if ("option".equalsIgnoreCase(d.getNodeName())) if ("option".equalsIgnoreCase(d.getNodeName()))
{ {
final int id = parseInteger(d.getAttributes(), "id"); 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()) for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
{ {
switch (cd.getNodeName()) switch (cd.getNodeName())
@@ -86,7 +98,7 @@ public class OptionData implements IXmlReader
case "enchant": case "enchant":
case "enchanthp": 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": 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; break;
} }
case "passive_skill": 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; break;
} }
case "attack_skill": 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; break;
} }
case "magic_skill": 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; break;
} }
case "critical_skill": 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; 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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; 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 static final Logger LOGGER = Logger.getLogger(OptionData.class.getName());
private final Map<Integer, Options> _optionData = new ConcurrentHashMap<>(); private static Options[] _options;
private static Map<Integer, Options> _optionMap = new ConcurrentHashMap<>();
protected OptionData() protected OptionData()
{ {
@@ -49,9 +51,16 @@ public class OptionData implements IXmlReader
@Override @Override
public synchronized void load() public synchronized void load()
{ {
_optionData.clear();
parseDatapackDirectory("data/stats/augmentation/options", false); parseDatapackDirectory("data/stats/augmentation/options", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionData.size() + " options.");
_options = new Options[Collections.max(_optionMap.keySet()) + 1];
for (Entry<Integer, Options> option : _optionMap.entrySet())
{
_options[option.getKey()] = option.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _optionMap.size() + " options.");
_optionMap.clear();
} }
@Override @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) public Options getOptions(int id)
{ {
return _optionData.get(id); return _options[id];
} }
/** /**