From e9af655afe74e1a9b024d1c7f9b190ba161f8a4e Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 15 Nov 2022 22:15:46 +0000 Subject: [PATCH] Precautionary checks for EnchantItemOptionsData. --- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- .../data/xml/EnchantItemOptionsData.java | 34 +++++++++++++++---- 29 files changed, 783 insertions(+), 203 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 0991b63d32..c511c045b1 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -56,28 +58,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 0991b63d32..c511c045b1 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -56,28 +58,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 0991b63d32..c511c045b1 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -56,28 +58,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++; diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java index 4dfc5f6019..aa0a81c56d 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/EnchantItemOptionsData.java @@ -25,12 +25,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.util.IXmlReader; +import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.options.EnchantOptions; import org.l2jmobius.gameserver.util.Util; /** - * @author UnAfraid + * @author UnAfraid, Mobius */ public class EnchantItemOptionsData implements IXmlReader { @@ -58,28 +60,46 @@ public class EnchantItemOptionsData implements IXmlReader { if ("list".equalsIgnoreCase(n.getNodeName())) { - for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + ITEM: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("item".equalsIgnoreCase(d.getNodeName())) { final int itemId = parseInteger(d.getAttributes(), "id"); - if (!_data.containsKey(itemId)) + final ItemTemplate template = ItemTable.getInstance().getTemplate(itemId); + if (template == null) { - _data.put(itemId, new HashMap<>()); + LOGGER.warning(getClass().getSimpleName() + ": Could not find item template for id " + itemId); + continue ITEM; } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("options".equalsIgnoreCase(cd.getNodeName())) { final EnchantOptions op = new EnchantOptions(parseInteger(cd.getAttributes(), "level")); - _data.get(itemId).put(op.getLevel(), op); - for (byte i = 0; i < 3; i++) { final Node att = cd.getAttributes().getNamedItem("option" + (i + 1)); if ((att != null) && Util.isDigit(att.getNodeValue())) { - op.setOption(i, parseInteger(att)); + final int id = parseInteger(att); + if (OptionData.getInstance().getOptions(id) == null) + { + LOGGER.warning(getClass().getSimpleName() + ": Could not find option " + id + " for item " + template); + continue ITEM; + } + + Map data = _data.get(itemId); + if (data == null) + { + data = new HashMap<>(); + _data.put(itemId, data); + } + if (!data.containsKey(op.getLevel())) + { + data.put(op.getLevel(), op); + } + + op.setOption(i, id); } } counter++;