Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P aCis_datapack
- Index: data/xml/feanor.xml
- ===================================================================
- --- data/xml/feanor.xml (revision 0)
- +++ data/xml/feanor.xml (working copy)
- @@ -0,0 +1,4 @@
- +<?xml version='1.0' encoding='utf-8'?>
- +<list>
- + <template itemid="3470" min="5" max="10" chance="550000"/>
- +</list>
- \ No newline at end of file
- Index: data/html/admin/server_menu.htm
- ===================================================================
- --- data/html/admin/server_menu.htm (revision 332)
- +++ data/html/admin/server_menu.htm (working copy)
- @@ -11,7 +11,7 @@
- Reload
- <table width=240>
- <tr>
- - <td><combobox width=120 height=21 var="cb" list=acar;config;crest;cw;door;htm;item;multisell;npc;npcwalker;scripts;skill;teleport;zone;></td>
- + <td><combobox width=120 height=21 var="cb" list=acar;config;crest;cw;door;htm;feanor;item;multisell;npc;npcwalker;scripts;skill;teleport;zone;></td>
- <td><button value="Reload" action="bypass -h admin_reload $cb" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td>
- </tr>
- </table><br>
- #P aCis_gameserver
- Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java (revision 332)
- +++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java (working copy)
- @@ -30,6 +30,7 @@
- import net.sf.l2j.gameserver.datatables.NpcTable;
- import net.sf.l2j.gameserver.datatables.NpcWalkerRoutesTable;
- import net.sf.l2j.gameserver.datatables.SkillTable;
- +import net.sf.l2j.gameserver.datatables.SkipTable;
- import net.sf.l2j.gameserver.datatables.TeleportLocationTable;
- import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
- import net.sf.l2j.gameserver.instancemanager.CursedWeaponsManager;
- @@ -227,6 +228,11 @@
- ItemTable.getInstance().reload();
- activeChar.sendMessage("Items' templates have been reloaded.");
- }
- + else if (type.startsWith("feanor"))
- + {
- + FeanorTable.getInstance();
- + activeChar.sendMessage("Feanor list have been reloaded.");
- + }
- else if (type.equals("multisell"))
- {
- MultisellData.getInstance().reload();
- Index: java/net/sf/l2j/gameserver/GameServer.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/GameServer.java (revision 332)
- +++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
- @@ -56,6 +56,7 @@
- import net.sf.l2j.gameserver.datatables.RecipeTable;
- import net.sf.l2j.gameserver.datatables.SkillTable;
- import net.sf.l2j.gameserver.datatables.SkillTreeTable;
- +import net.sf.l2j.gameserver.datatables.FeanorTable;
- import net.sf.l2j.gameserver.datatables.SoulCrystalsTable;
- import net.sf.l2j.gameserver.datatables.SpawnTable;
- import net.sf.l2j.gameserver.datatables.SpellbookTable;
- @@ -194,6 +195,7 @@
- HennaTable.getInstance();
- HelperBuffTable.getInstance();
- CursedWeaponsManager.getInstance();
- + FeanorTable.getInstance();
- Util.printSection("Clans");
- ClanTable.getInstance();
- Index: java/net/sf/l2j/gameserver/datatables/NpcTable.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/datatables/NpcTable.java (revision 332)
- +++ java/net/sf/l2j/gameserver/datatables/NpcTable.java (working copy)
- @@ -23,6 +23,7 @@
- import java.util.logging.Level;
- import java.util.logging.Logger;
- +import net.sf.l2j.Config;
- import net.sf.l2j.gameserver.model.L2MinionData;
- import net.sf.l2j.gameserver.model.L2NpcAIData;
- import net.sf.l2j.gameserver.model.L2Skill;
- @@ -201,6 +202,10 @@
- _log.warning("Droplist data for undefined itemId: " + data.getItemId());
- continue;
- }
- +
- + if (Config.ENABLE_FEANOR && FeanorTable.isFeanor(data.getItemId()))
- + continue;
- +
- template.addDropData(dropDat, category);
- }
- }
- Index: java/net/sf/l2j/Config.java
- ===================================================================
- --- java/net/sf/l2j/Config.java (revision 332)
- +++ java/net/sf/l2j/Config.java (working copy)
- @@ -374,6 +374,9 @@
- public static int GRID_NEIGHBOR_TURNON_TIME;
- public static int GRID_NEIGHBOR_TURNOFF_TIME;
- + /** Feanor Drop */
- + public static boolean ENABLE_FEANOR;
- +
- // --------------------------------------------------
- // Players
- // --------------------------------------------------
- @@ -995,6 +998,8 @@
- GRID_NEIGHBOR_TURNON_TIME = npcs.getProperty("GridNeighborTurnOnTime", 1);
- GRID_NEIGHBOR_TURNOFF_TIME = npcs.getProperty("GridNeighborTurnOffTime", 90);
- + ENABLE_FEANOR = npcs.getProperty("EnableFeanorList", false);
- +
- // players
- ExProperties players = load(PLAYERS_FILE);
- STARTING_ADENA = players.getProperty("StartingAdena", 100);
- Index: config/npcs.properties
- ===================================================================
- --- config/npcs.properties (revision 332)
- +++ config/npcs.properties (working copy)
- @@ -263,4 +263,12 @@
- # The always on option allows to ignore all this and let all grids be active at all times
- GridsAlwaysOn = False
- GridNeighborTurnOnTime = 1
- -GridNeighborTurnOffTime = 90
- \ No newline at end of file
- +GridNeighborTurnOffTime = 90
- +
- +#=============================================================
- +# Feanor Settings
- +#=============================================================
- +
- +# Enable skip all items from feanor.xml out from droplist of all monsters.
- +# Default: False
- +EnableFeanorList = False
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/datatables/FeanorTable.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/datatables/FeanorTable.java (revision 0)
- +++ 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.List;
- +import java.util.logging.Logger;
- +
- +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
- +{
- + protected static final Logger _log = Logger.getLogger(FeanorTable.class.getName());
- +
- + private static List<Feanor> _feanor;
- +
- + public static FeanorTable getInstance()
- + {
- + return SingletonHolder._instance;
- + }
- +
- + private static class SingletonHolder
- + {
- + protected static final FeanorTable _instance = new FeanorTable();
- + }
- +
- + protected FeanorTable()
- + {
- + _feanor = new ArrayList<>();
- + loadFeanor();
- + }
- +
- + public void reload()
- + {
- + _feanor.clear();
- + loadFeanor();
- + }
- +
- + private void loadFeanor()
- + {
- + try
- + {
- + File f = new File("./data/xml/feanor.xml");
- + Document doc = XMLDocumentFactory.getInstance().loadDocument(f);
- +
- + Node n = doc.getFirstChild();
- + for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
- + {
- + if (d.getNodeName().equalsIgnoreCase("template"))
- + {
- + NamedNodeMap attrs = d.getAttributes();
- +
- + int itemId = Integer.valueOf(attrs.getNamedItem("itemId").getNodeValue());
- + int min = Integer.parseInt(attrs.getNamedItem("min").getNodeValue());
- + int max = Integer.parseInt(attrs.getNamedItem("max").getNodeValue());
- + int chance = Integer.parseInt(attrs.getNamedItem("chance").getNodeValue());
- +
- + StatsSet set = new StatsSet();
- + set.set("itemId", itemId);
- + set.set("min", min);
- + set.set("max", max);
- + set.set("chance", chance);
- +
- + _feanor.add(new Feanor(set));
- + }
- + }
- + }
- + catch (Exception e)
- + {
- + _log.warning("Exception: FeanorTable loadFeanor: " + e);
- + }
- +
- + _log.info("FeanorTable: Loaded " + _feanor.size() + " item's template(s).");
- + }
- +
- + public static boolean isFeanor(int itemId)
- + {
- + return _feanor.contains(itemId);
- + }
- +
- + public class Feanor
- + {
- + private int _itemId;
- + private int _chance;
- + private int _min;
- + private int _max;
- +
- + public Feanor(StatsSet set)
- + {
- + _itemId = set.getInteger("itemId");
- + _chance = set.getInteger("chance");
- + _min = set.getInteger("min");
- + _max = set.getInteger("max");
- + }
- +
- + public int getItemId()
- + {
- + return _itemId;
- + }
- +
- + public int getChance()
- + {
- + return _chance;
- + }
- +
- + public int getMax()
- + {
- + return _max;
- + }
- +
- + public int getMin()
- + {
- + return _min;
- + }
- + }
- +}
Advertisement
Add Comment
Please, Sign In to add comment