Hello tou trying to create a feanor with the droplist of the game so you do not have to do with a frozen type lib is able to work? I do not know how to create from 0 so I copied the drop list and removed the parts of npcs and left only the part of the drope someone can help me I know not to be right but I do not know what to do right anymore.
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.l2j.gameserver.datatables;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
import net.sf.l2j.gameserver.model.item.DropCategory;
import net.sf.l2j.gameserver.model.item.DropData;
import net.sf.l2j.gameserver.templates.StatsSet;
import net.sf.l2j.gameserver.xmlfactory.XMLDocumentFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
/**
* @author williams
*
*/
public class FeanorTable
{
private static final Logger _log = Logger.getLogger(FeanorTable.class.getName());
private final Map<Integer, NpcTemplate> _feanor = new HashMap<>();
protected FeanorTable()
{
load();
}
public void reloadAllNpc()
{
_feanor.clear();
load();
}
private void load()
{
try
{
final File dir = new File("./data/xml/feanor.xml");
final StatsSet set = new StatsSet();
for (File file : dir.listFiles())
{
final Document doc = XMLDocumentFactory.getInstance().loadDocument(file);
Node list = doc.getFirstChild();
for (Node feanor = list.getFirstChild(); feanor != null; feanor = feanor.getNextSibling())
{
NamedNodeMap attrs = feanor.getAttributes();
if ("drops".equalsIgnoreCase(feanor.getNodeName()))
{
final String type = set.getString("type");
final boolean isRaid = type.equalsIgnoreCase("L2RaidBoss") || type.equalsIgnoreCase("L2GrandBoss");
final List<DropCategory> drops = new ArrayList<>();
for (Node dropCat = feanor.getFirstChild(); dropCat != null; dropCat = dropCat.getNextSibling())
{
if ("category".equalsIgnoreCase(dropCat.getNodeName()))
{
attrs = dropCat.getAttributes();
final DropCategory category = new DropCategory(Integer.parseInt(attrs.getNamedItem("id").getNodeValue()));
for (Node item = dropCat.getFirstChild(); item != null; item = item.getNextSibling())
{
if ("drop".equalsIgnoreCase(item.getNodeName()))
{
attrs = item.getAttributes();
final DropData data = new DropData();
data.setItemId(Integer.parseInt(attrs.getNamedItem("itemid").getNodeValue()));
data.setMinDrop(Integer.parseInt(attrs.getNamedItem("min").getNodeValue()));
data.setMaxDrop(Integer.parseInt(attrs.getNamedItem("max").getNodeValue()));
data.setChance(Integer.parseInt(attrs.getNamedItem("chance").getNodeValue()));
if (ItemTable.getInstance().getTemplate(data.getItemId()) == null)
{
_log.warning("Droplist data for undefined itemId: " + data.getItemId());
continue;
}
category.addDropData(data, isRaid);
}
}
drops.add(category);
}
}
set.set("drops", drops);
}
else if ("teachTo".equalsIgnoreCase(feanor.getNodeName()))
set.set("teachTo", feanor.getAttributes().getNamedItem("classes").getNodeValue());
}
}
}
catch (Exception e)
{
_log.log(Level.SEVERE, "FeanorTable: Error parsing Feanor Table : ", e);
}
_log.info("FeanorTable: Loaded " + _feanor.size() + " Feanor Table.");
}
public NpcTemplate getTemplate(int id)
{
return _feanor.get(id);
}
/**
* @param name to search.
* @return the template list of NPCs for a given name.
*/
public NpcTemplate getTemplateByName(String name)
{
for (NpcTemplate npcTemplate : _feanor.values())
{
if (npcTemplate.getName().equalsIgnoreCase(name))
return npcTemplate;
}
return null;
}
/**
* Gets all templates matching the filter.
* @param filter
* @return the template list for the given filter
*/
public List<NpcTemplate> getTemplates(Predicate<NpcTemplate> filter)
{
return _feanor.values().stream().filter(filter).collect(Collectors.toList());
}
public Collection<NpcTemplate> getAllNpcs()
{
return _feanor.values();
}
public static FeanorTable getInstance()
{
return SingletonHolder._instance;
}
private static class SingletonHolder
{
protected static final FeanorTable _instance = new FeanorTable();
}
}
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
DISCORD :
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/uthciha-market
https://campsite.bio/utchihaamkt
Question
l2jkain
Hello tou trying to create a feanor with the droplist of the game so you do not have to do with a frozen type lib is able to work? I do not know how to create from 0 so I copied the drop list and removed the parts of npcs and left only the part of the drope someone can help me I know not to be right but I do not know what to do right anymore.
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.