Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P aCis_gameserver
- Index: java/net/sf/l2j/gameserver/GameServer.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/GameServer.java (revision 121)
- +++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
- @@ -49,6 +49,7 @@
- import net.sf.l2j.gameserver.datatables.ClanTable;
- import net.sf.l2j.gameserver.datatables.DoorTable;
- import net.sf.l2j.gameserver.datatables.EnchantTable;
- +import net.sf.l2j.gameserver.datatables.FeanorTable;
- import net.sf.l2j.gameserver.datatables.FishTable;
- import net.sf.l2j.gameserver.datatables.GmListTable;
- import net.sf.l2j.gameserver.datatables.HelperBuffTable;
- @@ -193,6 +194,7 @@
- CursedWeaponsManager.getInstance();
- EnchantTable.getInstance();
- AuctionTable.getInstance();
- + FeanorTable.getInstance();
- StringUtil.printSection("Admins");
- AccessLevels.getInstance();
- Index: java/net/sf/l2j/gameserver/datatables/FeanorTable.java
- ===================================================================
- @@ -0,0 +1,138 @@
- --- java/net/sf/l2j/gameserver/datatables/FeanorTable.java (revision 01)
- +++ java/net/sf/l2j/gameserver/datatables/FeanorTable.java (working copy)
- +/*
- +* 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.logging.Level;
- +import java.util.logging.Logger;
- +
- +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 ("feanor".equalsIgnoreCase(feanor.getNodeName()))
- + {
- + final String type = set.getString("type");
- + final boolean isRaid = type.equalsIgnoreCase("L2RaidBoss") || type.equalsIgnoreCase("L2GrandBoss");
- + final List<DropCategory> drops = new ArrayList<>();
- + final DropCategory category = new DropCategory(Integer.parseInt(attrs.getNamedItem("id").getNodeValue()));
- +
- + for (Node dropCat = feanor.getFirstChild(); dropCat != null; dropCat = dropCat.getNextSibling())
- + {
- + if ("category".equalsIgnoreCase(dropCat.getNodeName()))
- + {
- + attrs = feanor.getAttributes();
- +
- + 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("feanor", 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 Collection<NpcTemplate> getAllNpcs()
- + {
- + return _feanor.values();
- + }
- +
- + public static FeanorTable getInstance()
- + {
- + return SingletonHolder._instance;
- + }
- +
- + private static class SingletonHolder
- + {
- + protected static final FeanorTable _instance = new FeanorTable();
- + }
- +}
- ### Eclipse Workspace Patch 1.0
- #P aCis_datapack
- Index: data/xml/feanor.xml
- ===================================================================
- --- data/xml/feanor.xml (révision 1)
- +++ data/xml/feanor.xml (révision 2)
- @@ -0,564 +1,8 @@
- <!--
- @author williams
- -->
- +<?xml version="1.0" encoding="UTF-8"?>
- +<list>
- + <drops>
- + <category id="1">
- + <drop itemid="3470" min="1" max="1" chance="100" />
- + </category>
- + </drops>
- +</list>
Add Comment
Please, Sign In to add comment