diff --git a/tools/MapleMapFieldLimitChecker/src/maplemapfieldlimitchecker/MapleMapFieldLimitChecker.java b/src/main/java/tools/mapletools/MapFieldLimitChecker.java similarity index 52% rename from tools/MapleMapFieldLimitChecker/src/maplemapfieldlimitchecker/MapleMapFieldLimitChecker.java rename to src/main/java/tools/mapletools/MapFieldLimitChecker.java index 657ca2ebc4..da54249d97 100644 --- a/tools/MapleMapFieldLimitChecker/src/maplemapfieldlimitchecker/MapleMapFieldLimitChecker.java +++ b/src/main/java/tools/mapletools/MapFieldLimitChecker.java @@ -1,56 +1,25 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2018 RonanLana +package tools.mapletools; - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. +import provider.wz.WZFiles; - 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package maplemapfieldlimitchecker; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; -import java.io.IOException; -import java.io.PrintWriter; +import java.io.*; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; /** - * * @author RonanLana - * - This application seeks from the XMLs all mapid entries that holds the specified - fieldLimit. + *

+ * This application seeks from the XMLs all mapid entries that holds the specified + * fieldLimit. */ -public class MapleMapFieldLimitChecker { - - static String newFile = "lib/Report.txt"; - static String outputWzPath = "lib"; - static PrintWriter printWriter = null; - static InputStreamReader fileReader = null; - static BufferedReader bufferedReader = null; - - static String wzPath = "../../wz"; - static int initialStringLength = 50; - static int itemFileNameSize = 13; - - static int fieldLimit = 0x400000; - - static byte status = 0; - static int mapid = 0; - +public class MapFieldLimitChecker { + private static final int INITIAL_STRING_LENGTH = 50; + private static final int FIELD_LIMIT = 0x400000; + + private static BufferedReader bufferedReader = null; + private static byte status = 0; + private static int mapid = 0; + private static String getName(String token) { int i, j; char[] dest; @@ -60,13 +29,13 @@ public class MapleMapFieldLimitChecker { i = token.indexOf("\"", i) + 1; //lower bound of the string j = token.indexOf("\"", i); //upper bound - dest = new char[initialStringLength]; + dest = new char[INITIAL_STRING_LENGTH]; token.getChars(i, j, dest, 0); d = new String(dest); - return(d.trim()); + return (d.trim()); } - + private static String getValue(String token) { int i, j; char[] dest; @@ -76,35 +45,33 @@ public class MapleMapFieldLimitChecker { i = token.indexOf("\"", i) + 1; //lower bound of the string j = token.indexOf("\"", i); //upper bound - dest = new char[initialStringLength]; + dest = new char[INITIAL_STRING_LENGTH]; token.getChars(i, j, dest, 0); d = new String(dest); - return(d.trim()); + return (d.trim()); } - + private static void forwardCursor(int st) { String line = null; try { - while(status >= st && (line = bufferedReader.readLine()) != null) { + while (status >= st && (line = bufferedReader.readLine()) != null) { simpleToken(line); } - } - catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); } } private static void simpleToken(String token) { - if(token.contains("/imgdir")) { + if (token.contains("/imgdir")) { status -= 1; - } - else if(token.contains("imgdir")) { + } else if (token.contains("imgdir")) { status += 1; } } - + private static void listFiles(String directoryName, ArrayList files) { File directory = new File(directoryName); @@ -118,65 +85,62 @@ public class MapleMapFieldLimitChecker { } } } - + private static int getMapIdFromFilename(String name) { try { - return Integer.valueOf(name.substring(0, name.indexOf('.'))); - } catch(Exception e) { + return Integer.parseInt(name.substring(0, name.indexOf('.'))); + } catch (Exception e) { return -1; } } - + private static void translateToken(String token) { - if(token.contains("/imgdir")) { + if (token.contains("/imgdir")) { status -= 1; - } - else if(token.contains("imgdir")) { + } else if (token.contains("imgdir")) { status += 1; - + if (status == 2) { String d = getName(token); if (!d.contentEquals("info")) { forwardCursor(status); } } - } - else { + } else { if (status == 2) { String d = getName(token); - + if (d.contentEquals("fieldLimit")) { - int value = Integer.valueOf(getValue(token)); - if ((value & fieldLimit) == fieldLimit) { + int value = Integer.parseInt(getValue(token)); + if ((value & FIELD_LIMIT) == FIELD_LIMIT) { System.out.println(mapid + " " + value); } } } } } - + private static void inspectMapEntry() { String line = null; try { - while((line = bufferedReader.readLine()) != null) { + while ((line = bufferedReader.readLine()) != null) { translateToken(line); } - } - catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); } } - + private static void loadMapWz() throws IOException { System.out.println("Reading Map.wz ..."); ArrayList files = new ArrayList<>(); - listFiles(wzPath + "/Map.wz/Map", files); + listFiles(WZFiles.MAP.getFilePath() + "/Map", files); - for(File f : files) { - fileReader = new InputStreamReader(new FileInputStream(f), "UTF-8"); + for (File f : files) { + InputStreamReader fileReader = new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8); bufferedReader = new BufferedReader(fileReader); - + mapid = getMapIdFromFilename(f.getName()); inspectMapEntry(); @@ -184,7 +148,7 @@ public class MapleMapFieldLimitChecker { fileReader.close(); } } - + public static void main(String[] args) { try { loadMapWz(); @@ -193,5 +157,4 @@ public class MapleMapFieldLimitChecker { ioe.printStackTrace(); } } - } diff --git a/tools/MapleMapFieldLimitChecker/lib/Report.txt b/tools/MapleMapFieldLimitChecker/lib/Report.txt deleted file mode 100644 index 2d4b275314..0000000000 --- a/tools/MapleMapFieldLimitChecker/lib/Report.txt +++ /dev/null @@ -1,149 +0,0 @@ - # Report File autogenerated from the MapleEmptyItemWzChecker feature by Ronan Lana. - # Generated data takes into account several data info from the server-side WZ.xmls. - -String.wz NAMES with no Item.wz node, 130 entries: - 20816 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ - 20817 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ - 21817 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ - 21820 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Face\ - 1002655 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ - 1002657 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ - 1002658 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ - 1003028 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ - 1003029 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ - 1003030 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ - 1003043 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Cap\ - 1022096 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Accessory\ - 1042180 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Coat\ - 1052226 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Longcoat\ - 1060115 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ - 1060138 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ - 1061125 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ - 1061160 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ - 1062036 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ - 1062037 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Pants\ - 1072248 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ - 1072249 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ - 1072418 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ - 1072425 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Shoes\ - 1080002 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ - 1082217 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ - 1082221 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ - 1082261 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Glove\ - 1142152 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Accessory\ - 1142155 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Accessory\ - 1302032 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1302069 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1322030 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1322034 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1332058 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1382013 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1452047 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1462020 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1462042 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1472057 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 1702113 ../../wz/String.wz/Eqp.img.xml -> Eqp.img\Eqp\Weapon\ - 2002012 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2002013 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2002014 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2012004 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2022034 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2022036 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2022046 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2022114 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2070014 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2083000 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2084000 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2101016 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2101017 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2101018 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2101019 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2101022 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2101058 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2210023 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2210024 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240004 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240005 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240006 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240007 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240008 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240009 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240010 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240011 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240012 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240013 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240014 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2240015 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2290109 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 2390000 ../../wz/String.wz/Consume.img.xml -> Consume.img\ - 3010044 ../../wz/String.wz/Ins.img.xml -> Ins.img\ - 3994016 ../../wz/String.wz/Ins.img.xml -> Ins.img\ - 4000275 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4001150 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031294 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031627 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031628 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031629 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031630 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031631 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031632 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031633 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031634 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031635 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031636 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031637 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031638 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031639 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031640 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031641 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031642 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031643 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031644 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031645 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031646 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031647 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031648 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031795 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4031867 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 4032526 ../../wz/String.wz/Etc.img.xml -> Etc.img\Etc\ - 5000040 ../../wz/String.wz/Pet.img.xml -> Pet.img\ - 5000043 ../../wz/String.wz/Pet.img.xml -> Pet.img\ - 5000046 ../../wz/String.wz/Pet.img.xml -> Pet.img\ - 5201000 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5201001 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5210000 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5210001 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5210002 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5210003 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5210004 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5210005 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5211001 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5211002 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5211003 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5211047 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5240016 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5240019 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5251004 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5251005 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5251006 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5360009 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5360010 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5360011 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5360012 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5360013 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - 5360014 ../../wz/String.wz/Cash.img.xml -> Cash.img\ - -Item.wz ITEMS with no String.wz node, 12 entries: - 1942000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01942000.img.xml -> NOT FOUND - 1942001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01942001.img.xml -> NOT FOUND - 1942002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01942002.img.xml -> NOT FOUND - 1952000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01952000.img.xml -> NOT FOUND - 1952001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01952001.img.xml -> NOT FOUND - 1952002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01952002.img.xml -> NOT FOUND - 1962000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01962000.img.xml -> NOT FOUND - 1962001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01962001.img.xml -> NOT FOUND - 1962002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01962002.img.xml -> NOT FOUND - 1972000 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01972000.img.xml -> NOT FOUND - 1972001 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01972001.img.xml -> NOT FOUND - 1972002 C:\Nexon\HeavenMS\wz\Character.wz\Dragon\01972002.img.xml -> NOT FOUND -