From 836beafd0ffff65c0f90b1d3d79e064f80fa06b6 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 13 May 2018 13:35:03 +0000 Subject: [PATCH] L2ClientDat decoder. --- L2ClientDat/.classpath | 8 + L2ClientDat/.project | 17 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 428 ++ .../.settings/org.eclipse.jdt.ui.prefs | 131 + .../org.eclipse.ltk.core.refactoring.prefs | 2 + .../.settings/org.eclipse.wst.sse.core.prefs | 3 + .../org.eclipse.wst.validation.prefs | 12 + L2ClientDat/build.xml | 94 + L2ClientDat/dist/!definitions.xml | 120 + L2ClientDat/dist/L2ClientDat.exe | Bin 0 -> 90112 bytes L2ClientDat/dist/config/config_debug.ini | 9 + L2ClientDat/dist/config/config_window.ini | 12 + L2ClientDat/dist/config/cryptVersion.xml | 21 + L2ClientDat/dist/config/log4j.dtd | 166 + L2ClientDat/dist/config/log4j.xml | 24 + L2ClientDat/dist/libs/log4j-1.2.17.jar | Bin 0 -> 489883 bytes L2ClientDat/dist/libs/nproperty-1.0.jar | Bin 0 -> 10129 bytes L2ClientDat/dist/readme.txt | 20 + .../structure/03_en_c3_rise_of_darkness.xml | 5 + .../structure/04_en_c4_scions_of_destiny.xml | 5 + .../dist/structure/05_en_c5_oath_of_blood.xml | 5 + .../dist/structure/06_en_c6_interlude.xml | 5 + .../dist/structure/07_en_hellbound.xml | 5 + L2ClientDat/dist/structure/08_en_kamael.xml | 5 + .../dist/structure/09_en_gracia_part_ 1.xml | 5 + .../dist/structure/10_en_gracia_part_ 2.xml | 5 + .../dist/structure/11_en_gracia_epilogue.xml | 5 + .../dist/structure/12_en_gracia_final.xml | 5 + L2ClientDat/dist/structure/13_en_freya.xml | 5 + .../dist/structure/14_en_high_five.xml | 4 + .../dist/structure/15_en_awakening.xml | 5 + L2ClientDat/dist/structure/16_en_harmony.xml | 5 + L2ClientDat/dist/structure/17_en_tauti.xml | 5 + .../dist/structure/18_en_glory_days.xml | 5 + L2ClientDat/dist/structure/19_en_echo.xml | 5 + L2ClientDat/dist/structure/20_cn_lindvior.xml | 83 + .../dist/structure/20_kor_lindvior.xml | 79 + L2ClientDat/dist/structure/20_ru_lindvior.xml | 82 + .../dist/structure/21_cn_epeisodion.xml | 83 + .../dist/structure/21_kor_episodion.xml | 88 + .../dist/structure/21_ru_episodion.xml | 89 + .../22_kor_raider_of_the_lost_ark.xml | 5 + L2ClientDat/dist/structure/23_cn_ertheia.xml | 88 + L2ClientDat/dist/structure/23_kor_ertheia.xml | 147 + L2ClientDat/dist/structure/23_ru_ertheia.xml | 139 + .../structure/24_kor_infinite_odyssey.xml | 147 + .../dist/structure/24_ru_infinite_odyssey.xml | 150 + .../25_en_infinite_odyssey_underground.xml | 157 + .../25_kor_infinite_odyssey_hymn_of_doul.xml | 151 + .../25_ru_infinite_odyssey_hymn_of_doul.xml | 156 + ..._infinite_odyssey_will_of_the_ancients.xml | 155 + L2ClientDat/dist/structure/27_kor_helios.xml | 201 + .../dist/structure/27_kor_helios_p2.xml | 209 + .../dist/structure/27_kor_helios_p3.xml | 209 + .../dist/structure/27_kor_helios_p4.xml | 209 + .../dist/structure/27_kor_helios_p5.xml | 210 + .../dist/structure/27_kor_helios_p6.xml | 214 + L2ClientDat/dist/structure/27_ru_helios.xml | 216 + .../dist/structure/28_kor_grand_crusade.xml | 218 + .../structure/28_kor_grand_crusade_p2.xml | 218 + .../structure/28_kor_grand_crusade_p3.xml | 222 + .../29_salvation_classic_antharas_innova.xml | 223 + .../30_salvation_classic_goddard_korea.xml | 223 + .../dist/structure/dats/24hzschema.xml | 6 + L2ClientDat/dist/structure/dats/ability.xml | 45 + .../dist/structure/dats/abilitypoint.xml | 11 + .../structure/dats/abnormaldefaulteffect.xml | 93 + .../structure/dats/abnormaledgeeffectdata.xml | 23 + .../dist/structure/dats/actionname.xml | 60 + .../dist/structure/dats/additionaleffect.xml | 41 + .../dist/structure/dats/additionalitemgrp.xml | 112 + .../dats/additionaljewelequipeffect.xml | 12 + .../structure/dats/additionalnpcgrpparts.xml | 34 + .../dats/additionalsoulshoteffect.xml | 11 + .../dist/structure/dats/alchemydata.xml | 28 + .../dist/structure/dats/alterskilldata.xml | 18 + .../dist/structure/dats/animationcombo.xml | 23 + L2ClientDat/dist/structure/dats/armorgrp.xml | 726 ++ .../dist/structure/dats/attendancestamp.xml | 11 + .../dist/structure/dats/castlename.xml | 49 + .../dist/structure/dats/charcreategrp.xml | 29 + L2ClientDat/dist/structure/dats/chargrp.xml | 337 + L2ClientDat/dist/structure/dats/classinfo.xml | 49 + .../dist/structure/dats/colorexgrp.xml | 40 + .../dist/structure/dats/colorexname.xml | 21 + .../structure/dats/combinationitemdata.xml | 30 + .../dist/structure/dats/commandname.xml | 11 + L2ClientDat/dist/structure/dats/credit.xml | 6 + .../structure/dats/deconpcdata_client.xml | 36 + .../dist/structure/dats/dualcasttypedata.xml | 19 + .../structure/dats/dynamiccontentsname.xml | 27 + .../dats/enchantedweaponfloweffectdata.xml | 31 + .../dist/structure/dats/enchantstatbonus.xml | 17 + .../dist/structure/dats/ensoul_fee_client.xml | 65 + .../structure/dats/ensoul_option_client.xml | 40 + .../structure/dats/ensoul_stone_client.xml | 14 + .../dist/structure/dats/entereventgrp.xml | 44 + .../dist/structure/dats/etcitemgrp.xml | 390 ++ L2ClientDat/dist/structure/dats/eula.xml | 11 + .../structure/dats/eventcontentsgoalname.xml | 25 + .../dist/structure/dats/eventcontentsname.xml | 15 + .../dist/structure/dats/eventlookchange.xml | 142 + .../structure/dats/exceptionminimapdata.xml | 19 + L2ClientDat/dist/structure/dats/faceexgrp.xml | 100 + .../dist/structure/dats/faceexname.xml | 21 + .../dist/structure/dats/factionname.xml | 71 + .../dist/structure/dats/flashconfig.xml | 10 + .../dist/structure/dats/flymovename.xml | 11 + .../dats/fullarmorenchanteffectdata.xml | 20 + .../dist/structure/dats/gamedatabase.xml | 84 + L2ClientDat/dist/structure/dats/gametip.xml | 25 + L2ClientDat/dist/structure/dats/goodsicon.xml | 17 + .../structure/dats/hairaccessorylocgrp.xml | 195 + L2ClientDat/dist/structure/dats/hairexgrp.xml | 115 + .../dist/structure/dats/hairexname.xml | 21 + L2ClientDat/dist/structure/dats/hennagrp.xml | 25 + .../dist/structure/dats/huntingzone.xml | 49 + L2ClientDat/dist/structure/dats/idcname.xml | 10 + .../dist/structure/dats/instantzonedata.xml | 29 + .../dist/structure/dats/item_baseinfo.xml | 26 + L2ClientDat/dist/structure/dats/itemname.xml | 271 + .../dist/structure/dats/itemstatdata.xml | 68 + .../dist/structure/dats/l2gamedataname.xml | 9 + L2ClientDat/dist/structure/dats/logongrp.xml | 11 + .../dist/structure/dats/lollycubedata.xml | 16 + .../dist/structure/dats/mantleexception.xml | 25 + .../dist/structure/dats/minimapregion.xml | 19 + .../dist/structure/dats/mobskillanimgrp.xml | 33 + .../structure/dats/monsterbook_client.xml | 109 + .../dist/structure/dats/msconditiondata.xml | 98 + L2ClientDat/dist/structure/dats/musicinfo.xml | 23 + L2ClientDat/dist/structure/dats/npcgrp.xml | 710 ++ L2ClientDat/dist/structure/dats/npcname.xml | 12 + L2ClientDat/dist/structure/dats/npcstring.xml | 10 + .../dist/structure/dats/npcteleporter.xml | 19 + .../structure/dats/nservice_topping_buff.xml | 13 + L2ClientDat/dist/structure/dats/obscene.xml | 10 + .../dist/structure/dats/onedayreward.xml | 65 + .../dist/structure/dats/optiondata_client.xml | 14 + L2ClientDat/dist/structure/dats/partsave.xml | 26 + .../dist/structure/dats/pawnanimdata.xml | 6237 +++++++++++++++++ .../dist/structure/dats/piagreement.xml | 6 + .../dist/structure/dats/posteffectdata.xml | 66 + .../dist/structure/dats/productname.xml | 45 + .../structure/dats/questmarkconditiondata.xml | 23 + L2ClientDat/dist/structure/dats/questname.xml | 276 + L2ClientDat/dist/structure/dats/raiddata.xml | 53 + L2ClientDat/dist/structure/dats/recipe-c.xml | 24 + L2ClientDat/dist/structure/dats/recipe.xml | 24 + L2ClientDat/dist/structure/dats/ridedata.xml | 242 + .../dist/structure/dats/sceneplayerdata.xml | 27 + .../dist/structure/dats/servername.xml | 24 + .../dist/structure/dats/setitemgrp.xml | 38 + .../dist/structure/dats/shortcutalias.xml | 12 + .../structure/dats/shortcutregisterdata.xml | 15 + .../dist/structure/dats/shuttledata.xml | 51 + L2ClientDat/dist/structure/dats/skillgrp.xml | 409 ++ L2ClientDat/dist/structure/dats/skillname.xml | 88 + .../dist/structure/dats/skillsoundgrp.xml | 248 + .../dist/structure/dats/skillsoundsource.xml | 18 + .../dist/structure/dats/staticobject.xml | 17 + .../dist/structure/dats/statisticname.xml | 65 + .../dist/structure/dats/symbolname.xml | 12 + L2ClientDat/dist/structure/dats/sysstring.xml | 10 + L2ClientDat/dist/structure/dats/systemmsg.xml | 64 + .../dist/structure/dats/timelimit_name.xml | 10 + .../dist/structure/dats/transformdata.xml | 50 + .../dist/structure/dats/tutorialname.xml | 11 + .../dist/structure/dats/usmmoviedata.xml | 18 + .../structure/dats/variationeffectgrp.xml | 38 + .../dist/structure/dats/vehiclepartsgrp.xml | 105 + .../dist/structure/dats/warningnotice.xml | 6 + .../dats/weaponenchanteffectdata.xml | 261 + L2ClientDat/dist/structure/dats/weapongrp.xml | 1005 +++ L2ClientDat/dist/structure/dats/zonename.xml | 78 + .../structure/format/SkillNameFormat.java | 111 + .../java/com/l2jmobius/L2ClientDat.java | 403 ++ .../com/l2jmobius/actions/MassRecryptor.java | 90 + .../com/l2jmobius/actions/MassTxtPacker.java | 134 + .../l2jmobius/actions/MassTxtUnpacker.java | 165 + .../java/com/l2jmobius/actions/OpenDat.java | 143 + .../com/l2jmobius/clientcryptor/DatFile.java | 140 + .../crypt/BlowFishDatCrypter.java | 78 + .../clientcryptor/crypt/BlowfishEngine.java | 1214 ++++ .../clientcryptor/crypt/DESDatCrypter.java | 122 + .../clientcryptor/crypt/DatCrypter.java | 92 + .../clientcryptor/crypt/RSADatCrypter.java | 231 + .../clientcryptor/crypt/XorDatCrypter.java | 91 + .../com/l2jmobius/config/ConfigDebug.java | 52 + .../com/l2jmobius/config/ConfigWindow.java | 78 + .../java/com/l2jmobius/data/GameDataName.java | 238 + .../com/l2jmobius/forms/JPopupTextArea.java | 299 + .../l2jmobius/listeners/FormatListener.java | 24 + .../java/com/l2jmobius/util/ByteReader.java | 188 + .../java/com/l2jmobius/util/ByteWriter.java | 211 + .../java/com/l2jmobius/util/DebugUtil.java | 85 + L2ClientDat/java/com/l2jmobius/util/Util.java | 338 + .../com/l2jmobius/xml/CryptVersionParser.java | 148 + .../java/com/l2jmobius/xml/Descriptor.java | 84 + .../com/l2jmobius/xml/DescriptorLink.java | 53 + .../com/l2jmobius/xml/DescriptorParser.java | 368 + .../com/l2jmobius/xml/DescriptorReader.java | 395 ++ .../com/l2jmobius/xml/DescriptorWriter.java | 362 + .../java/com/l2jmobius/xml/ParamNode.java | 189 + .../java/com/l2jmobius/xml/ParamNodeType.java | 55 + .../java/com/l2jmobius/xml/ParamType.java | 42 + .../java/com/l2jmobius/xml/Variant.java | 80 + .../exceptions/CycleArgumentException.java | 25 + .../xml/exceptions/PackDataException.java | 25 + 211 files changed, 26666 insertions(+) create mode 100644 L2ClientDat/.classpath create mode 100644 L2ClientDat/.project create mode 100644 L2ClientDat/.settings/org.eclipse.core.resources.prefs create mode 100644 L2ClientDat/.settings/org.eclipse.core.runtime.prefs create mode 100644 L2ClientDat/.settings/org.eclipse.jdt.core.prefs create mode 100644 L2ClientDat/.settings/org.eclipse.jdt.ui.prefs create mode 100644 L2ClientDat/.settings/org.eclipse.ltk.core.refactoring.prefs create mode 100644 L2ClientDat/.settings/org.eclipse.wst.sse.core.prefs create mode 100644 L2ClientDat/.settings/org.eclipse.wst.validation.prefs create mode 100644 L2ClientDat/build.xml create mode 100644 L2ClientDat/dist/!definitions.xml create mode 100644 L2ClientDat/dist/L2ClientDat.exe create mode 100644 L2ClientDat/dist/config/config_debug.ini create mode 100644 L2ClientDat/dist/config/config_window.ini create mode 100644 L2ClientDat/dist/config/cryptVersion.xml create mode 100644 L2ClientDat/dist/config/log4j.dtd create mode 100644 L2ClientDat/dist/config/log4j.xml create mode 100644 L2ClientDat/dist/libs/log4j-1.2.17.jar create mode 100644 L2ClientDat/dist/libs/nproperty-1.0.jar create mode 100644 L2ClientDat/dist/readme.txt create mode 100644 L2ClientDat/dist/structure/03_en_c3_rise_of_darkness.xml create mode 100644 L2ClientDat/dist/structure/04_en_c4_scions_of_destiny.xml create mode 100644 L2ClientDat/dist/structure/05_en_c5_oath_of_blood.xml create mode 100644 L2ClientDat/dist/structure/06_en_c6_interlude.xml create mode 100644 L2ClientDat/dist/structure/07_en_hellbound.xml create mode 100644 L2ClientDat/dist/structure/08_en_kamael.xml create mode 100644 L2ClientDat/dist/structure/09_en_gracia_part_ 1.xml create mode 100644 L2ClientDat/dist/structure/10_en_gracia_part_ 2.xml create mode 100644 L2ClientDat/dist/structure/11_en_gracia_epilogue.xml create mode 100644 L2ClientDat/dist/structure/12_en_gracia_final.xml create mode 100644 L2ClientDat/dist/structure/13_en_freya.xml create mode 100644 L2ClientDat/dist/structure/14_en_high_five.xml create mode 100644 L2ClientDat/dist/structure/15_en_awakening.xml create mode 100644 L2ClientDat/dist/structure/16_en_harmony.xml create mode 100644 L2ClientDat/dist/structure/17_en_tauti.xml create mode 100644 L2ClientDat/dist/structure/18_en_glory_days.xml create mode 100644 L2ClientDat/dist/structure/19_en_echo.xml create mode 100644 L2ClientDat/dist/structure/20_cn_lindvior.xml create mode 100644 L2ClientDat/dist/structure/20_kor_lindvior.xml create mode 100644 L2ClientDat/dist/structure/20_ru_lindvior.xml create mode 100644 L2ClientDat/dist/structure/21_cn_epeisodion.xml create mode 100644 L2ClientDat/dist/structure/21_kor_episodion.xml create mode 100644 L2ClientDat/dist/structure/21_ru_episodion.xml create mode 100644 L2ClientDat/dist/structure/22_kor_raider_of_the_lost_ark.xml create mode 100644 L2ClientDat/dist/structure/23_cn_ertheia.xml create mode 100644 L2ClientDat/dist/structure/23_kor_ertheia.xml create mode 100644 L2ClientDat/dist/structure/23_ru_ertheia.xml create mode 100644 L2ClientDat/dist/structure/24_kor_infinite_odyssey.xml create mode 100644 L2ClientDat/dist/structure/24_ru_infinite_odyssey.xml create mode 100644 L2ClientDat/dist/structure/25_en_infinite_odyssey_underground.xml create mode 100644 L2ClientDat/dist/structure/25_kor_infinite_odyssey_hymn_of_doul.xml create mode 100644 L2ClientDat/dist/structure/25_ru_infinite_odyssey_hymn_of_doul.xml create mode 100644 L2ClientDat/dist/structure/26_kor_infinite_odyssey_will_of_the_ancients.xml create mode 100644 L2ClientDat/dist/structure/27_kor_helios.xml create mode 100644 L2ClientDat/dist/structure/27_kor_helios_p2.xml create mode 100644 L2ClientDat/dist/structure/27_kor_helios_p3.xml create mode 100644 L2ClientDat/dist/structure/27_kor_helios_p4.xml create mode 100644 L2ClientDat/dist/structure/27_kor_helios_p5.xml create mode 100644 L2ClientDat/dist/structure/27_kor_helios_p6.xml create mode 100644 L2ClientDat/dist/structure/27_ru_helios.xml create mode 100644 L2ClientDat/dist/structure/28_kor_grand_crusade.xml create mode 100644 L2ClientDat/dist/structure/28_kor_grand_crusade_p2.xml create mode 100644 L2ClientDat/dist/structure/28_kor_grand_crusade_p3.xml create mode 100644 L2ClientDat/dist/structure/29_salvation_classic_antharas_innova.xml create mode 100644 L2ClientDat/dist/structure/30_salvation_classic_goddard_korea.xml create mode 100644 L2ClientDat/dist/structure/dats/24hzschema.xml create mode 100644 L2ClientDat/dist/structure/dats/ability.xml create mode 100644 L2ClientDat/dist/structure/dats/abilitypoint.xml create mode 100644 L2ClientDat/dist/structure/dats/abnormaldefaulteffect.xml create mode 100644 L2ClientDat/dist/structure/dats/abnormaledgeeffectdata.xml create mode 100644 L2ClientDat/dist/structure/dats/actionname.xml create mode 100644 L2ClientDat/dist/structure/dats/additionaleffect.xml create mode 100644 L2ClientDat/dist/structure/dats/additionalitemgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/additionaljewelequipeffect.xml create mode 100644 L2ClientDat/dist/structure/dats/additionalnpcgrpparts.xml create mode 100644 L2ClientDat/dist/structure/dats/additionalsoulshoteffect.xml create mode 100644 L2ClientDat/dist/structure/dats/alchemydata.xml create mode 100644 L2ClientDat/dist/structure/dats/alterskilldata.xml create mode 100644 L2ClientDat/dist/structure/dats/animationcombo.xml create mode 100644 L2ClientDat/dist/structure/dats/armorgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/attendancestamp.xml create mode 100644 L2ClientDat/dist/structure/dats/castlename.xml create mode 100644 L2ClientDat/dist/structure/dats/charcreategrp.xml create mode 100644 L2ClientDat/dist/structure/dats/chargrp.xml create mode 100644 L2ClientDat/dist/structure/dats/classinfo.xml create mode 100644 L2ClientDat/dist/structure/dats/colorexgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/colorexname.xml create mode 100644 L2ClientDat/dist/structure/dats/combinationitemdata.xml create mode 100644 L2ClientDat/dist/structure/dats/commandname.xml create mode 100644 L2ClientDat/dist/structure/dats/credit.xml create mode 100644 L2ClientDat/dist/structure/dats/deconpcdata_client.xml create mode 100644 L2ClientDat/dist/structure/dats/dualcasttypedata.xml create mode 100644 L2ClientDat/dist/structure/dats/dynamiccontentsname.xml create mode 100644 L2ClientDat/dist/structure/dats/enchantedweaponfloweffectdata.xml create mode 100644 L2ClientDat/dist/structure/dats/enchantstatbonus.xml create mode 100644 L2ClientDat/dist/structure/dats/ensoul_fee_client.xml create mode 100644 L2ClientDat/dist/structure/dats/ensoul_option_client.xml create mode 100644 L2ClientDat/dist/structure/dats/ensoul_stone_client.xml create mode 100644 L2ClientDat/dist/structure/dats/entereventgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/etcitemgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/eula.xml create mode 100644 L2ClientDat/dist/structure/dats/eventcontentsgoalname.xml create mode 100644 L2ClientDat/dist/structure/dats/eventcontentsname.xml create mode 100644 L2ClientDat/dist/structure/dats/eventlookchange.xml create mode 100644 L2ClientDat/dist/structure/dats/exceptionminimapdata.xml create mode 100644 L2ClientDat/dist/structure/dats/faceexgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/faceexname.xml create mode 100644 L2ClientDat/dist/structure/dats/factionname.xml create mode 100644 L2ClientDat/dist/structure/dats/flashconfig.xml create mode 100644 L2ClientDat/dist/structure/dats/flymovename.xml create mode 100644 L2ClientDat/dist/structure/dats/fullarmorenchanteffectdata.xml create mode 100644 L2ClientDat/dist/structure/dats/gamedatabase.xml create mode 100644 L2ClientDat/dist/structure/dats/gametip.xml create mode 100644 L2ClientDat/dist/structure/dats/goodsicon.xml create mode 100644 L2ClientDat/dist/structure/dats/hairaccessorylocgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/hairexgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/hairexname.xml create mode 100644 L2ClientDat/dist/structure/dats/hennagrp.xml create mode 100644 L2ClientDat/dist/structure/dats/huntingzone.xml create mode 100644 L2ClientDat/dist/structure/dats/idcname.xml create mode 100644 L2ClientDat/dist/structure/dats/instantzonedata.xml create mode 100644 L2ClientDat/dist/structure/dats/item_baseinfo.xml create mode 100644 L2ClientDat/dist/structure/dats/itemname.xml create mode 100644 L2ClientDat/dist/structure/dats/itemstatdata.xml create mode 100644 L2ClientDat/dist/structure/dats/l2gamedataname.xml create mode 100644 L2ClientDat/dist/structure/dats/logongrp.xml create mode 100644 L2ClientDat/dist/structure/dats/lollycubedata.xml create mode 100644 L2ClientDat/dist/structure/dats/mantleexception.xml create mode 100644 L2ClientDat/dist/structure/dats/minimapregion.xml create mode 100644 L2ClientDat/dist/structure/dats/mobskillanimgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/monsterbook_client.xml create mode 100644 L2ClientDat/dist/structure/dats/msconditiondata.xml create mode 100644 L2ClientDat/dist/structure/dats/musicinfo.xml create mode 100644 L2ClientDat/dist/structure/dats/npcgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/npcname.xml create mode 100644 L2ClientDat/dist/structure/dats/npcstring.xml create mode 100644 L2ClientDat/dist/structure/dats/npcteleporter.xml create mode 100644 L2ClientDat/dist/structure/dats/nservice_topping_buff.xml create mode 100644 L2ClientDat/dist/structure/dats/obscene.xml create mode 100644 L2ClientDat/dist/structure/dats/onedayreward.xml create mode 100644 L2ClientDat/dist/structure/dats/optiondata_client.xml create mode 100644 L2ClientDat/dist/structure/dats/partsave.xml create mode 100644 L2ClientDat/dist/structure/dats/pawnanimdata.xml create mode 100644 L2ClientDat/dist/structure/dats/piagreement.xml create mode 100644 L2ClientDat/dist/structure/dats/posteffectdata.xml create mode 100644 L2ClientDat/dist/structure/dats/productname.xml create mode 100644 L2ClientDat/dist/structure/dats/questmarkconditiondata.xml create mode 100644 L2ClientDat/dist/structure/dats/questname.xml create mode 100644 L2ClientDat/dist/structure/dats/raiddata.xml create mode 100644 L2ClientDat/dist/structure/dats/recipe-c.xml create mode 100644 L2ClientDat/dist/structure/dats/recipe.xml create mode 100644 L2ClientDat/dist/structure/dats/ridedata.xml create mode 100644 L2ClientDat/dist/structure/dats/sceneplayerdata.xml create mode 100644 L2ClientDat/dist/structure/dats/servername.xml create mode 100644 L2ClientDat/dist/structure/dats/setitemgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/shortcutalias.xml create mode 100644 L2ClientDat/dist/structure/dats/shortcutregisterdata.xml create mode 100644 L2ClientDat/dist/structure/dats/shuttledata.xml create mode 100644 L2ClientDat/dist/structure/dats/skillgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/skillname.xml create mode 100644 L2ClientDat/dist/structure/dats/skillsoundgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/skillsoundsource.xml create mode 100644 L2ClientDat/dist/structure/dats/staticobject.xml create mode 100644 L2ClientDat/dist/structure/dats/statisticname.xml create mode 100644 L2ClientDat/dist/structure/dats/symbolname.xml create mode 100644 L2ClientDat/dist/structure/dats/sysstring.xml create mode 100644 L2ClientDat/dist/structure/dats/systemmsg.xml create mode 100644 L2ClientDat/dist/structure/dats/timelimit_name.xml create mode 100644 L2ClientDat/dist/structure/dats/transformdata.xml create mode 100644 L2ClientDat/dist/structure/dats/tutorialname.xml create mode 100644 L2ClientDat/dist/structure/dats/usmmoviedata.xml create mode 100644 L2ClientDat/dist/structure/dats/variationeffectgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/vehiclepartsgrp.xml create mode 100644 L2ClientDat/dist/structure/dats/warningnotice.xml create mode 100644 L2ClientDat/dist/structure/dats/weaponenchanteffectdata.xml create mode 100644 L2ClientDat/dist/structure/dats/weapongrp.xml create mode 100644 L2ClientDat/dist/structure/dats/zonename.xml create mode 100644 L2ClientDat/dist/structure/format/SkillNameFormat.java create mode 100644 L2ClientDat/java/com/l2jmobius/L2ClientDat.java create mode 100644 L2ClientDat/java/com/l2jmobius/actions/MassRecryptor.java create mode 100644 L2ClientDat/java/com/l2jmobius/actions/MassTxtPacker.java create mode 100644 L2ClientDat/java/com/l2jmobius/actions/MassTxtUnpacker.java create mode 100644 L2ClientDat/java/com/l2jmobius/actions/OpenDat.java create mode 100644 L2ClientDat/java/com/l2jmobius/clientcryptor/DatFile.java create mode 100644 L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowFishDatCrypter.java create mode 100644 L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowfishEngine.java create mode 100644 L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DESDatCrypter.java create mode 100644 L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DatCrypter.java create mode 100644 L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/RSADatCrypter.java create mode 100644 L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/XorDatCrypter.java create mode 100644 L2ClientDat/java/com/l2jmobius/config/ConfigDebug.java create mode 100644 L2ClientDat/java/com/l2jmobius/config/ConfigWindow.java create mode 100644 L2ClientDat/java/com/l2jmobius/data/GameDataName.java create mode 100644 L2ClientDat/java/com/l2jmobius/forms/JPopupTextArea.java create mode 100644 L2ClientDat/java/com/l2jmobius/listeners/FormatListener.java create mode 100644 L2ClientDat/java/com/l2jmobius/util/ByteReader.java create mode 100644 L2ClientDat/java/com/l2jmobius/util/ByteWriter.java create mode 100644 L2ClientDat/java/com/l2jmobius/util/DebugUtil.java create mode 100644 L2ClientDat/java/com/l2jmobius/util/Util.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/CryptVersionParser.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/Descriptor.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/DescriptorLink.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/DescriptorParser.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/DescriptorReader.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/DescriptorWriter.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/ParamNode.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/ParamNodeType.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/ParamType.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/Variant.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/exceptions/CycleArgumentException.java create mode 100644 L2ClientDat/java/com/l2jmobius/xml/exceptions/PackDataException.java diff --git a/L2ClientDat/.classpath b/L2ClientDat/.classpath new file mode 100644 index 0000000000..490523f44e --- /dev/null +++ b/L2ClientDat/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/L2ClientDat/.project b/L2ClientDat/.project new file mode 100644 index 0000000000..db82bdc4d5 --- /dev/null +++ b/L2ClientDat/.project @@ -0,0 +1,17 @@ + + + L2ClientDat + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/L2ClientDat/.settings/org.eclipse.core.resources.prefs b/L2ClientDat/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000..4824b80263 --- /dev/null +++ b/L2ClientDat/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/L2ClientDat/.settings/org.eclipse.core.runtime.prefs b/L2ClientDat/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 0000000000..f8a67de1d4 --- /dev/null +++ b/L2ClientDat/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\r\n diff --git a/L2ClientDat/.settings/org.eclipse.jdt.core.prefs b/L2ClientDat/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..cca85c9968 --- /dev/null +++ b/L2ClientDat/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,428 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=no_tag +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=enabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=disabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=disabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=48 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_assignment=4 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=0 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=49 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=49 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=85 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=48 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 +org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert +org.eclipse.jdt.core.formatter.comment.line_length=300 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=1 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=true +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=300 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=true +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/L2ClientDat/.settings/org.eclipse.jdt.ui.prefs b/L2ClientDat/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..8a4c9d4e1c --- /dev/null +++ b/L2ClientDat/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,131 @@ +cleanup.add_default_serial_version_id=false +cleanup.add_generated_serial_version_id=true +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=true +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=false +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=true +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_functional_interfaces=false +cleanup.convert_to_enhanced_for_loop=true +cleanup.correct_indentation=false +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.insert_inferred_type_arguments=false +cleanup.make_local_variable_final=false +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=true +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=false +cleanup.organize_imports=true +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=true +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_redundant_type_arguments=true +cleanup.remove_trailing_whitespaces=false +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=true +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=false +cleanup.remove_unused_private_members=true +cleanup.remove_unused_private_methods=false +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_anonymous_class_creation=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_lambda=true +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=true +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup.use_type_arguments=false +cleanup_profile=_L2J-Mobius Clean Up +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_L2J-Mobius Formatter +formatter_settings_version=12 +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=java;javax;org;commons;com; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.overrideannotation=true +org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates= +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=true +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=true +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_functional_interfaces=true +sp_cleanup.convert_to_enhanced_for_loop=true +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.insert_inferred_type_arguments=false +sp_cleanup.make_local_variable_final=false +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=true +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=false +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=true +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=true +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_type_arguments=false +sp_cleanup.remove_trailing_whitespaces=false +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=true +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_anonymous_class_creation=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_lambda=true +sp_cleanup.use_parentheses_in_expressions=true +sp_cleanup.use_this_for_non_static_field_access=false +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true +sp_cleanup.use_type_arguments=false diff --git a/L2ClientDat/.settings/org.eclipse.ltk.core.refactoring.prefs b/L2ClientDat/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..cfcd1d3c22 --- /dev/null +++ b/L2ClientDat/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/L2ClientDat/.settings/org.eclipse.wst.sse.core.prefs b/L2ClientDat/.settings/org.eclipse.wst.sse.core.prefs new file mode 100644 index 0000000000..a640cfdb22 --- /dev/null +++ b/L2ClientDat/.settings/org.eclipse.wst.sse.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +task-tags/enabled=true +task-tags/use-project-settings=true diff --git a/L2ClientDat/.settings/org.eclipse.wst.validation.prefs b/L2ClientDat/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000000..63a18689fb --- /dev/null +++ b/L2ClientDat/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,12 @@ +DELEGATES_PREFERENCE=delegateValidatorList +USER_BUILD_PREFERENCE=enabledBuildValidatorList +USER_MANUAL_PREFERENCE=enabledManualValidatorList +USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.400.v201204260100 +eclipse.preferences.version=1 +override=true +suspend=false +vals/org.eclipse.wst.dtd.core.dtdDTDValidator/global=FF01 +vals/org.eclipse.wst.html.core.HTMLValidator/global=FF01 +vals/org.eclipse.wst.html.ui.HTMLValidator/global=TF01 +vals/org.eclipse.wst.xml.core.xml/groups=0107include05111contentType128org.eclipse.core.runtime.xmlT111contentType134org.eclipse.wst.xml.core.xmlsourceT111contentType134org.eclipse.wst.xml.core.xslsourceT111contentType134org.eclipse.jst.jsp.core.tldsourceT07fileext03xmlF0107exclude08113projectNature134org.eclipse.jst.j2ee.ejb.EJBNature113projectNature130org.eclipse.jst.j2ee.EARNature04file08.projectT0104file110.classpathT0104file110.settings/T0204file03binF0204file05buildF0204file09build.xmlF01 +vf.version=3 diff --git a/L2ClientDat/build.xml b/L2ClientDat/build.xml new file mode 100644 index 0000000000..bf40af6da7 --- /dev/null +++ b/L2ClientDat/build.xml @@ -0,0 +1,94 @@ + + + + + This file is part of the L2J Mobius project. + + 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/]. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2ClientDat/dist/!definitions.xml b/L2ClientDat/dist/!definitions.xml new file mode 100644 index 0000000000..965d4d0854 --- /dev/null +++ b/L2ClientDat/dist/!definitions.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2ClientDat/dist/L2ClientDat.exe b/L2ClientDat/dist/L2ClientDat.exe new file mode 100644 index 0000000000000000000000000000000000000000..781bbdbcc55081e00fa44549a0fc7c21fd3b953c GIT binary patch literal 90112 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 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2ClientDat/dist/config/log4j.dtd b/L2ClientDat/dist/config/log4j.dtd new file mode 100644 index 0000000000..e3c0df4537 --- /dev/null +++ b/L2ClientDat/dist/config/log4j.dtd @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/config/log4j.xml b/L2ClientDat/dist/config/log4j.xml new file mode 100644 index 0000000000..776d788748 --- /dev/null +++ b/L2ClientDat/dist/config/log4j.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/L2ClientDat/dist/libs/log4j-1.2.17.jar b/L2ClientDat/dist/libs/log4j-1.2.17.jar new file mode 100644 index 0000000000000000000000000000000000000000..068867ebfd231db09a7775794eea8127420380ed GIT binary patch literal 489883 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�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 literal 0 HcmV?d00001 diff --git a/L2ClientDat/dist/readme.txt b/L2ClientDat/dist/readme.txt new file mode 100644 index 0000000000..0559e599b6 --- /dev/null +++ b/L2ClientDat/dist/readme.txt @@ -0,0 +1,20 @@ +L2ClientDat decoder +Originally known as Godworld L2ClientDataDecoder v0.4b + +For ru we choose chronicles ru_helios + +If the dat files are original then the crypt is v413_original +if not then v413_encdec + +After full unpacking, you need to correct Korean errors by replacing all files (or by searching) +[]] -> [None] +[skill_end] -> [SpAtk01] +they are also visible in the log when unpacking. + + +It is not recommended to use the text fields [and]. + +When DAT_REPLACEMENT_NAMES=true [config_debug.ini] +You can not change the dates one by one if they contain MAP_INT (only full repacking). + +If the file is not going to be collected or disassembled, we turn on the config DAT_DEBUG_MSG and DAT_DEBUG_POS [config_debug.ini]. diff --git a/L2ClientDat/dist/structure/03_en_c3_rise_of_darkness.xml b/L2ClientDat/dist/structure/03_en_c3_rise_of_darkness.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/03_en_c3_rise_of_darkness.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/04_en_c4_scions_of_destiny.xml b/L2ClientDat/dist/structure/04_en_c4_scions_of_destiny.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/04_en_c4_scions_of_destiny.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/05_en_c5_oath_of_blood.xml b/L2ClientDat/dist/structure/05_en_c5_oath_of_blood.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/05_en_c5_oath_of_blood.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/06_en_c6_interlude.xml b/L2ClientDat/dist/structure/06_en_c6_interlude.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/06_en_c6_interlude.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/07_en_hellbound.xml b/L2ClientDat/dist/structure/07_en_hellbound.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/07_en_hellbound.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/08_en_kamael.xml b/L2ClientDat/dist/structure/08_en_kamael.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/08_en_kamael.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/09_en_gracia_part_ 1.xml b/L2ClientDat/dist/structure/09_en_gracia_part_ 1.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/09_en_gracia_part_ 1.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/10_en_gracia_part_ 2.xml b/L2ClientDat/dist/structure/10_en_gracia_part_ 2.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/10_en_gracia_part_ 2.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/11_en_gracia_epilogue.xml b/L2ClientDat/dist/structure/11_en_gracia_epilogue.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/11_en_gracia_epilogue.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/12_en_gracia_final.xml b/L2ClientDat/dist/structure/12_en_gracia_final.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/12_en_gracia_final.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/13_en_freya.xml b/L2ClientDat/dist/structure/13_en_freya.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/13_en_freya.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/14_en_high_five.xml b/L2ClientDat/dist/structure/14_en_high_five.xml new file mode 100644 index 0000000000..e8d2cf6966 --- /dev/null +++ b/L2ClientDat/dist/structure/14_en_high_five.xml @@ -0,0 +1,4 @@ + + + + diff --git a/L2ClientDat/dist/structure/15_en_awakening.xml b/L2ClientDat/dist/structure/15_en_awakening.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/15_en_awakening.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/16_en_harmony.xml b/L2ClientDat/dist/structure/16_en_harmony.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/16_en_harmony.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/17_en_tauti.xml b/L2ClientDat/dist/structure/17_en_tauti.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/17_en_tauti.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/18_en_glory_days.xml b/L2ClientDat/dist/structure/18_en_glory_days.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/18_en_glory_days.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/19_en_echo.xml b/L2ClientDat/dist/structure/19_en_echo.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/19_en_echo.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/20_cn_lindvior.xml b/L2ClientDat/dist/structure/20_cn_lindvior.xml new file mode 100644 index 0000000000..2fc60c332a --- /dev/null +++ b/L2ClientDat/dist/structure/20_cn_lindvior.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/20_kor_lindvior.xml b/L2ClientDat/dist/structure/20_kor_lindvior.xml new file mode 100644 index 0000000000..38844128d1 --- /dev/null +++ b/L2ClientDat/dist/structure/20_kor_lindvior.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/20_ru_lindvior.xml b/L2ClientDat/dist/structure/20_ru_lindvior.xml new file mode 100644 index 0000000000..9db8216efa --- /dev/null +++ b/L2ClientDat/dist/structure/20_ru_lindvior.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/21_cn_epeisodion.xml b/L2ClientDat/dist/structure/21_cn_epeisodion.xml new file mode 100644 index 0000000000..1acedd4cc7 --- /dev/null +++ b/L2ClientDat/dist/structure/21_cn_epeisodion.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/21_kor_episodion.xml b/L2ClientDat/dist/structure/21_kor_episodion.xml new file mode 100644 index 0000000000..3e04d6f950 --- /dev/null +++ b/L2ClientDat/dist/structure/21_kor_episodion.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/21_ru_episodion.xml b/L2ClientDat/dist/structure/21_ru_episodion.xml new file mode 100644 index 0000000000..c86db539bc --- /dev/null +++ b/L2ClientDat/dist/structure/21_ru_episodion.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/22_kor_raider_of_the_lost_ark.xml b/L2ClientDat/dist/structure/22_kor_raider_of_the_lost_ark.xml new file mode 100644 index 0000000000..e1cd2f0779 --- /dev/null +++ b/L2ClientDat/dist/structure/22_kor_raider_of_the_lost_ark.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/L2ClientDat/dist/structure/23_cn_ertheia.xml b/L2ClientDat/dist/structure/23_cn_ertheia.xml new file mode 100644 index 0000000000..a62d0cb710 --- /dev/null +++ b/L2ClientDat/dist/structure/23_cn_ertheia.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/23_kor_ertheia.xml b/L2ClientDat/dist/structure/23_kor_ertheia.xml new file mode 100644 index 0000000000..a8be56fcd8 --- /dev/null +++ b/L2ClientDat/dist/structure/23_kor_ertheia.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/23_ru_ertheia.xml b/L2ClientDat/dist/structure/23_ru_ertheia.xml new file mode 100644 index 0000000000..240abd32a7 --- /dev/null +++ b/L2ClientDat/dist/structure/23_ru_ertheia.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/24_kor_infinite_odyssey.xml b/L2ClientDat/dist/structure/24_kor_infinite_odyssey.xml new file mode 100644 index 0000000000..773a2ae422 --- /dev/null +++ b/L2ClientDat/dist/structure/24_kor_infinite_odyssey.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/24_ru_infinite_odyssey.xml b/L2ClientDat/dist/structure/24_ru_infinite_odyssey.xml new file mode 100644 index 0000000000..fdd9aa94cb --- /dev/null +++ b/L2ClientDat/dist/structure/24_ru_infinite_odyssey.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/25_en_infinite_odyssey_underground.xml b/L2ClientDat/dist/structure/25_en_infinite_odyssey_underground.xml new file mode 100644 index 0000000000..e61014df9d --- /dev/null +++ b/L2ClientDat/dist/structure/25_en_infinite_odyssey_underground.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/25_kor_infinite_odyssey_hymn_of_doul.xml b/L2ClientDat/dist/structure/25_kor_infinite_odyssey_hymn_of_doul.xml new file mode 100644 index 0000000000..6f034af41e --- /dev/null +++ b/L2ClientDat/dist/structure/25_kor_infinite_odyssey_hymn_of_doul.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/25_ru_infinite_odyssey_hymn_of_doul.xml b/L2ClientDat/dist/structure/25_ru_infinite_odyssey_hymn_of_doul.xml new file mode 100644 index 0000000000..d122b9e97f --- /dev/null +++ b/L2ClientDat/dist/structure/25_ru_infinite_odyssey_hymn_of_doul.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/26_kor_infinite_odyssey_will_of_the_ancients.xml b/L2ClientDat/dist/structure/26_kor_infinite_odyssey_will_of_the_ancients.xml new file mode 100644 index 0000000000..6281768177 --- /dev/null +++ b/L2ClientDat/dist/structure/26_kor_infinite_odyssey_will_of_the_ancients.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/27_kor_helios.xml b/L2ClientDat/dist/structure/27_kor_helios.xml new file mode 100644 index 0000000000..7e0c8ad9ad --- /dev/null +++ b/L2ClientDat/dist/structure/27_kor_helios.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/27_kor_helios_p2.xml b/L2ClientDat/dist/structure/27_kor_helios_p2.xml new file mode 100644 index 0000000000..1054f9cd87 --- /dev/null +++ b/L2ClientDat/dist/structure/27_kor_helios_p2.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/27_kor_helios_p3.xml b/L2ClientDat/dist/structure/27_kor_helios_p3.xml new file mode 100644 index 0000000000..f4b8880c39 --- /dev/null +++ b/L2ClientDat/dist/structure/27_kor_helios_p3.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/27_kor_helios_p4.xml b/L2ClientDat/dist/structure/27_kor_helios_p4.xml new file mode 100644 index 0000000000..120a1ba898 --- /dev/null +++ b/L2ClientDat/dist/structure/27_kor_helios_p4.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/27_kor_helios_p5.xml b/L2ClientDat/dist/structure/27_kor_helios_p5.xml new file mode 100644 index 0000000000..c772212de5 --- /dev/null +++ b/L2ClientDat/dist/structure/27_kor_helios_p5.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/27_kor_helios_p6.xml b/L2ClientDat/dist/structure/27_kor_helios_p6.xml new file mode 100644 index 0000000000..eef30af4e4 --- /dev/null +++ b/L2ClientDat/dist/structure/27_kor_helios_p6.xml @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/27_ru_helios.xml b/L2ClientDat/dist/structure/27_ru_helios.xml new file mode 100644 index 0000000000..fb73a0e79c --- /dev/null +++ b/L2ClientDat/dist/structure/27_ru_helios.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/28_kor_grand_crusade.xml b/L2ClientDat/dist/structure/28_kor_grand_crusade.xml new file mode 100644 index 0000000000..5913af98f4 --- /dev/null +++ b/L2ClientDat/dist/structure/28_kor_grand_crusade.xml @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/28_kor_grand_crusade_p2.xml b/L2ClientDat/dist/structure/28_kor_grand_crusade_p2.xml new file mode 100644 index 0000000000..8eca8fb44f --- /dev/null +++ b/L2ClientDat/dist/structure/28_kor_grand_crusade_p2.xml @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/28_kor_grand_crusade_p3.xml b/L2ClientDat/dist/structure/28_kor_grand_crusade_p3.xml new file mode 100644 index 0000000000..cfb72b568e --- /dev/null +++ b/L2ClientDat/dist/structure/28_kor_grand_crusade_p3.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/29_salvation_classic_antharas_innova.xml b/L2ClientDat/dist/structure/29_salvation_classic_antharas_innova.xml new file mode 100644 index 0000000000..dec346135e --- /dev/null +++ b/L2ClientDat/dist/structure/29_salvation_classic_antharas_innova.xml @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/30_salvation_classic_goddard_korea.xml b/L2ClientDat/dist/structure/30_salvation_classic_goddard_korea.xml new file mode 100644 index 0000000000..a526dfcc38 --- /dev/null +++ b/L2ClientDat/dist/structure/30_salvation_classic_goddard_korea.xml @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/24hzschema.xml b/L2ClientDat/dist/structure/dats/24hzschema.xml new file mode 100644 index 0000000000..a7913a4e1c --- /dev/null +++ b/L2ClientDat/dist/structure/dats/24hzschema.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/L2ClientDat/dist/structure/dats/ability.xml b/L2ClientDat/dist/structure/dats/ability.xml new file mode 100644 index 0000000000..f605078955 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/ability.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/abilitypoint.xml b/L2ClientDat/dist/structure/dats/abilitypoint.xml new file mode 100644 index 0000000000..10add3993c --- /dev/null +++ b/L2ClientDat/dist/structure/dats/abilitypoint.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/abnormaldefaulteffect.xml b/L2ClientDat/dist/structure/dats/abnormaldefaulteffect.xml new file mode 100644 index 0000000000..0d2aefca17 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/abnormaldefaulteffect.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/abnormaledgeeffectdata.xml b/L2ClientDat/dist/structure/dats/abnormaledgeeffectdata.xml new file mode 100644 index 0000000000..d0f23557d7 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/abnormaledgeeffectdata.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/actionname.xml b/L2ClientDat/dist/structure/dats/actionname.xml new file mode 100644 index 0000000000..50496acba3 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/actionname.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/additionaleffect.xml b/L2ClientDat/dist/structure/dats/additionaleffect.xml new file mode 100644 index 0000000000..5adac65204 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/additionaleffect.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/additionalitemgrp.xml b/L2ClientDat/dist/structure/dats/additionalitemgrp.xml new file mode 100644 index 0000000000..661cacca64 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/additionalitemgrp.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/additionaljewelequipeffect.xml b/L2ClientDat/dist/structure/dats/additionaljewelequipeffect.xml new file mode 100644 index 0000000000..2a73867d97 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/additionaljewelequipeffect.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/additionalnpcgrpparts.xml b/L2ClientDat/dist/structure/dats/additionalnpcgrpparts.xml new file mode 100644 index 0000000000..db452853d2 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/additionalnpcgrpparts.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/additionalsoulshoteffect.xml b/L2ClientDat/dist/structure/dats/additionalsoulshoteffect.xml new file mode 100644 index 0000000000..a3545dc23e --- /dev/null +++ b/L2ClientDat/dist/structure/dats/additionalsoulshoteffect.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/alchemydata.xml b/L2ClientDat/dist/structure/dats/alchemydata.xml new file mode 100644 index 0000000000..07892361e2 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/alchemydata.xml @@ -0,0 +1,28 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/alterskilldata.xml b/L2ClientDat/dist/structure/dats/alterskilldata.xml new file mode 100644 index 0000000000..2b3cc56b75 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/alterskilldata.xml @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/animationcombo.xml b/L2ClientDat/dist/structure/dats/animationcombo.xml new file mode 100644 index 0000000000..b83b0c4052 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/animationcombo.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/armorgrp.xml b/L2ClientDat/dist/structure/dats/armorgrp.xml new file mode 100644 index 0000000000..afee353f73 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/armorgrp.xml @@ -0,0 +1,726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/attendancestamp.xml b/L2ClientDat/dist/structure/dats/attendancestamp.xml new file mode 100644 index 0000000000..08b86c9d12 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/attendancestamp.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/castlename.xml b/L2ClientDat/dist/structure/dats/castlename.xml new file mode 100644 index 0000000000..f5a5df2074 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/castlename.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/charcreategrp.xml b/L2ClientDat/dist/structure/dats/charcreategrp.xml new file mode 100644 index 0000000000..de2e9a590f --- /dev/null +++ b/L2ClientDat/dist/structure/dats/charcreategrp.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/chargrp.xml b/L2ClientDat/dist/structure/dats/chargrp.xml new file mode 100644 index 0000000000..d54dc96baf --- /dev/null +++ b/L2ClientDat/dist/structure/dats/chargrp.xml @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/classinfo.xml b/L2ClientDat/dist/structure/dats/classinfo.xml new file mode 100644 index 0000000000..2b50488f55 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/classinfo.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/colorexgrp.xml b/L2ClientDat/dist/structure/dats/colorexgrp.xml new file mode 100644 index 0000000000..16d2d4b78a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/colorexgrp.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/colorexname.xml b/L2ClientDat/dist/structure/dats/colorexname.xml new file mode 100644 index 0000000000..2f444e0d5a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/colorexname.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/combinationitemdata.xml b/L2ClientDat/dist/structure/dats/combinationitemdata.xml new file mode 100644 index 0000000000..0415c64425 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/combinationitemdata.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/L2ClientDat/dist/structure/dats/commandname.xml b/L2ClientDat/dist/structure/dats/commandname.xml new file mode 100644 index 0000000000..9a53aabc45 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/commandname.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/credit.xml b/L2ClientDat/dist/structure/dats/credit.xml new file mode 100644 index 0000000000..a7913a4e1c --- /dev/null +++ b/L2ClientDat/dist/structure/dats/credit.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/L2ClientDat/dist/structure/dats/deconpcdata_client.xml b/L2ClientDat/dist/structure/dats/deconpcdata_client.xml new file mode 100644 index 0000000000..d6d3e5fee5 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/deconpcdata_client.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/dualcasttypedata.xml b/L2ClientDat/dist/structure/dats/dualcasttypedata.xml new file mode 100644 index 0000000000..35e74b9165 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/dualcasttypedata.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/dynamiccontentsname.xml b/L2ClientDat/dist/structure/dats/dynamiccontentsname.xml new file mode 100644 index 0000000000..e0fa9cea6d --- /dev/null +++ b/L2ClientDat/dist/structure/dats/dynamiccontentsname.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/enchantedweaponfloweffectdata.xml b/L2ClientDat/dist/structure/dats/enchantedweaponfloweffectdata.xml new file mode 100644 index 0000000000..31bdf1bcc6 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/enchantedweaponfloweffectdata.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/enchantstatbonus.xml b/L2ClientDat/dist/structure/dats/enchantstatbonus.xml new file mode 100644 index 0000000000..c6a201081a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/enchantstatbonus.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/ensoul_fee_client.xml b/L2ClientDat/dist/structure/dats/ensoul_fee_client.xml new file mode 100644 index 0000000000..763205feb8 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/ensoul_fee_client.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/ensoul_option_client.xml b/L2ClientDat/dist/structure/dats/ensoul_option_client.xml new file mode 100644 index 0000000000..4af0de8ca8 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/ensoul_option_client.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/ensoul_stone_client.xml b/L2ClientDat/dist/structure/dats/ensoul_stone_client.xml new file mode 100644 index 0000000000..13848821d1 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/ensoul_stone_client.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/entereventgrp.xml b/L2ClientDat/dist/structure/dats/entereventgrp.xml new file mode 100644 index 0000000000..bee7a1c002 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/entereventgrp.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/etcitemgrp.xml b/L2ClientDat/dist/structure/dats/etcitemgrp.xml new file mode 100644 index 0000000000..2f8b6041a9 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/etcitemgrp.xml @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/eula.xml b/L2ClientDat/dist/structure/dats/eula.xml new file mode 100644 index 0000000000..44992b10cd --- /dev/null +++ b/L2ClientDat/dist/structure/dats/eula.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/L2ClientDat/dist/structure/dats/eventcontentsgoalname.xml b/L2ClientDat/dist/structure/dats/eventcontentsgoalname.xml new file mode 100644 index 0000000000..68d4a2cb4a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/eventcontentsgoalname.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/eventcontentsname.xml b/L2ClientDat/dist/structure/dats/eventcontentsname.xml new file mode 100644 index 0000000000..a0c273f80a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/eventcontentsname.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/eventlookchange.xml b/L2ClientDat/dist/structure/dats/eventlookchange.xml new file mode 100644 index 0000000000..eac39df353 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/eventlookchange.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/exceptionminimapdata.xml b/L2ClientDat/dist/structure/dats/exceptionminimapdata.xml new file mode 100644 index 0000000000..dd9843e96e --- /dev/null +++ b/L2ClientDat/dist/structure/dats/exceptionminimapdata.xml @@ -0,0 +1,19 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/faceexgrp.xml b/L2ClientDat/dist/structure/dats/faceexgrp.xml new file mode 100644 index 0000000000..48194d5572 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/faceexgrp.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/faceexname.xml b/L2ClientDat/dist/structure/dats/faceexname.xml new file mode 100644 index 0000000000..903b81c555 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/faceexname.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/factionname.xml b/L2ClientDat/dist/structure/dats/factionname.xml new file mode 100644 index 0000000000..54e665844e --- /dev/null +++ b/L2ClientDat/dist/structure/dats/factionname.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/flashconfig.xml b/L2ClientDat/dist/structure/dats/flashconfig.xml new file mode 100644 index 0000000000..4f43b4e637 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/flashconfig.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/flymovename.xml b/L2ClientDat/dist/structure/dats/flymovename.xml new file mode 100644 index 0000000000..794b0ff89a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/flymovename.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/fullarmorenchanteffectdata.xml b/L2ClientDat/dist/structure/dats/fullarmorenchanteffectdata.xml new file mode 100644 index 0000000000..122b5ee9cd --- /dev/null +++ b/L2ClientDat/dist/structure/dats/fullarmorenchanteffectdata.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/gamedatabase.xml b/L2ClientDat/dist/structure/dats/gamedatabase.xml new file mode 100644 index 0000000000..af4b4f4ceb --- /dev/null +++ b/L2ClientDat/dist/structure/dats/gamedatabase.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/gametip.xml b/L2ClientDat/dist/structure/dats/gametip.xml new file mode 100644 index 0000000000..a66ed7f124 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/gametip.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/goodsicon.xml b/L2ClientDat/dist/structure/dats/goodsicon.xml new file mode 100644 index 0000000000..23f86cf4de --- /dev/null +++ b/L2ClientDat/dist/structure/dats/goodsicon.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/hairaccessorylocgrp.xml b/L2ClientDat/dist/structure/dats/hairaccessorylocgrp.xml new file mode 100644 index 0000000000..dc1b54b374 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/hairaccessorylocgrp.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/hairexgrp.xml b/L2ClientDat/dist/structure/dats/hairexgrp.xml new file mode 100644 index 0000000000..f35f0d792f --- /dev/null +++ b/L2ClientDat/dist/structure/dats/hairexgrp.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/hairexname.xml b/L2ClientDat/dist/structure/dats/hairexname.xml new file mode 100644 index 0000000000..180a24b05e --- /dev/null +++ b/L2ClientDat/dist/structure/dats/hairexname.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/hennagrp.xml b/L2ClientDat/dist/structure/dats/hennagrp.xml new file mode 100644 index 0000000000..062812c2f5 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/hennagrp.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/huntingzone.xml b/L2ClientDat/dist/structure/dats/huntingzone.xml new file mode 100644 index 0000000000..264e523a9f --- /dev/null +++ b/L2ClientDat/dist/structure/dats/huntingzone.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/idcname.xml b/L2ClientDat/dist/structure/dats/idcname.xml new file mode 100644 index 0000000000..797dd53b8d --- /dev/null +++ b/L2ClientDat/dist/structure/dats/idcname.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/instantzonedata.xml b/L2ClientDat/dist/structure/dats/instantzonedata.xml new file mode 100644 index 0000000000..59028da4dd --- /dev/null +++ b/L2ClientDat/dist/structure/dats/instantzonedata.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/item_baseinfo.xml b/L2ClientDat/dist/structure/dats/item_baseinfo.xml new file mode 100644 index 0000000000..1f87233ffa --- /dev/null +++ b/L2ClientDat/dist/structure/dats/item_baseinfo.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/itemname.xml b/L2ClientDat/dist/structure/dats/itemname.xml new file mode 100644 index 0000000000..0ec1b04ae1 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/itemname.xml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/itemstatdata.xml b/L2ClientDat/dist/structure/dats/itemstatdata.xml new file mode 100644 index 0000000000..0f0bd0f400 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/itemstatdata.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/l2gamedataname.xml b/L2ClientDat/dist/structure/dats/l2gamedataname.xml new file mode 100644 index 0000000000..9560ae0336 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/l2gamedataname.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/logongrp.xml b/L2ClientDat/dist/structure/dats/logongrp.xml new file mode 100644 index 0000000000..08065eaad6 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/logongrp.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/L2ClientDat/dist/structure/dats/lollycubedata.xml b/L2ClientDat/dist/structure/dats/lollycubedata.xml new file mode 100644 index 0000000000..bd36d51f38 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/lollycubedata.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/mantleexception.xml b/L2ClientDat/dist/structure/dats/mantleexception.xml new file mode 100644 index 0000000000..86caf155bb --- /dev/null +++ b/L2ClientDat/dist/structure/dats/mantleexception.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/minimapregion.xml b/L2ClientDat/dist/structure/dats/minimapregion.xml new file mode 100644 index 0000000000..364adfb802 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/minimapregion.xml @@ -0,0 +1,19 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/mobskillanimgrp.xml b/L2ClientDat/dist/structure/dats/mobskillanimgrp.xml new file mode 100644 index 0000000000..cc77d44e77 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/mobskillanimgrp.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/monsterbook_client.xml b/L2ClientDat/dist/structure/dats/monsterbook_client.xml new file mode 100644 index 0000000000..5206d48174 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/monsterbook_client.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/msconditiondata.xml b/L2ClientDat/dist/structure/dats/msconditiondata.xml new file mode 100644 index 0000000000..8c28d54093 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/msconditiondata.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/musicinfo.xml b/L2ClientDat/dist/structure/dats/musicinfo.xml new file mode 100644 index 0000000000..0db4c62043 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/musicinfo.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/npcgrp.xml b/L2ClientDat/dist/structure/dats/npcgrp.xml new file mode 100644 index 0000000000..0ab32fbef4 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/npcgrp.xml @@ -0,0 +1,710 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/npcname.xml b/L2ClientDat/dist/structure/dats/npcname.xml new file mode 100644 index 0000000000..ca67ac33fe --- /dev/null +++ b/L2ClientDat/dist/structure/dats/npcname.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/npcstring.xml b/L2ClientDat/dist/structure/dats/npcstring.xml new file mode 100644 index 0000000000..95996cbbee --- /dev/null +++ b/L2ClientDat/dist/structure/dats/npcstring.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/npcteleporter.xml b/L2ClientDat/dist/structure/dats/npcteleporter.xml new file mode 100644 index 0000000000..0daafc7652 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/npcteleporter.xml @@ -0,0 +1,19 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/nservice_topping_buff.xml b/L2ClientDat/dist/structure/dats/nservice_topping_buff.xml new file mode 100644 index 0000000000..8bf5a090be --- /dev/null +++ b/L2ClientDat/dist/structure/dats/nservice_topping_buff.xml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/obscene.xml b/L2ClientDat/dist/structure/dats/obscene.xml new file mode 100644 index 0000000000..efe56ee14b --- /dev/null +++ b/L2ClientDat/dist/structure/dats/obscene.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/onedayreward.xml b/L2ClientDat/dist/structure/dats/onedayreward.xml new file mode 100644 index 0000000000..3b8b4df6d0 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/onedayreward.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/optiondata_client.xml b/L2ClientDat/dist/structure/dats/optiondata_client.xml new file mode 100644 index 0000000000..cc1f30baf2 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/optiondata_client.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/partsave.xml b/L2ClientDat/dist/structure/dats/partsave.xml new file mode 100644 index 0000000000..9a501238f0 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/partsave.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/pawnanimdata.xml b/L2ClientDat/dist/structure/dats/pawnanimdata.xml new file mode 100644 index 0000000000..ccfa1c6018 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/pawnanimdata.xml @@ -0,0 +1,6237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/piagreement.xml b/L2ClientDat/dist/structure/dats/piagreement.xml new file mode 100644 index 0000000000..107f1431c9 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/piagreement.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/L2ClientDat/dist/structure/dats/posteffectdata.xml b/L2ClientDat/dist/structure/dats/posteffectdata.xml new file mode 100644 index 0000000000..9cad37cd27 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/posteffectdata.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/productname.xml b/L2ClientDat/dist/structure/dats/productname.xml new file mode 100644 index 0000000000..c8c49ef93b --- /dev/null +++ b/L2ClientDat/dist/structure/dats/productname.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/questmarkconditiondata.xml b/L2ClientDat/dist/structure/dats/questmarkconditiondata.xml new file mode 100644 index 0000000000..a2696a60b5 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/questmarkconditiondata.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/questname.xml b/L2ClientDat/dist/structure/dats/questname.xml new file mode 100644 index 0000000000..ba03d83b6a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/questname.xml @@ -0,0 +1,276 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/raiddata.xml b/L2ClientDat/dist/structure/dats/raiddata.xml new file mode 100644 index 0000000000..ef54827175 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/raiddata.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/recipe-c.xml b/L2ClientDat/dist/structure/dats/recipe-c.xml new file mode 100644 index 0000000000..019aa9d424 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/recipe-c.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/recipe.xml b/L2ClientDat/dist/structure/dats/recipe.xml new file mode 100644 index 0000000000..bc6d616507 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/recipe.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/ridedata.xml b/L2ClientDat/dist/structure/dats/ridedata.xml new file mode 100644 index 0000000000..05d8865e0d --- /dev/null +++ b/L2ClientDat/dist/structure/dats/ridedata.xml @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/sceneplayerdata.xml b/L2ClientDat/dist/structure/dats/sceneplayerdata.xml new file mode 100644 index 0000000000..229b027881 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/sceneplayerdata.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/servername.xml b/L2ClientDat/dist/structure/dats/servername.xml new file mode 100644 index 0000000000..fe03c6543d --- /dev/null +++ b/L2ClientDat/dist/structure/dats/servername.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/setitemgrp.xml b/L2ClientDat/dist/structure/dats/setitemgrp.xml new file mode 100644 index 0000000000..d1fc551ac6 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/setitemgrp.xml @@ -0,0 +1,38 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/shortcutalias.xml b/L2ClientDat/dist/structure/dats/shortcutalias.xml new file mode 100644 index 0000000000..0a9e648df3 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/shortcutalias.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/shortcutregisterdata.xml b/L2ClientDat/dist/structure/dats/shortcutregisterdata.xml new file mode 100644 index 0000000000..85a3830991 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/shortcutregisterdata.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/shuttledata.xml b/L2ClientDat/dist/structure/dats/shuttledata.xml new file mode 100644 index 0000000000..d3ad276453 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/shuttledata.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/skillgrp.xml b/L2ClientDat/dist/structure/dats/skillgrp.xml new file mode 100644 index 0000000000..b94f7d3341 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/skillgrp.xml @@ -0,0 +1,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/skillname.xml b/L2ClientDat/dist/structure/dats/skillname.xml new file mode 100644 index 0000000000..9381e31033 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/skillname.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/skillsoundgrp.xml b/L2ClientDat/dist/structure/dats/skillsoundgrp.xml new file mode 100644 index 0000000000..19b98d406f --- /dev/null +++ b/L2ClientDat/dist/structure/dats/skillsoundgrp.xml @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/skillsoundsource.xml b/L2ClientDat/dist/structure/dats/skillsoundsource.xml new file mode 100644 index 0000000000..2f853957cb --- /dev/null +++ b/L2ClientDat/dist/structure/dats/skillsoundsource.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/staticobject.xml b/L2ClientDat/dist/structure/dats/staticobject.xml new file mode 100644 index 0000000000..3ff629dd6a --- /dev/null +++ b/L2ClientDat/dist/structure/dats/staticobject.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/statisticname.xml b/L2ClientDat/dist/structure/dats/statisticname.xml new file mode 100644 index 0000000000..81f79950ee --- /dev/null +++ b/L2ClientDat/dist/structure/dats/statisticname.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/symbolname.xml b/L2ClientDat/dist/structure/dats/symbolname.xml new file mode 100644 index 0000000000..45e0f06a5d --- /dev/null +++ b/L2ClientDat/dist/structure/dats/symbolname.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/sysstring.xml b/L2ClientDat/dist/structure/dats/sysstring.xml new file mode 100644 index 0000000000..95996cbbee --- /dev/null +++ b/L2ClientDat/dist/structure/dats/sysstring.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/systemmsg.xml b/L2ClientDat/dist/structure/dats/systemmsg.xml new file mode 100644 index 0000000000..13a0072f0b --- /dev/null +++ b/L2ClientDat/dist/structure/dats/systemmsg.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/timelimit_name.xml b/L2ClientDat/dist/structure/dats/timelimit_name.xml new file mode 100644 index 0000000000..4dad3a5141 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/timelimit_name.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/transformdata.xml b/L2ClientDat/dist/structure/dats/transformdata.xml new file mode 100644 index 0000000000..7cebe24d8b --- /dev/null +++ b/L2ClientDat/dist/structure/dats/transformdata.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/tutorialname.xml b/L2ClientDat/dist/structure/dats/tutorialname.xml new file mode 100644 index 0000000000..84624a574c --- /dev/null +++ b/L2ClientDat/dist/structure/dats/tutorialname.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/usmmoviedata.xml b/L2ClientDat/dist/structure/dats/usmmoviedata.xml new file mode 100644 index 0000000000..9bf365eb8b --- /dev/null +++ b/L2ClientDat/dist/structure/dats/usmmoviedata.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/variationeffectgrp.xml b/L2ClientDat/dist/structure/dats/variationeffectgrp.xml new file mode 100644 index 0000000000..f10a7abe16 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/variationeffectgrp.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/vehiclepartsgrp.xml b/L2ClientDat/dist/structure/dats/vehiclepartsgrp.xml new file mode 100644 index 0000000000..8373436610 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/vehiclepartsgrp.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/warningnotice.xml b/L2ClientDat/dist/structure/dats/warningnotice.xml new file mode 100644 index 0000000000..f3deeae5c4 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/warningnotice.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/L2ClientDat/dist/structure/dats/weaponenchanteffectdata.xml b/L2ClientDat/dist/structure/dats/weaponenchanteffectdata.xml new file mode 100644 index 0000000000..bfec7f742b --- /dev/null +++ b/L2ClientDat/dist/structure/dats/weaponenchanteffectdata.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/weapongrp.xml b/L2ClientDat/dist/structure/dats/weapongrp.xml new file mode 100644 index 0000000000..05834160df --- /dev/null +++ b/L2ClientDat/dist/structure/dats/weapongrp.xml @@ -0,0 +1,1005 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/dats/zonename.xml b/L2ClientDat/dist/structure/dats/zonename.xml new file mode 100644 index 0000000000..05cfcd6865 --- /dev/null +++ b/L2ClientDat/dist/structure/dats/zonename.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + diff --git a/L2ClientDat/dist/structure/format/SkillNameFormat.java b/L2ClientDat/dist/structure/format/SkillNameFormat.java new file mode 100644 index 0000000000..1741d812ef --- /dev/null +++ b/L2ClientDat/dist/structure/format/SkillNameFormat.java @@ -0,0 +1,111 @@ +import l2god.listeners.FormatListener; +import l2god.util.Util; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class SkillNameFormat implements FormatListener +{ + private static final Pattern pattern = Pattern.compile("\\bskill_txt_begin\\b(.*?)\\bskill_txt_end\\b", Pattern.DOTALL); + private static final Pattern pattern2 = Pattern.compile("\\bskill_begin\\b(.*?)\\bskill_end\\b", Pattern.DOTALL); + + @Override + public String decode(String str) + { + Matcher m = pattern.matcher(str); + Map indexes = new HashMap<>(); + while(m.find()) + { + Map params = Util.stringToMap(m.group(1)); + String name = params.get("name"); + indexes.put(Integer.valueOf(params.get("index")), name.substring(1, name.length() - 1)); + } + + StringBuilder builder = new StringBuilder(); + Matcher m2 = pattern2.matcher(str); + while(m2.find()) + { + Map params = Util.stringToMap(m2.group(1)); + setNameByIndex(indexes, params, "name"); + setNameByIndex(indexes, params, "desc"); + setNameByIndex(indexes, params, "desc_param"); + setNameByIndex(indexes, params, "enchant_name"); + setNameByIndex(indexes, params, "enchant_name_param"); + setNameByIndex(indexes, params, "enchant_desc"); + setNameByIndex(indexes, params, "enchant_desc_param"); + + builder.append("skill_begin\t").append(Util.mapToString(params)).append("skill_end").append("\r\n"); + } + + return builder.toString(); + } + + @Override + public String encode(String str) + { + Map indexes = new LinkedHashMap<>(); + Map sorted = new TreeMap<>(); + + Matcher m2 = pattern2.matcher(str); + while(m2.find()) + { + Map params = Util.stringToMap(m2.group(1)); + setIndexByName(indexes, params, "name"); + setIndexByName(indexes, params, "desc"); + setIndexByName(indexes, params, "desc_param"); + setIndexByName(indexes, params, "enchant_name"); + setIndexByName(indexes, params, "enchant_name_param"); + setIndexByName(indexes, params, "enchant_desc"); + setIndexByName(indexes, params, "enchant_desc_param"); + + String result = "skill_begin\t" + Util.mapToString(params) + "skill_end\r\n"; + + int id = Integer.parseInt(params.get("skill_id")); + int level = Integer.parseInt(params.get("skill_level")); + int subLevel = Integer.parseInt(params.get("skill_sublevel")); + + sorted.put(getSkillHashCode(id, level, subLevel), result); + } + + StringBuilder builder = new StringBuilder(); + for(String key : indexes.keySet()) + { + builder.append("skill_txt_begin\tname=").append(key).append("\tindex=").append(indexes.get(key)).append("\tskill_txt_end\r\n"); + } + + sorted.values().forEach(builder::append); + + return builder.toString(); + } + + private void setNameByIndex(Map indexes, Map params, String paramName) + { + params.put(paramName, "[" + indexes.get(Integer.parseInt(params.get(paramName))) + "]"); + } + + private void setIndexByName(Map indexes, Map params, String paramName) + { + String name = params.get(paramName); + if(indexes.containsKey(name)) + { + params.put(paramName, indexes.get(name)); + return; + } + + String index = String.valueOf(indexes.size()); + indexes.put(name, index); + params.put(paramName, index); + } + + private static long getSkillHashCode(int skillId, int skillLevel, int subLevel) + { + if(subLevel > 0) + return (skillId * 4294967296L) + (subLevel * 65536) + skillLevel; + else + return (skillId * 65536) + skillLevel; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/L2ClientDat.java b/L2ClientDat/java/com/l2jmobius/L2ClientDat.java new file mode 100644 index 0000000000..79bab4305e --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/L2ClientDat.java @@ -0,0 +1,403 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.File; +import java.io.FileOutputStream; +import java.io.PrintWriter; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.UIManager; +import javax.swing.filechooser.FileNameExtensionFilter; + +import com.l2jmobius.actions.MassRecryptor; +import com.l2jmobius.actions.MassTxtPacker; +import com.l2jmobius.actions.MassTxtUnpacker; +import com.l2jmobius.actions.OpenDat; +import com.l2jmobius.clientcryptor.DatFile; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.config.ConfigDebug; +import com.l2jmobius.config.ConfigWindow; +import com.l2jmobius.data.GameDataName; +import com.l2jmobius.forms.JPopupTextArea; +import com.l2jmobius.util.DebugUtil; +import com.l2jmobius.util.Util; +import com.l2jmobius.xml.CryptVersionParser; +import com.l2jmobius.xml.Descriptor; +import com.l2jmobius.xml.DescriptorParser; +import com.l2jmobius.xml.DescriptorWriter; + +public class L2ClientDat extends JFrame +{ + private static JPopupTextArea textPaneLog; + private static JPopupTextArea textPaneMain; + private static JComboBox jComboBoxChronicle; + private static JComboBox jComboBoxDecrypt; + private static JComboBox jComboBoxEncrypt; + private static File currentFileWindow; + + public L2ClientDat() + { + setTitle("L2ClientDat decoder"); + setMinimumSize(new Dimension(1000, 600)); + this.setSize(new Dimension(ConfigWindow.WINDOW_WIDTH, ConfigWindow.WINDOW_HEIGHT)); + getContentPane().setLayout(new BorderLayout()); + setDefaultCloseOperation(3); + setLocationRelativeTo(null); + addWindowListener(new WindowAdapter() + { + + @Override + public void windowClosing(WindowEvent evt) + { + ConfigWindow.save("WINDOW_HEIGHT", String.valueOf(L2ClientDat.this.getHeight())); + ConfigWindow.save("WINDOW_WIDTH", String.valueOf(L2ClientDat.this.getWidth())); + System.exit(0); + } + }); + JPanel buttonPane = new JPanel(); + buttonPane.setLayout(new BorderLayout()); + JPanel buttonPane0 = new JPanel(); + JLabel structureLabel = new JLabel("structure:"); + buttonPane0.add(structureLabel); + jComboBoxChronicle = new JComboBox<>(); + jComboBoxChronicle.setModel(new DefaultComboBoxModel<>(Util.getFilesNames("./structure/", ".xml"))); + jComboBoxChronicle.setSelectedItem(ConfigWindow.CURRENT_CHRONICLE); + jComboBoxChronicle.addActionListener(e -> saveComboBox(jComboBoxChronicle, "CURRENT_CHRONICLE")); + buttonPane0.add(jComboBoxChronicle); + JLabel decryptLabel = new JLabel("decrypt:"); + buttonPane0.add(decryptLabel); + jComboBoxDecrypt = new JComboBox<>(); + jComboBoxDecrypt.setModel(new DefaultComboBoxModel<>(CryptVersionParser.getInstance().getDecryptKeys().keySet().toArray(new String[CryptVersionParser.getInstance().getDecryptKeys().keySet().size()]))); + jComboBoxDecrypt.setSelectedItem(ConfigWindow.CURRENT_DECRYPT); + jComboBoxDecrypt.addActionListener(e -> saveComboBox(jComboBoxDecrypt, "CURRENT_DECRYPT")); + buttonPane0.add(jComboBoxDecrypt); + JLabel encryptLabel = new JLabel("encrypt:"); + buttonPane0.add(encryptLabel); + jComboBoxEncrypt = new JComboBox<>(); + jComboBoxEncrypt.setModel(new DefaultComboBoxModel<>(CryptVersionParser.getInstance().getEncryptKey().keySet().toArray(new String[CryptVersionParser.getInstance().getDecryptKeys().keySet().size()]))); + jComboBoxEncrypt.setSelectedItem(ConfigWindow.CURRENT_ENCRYPT); + jComboBoxEncrypt.addActionListener(e -> saveComboBox(jComboBoxEncrypt, "CURRENT_ENCRYPT")); + buttonPane0.add(jComboBoxEncrypt); + buttonPane.add(buttonPane0, "First"); + JPanel buttonPane1 = new JPanel(); + JButton open = new JButton(); + open.setText("Open"); + open.addActionListener(this::openSelectFileWindow); + buttonPane1.add(open); + JButton save = new JButton(); + save.setText("Save txt"); + save.addActionListener(this::saveActionPerformed); + buttonPane1.add(save); + JButton saveAs = new JButton(); + saveAs.setText("Save dat"); + saveAs.addActionListener(this::saveAsActionPerformed); + buttonPane1.add(saveAs); + JButton massTxtUnpack = new JButton(); + massTxtUnpack.setText("Extract all to txt"); + massTxtUnpack.addActionListener(this::massTxtUnpackActionPerformed); + buttonPane1.add(massTxtUnpack); + JButton massTxtPack = new JButton(); + massTxtPack.setText("Download all dat"); + massTxtPack.addActionListener(this::massTxtPackActionPerformed); + buttonPane1.add(massTxtPack); + JButton massRecrypt = new JButton(); + massRecrypt.setText("Patch dat"); + massRecrypt.addActionListener(this::massRecryptActionPerformed); + buttonPane1.add(massRecrypt); + buttonPane.add(buttonPane1); + JSplitPane jsp = new JSplitPane(0, false); + jsp.setResizeWeight(0.7); + jsp.setOneTouchExpandable(true); + textPaneMain = new JPopupTextArea(); + textPaneMain.setBackground(new Color(41, 49, 52)); + textPaneMain.setForeground(Color.WHITE); + textPaneMain.setFont(new Font("Verdana", 1, 12)); + JScrollPane jScrollPane1 = new JScrollPane(); + jScrollPane1.setAutoscrolls(true); + jScrollPane1.setViewportView(textPaneMain); + jsp.setTopComponent(jScrollPane1); + textPaneLog = new JPopupTextArea(); + textPaneLog.setBackground(new Color(41, 49, 52)); + textPaneLog.setForeground(Color.GREEN); + textPaneLog.setEditable(false); + JScrollPane jScrollPane2 = new JScrollPane(); + jScrollPane2.setViewportView(textPaneLog); + jScrollPane2.setAutoscrolls(true); + jsp.setBottomComponent(jScrollPane2); + getContentPane().add(buttonPane, "First"); + getContentPane().add(jsp); + pack(); + setVisible(true); + } + + private void massTxtPackActionPerformed(ActionEvent evt) + { + JFileChooser fileopen = new JFileChooser(); + fileopen.setFileSelectionMode(1); + fileopen.setAcceptAllFileFilterUsed(false); + fileopen.setCurrentDirectory(new File(ConfigWindow.FILE_OPEN_CURRENT_DIRECTORY_PACK)); + fileopen.setPreferredSize(new Dimension(600, 600)); + int ret = fileopen.showDialog(null, "Open"); + if (ret == 0) + { + currentFileWindow = fileopen.getSelectedFile(); + ConfigWindow.save("FILE_OPEN_CURRENT_DIRECTORY_PACK", currentFileWindow.getPath()); + L2ClientDat.addLogConsole("---------------------------------------", true); + L2ClientDat.addLogConsole("selected folder: " + currentFileWindow.getPath(), true); + try + { + MassTxtPacker.getInstance().pack(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getPath(), CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem()))); + } + catch (Exception ex) + { + Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + private void massTxtUnpackActionPerformed(ActionEvent evt) + { + JFileChooser fileopen = new JFileChooser(); + fileopen.setFileSelectionMode(1); + fileopen.setAcceptAllFileFilterUsed(false); + fileopen.setCurrentDirectory(new File(ConfigWindow.FILE_OPEN_CURRENT_DIRECTORY_UNPACK)); + fileopen.setPreferredSize(new Dimension(600, 600)); + int ret = fileopen.showDialog(null, "Open"); + if (ret == 0) + { + currentFileWindow = fileopen.getSelectedFile(); + ConfigWindow.save("FILE_OPEN_CURRENT_DIRECTORY_UNPACK", currentFileWindow.getPath()); + L2ClientDat.addLogConsole("---------------------------------------", true); + L2ClientDat.addLogConsole("selected folder: " + currentFileWindow.getPath(), true); + try + { + MassTxtUnpacker.getInstance().unpack(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getPath(), CryptVersionParser.getInstance().getDecryptKey(String.valueOf(jComboBoxDecrypt.getSelectedItem()))); + } + catch (Exception ex) + { + Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + private void massRecryptActionPerformed(ActionEvent evt) + { + JFileChooser fileopen = new JFileChooser(); + fileopen.setFileSelectionMode(1); + fileopen.setAcceptAllFileFilterUsed(false); + fileopen.setCurrentDirectory(new File(ConfigWindow.FILE_OPEN_CURRENT_DIRECTORY)); + fileopen.setPreferredSize(new Dimension(600, 600)); + int ret = fileopen.showDialog(null, "Open"); + if (ret == 0) + { + currentFileWindow = fileopen.getSelectedFile(); + ConfigWindow.save("FILE_OPEN_CURRENT_DIRECTORY", currentFileWindow.getPath()); + L2ClientDat.addLogConsole("---------------------------------------", true); + L2ClientDat.addLogConsole("selected folder: " + currentFileWindow.getPath(), true); + try + { + MassRecryptor.getInstance().recrypt(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getPath(), CryptVersionParser.getInstance().getDecryptKey(String.valueOf(jComboBoxDecrypt.getSelectedItem())), CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem()))); + } + catch (Exception ex) + { + Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + private void openSelectFileWindow(ActionEvent evt) + { + textPaneMain.removeAll(); + JFileChooser fileopen = new JFileChooser(); + fileopen.setFileSelectionMode(0); + fileopen.setAcceptAllFileFilterUsed(false); + fileopen.setFileFilter(new FileNameExtensionFilter(".dat, .ini, .txt, .htm", "dat", "ini", "txt", "htm")); + fileopen.setSelectedFile(new File(ConfigWindow.LAST_FILE_SELECTED)); + fileopen.setPreferredSize(new Dimension(600, 600)); + int ret = fileopen.showDialog(null, "Open"); + if (ret == 0) + { + currentFileWindow = fileopen.getSelectedFile(); + ConfigWindow.save("LAST_FILE_SELECTED", currentFileWindow.getAbsolutePath()); + L2ClientDat.addLogConsole("---------------------------------------", true); + L2ClientDat.addLogConsole("Open file: " + currentFileWindow.getName(), true); + try + { + OpenDat.start(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow, currentFileWindow.getName(), CryptVersionParser.getInstance().getDecryptKey(String.valueOf(jComboBoxDecrypt.getSelectedItem()))); + } + catch (Exception ex) + { + Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + private void saveActionPerformed(ActionEvent evt) + { + JFileChooser fileSave = new JFileChooser(); + fileSave.setCurrentDirectory(new File(ConfigWindow.FILE_SAVE_CURRENT_DIRECTORY)); + if (currentFileWindow != null) + { + fileSave.setSelectedFile(new File(currentFileWindow.getName().split("\\.")[0] + ".txt")); + fileSave.setFileFilter(new FileNameExtensionFilter(".txt", "txt")); + fileSave.setAcceptAllFileFilterUsed(false); + fileSave.setPreferredSize(new Dimension(600, 600)); + int ret = fileSave.showSaveDialog(null); + if (ret == 0) + { + File f = fileSave.getSelectedFile(); + try + { + PrintWriter out = new PrintWriter(new FileOutputStream(f.getPath()), true); + ConfigWindow.save("FILE_SAVE_CURRENT_DIRECTORY", f.getParentFile().toString()); + out.print(textPaneMain.getText()); + out.close(); + } + catch (Exception out) + { + // empty catch block + } + L2ClientDat.addLogConsole("---------------------------------------", true); + L2ClientDat.addLogConsole("Saved: " + f.getPath(), true); + } + } + else + { + L2ClientDat.addLogConsole("No open file!", true); + } + } + + /* + * Enabled aggressive block sorting Enabled unnecessary exception pruning Enabled aggressive exception aggregation + */ + private void saveAsActionPerformed(ActionEvent evt) + { + if (currentFileWindow == null) + { + L2ClientDat.addLogConsole("Error saving dat. No file name.", true); + return; + } + byte[] buff = null; + DatCrypter crypter = null; + if (currentFileWindow.getName().endsWith(".dat") || currentFileWindow.getName().endsWith(".txt")) + { + try + { + Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getName().replace("txt", "dat")); + if (desc != null) + { + crypter = CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem())); + buff = DescriptorWriter.parseData(currentFileWindow, crypter, desc, textPaneMain.getText()); + GameDataName.getInstance().checkAndUpdate(currentFileWindow.getParent(), crypter); + } + L2ClientDat.addLogConsole("Not found the structure of the file: " + currentFileWindow.getName(), true); + } + catch (Exception e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + return; + } + } + else if (currentFileWindow.getName().endsWith(".ini")) + { + crypter = CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem())); + buff = textPaneMain.getText().getBytes(); + } + if (buff == null) + { + L2ClientDat.addLogConsole("buff == null.", true); + return; + } + try + { + if (ConfigDebug.ENCRYPT && (crypter != null)) + { + DatFile.encrypt(buff, currentFileWindow.getPath(), crypter); + } + } + catch (Exception e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + return; + } + L2ClientDat.addLogConsole("Packed successfully.", true); + } + + private void saveComboBox(JComboBox jComboBox, String param) + { + ConfigWindow.save(param, String.valueOf(jComboBox.getSelectedItem())); + } + + public static void main(String[] args) + { + ConfigWindow.load(); + ConfigDebug.load(); + CryptVersionParser.getInstance(); + Util.compileJavaClass("./structure/format/"); + DescriptorParser.getInstance(); + try + { + for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) + { + if (!"Nimbus".equals(info.getName())) + { + continue; + } + UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + catch (Exception ex) + { + Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex); + } + EventQueue.invokeLater(L2ClientDat::new); + } + + public static void addLogConsole(String log, boolean isLog) + { + if (isLog) + { + DebugUtil.getLogger().info(log); + } + textPaneLog.append(log + "\n"); + } + + public static void addText(String log) + { + textPaneMain.setText(log); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/actions/MassRecryptor.java b/L2ClientDat/java/com/l2jmobius/actions/MassRecryptor.java new file mode 100644 index 0000000000..5bbd10fcf6 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/actions/MassRecryptor.java @@ -0,0 +1,90 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.actions; + +import java.io.File; +import java.io.FileInputStream; + +import com.l2jmobius.L2ClientDat; +import com.l2jmobius.clientcryptor.DatFile; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; + +public class MassRecryptor +{ + private static final MassRecryptor _instance = new MassRecryptor(); + + public static MassRecryptor getInstance() + { + return _instance; + } + + public void recrypt(String chronicle, String path, DatCrypter decCrypter, DatCrypter enCrypter) + { + L2ClientDat.addLogConsole("Mass recrypt with using " + chronicle + " chronicles by path [" + path + "]", true); + File baseDir = new File(path); + if (!baseDir.exists()) + { + L2ClientDat.addLogConsole("Directory [" + path + "] does not exists.", true); + return; + } + String recryptDirPath = path + "/" + "!recrypted"; + File recryptDir = new File(recryptDirPath); + if (!recryptDir.exists() && !recryptDir.mkdir()) + { + L2ClientDat.addLogConsole("Cannot create recrypt directory [" + recryptDirPath + "].", true); + return; + } + long startTime = System.currentTimeMillis(); + for (File file : baseDir.listFiles(pathname -> pathname.getName().endsWith(".dat") || pathname.getName().endsWith(".ini") || pathname.getName().endsWith(".htm"))) + { + try + { + try (FileInputStream fis = new FileInputStream(file);) + { + if (fis.available() < 28) + { + L2ClientDat.addLogConsole(file.getName() + " The file is too small.", true); + return; + } + byte[] head = new byte[28]; + fis.read(head); + String header = new String(head, "UTF-16LE"); + if (!header.startsWith("Lineage2Ver")) + { + L2ClientDat.addLogConsole("File " + file.getName() + " not encrypted. Skip decrypt.", true); + continue; + } + if (Integer.valueOf(header.substring(11)).intValue() != decCrypter.getCode()) + { + L2ClientDat.addLogConsole("File " + file.getName() + " encrypted code: " + header + ". Skip decrypt.", true); + continue; + } + L2ClientDat.addLogConsole("Recrypting [" + file.getName() + "]", true); + DatFile dat = new DatFile(file.getAbsolutePath()); + dat.decrypt(decCrypter); + DatFile.encrypt(dat.getBuff().array(), recryptDirPath + "/" + file.getName(), enCrypter); + } + } + catch (Exception e) + { + L2ClientDat.addLogConsole(file.getName() + " Decrypt failed.", true); + } + } + long diffTime = (System.currentTimeMillis() - startTime) / 1000L; + L2ClientDat.addLogConsole("Completed. Elapsed ".concat(String.valueOf(diffTime)).concat(" sec"), true); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/actions/MassTxtPacker.java b/L2ClientDat/java/com/l2jmobius/actions/MassTxtPacker.java new file mode 100644 index 0000000000..d8b97fed14 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/actions/MassTxtPacker.java @@ -0,0 +1,134 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.actions; + +import java.io.File; +import java.io.FileOutputStream; +import java.nio.file.Files; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Semaphore; + +import com.l2jmobius.L2ClientDat; +import com.l2jmobius.clientcryptor.DatFile; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.config.ConfigDebug; +import com.l2jmobius.data.GameDataName; +import com.l2jmobius.util.DebugUtil; +import com.l2jmobius.xml.Descriptor; +import com.l2jmobius.xml.DescriptorParser; +import com.l2jmobius.xml.DescriptorWriter; +import com.l2jmobius.xml.exceptions.PackDataException; + +public class MassTxtPacker +{ + private static final MassTxtPacker _instance = new MassTxtPacker(); + + public static MassTxtPacker getInstance() + { + return _instance; + } + + public void pack(String chronicle, String path, DatCrypter crypter) throws Exception + { + L2ClientDat.addLogConsole("Mass packer with using " + chronicle + " chronicles by path [" + path + "]", true); + File baseDir = new File(path); + if (!baseDir.exists()) + { + L2ClientDat.addLogConsole("Directory [" + path + "] does not exists.", true); + return; + } + String packDirPath = path + "/" + "!packed"; + File packDir = new File(packDirPath); + if (!packDir.exists() && !packDir.mkdir()) + { + L2ClientDat.addLogConsole("Cannot create directory [" + packDir + "].", true); + return; + } + File[] fList = baseDir.listFiles(pathname -> crypter.checkFileExtension(pathname.getName())); + GameDataName.getInstance().clear(); + long startTime = System.currentTimeMillis(); + CountDownLatch doneSignal = new CountDownLatch(fList.length); + Semaphore semaphore = new Semaphore(Runtime.getRuntime().availableProcessors()); + for (File file : fList) + { + new Thread(() -> + { + try + { + semaphore.acquire(); + L2ClientDat.addLogConsole("Packing [" + file.getName() + "]", true); + try + { + byte[] buff = null; + String name = file.getName(); + if (crypter.isUseStructure()) + { + name = name.replace(".txt", ".dat"); + byte[] array = Files.readAllBytes(file.toPath()); + String joined = new String(array, 0, array.length, "UTF-8"); + Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(chronicle, name); + if (desc != null) + { + buff = DescriptorWriter.parseData(file, crypter, desc, joined); + } + else + { + L2ClientDat.addLogConsole("Not found the structure of the file: " + file.getName(), true); + } + } + else + { + buff = Files.readAllBytes(file.toPath()); + } + String fResult = packDir + "/" + name; + if (buff != null) + { + if (ConfigDebug.ENCRYPT) + { + DatFile.encrypt(buff, fResult, crypter); + } + else + { + FileOutputStream os = new FileOutputStream(fResult, false); + os.write(buff); + os.close(); + } + } + } + catch (PackDataException e) + { + DebugUtil.getLogger().error(e); + } + catch (Exception e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + } + doneSignal.countDown(); + semaphore.release(); + } + catch (InterruptedException e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + } + }).start(); + } + doneSignal.await(); + GameDataName.getInstance().checkAndUpdate(packDir.getPath(), crypter); + long diffTime = (System.currentTimeMillis() - startTime) / 1000L; + L2ClientDat.addLogConsole("Completed. Elapsed ".concat(String.valueOf(diffTime)).concat(" sec"), true); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/actions/MassTxtUnpacker.java b/L2ClientDat/java/com/l2jmobius/actions/MassTxtUnpacker.java new file mode 100644 index 0000000000..c9cdd74a0b --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/actions/MassTxtUnpacker.java @@ -0,0 +1,165 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.actions; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; + +import com.l2jmobius.L2ClientDat; +import com.l2jmobius.clientcryptor.DatFile; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.data.GameDataName; +import com.l2jmobius.util.DebugUtil; +import com.l2jmobius.xml.Descriptor; +import com.l2jmobius.xml.DescriptorParser; +import com.l2jmobius.xml.DescriptorReader; + +public class MassTxtUnpacker +{ + private static final MassTxtUnpacker _instance = new MassTxtUnpacker(); + + public static MassTxtUnpacker getInstance() + { + return _instance; + } + + public void unpack(String chronicle, String path, DatCrypter decCrypter) + { + L2ClientDat.addLogConsole("Mass unpacker with using " + chronicle + " chronicles by path [" + path + "]", true); + File baseDir = new File(path); + if (!baseDir.exists()) + { + L2ClientDat.addLogConsole("Directory [" + path + "] does not exists.", true); + return; + } + String unpackDirPath = path + "/" + "!unpacked"; + File unpackDir = new File(unpackDirPath); + if (!unpackDir.exists() && !unpackDir.mkdir()) + { + L2ClientDat.addLogConsole("Cannot create recrypt directory [" + unpackDirPath + "].", true); + return; + } + GameDataName.getInstance().clear(); + long startTime = System.currentTimeMillis(); + for (File file : baseDir.listFiles(pathname -> decCrypter.checkFileExtension(pathname.getName()))) + { + try + { + try (FileInputStream fis = new FileInputStream(file);) + { + String name; + String res; + String charset; + if (fis.available() < 28) + { + L2ClientDat.addLogConsole(file.getName() + " The file is too small.", true); + continue; + } + byte[] head = new byte[28]; + fis.read(head); + fis.close(); + String header = new String(head, "UTF-16LE"); + if (!header.startsWith("Lineage2Ver")) + { + L2ClientDat.addLogConsole("File " + file.getName() + " not encrypted. Skip decrypt.", true); + continue; + } + if (Integer.valueOf(header.substring(11)).intValue() != decCrypter.getCode()) + { + L2ClientDat.addLogConsole("File " + file.getName() + " encrypted code: " + header + ". Skip decrypt.", true); + continue; + } + L2ClientDat.addLogConsole("Unpacking [" + file.getName() + "]", true); + DatFile dat = new DatFile(file.getAbsolutePath()); + dat.decrypt(decCrypter); + DebugUtil.save(dat.getBuff(), file); + res = null; + charset = "UTF-8"; + if (decCrypter.isUseStructure() && file.getName().endsWith(".dat")) + { + Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(chronicle, file.getName()); + try + { + res = DescriptorReader.getInstance().parseData(file, decCrypter, desc, dat.getBuff()); + } + catch (Exception e23) + { + L2ClientDat.addLogConsole("Cannot parse [" + file.getName() + "]", true); + } + name = file.getName().replace(".dat", ".txt"); + } + else + { + name = file.getName(); + if (file.getName().endsWith(".unr")) + { + name = "dec-" + name; + } + if (file.getName().endsWith(".htm")) + { + charset = "UTF-16"; + } + try + { + try (FileOutputStream fos = new FileOutputStream(unpackDirPath + "/" + name);) + { + fos.write(dat.getBuff().array()); + } + catch (Throwable throwable) + { + throw throwable; + } + } + catch (UnsupportedEncodingException e3) + { + e3.printStackTrace(); + } + } + if (res == null) + { + continue; + } + try + { + try (PrintWriter fos = new PrintWriter(new OutputStreamWriter(new FileOutputStream(unpackDirPath + "/" + name), charset));) + { + fos.write(res); + } + catch (Throwable throwable) + { + throw throwable; + } + } + catch (Exception e4) + { + DebugUtil.getLogger().error("Cannot write file.", e4); + } + } + } + catch (Exception e) + { + DebugUtil.getLogger().error(file.getName() + " Decrypt failed.", e); + } + } + long diffTime = (System.currentTimeMillis() - startTime) / 1000L; + L2ClientDat.addLogConsole("Completed. Elapsed ".concat(String.valueOf(diffTime)).concat(" sec"), true); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/actions/OpenDat.java b/L2ClientDat/java/com/l2jmobius/actions/OpenDat.java new file mode 100644 index 0000000000..96f91fa334 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/actions/OpenDat.java @@ -0,0 +1,143 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.actions; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; + +import com.l2jmobius.L2ClientDat; +import com.l2jmobius.clientcryptor.DatFile; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.data.GameDataName; +import com.l2jmobius.util.DebugUtil; +import com.l2jmobius.xml.Descriptor; +import com.l2jmobius.xml.DescriptorParser; +import com.l2jmobius.xml.DescriptorReader; + +public class OpenDat +{ + public static void start(String dir, File path, String name, DatCrypter crypter) throws Exception + { + ByteBuffer buffer; + boolean crypt = true; + if (!path.exists()) + { + L2ClientDat.addLogConsole("File does not exist.", true); + return; + } + if (!path.canRead()) + { + L2ClientDat.addLogConsole("Unable to read file.", true); + return; + } + FileInputStream fis = new FileInputStream(path); + if (fis.available() < 28) + { + L2ClientDat.addLogConsole("The file is too small.", true); + fis.close(); + return; + } + byte[] head = new byte[28]; + fis.read(head); + String header = new String(head, "UTF-16LE"); + if (!header.startsWith("Lineage2Ver")) + { + L2ClientDat.addLogConsole("File " + name + " not encrypted. Skip decrypt.", true); + crypt = false; + } + fis.close(); + buffer = null; + if (crypt) + { + L2ClientDat.addLogConsole("File " + name + " encrypted. " + header + " decrypt ...", true); + try + { + DatFile dat = new DatFile(path.getPath()); + dat.decrypt(crypter); + buffer = dat.getBuff(); + if (buffer == null) + { + L2ClientDat.addLogConsole("Error decrypt file. Empty buffer.", true); + return; + } + } + catch (Exception e) + { + L2ClientDat.addLogConsole("Error decrypt file.", true); + return; + } + DebugUtil.save(buffer, path); + L2ClientDat.addLogConsole("Decrypt successfully.", true); + } + else + { + try + { + try (FileInputStream fIn = new FileInputStream(path);) + { + FileChannel fChan = fIn.getChannel(); + ByteBuffer mBuf = ByteBuffer.allocate((int) fChan.size()); + fChan.read(mBuf); + buffer = mBuf; + fChan.close(); + fIn.close(); + } + } + catch (IOException exc) + { + L2ClientDat.addLogConsole("Error reading.", true); + } + } + if (name.contains(".ini") || name.contains(".txt")) + { + if ((buffer != null) && buffer.hasArray()) + { + L2ClientDat.addText(new String(buffer.array(), 0, buffer.array().length, "UTF-8")); + } + } + else if (name.contains(".htm")) + { + if ((buffer != null) && buffer.hasArray()) + { + L2ClientDat.addText(new String(buffer.array(), 0, buffer.array().length, "UTF-16")); + } + } + else if (crypter.isUseStructure()) + { + L2ClientDat.addLogConsole("Read the file structure ...", true); + String data = null; + Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(dir, name); + if ((desc != null) && (buffer != null)) + { + buffer.position(0); + DebugUtil.debug("Buffer size: " + buffer.limit()); + GameDataName.getInstance().clear(); + data = DescriptorReader.getInstance().parseData(path, crypter, desc, buffer); + } + if (data == null) + { + L2ClientDat.addLogConsole("Structure is not found in the directory: " + dir + " file: " + name, true); + return; + } + L2ClientDat.addText(data); + } + L2ClientDat.addLogConsole("Completed.", true); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/DatFile.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/DatFile.java new file mode 100644 index 0000000000..5d76249d7e --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/clientcryptor/DatFile.java @@ -0,0 +1,140 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.clientcryptor; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; + +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.config.ConfigDebug; + +public class DatFile extends File +{ + private ByteBuffer _buff; + + public DatFile(String pathname) + { + super(pathname); + } + + public ByteBuffer getBuff() + { + return _buff; + } + + public void decrypt(DatCrypter crypter) throws IOException + { + loadInfo(crypter); + try + { + try (FileInputStream fis = new FileInputStream(this);) + { + crypter.unlock(); + crypter.aquire(); + fis.skip(28L); + byte[] buff = new byte[crypter.getChunkSize(fis.available())]; + for (int len = fis.available() - crypter.getSkipSize(); len > 0; len -= fis.read(buff)) + { + crypter.update(buff); + if (!crypter.isLock()) + { + continue; + } + } + if (crypter.isLock()) + { + _buff = null; + return; + } + _buff = crypter.decryptResult(); + crypter.release(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + public static void encrypt(byte[] buff, String file, DatCrypter crypter) throws IOException + { + crypter.unlock(); + crypter.aquire(); + FileOutputStream os = new FileOutputStream(file, false); + String header = "Lineage2Ver" + crypter.getCode(); + os.write(header.getBytes("UTF-16LE")); + crypter.update(buff); + byte[] res = crypter.encryptResult().array(); + os.write(res); + if (ConfigDebug.DAT_ADD_END_BYTES) + { + byte[] endBytes = new byte[20]; + endBytes[19] = 100; + os.write(endBytes); + } + os.close(); + crypter.release(); + } + + @SuppressWarnings("resource") + private void loadInfo(DatCrypter crypter) throws IOException + { + if (!exists() || !canRead()) + { + throw new IOException("Can not read the dat file"); + } + FileInputStream fis = new FileInputStream(this); + if (fis.available() < 28) + { + throw new IOException("Can not read the dat file : too small"); + } + byte[] head = new byte[28]; + fis.read(head); + String header = new String(head, "UTF-16LE"); + if (!header.startsWith("Lineage2Ver")) + { + throw new IOException("Can not read the dat file : wrong header"); + } + if (header.endsWith("111") || header.endsWith("120")) + { + return; + } + if (header.endsWith("211") || header.endsWith("212")) + { + return; + } + if (header.endsWith("311")) + { + return; + } + if (header.endsWith("411") || header.endsWith("412") || header.endsWith("413") || header.endsWith("414")) + { + if (fis.available() < 20) + { + throw new IOException("Can not read the dat file : too small"); + } + } + else + { + throw new IOException("Can not read the dat file : unknown header : '" + header + "'"); + } + fis.close(); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowFishDatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowFishDatCrypter.java new file mode 100644 index 0000000000..5e3331c609 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowFishDatCrypter.java @@ -0,0 +1,78 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.clientcryptor.crypt; + +import java.nio.ByteBuffer; + +public class BlowFishDatCrypter extends DatCrypter +{ + private boolean encrypt = false; + private final BlowfishEngine blowfish = new BlowfishEngine(); + + public BlowFishDatCrypter(int code, String key, boolean deCrypt) + { + super(code); + encrypt = !deCrypt; + blowfish.init(encrypt, key.getBytes()); + } + + @Override + public ByteBuffer decryptResult() + { + return null; + } + + @Override + public ByteBuffer encryptResult() + { + return null; + } + + @Override + public void update(byte[] b) + { + } + + @Override + public int getChunkSize(int available) + { + return available; + } + + @Override + public int getSkipSize() + { + return 0; + } + + @Override + public boolean isLock() + { + return false; + } + + @Override + public boolean isEncrypt() + { + return encrypt; + } + + @Override + public void unlock() + { + } +} diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowfishEngine.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowfishEngine.java new file mode 100644 index 0000000000..654f36cbc3 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowfishEngine.java @@ -0,0 +1,1214 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.clientcryptor.crypt; + +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.ShortBufferException; + +public final class BlowfishEngine +{ + private static final int[] KP = new int[] + { + 608135816, + -2052912941, + 320440878, + 57701188, + -1542899678, + 698298832, + 137296536, + -330404727, + 1160258022, + 953160567, + -1101764913, + 887688300, + -1062458953, + -914599715, + 1065670069, + -1253635817, + -1843997223, + -1988494565 + }; + private static final int[] KS0 = new int[] + { + -785314906, + -1730169428, + 805139163, + -803545161, + -1193168915, + 1780907670, + -1166241723, + -248741991, + 614570311, + -1282315017, + 134345442, + -2054226922, + 1667834072, + 1901547113, + -1537671517, + -191677058, + 227898511, + 1921955416, + 1904987480, + -2112533778, + 2069144605, + -1034266187, + -1674521287, + 720527379, + -976113629, + 677414384, + -901678824, + -1193592593, + -1904616272, + 1614419982, + 1822297739, + -1340175810, + -686458943, + -1120842969, + 2024746970, + 1432378464, + -430627341, + -1437226092, + 1464375394, + 1676153920, + 1439316330, + 715854006, + -1261675468, + 289532110, + -1588296017, + 2087905683, + -1276242927, + 1668267050, + 732546397, + 1947742710, + -832815594, + -1685613794, + -1344882125, + 1814351708, + 2050118529, + 680887927, + 999245976, + 1800124847, + -994056165, + 1713906067, + 1641548236, + -81679983, + 1216130144, + 1575780402, + -276538019, + -377129551, + -601480446, + -345695352, + 596196993, + -745100091, + 258830323, + -2081144263, + 772490370, + -1534844924, + 1774776394, + -1642095778, + 566650946, + -152474470, + 1728879713, + -1412200208, + 1783734482, + -665571480, + -1777359064, + -1420741725, + 1861159788, + 326777828, + -1170476976, + 2130389656, + -1578015459, + 967770486, + 1724537150, + -2109534584, + -1930525159, + 1164943284, + 2105845187, + 998989502, + -529566248, + -2050940813, + 1075463327, + 1455516326, + 1322494562, + 910128902, + 469688178, + 1117454909, + 936433444, + -804646328, + -619713837, + 1240580251, + 122909385, + -2137449605, + 634681816, + -152510729, + -469872614, + -1233564613, + -1754472259, + 79693498, + -1045868618, + 1084186820, + 1583128258, + 426386531, + 1761308591, + 1047286709, + 322548459, + 995290223, + 1845252383, + -1691314900, + -863943356, + -1352745719, + -1092366332, + -567063811, + 1712269319, + 422464435, + -1060394921, + 1170764815, + -771006663, + -1177289765, + 1434042557, + 442511882, + -694091578, + 1076654713, + 1738483198, + -81812532, + -1901729288, + -617471240, + 1014306527, + -43947243, + 793779912, + -1392160085, + 842905082, + -48003232, + 1395751752, + 1040244610, + -1638115397, + -898659168, + 445077038, + -552113701, + -717051658, + 679411651, + -1402522938, + -1940957837, + 1767581616, + -1144366904, + -503340195, + -1192226400, + 284835224, + -48135240, + 1258075500, + 768725851, + -1705778055, + -1225243291, + -762426948, + 1274779536, + -505548070, + -1530167757, + 1660621633, + -823867672, + -283063590, + 913787905, + -797008130, + 737222580, + -1780753843, + -1366257256, + -357724559, + 1804850592, + -795946544, + -1345903136, + -1908647121, + -1904896841, + -1879645445, + -233690268, + -2004305902, + -1878134756, + 1336762016, + 1754252060, + -774901359, + -1280786003, + 791618072, + -1106372745, + -361419266, + -1962795103, + -442446833, + -1250986776, + 413987798, + -829824359, + -1264037920, + -49028937, + 2093235073, + -760370983, + 375366246, + -2137688315, + -1815317740, + 555357303, + -424861595, + 2008414854, + -950779147, + -73583153, + -338841844, + 2067696032, + -700376109, + -1373733303, + 2428461, + 544322398, + 577241275, + 1471733935, + 610547355, + -267798242, + 1432588573, + 1507829418, + 2025931657, + -648391809, + 545086370, + 48609733, + -2094660746, + 1653985193, + 298326376, + 1316178497, + -1287180854, + 2064951626, + 458293330, + -1705826027, + -703637697, + -1130641692, + 727753846, + -2115603456, + 146436021, + 1461446943, + -224990101, + 705550613, + -1235000031, + -407242314, + -13368018, + -981117340, + 1404054877, + -1449160799, + 146425753, + 1854211946 + }; + private static final int[] KS1 = new int[] + { + 1266315497, + -1246549692, + -613086930, + -1004984797, + -1385257296, + 1235738493, + -1662099272, + -1880247706, + -324367247, + 1771706367, + 1449415276, + -1028546847, + 422970021, + 1963543593, + -1604775104, + -468174274, + 1062508698, + 1531092325, + 1804592342, + -1711849514, + -1580033017, + -269995787, + 1294809318, + -265986623, + 1289560198, + -2072974554, + 1669523910, + 35572830, + 157838143, + 1052438473, + 1016535060, + 1802137761, + 1753167236, + 1386275462, + -1214491899, + -1437595849, + 1040679964, + 2145300060, + -1904392980, + 1461121720, + -1338320329, + -263189491, + -266592508, + 33600511, + -1374882534, + 1018524850, + 629373528, + -603381315, + -779021319, + 2091462646, + -1808644237, + 586499841, + 988145025, + 935516892, + -927631820, + -1695294041, + -1455136442, + 265290510, + -322386114, + -1535828415, + -499593831, + 1005194799, + 847297441, + 406762289, + 1314163512, + 1332590856, + 1866599683, + -167115585, + 750260880, + 613907577, + 1450815602, + -1129346641, + -560302305, + -644675568, + -1282691566, + -590397650, + 1427272223, + 778793252, + 1343938022, + -1618686585, + 2052605720, + 1946737175, + -1130390852, + -380928628, + -327488454, + -612033030, + 1661551462, + -1000029230, + -283371449, + 840292616, + -582796489, + 616741398, + 312560963, + 711312465, + 1351876610, + 322626781, + 1910503582, + 271666773, + -2119403562, + 1594956187, + 70604529, + -677132437, + 1007753275, + 1495573769, + -225450259, + -1745748998, + -1631928532, + 504708206, + -2031925904, + -353800271, + -2045878774, + 1514023603, + 1998579484, + 1312622330, + 694541497, + -1712906993, + -2143385130, + 1382467621, + 776784248, + -1676627094, + -971698502, + -1797068168, + -1510196141, + 503983604, + -218673497, + 907881277, + 423175695, + 432175456, + 1378068232, + -149744970, + -340918674, + -356311194, + -474200683, + -1501837181, + -1317062703, + 26017576, + -1020076561, + -1100195163, + 1700274565, + 1756076034, + -288447217, + -617638597, + 720338349, + 1533947780, + 354530856, + 688349552, + -321042571, + 1637815568, + 332179504, + -345916010, + 53804574, + -1442618417, + -1250730864, + 1282449977, + -711025141, + -877994476, + -288586052, + 1617046695, + -1666491221, + -1292663698, + 1686838959, + 431878346, + -1608291911, + 1700445008, + 1080580658, + 1009431731, + 832498133, + -1071531785, + -1688990951, + -2023776103, + -1778935426, + 1648197032, + -130578278, + -1746719369, + 300782431, + 375919233, + 238389289, + -941219882, + -1763778655, + 2019080857, + 1475708069, + 455242339, + -1685863425, + 448939670, + -843904277, + 1395535956, + -1881585436, + 1841049896, + 1491858159, + 885456874, + -30872223, + -293847949, + 1565136089, + -396052509, + 1108368660, + 540939232, + 1173283510, + -1549095958, + -613658859, + -87339056, + -951913406, + -278217803, + 1699691293, + 1103962373, + -669091426, + -2038084153, + -464828566, + 1031889488, + -815619598, + 1535977030, + -58162272, + -1043876189, + 2132092099, + 1774941330, + 1199868427, + 1452454533, + 157007616, + -1390851939, + 342012276, + 595725824, + 1480756522, + 206960106, + 497939518, + 591360097, + 863170706, + -1919713727, + -698356495, + 1814182875, + 2094937945, + -873565088, + 1082520231, + -831049106, + -1509457788, + 435703966, + -386934699, + 1641649973, + -1452693590, + -989067582, + 1510255612, + -2146710820, + -1639679442, + -1018874748, + -36346107, + 236887753, + -613164077, + 274041037, + 1734335097, + -479771840, + -976997275, + 1899903192, + 1026095262, + -244449504, + 356393447, + -1884275382, + -421290197, + -612127241 + }; + private static final int[] KS2 = new int[] + { + -381855128, + -1803468553, + -162781668, + -1805047500, + 1091903735, + 1979897079, + -1124832466, + -727580568, + -737663887, + 857797738, + 1136121015, + 1342202287, + 507115054, + -1759230650, + 337727348, + -1081374656, + 1301675037, + -1766485585, + 1895095763, + 1721773893, + -1078195732, + 62756741, + 2142006736, + 835421444, + -1762973773, + 1442658625, + -635090970, + -1412822374, + 676362277, + 1392781812, + 170690266, + -373920261, + 1759253602, + -683120384, + 1745797284, + 664899054, + 1329594018, + -393761396, + -1249058810, + 2062866102, + -1429332356, + -751345684, + -830954599, + 1080764994, + 553557557, + -638351943, + -298199125, + 991055499, + 499776247, + 1265440854, + 648242737, + -354183246, + 980351604, + -581221582, + 1749149687, + -898096901, + -83167922, + -654396521, + 1161844396, + -1169648345, + 1431517754, + 545492359, + -26498633, + -795437749, + 1437099964, + -1592419752, + -861329053, + -1713251533, + -1507177898, + 1060185593, + 1593081372, + -1876348548, + -34019326, + 69676912, + -2135222948, + 86519011, + -1782508216, + -456757982, + 1220612927, + -955283748, + 133810670, + 1090789135, + 1078426020, + 1569222167, + 845107691, + -711212847, + -222510705, + 1091646820, + 628848692, + 1613405280, + -537335645, + 526609435, + 236106946, + 48312990, + -1352249391, + -892239595, + 1797494240, + 859738849, + 992217954, + -289490654, + -2051890674, + -424014439, + -562951028, + 765654824, + -804095931, + -1783130883, + 1685915746, + -405998096, + 1414112111, + -2021832454, + -1013056217, + -214004450, + 172450625, + -1724973196, + 980381355, + -185008841, + -1475158944, + -1578377736, + -1726226100, + -613520627, + -964995824, + 1835478071, + 660984891, + -590288892, + -248967737, + -872349789, + -1254551662, + 1762651403, + 1719377915, + -824476260, + -1601057013, + -652910941, + -1156370552, + 1364962596, + 2073328063, + 1983633131, + 926494387, + -871278215, + -2144935273, + -198299347, + 1749200295, + -966120645, + 309677260, + 2016342300, + 1779581495, + -1215147545, + 111262694, + 1274766160, + 443224088, + 298511866, + 1025883608, + -488520759, + 1145181785, + 168956806, + -653464466, + -710153686, + 1689216846, + -628709281, + -1094719096, + 1692713982, + -1648590761, + -252198778, + 1618508792, + 1610833997, + -771914938, + -164094032, + 2001055236, + -684262196, + -2092799181, + -266425487, + -1333771897, + 1006657119, + 2006996926, + -1108824540, + 1430667929, + -1084739999, + 1314452623, + -220332638, + -193663176, + -2021016126, + 1399257539, + -927756684, + -1267338667, + 1190975929, + 2062231137, + -1960976508, + -2073424263, + -1856006686, + 1181637006, + 548689776, + -1932175983, + -922558900, + -1190417183, + -1149106736, + 296247880, + 1970579870, + -1216407114, + -525738999, + 1714227617, + -1003338189, + -396747006, + 166772364, + 1251581989, + 493813264, + 448347421, + 195405023, + -1584991729, + 677966185, + -591930749, + 1463355134, + -1578971493, + 1338867538, + 1343315457, + -1492745222, + -1610435132, + 233230375, + -1694987225, + 2000651841, + -1017099258, + 1638401717, + -266896856, + -1057650976, + 6314154, + 819756386, + 300326615, + 590932579, + 1405279636, + -1027467724, + -1144263082, + -1866680610, + -335774303, + -833020554, + 1862657033, + 1266418056, + 963775037, + 2089974820, + -2031914401, + 1917689273, + 448879540, + -744572676, + -313240200, + 150775221, + -667058989, + 1303187396, + 508620638, + -1318983944, + -1568336679, + 1817252668, + 1876281319, + 1457606340, + 908771278, + -574175177, + -677760460, + -1838972398, + 1729034894, + 1080033504 + }; + private static final int[] KS3 = new int[] + { + 976866871, + -738527793, + -1413318857, + 1522871579, + 1555064734, + 1336096578, + -746444992, + -1715692610, + -720269667, + -1089506539, + -701686658, + -956251013, + -1215554709, + 564236357, + -1301368386, + 1781952180, + 1464380207, + -1131123079, + -962365742, + 1699332808, + 1393555694, + 1183702653, + -713881059, + 1288719814, + 691649499, + -1447410096, + -1399511320, + -1101077756, + -1577396752, + 1781354906, + 1676643554, + -1702433246, + -1064713544, + 1126444790, + -1524759638, + -1661808476, + -2084544070, + -1679201715, + -1880812208, + -1167828010, + 673620729, + -1489356063, + 1269405062, + -279616791, + -953159725, + -145557542, + 1057255273, + 2012875353, + -2132498155, + -2018474495, + -1693849939, + 993977747, + -376373926, + -1640704105, + 753973209, + 36408145, + -1764381638, + 25011837, + -774947114, + 2088578344, + 530523599, + -1376601957, + 1524020338, + 1518925132, + -534139791, + -535190042, + 1202760957, + -309069157, + -388774771, + 674977740, + -120232407, + 2031300136, + 2019492241, + -311074731, + -141160892, + -472686964, + 352677332, + -1997247046, + 60907813, + 90501309, + -1007968747, + 1016092578, + -1759044884, + -1455814870, + 457141659, + 509813237, + -174299397, + 652014361, + 1966332200, + -1319764491, + 55981186, + -1967506245, + 676427537, + -1039476232, + -1412673177, + -861040033, + 1307055953, + 942726286, + 933058658, + -1826555503, + -361066302, + -79791154, + 1361170020, + 2001714738, + -1464409218, + -1020707514, + 1222529897, + 1679025792, + -1565652976, + -580013532, + 1770335741, + 151462246, + -1281735158, + 1682292957, + 1483529935, + 471910574, + 1539241949, + 458788160, + -858652289, + 1807016891, + -576558466, + 978976581, + 1043663428, + -1129001515, + 1927990952, + -94075717, + -1922690386, + -1086558393, + -761535389, + 1412390302, + -1362987237, + -162634896, + 1947078029, + -413461673, + -126740879, + -1353482915, + 1077988104, + 1320477388, + 886195818, + 18198404, + -508558296, + -1785185763, + 112762804, + -831610808, + 1866414978, + 891333506, + 18488651, + 661792760, + 1628790961, + -409780260, + -1153795797, + 876946877, + -1601685023, + 1372485963, + 791857591, + -1608533303, + -534984578, + -1127755274, + -822013501, + -1578587449, + 445679433, + -732971622, + -790962485, + -720709064, + 54117162, + -963561881, + -1913048708, + -525259953, + -140617289, + 1140177722, + -220915201, + 668550556, + -1080614356, + 367459370, + 261225585, + -1684794075, + -85617823, + -826893077, + -1029151655, + 314222801, + -1228863650, + -486184436, + 282218597, + -888953790, + -521376242, + 379116347, + 1285071038, + 846784868, + -1625320142, + -523005217, + -744475605, + -1989021154, + 453669953, + 1268987020, + -977374944, + -1015663912, + -550133875, + -1684459730, + -435458233, + 266596637, + -447948204, + 517658769, + -832407089, + -851542417, + 370717030, + -47440635, + -2070949179, + -151313767, + -182193321, + -1506642397, + -1817692879, + 1456262402, + -1393524382, + 1517677493, + 1846949527, + -1999473716, + -560569710, + -2118563376, + 1280348187, + 1908823572, + -423180355, + 846861322, + 1172426758, + -1007518822, + -911584259, + 1655181056, + -1155153950, + 901632758, + 1897031941, + -1308360158, + -1228157060, + -847864789, + 1393639104, + 373351379, + 950779232, + 625454576, + -1170726756, + -146354570, + 2007998917, + 544563296, + -2050228658, + -1964470824, + 2058025392, + 1291430526, + 424198748, + 50039436, + 29584100, + -689184263, + -1865090967, + -1503863136, + 1057563949, + -1039604065, + -1219600078, + -831004069, + 1469046755, + 985887462 + }; + private final int[] S0 = new int[256]; + private final int[] S1 = new int[256]; + private final int[] S2 = new int[256]; + private final int[] S3 = new int[256]; + private final int[] P = new int[18]; + private boolean encrypting = false; + private byte[] workingKey = null; + + public void init(boolean encryption, byte[] key) + { + this.encrypting = encryption; + this.workingKey = key; + this.setKey(this.workingKey); + } + + public final int processBlock(byte[] in, int inOff, byte[] out, int outOff) throws IllegalBlockSizeException, ShortBufferException + { + if (this.workingKey == null) + { + throw new IllegalStateException("Blowfish not initialised"); + } + if ((inOff + 8) > in.length) + { + throw new IllegalBlockSizeException("input buffer too short"); + } + if ((outOff + 8) > out.length) + { + throw new ShortBufferException("output buffer too short"); + } + if (this.encrypting) + { + this.encryptBlock(in, inOff, out, outOff); + } + else + { + this.decryptBlock(in, inOff, out, outOff); + } + return 8; + } + + private int F(int x) + { + return ((this.S0[x >>> 24] + this.S1[(x >>> 16) & 255]) ^ this.S2[(x >>> 8) & 255]) + this.S3[x & 255]; + } + + private void processTable(int xl, int xr, int[] table) + { + int size = table.length; + for (int s = 0; s < size; s += 2) + { + xl ^= this.P[0]; + for (int i = 1; i < 16; i += 2) + { + xl ^= this.F(xr ^= this.F(xl) ^ this.P[i]) ^ this.P[i + 1]; + } + table[s] = xr ^= this.P[17]; + table[s + 1] = xl; + xr = xl; + xl = table[s]; + } + } + + private void setKey(byte[] key) + { + System.arraycopy(KS0, 0, this.S0, 0, 256); + System.arraycopy(KS1, 0, this.S1, 0, 256); + System.arraycopy(KS2, 0, this.S2, 0, 256); + System.arraycopy(KS3, 0, this.S3, 0, 256); + System.arraycopy(KP, 0, this.P, 0, 18); + int keyLength = key.length; + int keyIndex = 0; + int i = 0; + while (i < 18) + { + int data = 0; + for (int j = 0; j < 4; ++j) + { + data = (data << 8) | (key[keyIndex++] & 255); + if (keyIndex < keyLength) + { + continue; + } + keyIndex = 0; + } + int[] arrn = this.P; + int n = i++; + arrn[n] = arrn[n] ^ data; + } + this.processTable(0, 0, this.P); + this.processTable(this.P[16], this.P[17], this.S0); + this.processTable(this.S0[254], this.S0[255], this.S1); + this.processTable(this.S1[254], this.S1[255], this.S2); + this.processTable(this.S2[254], this.S2[255], this.S3); + } + + private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) + { + int xl = this.BytesTo32bits(src, srcIndex); + int xr = this.BytesTo32bits(src, srcIndex + 4); + xl ^= this.P[0]; + for (int i = 1; i < 16; i += 2) + { + xl ^= this.F(xr ^= this.F(xl) ^ this.P[i]) ^ this.P[i + 1]; + } + this.Bits32ToBytes(xr ^= this.P[17], dst, dstIndex); + this.Bits32ToBytes(xl, dst, dstIndex + 4); + } + + private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) + { + int xl = this.BytesTo32bits(src, srcIndex); + int xr = this.BytesTo32bits(src, srcIndex + 4); + xl ^= this.P[17]; + for (int i = 16; i > 0; i -= 2) + { + xl ^= this.F(xr ^= this.F(xl) ^ this.P[i]) ^ this.P[i - 1]; + } + this.Bits32ToBytes(xr ^= this.P[0], dst, dstIndex); + this.Bits32ToBytes(xl, dst, dstIndex + 4); + } + + private int BytesTo32bits(byte[] b, int i) + { + return ((b[i + 3] & 255) << 24) | ((b[i + 2] & 255) << 16) | ((b[i + 1] & 255) << 8) | (b[i] & 255); + } + + private void Bits32ToBytes(int in, byte[] b, int offset) + { + b[offset] = (byte) in; + b[offset + 1] = (byte) (in >> 8); + b[offset + 2] = (byte) (in >> 16); + b[offset + 3] = (byte) (in >> 24); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DESDatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DESDatCrypter.java new file mode 100644 index 0000000000..b1512a475c --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DESDatCrypter.java @@ -0,0 +1,122 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.clientcryptor.crypt; + +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.DESKeySpec; + +public class DESDatCrypter extends DatCrypter +{ + private ByteArrayOutputStream _result; + private final boolean encrypt; + private final Cipher _cipher; + + public DESDatCrypter(int code, String sKey, boolean deCrypt) throws Exception + { + super(code); + encrypt = !deCrypt; + byte[] key = sKey.getBytes(); + byte[] keyXor = new byte[key.length]; + for (int i = 0; i < key.length; ++i) + { + byte[] arrby = keyXor; + int n = i % 8; + arrby[n] = (byte) (arrby[n] ^ key[i]); + } + DESKeySpec dks = new DESKeySpec(keyXor); + SecretKeyFactory skf = SecretKeyFactory.getInstance("DES"); + SecretKey desKey = skf.generateSecret(dks); + _cipher = Cipher.getInstance("DES/ECB/NoPadding"); + _cipher.init(deCrypt ? 2 : 1, desKey); + } + + @Override + public ByteBuffer decryptResult() + { + return ByteBuffer.wrap(_result.toByteArray()); + } + + @Override + public ByteBuffer encryptResult() + { + return ByteBuffer.wrap(_result.toByteArray()); + } + + @Override + public void update(byte[] bArray) + { + try + { + if (!encrypt) + { + int size; + _result = new ByteArrayOutputStream(bArray.length); + byte[] bytes = new byte[8]; + for (int position = 0; position < bArray.length; position += size) + { + size = Math.min(8, bArray.length - position); + System.arraycopy(bArray, position, bytes, 0, size); + _result.write(size == 8 ? _cipher.doFinal(bytes) : bytes, 0, size); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @Override + public int getChunkSize(int available) + { + return available; + } + + @Override + public int getSkipSize() + { + return 0; + } + + @Override + public boolean isLock() + { + return false; + } + + @Override + public boolean isEncrypt() + { + return encrypt; + } + + @Override + public void unlock() + { + } + + @Override + public void aquire() + { + super.aquire(); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DatCrypter.java new file mode 100644 index 0000000000..53be10a8d8 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DatCrypter.java @@ -0,0 +1,92 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.clientcryptor.crypt; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.locks.ReentrantLock; + +public abstract class DatCrypter +{ + private final ReentrantLock _lock = new ReentrantLock(true); + private final int code; + private boolean useStructure; + private final List fileEndNames = new ArrayList<>(); + + public DatCrypter(int code) + { + this.code = code; + } + + public abstract void update(byte[] var1); + + public abstract ByteBuffer decryptResult(); + + public abstract ByteBuffer encryptResult(); + + public abstract int getChunkSize(int var1); + + public abstract int getSkipSize(); + + public abstract boolean isLock(); + + public boolean checkAquired() + { + return _lock.isHeldByCurrentThread(); + } + + public void aquire() + { + _lock.lock(); + } + + public void release() + { + _lock.unlock(); + } + + public abstract boolean isEncrypt(); + + public abstract void unlock(); + + public int getCode() + { + return code; + } + + public void addFileExtension(String n) + { + fileEndNames.addAll(Arrays.asList(n.split(";"))); + } + + public boolean checkFileExtension(String n) + { + return n.contains(".") && fileEndNames.contains(n.split("\\.")[1]); + } + + public boolean isUseStructure() + { + return useStructure; + } + + public void setUseStructure(boolean useStructure) + { + this.useStructure = useStructure; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/RSADatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/RSADatCrypter.java new file mode 100644 index 0000000000..d7a2136263 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/RSADatCrypter.java @@ -0,0 +1,231 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.clientcryptor.crypt; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.nio.ByteBuffer; +import java.security.KeyFactory; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.RSAPrivateKeySpec; +import java.security.spec.RSAPublicKeySpec; +import java.util.Arrays; +import java.util.zip.Deflater; +import java.util.zip.DeflaterOutputStream; +import java.util.zip.Inflater; +import java.util.zip.InflaterInputStream; + +import javax.crypto.Cipher; + +import com.l2jmobius.util.DebugUtil; +import com.l2jmobius.util.Util; + +public class RSADatCrypter extends DatCrypter +{ + private Cipher _cipher; + private ByteArrayOutputStream _result; + private boolean encrypt = false; + private boolean _errorLock = false; + + public RSADatCrypter(int code, String modulus, String exp, boolean deCrypt) + { + super(code); + try + { + _cipher = Cipher.getInstance("RSA/ECB/nopadding"); + if (deCrypt) + { + RSAPublicKeySpec keyspec = new RSAPublicKeySpec(new BigInteger(modulus, 16), new BigInteger(exp, 16)); + RSAPublicKey rsaKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(keyspec); + _cipher.init(2, rsaKey); + } + else + { + encrypt = true; + RSAPrivateKeySpec keyspec = new RSAPrivateKeySpec(new BigInteger(modulus, 16), new BigInteger(exp, 16)); + RSAPrivateKey rsaKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(keyspec); + _cipher.init(1, rsaKey); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @Override + public ByteBuffer decryptResult() + { + if (!checkAquired()) + { + throw new IllegalStateException("Dont even think about using a DatCrypter that you didnt aquired"); + } + byte[] compressed = _result.toByteArray(); + int inflatedSize = compressed[0] & 255; + inflatedSize += (compressed[1] << 8) & 65280; + inflatedSize += (compressed[2] << 16) & 16711680; + inflatedSize += (compressed[3] << 24) & -16777216; + ByteArrayInputStream bais = new ByteArrayInputStream(compressed, 4, compressed.length - 4); + InflaterInputStream iis = new InflaterInputStream(bais, new Inflater()); + ByteArrayOutputStream baos = new ByteArrayOutputStream(128); + byte[] inflatedResult = new byte[128]; + try + { + int len; + while ((len = iis.read(inflatedResult)) > 0) + { + baos.write(inflatedResult, 0, len); + } + } + catch (IOException e) + { + e.printStackTrace(); + } + if (baos.size() != inflatedSize) + { + DebugUtil.getLogger().error("[RSADatCrypter] Hum inflated result doesnt have the expected length..(" + baos.size() + "!=" + inflatedSize + ")"); + } + return ByteBuffer.wrap(baos.toByteArray()); + } + + @Override + public ByteBuffer encryptResult() + { + if (!checkAquired()) + { + throw new IllegalStateException("Dont even think about using a DatCrypter that you didnt aquired"); + } + ByteArrayOutputStream result = new ByteArrayOutputStream(); + try + { + int len; + ByteArrayInputStream input = new ByteArrayInputStream(_result.toByteArray()); + byte[] buffer = new byte[124]; + byte[] block = new byte[128]; + while ((len = input.read(buffer)) > 0) + { + Arrays.fill(block, (byte) 0); + block[0] = (byte) ((len >> 24) & 255); + block[1] = (byte) ((len >> 16) & 255); + block[2] = (byte) ((len >> 8) & 255); + block[3] = (byte) (len & 255); + System.arraycopy(buffer, 0, block, 128 - len - ((124 - len) % 4), len); + result.write(_cipher.doFinal(block)); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + return ByteBuffer.wrap(result.toByteArray()); + } + + @Override + public void update(byte[] b) + { + if (!checkAquired()) + { + throw new IllegalStateException("Dont even think about using a DatCrypter that you didnt aquired"); + } + try + { + if (!encrypt) + { + byte[] chunk = _cipher.doFinal(b); + int size = chunk[3]; + size += (chunk[2] << 8) & 65280; + size += (chunk[1] << 16) & 16711680; + int pad = (-size & 1) + (-(size += (chunk[0] << 24) & -16777216) & 2); + DebugUtil.debug("Size:" + size + " pad:" + pad); + if (size > 128) + { + _errorLock = true; + return; + } + _result.write(chunk, 128 - size - pad, size); + DebugUtil.debug("--- BLOCK:\n" + Util.printData(chunk) + "-----"); + } + else + { + try + { + ByteArrayOutputStream s = new ByteArrayOutputStream(b.length); + DeflaterOutputStream dos = new DeflaterOutputStream(s, new Deflater()); + dos.write(b); + dos.finish(); + dos.close(); + int l = b.length; + _result = new ByteArrayOutputStream(10 + s.toByteArray().length); + _result.write(l & 255); + _result.write((l & 65280) >> 8); + _result.write((l & 16711680) >> 16); + _result.write((l & -16777216) >> 24); + _result.write(s.toByteArray()); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + _errorLock = true; + } + } + + @Override + public void aquire() + { + super.aquire(); + _result = new ByteArrayOutputStream(128); + } + + @Override + public boolean isEncrypt() + { + return encrypt; + } + + @Override + public int getChunkSize(int available) + { + return 128; + } + + @Override + public int getSkipSize() + { + return 20; + } + + @Override + public boolean isLock() + { + return _errorLock; + } + + @Override + public void unlock() + { + _errorLock = false; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/XorDatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/XorDatCrypter.java new file mode 100644 index 0000000000..e1e7c33f8c --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/XorDatCrypter.java @@ -0,0 +1,91 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.clientcryptor.crypt; + +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; + +public class XorDatCrypter extends DatCrypter +{ + private ByteArrayOutputStream _result; + private final boolean encrypt; + private final int xorKey; + + public XorDatCrypter(int code, int key, boolean deCrypt) + { + super(code); + encrypt = !deCrypt; + xorKey = key; + } + + @Override + public ByteBuffer decryptResult() + { + return ByteBuffer.wrap(_result.toByteArray()); + } + + @Override + public ByteBuffer encryptResult() + { + return ByteBuffer.wrap(_result.toByteArray()); + } + + @Override + public void update(byte[] bArray) + { + for (byte b : bArray) + { + _result.write(b ^ xorKey); + } + } + + @Override + public int getChunkSize(int available) + { + return 1; + } + + @Override + public int getSkipSize() + { + return 0; + } + + @Override + public boolean isLock() + { + return false; + } + + @Override + public boolean isEncrypt() + { + return encrypt; + } + + @Override + public void unlock() + { + } + + @Override + public void aquire() + { + super.aquire(); + _result = new ByteArrayOutputStream(128); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/config/ConfigDebug.java b/L2ClientDat/java/com/l2jmobius/config/ConfigDebug.java new file mode 100644 index 0000000000..c28318e47e --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/config/ConfigDebug.java @@ -0,0 +1,52 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.config; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +import com.l2jmobius.util.DebugUtil; + +import jfork.nproperty.Cfg; +import jfork.nproperty.CfgIgnore; +import jfork.nproperty.ConfigParser; + +@Cfg +public class ConfigDebug extends ConfigParser +{ + @CfgIgnore + private static final ConfigDebug _instance = new ConfigDebug(); + public static boolean DAT_ADD_END_BYTES = true; + public static boolean DAT_DEBUG_MSG = false; + public static boolean DAT_DEBUG_POS = false; + public static int DAT_DEBUG_POS_LIMIT = 100000; + public static boolean DAT_REPLACEMENT_NAMES = true; + public static boolean ENCRYPT = true; + public static boolean SAVE_DECODE = false; + + public static void load() + { + try + { + ConfigParser.parse((_instance), "./config/config_debug.ini"); + } + catch (IOException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) + { + DebugUtil.getLogger().error("Failed to load configuration file.", e); + } + } +} diff --git a/L2ClientDat/java/com/l2jmobius/config/ConfigWindow.java b/L2ClientDat/java/com/l2jmobius/config/ConfigWindow.java new file mode 100644 index 0000000000..68474fb660 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/config/ConfigWindow.java @@ -0,0 +1,78 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.config; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.Properties; + +import com.l2jmobius.util.DebugUtil; + +import jfork.nproperty.Cfg; +import jfork.nproperty.CfgIgnore; +import jfork.nproperty.ConfigParser; + +@Cfg +public class ConfigWindow extends ConfigParser +{ + @CfgIgnore + private static final ConfigWindow _instance = new ConfigWindow(); + @CfgIgnore + private static final String PATH = "./config/config_window.ini"; + public static String FILE_OPEN_CURRENT_DIRECTORY_UNPACK = "."; + public static String FILE_OPEN_CURRENT_DIRECTORY_PACK = "."; + public static String FILE_OPEN_CURRENT_DIRECTORY = "."; + public static String FILE_SAVE_CURRENT_DIRECTORY = "."; + public static String CURRENT_CHRONICLE = ""; + public static int WINDOW_HEIGHT = 600; + public static int WINDOW_WIDTH = 800; + public static String CURRENT_ENCRYPT = "."; + public static String CURRENT_DECRYPT = "."; + public static String LAST_FILE_SELECTED = "."; + + public static void load() + { + try + { + ConfigParser.parse((_instance), PATH); + } + catch (IOException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) + { + DebugUtil.getLogger().error("Failed to load configuration file.", e); + } + } + + public static void save(String key, String var) + { + try + { + Properties props = new Properties(); + props.load(new FileInputStream(PATH)); + props.setProperty(key, var); + FileOutputStream output = new FileOutputStream(PATH); + props.store(output, "Saved settings"); + output.close(); + ConfigWindow.load(); + } + catch (Exception props) + { + // empty catch block + } + } +} diff --git a/L2ClientDat/java/com/l2jmobius/data/GameDataName.java b/L2ClientDat/java/com/l2jmobius/data/GameDataName.java new file mode 100644 index 0000000000..64321a7ab5 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/data/GameDataName.java @@ -0,0 +1,238 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.data; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import com.l2jmobius.L2ClientDat; +import com.l2jmobius.clientcryptor.DatFile; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.config.ConfigDebug; +import com.l2jmobius.util.ByteReader; +import com.l2jmobius.util.ByteWriter; +import com.l2jmobius.util.Util; +import com.l2jmobius.xml.ParamNode; + +public class GameDataName +{ + private static final byte[] endFileBytes = new byte[] + { + 12, + 83, + 97, + 102, + 101, + 80, + 97, + 99, + 107, + 97, + 103, + 101, + 0 + }; + private final Map names = new HashMap<>(); + private final Map nameHash = new HashMap<>(); + private final Map nameLowHash = new HashMap<>(); + + private void load(File currentFile, DatCrypter decCrypter) throws Exception + { + names.clear(); + nameHash.clear(); + nameLowHash.clear(); + if (decCrypter.isEncrypt()) + { + File file = new File(currentFile.getParent(), "L2GameDataName.txt"); + if (file.exists()) + { + List list = Files.readAllLines(file.toPath()); + for (int i = 0; i < list.size(); ++i) + { + String str = list.get(i); + Map map = Util.stringToMap(str); + String name = map.get("name"); + name = name.substring(1, name.length() - 1); + names.put(i, name); + nameHash.put(name, i); + nameLowHash.put(name.toLowerCase(), i); + } + L2ClientDat.addLogConsole("GameDataName: Load " + names.size() + " count.", true); + } + } + else + { + File file = new File(currentFile.getParent(), "L2GameDataName.dat"); + FileInputStream fis = new FileInputStream(file); + if (fis.available() < 28) + { + L2ClientDat.addLogConsole(file.getName() + " The file is too small.", true); + fis.close(); + return; + } + byte[] head = new byte[28]; + fis.read(head); + fis.close(); + String header = new String(head, "UTF-16LE"); + if (!header.startsWith("Lineage2Ver")) + { + L2ClientDat.addLogConsole("GameDataName: File " + file.getName() + " not encrypted. Skip decrypt.", true); + return; + } + if (Integer.valueOf(header.substring(11)).intValue() != decCrypter.getCode()) + { + L2ClientDat.addLogConsole("GameDataName: File " + file.getName() + " encrypted code: " + header + ". Skip decrypt.", true); + return; + } + L2ClientDat.addLogConsole("Unpacking [" + file.getName() + "]", true); + DatFile dat = new DatFile(file.getAbsolutePath()); + dat.decrypt(decCrypter); + ByteBuffer buff = dat.getBuff(); + int size = ByteReader.readUInt(buff); + for (int i = 0; i < size; ++i) + { + String name = ByteReader.readUtfString(buff, false); + if (name.contains("[") || name.contains("]")) + { + L2ClientDat.addLogConsole("GameDataName: Error index: " + i + " string: " + name, true); + } + names.put(i, name); + nameHash.put(name, i); + nameLowHash.put(name.toLowerCase(), i); + } + L2ClientDat.addLogConsole("GameDataName: Load " + names.size() + " count.", true); + } + } + + public String getString(File currentFile, DatCrypter crypter, int index) throws Exception + { + String val; + if (names.isEmpty()) + { + load(currentFile, crypter); + } + if (!names.containsKey(index)) + { + L2ClientDat.addLogConsole("GameDataName: Not found index: " + index, true); + } + if ((val = names.getOrDefault(index, String.valueOf(index))).isEmpty()) + { + L2ClientDat.addLogConsole("GameDataName: String name Empty!!! file: " + currentFile.getName(), true); + } + return "[" + val + "]"; + } + + public synchronized int getId(File currentFile, DatCrypter crypter, ParamNode node, String str) throws Exception + { + String low; + if (!str.startsWith("[") || !str.endsWith("]")) + { + L2ClientDat.addLogConsole("GameDataName: String name not brackets!!! file: " + currentFile.getName() + " str: " + str + " node: " + node, true); + } + if ((str = str.substring(1, str.length() - 1)).isEmpty()) + { + L2ClientDat.addLogConsole("GameDataName: String name Empty!!! file: " + currentFile.getName() + " node: " + node, true); + return -1; + } + if (nameLowHash.isEmpty()) + { + load(currentFile, crypter); + } + if (nameLowHash.containsKey(low = str.toLowerCase())) + { + return nameLowHash.get(low); + } + int newIndex = nameLowHash.size(); + nameLowHash.put(low, newIndex); + nameHash.put(str, nameHash.size()); + return newIndex; + } + + public void checkAndUpdate(String currentDir, DatCrypter crypter) throws Exception + { + if (!nameHash.isEmpty()) + { + HashSet setList = new HashSet<>(); + TreeMap sortedMap = new TreeMap<>(); + for (String key : nameHash.keySet()) + { + sortedMap.put(nameHash.get(key), key); + if (setList.add(key.toLowerCase())) + { + continue; + } + L2ClientDat.addLogConsole("GameDataName: name " + key + " conflicted.", true); + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + baos.write((byte[]) ByteWriter.writeInt(sortedMap.size()).array()); + for (String key : sortedMap.values()) + { + baos.write((byte[]) ByteWriter.writeUtfString(key, false).array()); + } + byte[] bytes = baos.toByteArray(); + byte[] resultBytes = new byte[bytes.length + endFileBytes.length]; + System.arraycopy(bytes, 0, resultBytes, 0, bytes.length); + System.arraycopy(endFileBytes, 0, resultBytes, bytes.length, endFileBytes.length); + String file = currentDir + "/L2GameDataName.dat"; + if (ConfigDebug.ENCRYPT) + { + DatFile.encrypt(resultBytes, file, crypter); + } + else + { + FileOutputStream os = new FileOutputStream(file, false); + os.write(resultBytes); + os.close(); + } + L2ClientDat.addLogConsole("GameDataName: packed " + sortedMap.size() + " count.", true); + names.clear(); + nameHash.clear(); + nameLowHash.clear(); + } + } + + public void clear() + { + names.clear(); + nameHash.clear(); + nameLowHash.clear(); + } + + public static GameDataName getInstance() + { + return SingletonHolder._instance; + } + + private static class SingletonHolder + { + static final GameDataName _instance = new GameDataName(); + + private SingletonHolder() + { + } + } + +} diff --git a/L2ClientDat/java/com/l2jmobius/forms/JPopupTextArea.java b/L2ClientDat/java/com/l2jmobius/forms/JPopupTextArea.java new file mode 100644 index 0000000000..f008bdf815 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/forms/JPopupTextArea.java @@ -0,0 +1,299 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.forms; + +import java.awt.Frame; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.StringTokenizer; +import java.util.Vector; + +import javax.swing.JComponent; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; +import javax.swing.JSeparator; +import javax.swing.JTextArea; + +public class JPopupTextArea extends JTextArea +{ + static final String COPY = "Copy (Ctrl + C)"; + static final String CUT = "Cut (Ctrl + X)"; + static final String PASTE = "Paste (Ctrl + V)"; + static final String DELETE = "Delete"; + static final String SELECTALL = "Select all (Ctrl + A)"; + static final String LINE = "Line (Ctrl + G)"; + static final String FIND = "Find (Ctrl + F)"; + Vector lineLength = new Vector<>(); + + public JPopupTextArea() + { + addPopupMenu(); + } + + private void addPopupMenu() + { + JPopupMenu menu = new JPopupMenu(); + JMenuItem copyItem = new JMenuItem(); + copyItem.setAction(getActionMap().get("copy-to-clipboard")); + copyItem.setText(COPY); + JMenuItem cutItem = new JMenuItem(); + cutItem.setAction(getActionMap().get("cut-to-clipboard")); + cutItem.setText(CUT); + JMenuItem pasteItem = new JMenuItem(); + pasteItem.setAction(getActionMap().get("paste-from-clipboard")); + pasteItem.setText(PASTE); + JMenuItem deleteItem = new JMenuItem(); + deleteItem.setAction(getActionMap().get("delete-previous")); + deleteItem.setText(DELETE); + JMenuItem selectAllItem = new JMenuItem(); + selectAllItem.setAction(getActionMap().get("select-all")); + selectAllItem.setText(SELECTALL); + JMenuItem selectLine = new JMenuItem(); + selectLine.addActionListener(e -> goToLine()); + selectLine.setText(LINE); + JMenuItem selectFind = new JMenuItem(); + selectFind.addActionListener(e -> searchString()); + selectFind.setText(FIND); + menu.add(copyItem); + menu.add(cutItem); + menu.add(pasteItem); + menu.add(deleteItem); + menu.add(new JSeparator()); + menu.add(selectAllItem); + menu.add(selectLine); + menu.add(selectFind); + this.add(menu); + addMouseListener(new PopupTriggerMouseListener(menu, this)); + addKeyListener(new KeyListen()); + } + + void goToLine() + { + String lineno; + boolean fnd; + int no = 0; + do + { + block8: + { + fnd = true; + lineno = JOptionPane.showInputDialog("Line number:"); + try + { + no = Integer.parseInt(lineno); + } + catch (Exception exp) + { + if (lineno == null) + { + break block8; + } + JOptionPane.showMessageDialog(new Frame(), "Enter a valid line number", "Error", 0); + fnd = false; + } + } + if ((no > 0) || (lineno == null)) + { + continue; + } + JOptionPane.showMessageDialog(new Frame(), "Enter a valid line number", "Error", 0); + fnd = false; + } + while (!fnd); + if (lineno != null) + { + getLinePosition(); + if ((no - 1) >= lineLength.size()) + { + JOptionPane.showMessageDialog(new Frame(), "Line number does not exist", "Error", 0); + } + else + { + try + { + this.requestFocus(); + setCaretPosition(lineLength.elementAt(no - 1)); + } + catch (Exception exp) + { + JOptionPane.showMessageDialog(new Frame(), "Bad position", "Error", 0); + } + } + } + } + + void searchString() + { + String lineno = JOptionPane.showInputDialog("Search string: "); + if ((lineno == null) || lineno.isEmpty()) + { + JOptionPane.showMessageDialog(new Frame(), "Enter a empty string", "Error", 0); + return; + } + if (!lineno.isEmpty()) + { + try + { + this.requestFocus(); + String editorText = this.getText(); + String searchValue = lineno; + int start = editorText.indexOf(searchValue, getSelectionEnd()); + if (start != -1) + { + setCaretPosition(start); + moveCaretPosition(start + searchValue.length()); + getCaret().setSelectionVisible(true); + } + } + catch (Exception exp) + { + JOptionPane.showMessageDialog(new Frame(), "Bad position", "Error", 0); + } + } + } + + private void getLinePosition() + { + lineLength = new Vector<>(); + String txt = this.getText(); + int width = getWidth(); + StringTokenizer st = new StringTokenizer(txt, "\n ", true); + String str = " "; + int len = 0; + lineLength.addElement(new Integer(0)); + while (st.hasMoreTokens()) + { + String token = st.nextToken(); + int w = getGraphics().getFontMetrics(getGraphics().getFont()).stringWidth(str + token); + if ((w > width) || (token.charAt(0) == '\n')) + { + len += str.length(); + if (token.charAt(0) == '\n') + { + lineLength.addElement(new Integer(len)); + } + else + { + lineLength.addElement(new Integer(len - 1)); + } + str = token; + continue; + } + str = str + token; + } + } + + private class KeyListen implements KeyListener + { + private boolean controlDown; + private boolean gDown; + private boolean fDown; + + KeyListen() + { + } + + @Override + public void keyTyped(KeyEvent e) + { + } + + @Override + public void keyPressed(KeyEvent e) + { + if (e.getKeyCode() == 17) + { + controlDown = true; + } + else if (e.getKeyCode() == 71) + { + gDown = true; + } + else if (e.getKeyCode() == 70) + { + fDown = true; + } + if (controlDown) + { + if (gDown) + { + controlDown = false; + gDown = false; + goToLine(); + } + else if (fDown) + { + controlDown = false; + fDown = false; + searchString(); + } + } + } + + @Override + public void keyReleased(KeyEvent e) + { + if (e.getKeyCode() == 17) + { + controlDown = false; + } + else if (e.getKeyCode() == 71) + { + gDown = false; + } + else if (e.getKeyCode() == 70) + { + fDown = false; + } + } + } + + private static class PopupTriggerMouseListener extends MouseAdapter + { + private final JPopupMenu popup; + private final JComponent component; + + public PopupTriggerMouseListener(JPopupMenu popup, JComponent component) + { + this.popup = popup; + this.component = component; + } + + private void showMenuIfPopupTrigger(MouseEvent e) + { + if (e.isPopupTrigger()) + { + popup.show(component, e.getX() + 3, e.getY() + 3); + } + } + + @Override + public void mousePressed(MouseEvent e) + { + showMenuIfPopupTrigger(e); + } + + @Override + public void mouseReleased(MouseEvent e) + { + showMenuIfPopupTrigger(e); + } + } +} diff --git a/L2ClientDat/java/com/l2jmobius/listeners/FormatListener.java b/L2ClientDat/java/com/l2jmobius/listeners/FormatListener.java new file mode 100644 index 0000000000..7fad0d1991 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/listeners/FormatListener.java @@ -0,0 +1,24 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.listeners; + +public interface FormatListener +{ + public String decode(String var1); + + public String encode(String var1); +} diff --git a/L2ClientDat/java/com/l2jmobius/util/ByteReader.java b/L2ClientDat/java/com/l2jmobius/util/ByteReader.java new file mode 100644 index 0000000000..086b2235a2 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/util/ByteReader.java @@ -0,0 +1,188 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.util; + +import java.io.EOFException; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; + +public class ByteReader +{ + private static Charset defaultCharset = Charset.forName("cp1252"); + private static Charset utf16leCharset = Charset.forName("utf-16le"); + + public static char readChar(ByteBuffer buffer) + { + return (char) buffer.get(); + } + + public static int readUByte(ByteBuffer buffer) + { + return buffer.get() & 255; + } + + public static int readInt(ByteBuffer buffer) + { + return Integer.reverseBytes(buffer.getInt()); + } + + public static int readUInt(ByteBuffer buffer) + { + return ByteReader.readInt(buffer); + } + + public static short readShort(ByteBuffer buffer) + { + return Short.reverseBytes(buffer.getShort()); + } + + public static double readDouble(ByteBuffer buffer) + { + return Double.longBitsToDouble(Long.reverseBytes(buffer.getLong())); + } + + public static long readLong(ByteBuffer buffer) + { + return Long.reverseBytes(buffer.getLong()); + } + + public static float readFloat(ByteBuffer buffer) + { + return Float.intBitsToFloat(Integer.reverseBytes(buffer.getInt())); + } + + public static int readCompactInt(ByteBuffer input) throws IOException + { + int output = 0; + boolean signed = false; + for (int i = 0; i < 5; ++i) + { + int x = input.get() & 255; + if (x < 0) + { + throw new EOFException(); + } + if (i == 0) + { + if ((x & 128) > 0) + { + signed = true; + } + output |= x & 63; + if ((x & 64) != 0) + { + continue; + } + break; + } + if (i == 4) + { + output |= (x & 31) << 27; + continue; + } + output |= (x & 127) << (6 + ((i - 1) * 7)); + if ((x & 128) == 0) + { + break; + } + } + if (signed) + { + output *= -1; + } + return output; + } + + public static String readRGB(ByteBuffer buffer) + { + String g; + String b; + String r = Integer.toHexString(buffer.get() & 255).toUpperCase(); + if (r.length() < 2) + { + r = "0" + r; + } + if ((g = Integer.toHexString(buffer.get() & 255).toUpperCase()).length() < 2) + { + g = "0" + g; + } + if ((b = Integer.toHexString(buffer.get() & 255).toUpperCase()).length() < 2) + { + b = "0" + b; + } + return r + g + b; + } + + public static String readRGBA(ByteBuffer buffer) + { + String a = Integer.toHexString(buffer.get() & 255).toUpperCase(); + if (a.length() < 2) + { + a = "0" + a; + } + return a + ByteReader.readRGB(buffer); + } + + public static String readUtfString(ByteBuffer buffer, boolean isRaw) throws Exception + { + int size = ByteReader.readInt(buffer); + if (size <= 0) + { + return ""; + } + if (size > 1000000) + { + throw new Exception("To much data."); + } + byte[] bytes = new byte[size]; + try + { + for (int i = 0; i < size; i += 2) + { + bytes[i + 1] = buffer.get(); + bytes[i] = buffer.get(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + return ByteReader.checkAndReplaceNewLine(isRaw, new String(new String(bytes, "Unicode").getBytes("UTF-8"), "UTF-8")); + } + + public static String readString(ByteBuffer input, boolean isRaw) throws IOException + { + int len = ByteReader.readCompactInt(input); + if (len == 0) + { + return ""; + } + byte[] bytes = new byte[len > 0 ? len : -2 * len]; + input.get(bytes); + return ByteReader.checkAndReplaceNewLine(isRaw, new String(bytes, 0, bytes.length - (len > 0 ? 1 : 2), len > 0 ? defaultCharset : utf16leCharset).intern()); + } + + private static String checkAndReplaceNewLine(boolean isRaw, String str) + { + if (!isRaw && str.contains("\r\n")) + { + str = str.replace("\r\n", "\\r\\n"); + } + return str; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/util/ByteWriter.java b/L2ClientDat/java/com/l2jmobius/util/ByteWriter.java new file mode 100644 index 0000000000..d7580d7f82 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/util/ByteWriter.java @@ -0,0 +1,211 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.util; + +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.Charset; + +public class ByteWriter +{ + private static final ByteOrder BYTE_ORDER = ByteOrder.LITTLE_ENDIAN; + private static Charset defaultCharset = Charset.forName("ascii"); + private static Charset utf16leCharset = Charset.forName("utf-16le"); + + public static Buffer writeChar(byte value) + { + ByteBuffer buffer = ByteBuffer.allocate(1).order(BYTE_ORDER); + buffer.put(value); + return buffer; + } + + public static Buffer writeCompactInt(int count) + { + byte[] b = ByteWriter.compactIntToByteArray(count); + ByteBuffer buffer = ByteBuffer.allocate(b.length).order(BYTE_ORDER); + buffer.put(b); + return buffer; + } + + public static Buffer writeByte(byte value) + { + ByteBuffer buffer = ByteBuffer.allocate(1).order(BYTE_ORDER); + buffer.put(value); + return buffer; + } + + public static Buffer writeUByte(short value) + { + ByteBuffer buffer = ByteBuffer.allocate(1).order(BYTE_ORDER); + buffer.put((byte) value); + return buffer; + } + + public static Buffer writeInt(int value) + { + ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER); + buffer.putInt(value); + return buffer; + } + + public static Buffer writeUInt(int value) + { + ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER); + buffer.putInt(value); + return buffer; + } + + public static Buffer writeShort(short value) + { + ByteBuffer buffer = ByteBuffer.allocate(2).order(BYTE_ORDER); + buffer.putShort(value); + return buffer; + } + + public static Buffer writeUShort(int value) + { + ByteBuffer buffer = ByteBuffer.allocate(2).order(BYTE_ORDER); + buffer.put((byte) (value & 255)); + buffer.put((byte) ((value & 65280) >> 8)); + return buffer; + } + + public static Buffer writeRGB(String rgb) + { + ByteBuffer buffer = ByteBuffer.allocate(3).order(BYTE_ORDER); + buffer.put((byte) Integer.parseInt(rgb.substring(0, 2), 16)); + buffer.put((byte) Integer.parseInt(rgb.substring(2, 4), 16)); + buffer.put((byte) Integer.parseInt(rgb.substring(4, 6), 16)); + return buffer; + } + + public static Buffer writeRGBA(String rgba) + { + ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER); + buffer.put((byte[]) ByteWriter.writeRGB(rgba.substring(0, 6)).array()); + buffer.put((byte) Integer.parseInt(rgba.substring(6, 8), 16)); + return buffer; + } + + public static Buffer writeUtfString(String str, boolean isRaw) + { + int size = str.length(); + if (size <= 0) + { + return ByteBuffer.allocate(4).order(BYTE_ORDER).putInt(0); + } + if (!isRaw) + { + str = ByteWriter.checkAndReplaceNewLine(str); + size = str.length(); + } + ByteBuffer buffer = ByteBuffer.allocate((size * 2) + 4).order(BYTE_ORDER); + buffer.putInt(size * 2); + for (int i = 0; i < size; ++i) + { + buffer.putChar(str.charAt(i)); + } + return buffer; + } + + public static Buffer writeString(String s, boolean isRaw) + { + if ((s == null) || s.isEmpty()) + { + return ByteWriter.writeCompactInt(0); + } + if (!isRaw) + { + s = ByteWriter.checkAndReplaceNewLine(s); + } + s = s + '\u0000'; + boolean def = defaultCharset.newEncoder().canEncode(s); + byte[] bytes = s.getBytes(def ? defaultCharset : utf16leCharset); + byte[] bSize = ByteWriter.compactIntToByteArray(def ? bytes.length : (-bytes.length) / 2); + ByteBuffer buffer = ByteBuffer.allocate(bytes.length + bSize.length).order(BYTE_ORDER); + buffer.put(bSize); + buffer.put(bytes); + return buffer; + } + + public static Buffer writeDouble(double value) + { + ByteBuffer buffer = ByteBuffer.allocate(8).order(BYTE_ORDER); + buffer.putDouble(value); + return buffer; + } + + public static Buffer writeFloat(float value) + { + ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER); + buffer.putFloat(value); + return buffer; + } + + public static Buffer writeLong(long value) + { + ByteBuffer buffer = ByteBuffer.allocate(8).order(BYTE_ORDER); + buffer.putLong(value); + return buffer; + } + + private static byte[] compactIntToByteArray(int v) + { + boolean negative = v < 0; + v = Math.abs(v); + int[] bytes = new int[] + { + v & 63, + (v >> 6) & 127, + (v >> 13) & 127, + (v >> 20) & 127, + (v >> 27) & 127 + }; + if (negative) + { + int[] arrn = bytes; + arrn[0] = arrn[0] | 128; + } + int size = 5; + for (int i = 4; (i > 0) && (bytes[i] == 0); --i) + { + --size; + } + byte[] res = new byte[size]; + for (int i = 0; i < size; ++i) + { + if (i != (size - 1)) + { + int[] arrn = bytes; + int n = i; + arrn[n] = arrn[n] | (i == 0 ? 64 : 128); + } + res[i] = (byte) bytes[i]; + } + return res; + } + + private static String checkAndReplaceNewLine(String str) + { + if (str.contains("\\r\\n")) + { + str = str.replace("\\r\\n", "\r\n"); + } + return str; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/util/DebugUtil.java b/L2ClientDat/java/com/l2jmobius/util/DebugUtil.java new file mode 100644 index 0000000000..bfe2a59f72 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/util/DebugUtil.java @@ -0,0 +1,85 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.util; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; + +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.apache.log4j.xml.DOMConfigurator; + +import com.l2jmobius.config.ConfigDebug; +import com.l2jmobius.xml.Variant; + +public class DebugUtil +{ + private static Logger _log = LogManager.getLogger(DebugUtil.class); + + public static void debug(String message) + { + if (ConfigDebug.DAT_DEBUG_MSG) + { + _log.info(message); + } + } + + public static void debugPos(int pos, String name, Variant val) + { + if (ConfigDebug.DAT_DEBUG_POS) + { + _log.info("pos: " + pos + " " + name + ": " + val); + if ((ConfigDebug.DAT_DEBUG_POS_LIMIT != 0) && (pos > ConfigDebug.DAT_DEBUG_POS_LIMIT)) + { + System.exit(0); + } + } + } + + public static void save(ByteBuffer buffer, File path) + { + if (ConfigDebug.SAVE_DECODE) + { + try + { + String unpackDirPath = path.getParent() + "/" + "!decrypted"; + File decryptedDir = new File(unpackDirPath); + decryptedDir.mkdir(); + File file = new File(decryptedDir + "/" + path.getName()); + FileOutputStream fos = new FileOutputStream(file); + fos.write(buffer.array()); + fos.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + } + + public static Logger getLogger() + { + return _log; + } + + static + { + DOMConfigurator.configure("./config/log4j.xml"); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/util/Util.java b/L2ClientDat/java/com/l2jmobius/util/Util.java new file mode 100644 index 0000000000..f3717713d2 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/util/Util.java @@ -0,0 +1,338 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.util; + +import java.io.File; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.tools.Diagnostic; +import javax.tools.DiagnosticCollector; +import javax.tools.JavaCompiler; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; +import javax.tools.ToolProvider; + +public class Util +{ + public static void printBytes(String name, byte[] buffer) + { + StringBuilder builder = new StringBuilder(buffer.length); + builder.append(name).append(": ["); + for (byte b : buffer) + { + builder.append(b).append(" "); + } + builder.append("]"); + DebugUtil.getLogger().info(builder.toString()); + } + + public static boolean compareBuffers(byte[] b1, byte[] b2) + { + if ((b1 == null) || (b2 == null) || (b1.length != b2.length)) + { + return false; + } + for (int i = 0; i < b1.length; ++i) + { + if (b1[i] == b2[i]) + { + continue; + } + return false; + } + return true; + } + + private static String printData(byte[] data, int len) + { + int a; + int charpoint; + byte t1; + StringBuilder result = new StringBuilder(); + int counter = 0; + for (int i = 0; i < len; ++i) + { + if ((counter % 16) == 0) + { + result.append(Util.fillHex(i, 4) + ": "); + } + result.append(Util.fillHex(data[i] & 255, 2) + " "); + if (++counter != 16) + { + continue; + } + result.append(" "); + charpoint = i - 15; + for (a = 0; a < 16; ++a) + { + if (((t1 = data[charpoint++]) > 31) && (t1 < 128)) + { + result.append((char) t1); + continue; + } + result.append('.'); + } + result.append("\n"); + counter = 0; + } + int rest = data.length % 16; + if (rest > 0) + { + for (int i = 0; i < (17 - rest); ++i) + { + result.append(" "); + } + charpoint = data.length - rest; + for (a = 0; a < rest; ++a) + { + if (((t1 = data[charpoint++]) > 31) && (t1 < 128)) + { + result.append((char) t1); + continue; + } + result.append('.'); + } + result.append("\n"); + } + return result.toString(); + } + + private static String fillHex(int data, int digits) + { + String number = Integer.toHexString(data); + for (int i = number.length(); i < digits; ++i) + { + number = "0" + number; + } + return number; + } + + public static String printData(byte[] blop) + { + return Util.printData(blop, blop.length); + } + + public static List loadFiles(String dir, String prefix) + { + ArrayList list = new ArrayList<>(); + File folder = new File(dir); + for (File listOfFile : folder.listFiles()) + { + if (listOfFile.isFile()) + { + if (!listOfFile.getName().endsWith(prefix)) + { + continue; + } + list.add(listOfFile); + continue; + } + if (!listOfFile.isDirectory()) + { + continue; + } + File folder2 = new File(dir + listOfFile.getName() + "/"); + for (File aListOfFiles2 : folder2.listFiles()) + { + if (!aListOfFiles2.getName().endsWith(prefix)) + { + continue; + } + list.add(aListOfFiles2); + } + } + return list; + } + + public static String[] getDirsNames(String dir, String prefix) + { + ArrayList list = new ArrayList<>(); + File folder = new File(dir); + File[] listOfFiles = folder.listFiles(); + if (listOfFiles == null) + { + return null; + } + for (File listOfFile : listOfFiles) + { + if (!listOfFile.isDirectory() || !listOfFile.getName().endsWith(prefix)) + { + continue; + } + list.add(listOfFile.getName()); + } + String[] text = new String[list.size()]; + int i = 0; + Iterator iterator = list.iterator(); + while (iterator.hasNext()) + { + text[i] = iterator.next(); + ++i; + } + return text; + } + + public static String[] getFilesNames(String dir, String prefix) + { + ArrayList list = new ArrayList<>(); + File folder = new File(dir); + File[] listOfFiles = folder.listFiles(); + if (listOfFiles == null) + { + return null; + } + for (File listOfFile : listOfFiles) + { + if (!listOfFile.isFile() || !listOfFile.getName().endsWith(prefix)) + { + continue; + } + list.add(listOfFile.getName().replace(prefix, "")); + } + String[] text = new String[list.size()]; + int i = 0; + Iterator iterator = list.iterator(); + while (iterator.hasNext()) + { + text[i] = iterator.next(); + ++i; + } + return text; + } + + public static String printData(ByteBuffer buf) + { + byte[] data = new byte[buf.remaining()]; + buf.get(data); + String hex = Util.printData(data, data.length); + buf.position(buf.position() - data.length); + return hex; + } + + public static List splitList(String s) + { + if (s.startsWith("{")) + { + s = s.substring(1, s.length() - 1); + } + ArrayList res = new ArrayList<>(); + StringBuffer buff = new StringBuffer(); + int level = 0; + for (char part : s.toCharArray()) + { + if ((part == '{') || (part == '[')) + { + ++level; + } + else if ((part == '}') || (part == ']')) + { + --level; + } + else if ((part == ';') && (level == 0)) + { + res.add(buff.toString()); + buff = new StringBuffer(); + continue; + } + buff.append(part); + } + res.add(buff.toString()); + return res; + } + + public static Map stringToMap(String id) + { + LinkedHashMap map = new LinkedHashMap<>(); + for (String str : id.split("\t")) + { + if (!str.contains("=")) + { + continue; + } + int index = str.indexOf("="); + String key = str.substring(0, index); + String val = str.substring(index + 1, str.length()); + map.put(key, val); + } + return map; + } + + public static String mapToString(Map map) + { + StringBuilder builder = new StringBuilder(); + for (String key : map.keySet()) + { + builder.append(key).append("=").append(map.get(key)).append("\t"); + } + return builder.toString(); + } + + @SuppressWarnings( + { + "rawtypes", + "unchecked" + }) + public static void compileJavaClass(String sourceFile) + { + try + { + DiagnosticCollector diagnostics = new DiagnosticCollector(); + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); + Iterable compilationUnit = fileManager.getJavaFileObjectsFromFiles(Util.loadFiles(sourceFile, ".java")); + JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnit); + if (!task.call().booleanValue()) + { + for (Object diagnostic : diagnostics.getDiagnostics()) + { + final Diagnostic d = (Diagnostic) diagnostic; + System.out.format("Error on line %d in %s%n", d.getLineNumber(), ((JavaFileObject) d.getSource()).toUri()); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + public static Object loadJavaClass(String className, String path) + { + try + { + @SuppressWarnings("resource") + URLClassLoader classLoader = new URLClassLoader(new URL[] + { + new File(path).toURI().toURL() + }); + Class loadedClass = classLoader.loadClass(className); + return loadedClass.newInstance(); + } + catch (Exception e) + { + e.printStackTrace(); + return null; + } + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/CryptVersionParser.java b/L2ClientDat/java/com/l2jmobius/xml/CryptVersionParser.java new file mode 100644 index 0000000000..d8cdaa60fc --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/CryptVersionParser.java @@ -0,0 +1,148 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +import java.io.File; +import java.util.LinkedHashMap; +import java.util.Map; + +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +import com.l2jmobius.clientcryptor.crypt.BlowFishDatCrypter; +import com.l2jmobius.clientcryptor.crypt.DESDatCrypter; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.clientcryptor.crypt.RSADatCrypter; +import com.l2jmobius.clientcryptor.crypt.XorDatCrypter; +import com.l2jmobius.util.DebugUtil; + +public class CryptVersionParser +{ + private static Map encryptKeys = new LinkedHashMap<>(); + private static Map decryptKeys = new LinkedHashMap<>(); + private static CryptVersionParser _parser = new CryptVersionParser(); + + public static CryptVersionParser getInstance() + { + return _parser; + } + + private CryptVersionParser() + { + CryptVersionParser.parseCryptVersion(); + } + + private static void parseCryptVersion() + { + File def = new File("./config/cryptVersion.xml"); + if (def.exists()) + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setValidating(false); + factory.setIgnoringElementContentWhitespace(true); + factory.setIgnoringComments(true); + try + { + Document doc = factory.newDocumentBuilder().parse(def); + Node defsNode = doc.getFirstChild(); + while (defsNode != null) + { + if (defsNode.getNodeName().equals("keys")) + { + for (Node defNode = defsNode.getFirstChild(); defNode != null; defNode = defNode.getNextSibling()) + { + if (!defNode.getNodeName().equals("key")) + { + continue; + } + String name = defNode.getAttributes().getNamedItem("name").getNodeValue(); + String type = defNode.getAttributes().getNamedItem("type").getNodeValue().toLowerCase(); + int code = Integer.parseInt(defNode.getAttributes().getNamedItem("code").getNodeValue().toLowerCase()); + boolean isDecrypt = Boolean.parseBoolean(defNode.getAttributes().getNamedItem("decrypt").getNodeValue()); + boolean useStructure = Boolean.parseBoolean(defNode.getAttributes().getNamedItem("useStructure").getNodeValue()); + String extension = defNode.getAttributes().getNamedItem("extension").getNodeValue(); + DatCrypter dat = null; + switch (type) + { + case "rsa": + { + String modulus = defNode.getAttributes().getNamedItem("modulus").getNodeValue(); + String exp = defNode.getAttributes().getNamedItem("exp").getNodeValue(); + dat = new RSADatCrypter(code, modulus, exp, isDecrypt); + break; + } + case "xor": + { + dat = new XorDatCrypter(code, Integer.parseInt(defNode.getAttributes().getNamedItem("key").getNodeValue()), isDecrypt); + break; + } + case "blowfish": + { + dat = new BlowFishDatCrypter(code, defNode.getAttributes().getNamedItem("key").getNodeValue(), isDecrypt); + break; + } + case "des": + { + dat = new DESDatCrypter(code, defNode.getAttributes().getNamedItem("key").getNodeValue(), isDecrypt); + } + } + if (dat == null) + { + continue; + } + dat.addFileExtension(extension); + dat.setUseStructure(useStructure); + if (isDecrypt) + { + decryptKeys.put(name, dat); + continue; + } + encryptKeys.put(name, dat); + } + } + defsNode = doc.getNextSibling(); + } + } + catch (Exception e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + } + } + } + + public Map getEncryptKey() + { + return encryptKeys; + } + + public Map getDecryptKeys() + { + return decryptKeys; + } + + public DatCrypter getEncryptKey(String s) + { + return encryptKeys.get(s); + } + + public DatCrypter getDecryptKey(String s) + { + return decryptKeys.get(s); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/Descriptor.java b/L2ClientDat/java/com/l2jmobius/xml/Descriptor.java new file mode 100644 index 0000000000..bd9eb0cb10 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/Descriptor.java @@ -0,0 +1,84 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +import java.util.List; + +import com.l2jmobius.listeners.FormatListener; + +public class Descriptor +{ + private final String _alias; + private final String _filePattern; + private final List _nodes; + private boolean _isRawData; + private boolean _isSafePackage; + private FormatListener _format; + + Descriptor(String alias, String filePattern, List nodes) + { + _alias = alias; + _filePattern = filePattern; + _nodes = nodes; + _isRawData = false; + } + + void setIsRawData(boolean value) + { + _isRawData = value; + } + + public void setIsSafePackage(boolean value) + { + _isSafePackage = value; + } + + boolean isRawData() + { + return _isRawData; + } + + public boolean isSafePackage() + { + return _isSafePackage; + } + + public String getAlias() + { + return _alias; + } + + public String getFilePattern() + { + return _filePattern; + } + + List getNodes() + { + return _nodes; + } + + public void setFormat(FormatListener format) + { + _format = format; + } + + public FormatListener getFormat() + { + return _format; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorLink.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorLink.java new file mode 100644 index 0000000000..12c797c47d --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/DescriptorLink.java @@ -0,0 +1,53 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +public class DescriptorLink +{ + private final String dir; + private final String namePattern; + private final String linkFile; + private final String linkVersion; + + public DescriptorLink(String dir, String namePattern, String linkFile, String linkVersion) + { + this.dir = dir; + this.namePattern = namePattern; + this.linkFile = linkFile; + this.linkVersion = linkVersion; + } + + public String getFilePattern() + { + return dir; + } + + public String getNamePattern() + { + return namePattern; + } + + public String getLinkFile() + { + return linkFile; + } + + public String getLinkVersion() + { + return linkVersion; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorParser.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorParser.java new file mode 100644 index 0000000000..e69aafcad5 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/DescriptorParser.java @@ -0,0 +1,368 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +import com.l2jmobius.listeners.FormatListener; +import com.l2jmobius.util.DebugUtil; +import com.l2jmobius.util.Util; +import com.l2jmobius.xml.exceptions.CycleArgumentException; + +public class DescriptorParser +{ + private static DescriptorParser _parser = new DescriptorParser(); + private final Map> _descriptors = new HashMap<>(); + private final Map> _definitions = new HashMap<>(); + private final Map> _links = new HashMap<>(); + + private DescriptorParser() + { + load(); + } + + public static DescriptorParser getInstance() + { + return _parser; + } + + private void load() + { + parseDefinitions(); + Util.loadFiles("./structure/", ".xml").forEach(this::parseDescriptor); + } + + private void parseDefinitions() + { + File def = new File("./!definitions.xml"); + if (def.exists()) + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setValidating(false); + factory.setIgnoringElementContentWhitespace(true); + factory.setIgnoringComments(true); + try + { + Document doc = factory.newDocumentBuilder().parse(def); + Node defsNode = doc.getFirstChild(); + while (defsNode != null) + { + if (defsNode.getNodeName().equals("definitions")) + { + for (Node defNode = defsNode.getFirstChild(); defNode != null; defNode = defNode.getNextSibling()) + { + if (!defNode.getNodeName().equals("definition")) + { + continue; + } + String defName = defNode.getAttributes().getNamedItem("name").getNodeValue(); + List nodes = parseNodes(defNode, true, new HashSet(), "definitions->" + defName); + _definitions.put(defName, nodes); + } + } + defsNode = doc.getNextSibling(); + } + } + catch (Exception e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + } + } + } + + private void parseDescriptor(File file) + { + if (!file.exists()) + { + DebugUtil.debug("File " + file.getName() + " not found."); + } + try + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setValidating(false); + factory.setIgnoringElementContentWhitespace(true); + factory.setIgnoringComments(true); + Document doc = factory.newDocumentBuilder().parse(file); + Node fileNode0 = doc.getFirstChild(); + while (fileNode0 != null) + { + if (fileNode0.getNodeName().equalsIgnoreCase("list")) + { + for (Node fileNode = fileNode0.getFirstChild(); fileNode != null; fileNode = fileNode.getNextSibling()) + { + String dir; + Object obj; + String namePattern; + Map versions; + if (fileNode.getNodeName().equalsIgnoreCase("link")) + { + dir = file.getName().substring(0, file.getName().length() - 4); + namePattern = fileNode.getAttributes().getNamedItem("pattern").getNodeValue(); + String linkFile = fileNode.getAttributes().getNamedItem("file").getNodeValue(); + String linkVersion = fileNode.getAttributes().getNamedItem("version").getNodeValue(); + List list = _links.get(dir); + if (list == null) + { + list = new ArrayList<>(); + } + list.add(new DescriptorLink(dir, namePattern, linkFile, linkVersion)); + _links.put(dir, list); + continue; + } + if (!fileNode.getNodeName().equalsIgnoreCase("file")) + { + continue; + } + dir = file.getName().substring(0, file.getName().length() - 4); + namePattern = fileNode.getAttributes().getNamedItem("pattern").getNodeValue(); + boolean isRawData = parseBoolNode(fileNode, "isRaw", false); + boolean isSafePackage = parseBoolNode(fileNode, "isSafePackage", false); + String formatName = parseStringNode(fileNode, "format", null); + DebugUtil.debug("Boot of parsing file: " + namePattern); + List nodes = parseNodes(fileNode, false, new HashSet(), dir + "->" + namePattern); + Descriptor desc = new Descriptor(file.getName(), namePattern, nodes); + desc.setIsRawData(isRawData); + desc.setIsSafePackage(isSafePackage); + if ((formatName != null) && ((obj = Util.loadJavaClass(formatName, "./structure/format/")) instanceof FormatListener)) + { + desc.setFormat((FormatListener) obj); + } + if ((versions = _descriptors.get(dir)) == null) + { + versions = new HashMap<>(); + } + versions.put(namePattern, desc); + _descriptors.put(dir, versions); + DebugUtil.debug("End of parsing file: " + namePattern); + } + } + fileNode0 = doc.getNextSibling(); + } + } + catch (Exception e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + } + } + + private List parseNodes(Node fileNode, boolean isHideName, Set names, String fileName) throws Exception + { + HashMap defsCounter = new HashMap<>(); + LinkedList nodes = new LinkedList<>(); + for (Node node = fileNode.getFirstChild(); node != null; node = node.getNextSibling()) + { + ParamNode beginNode; + String nodeName = node.getNodeName(); + if (nodeName.equals("#text")) + { + continue; + } + boolean isHide = isHideName || parseBoolNode(node, "hidden", true); + if (node.getAttributes().getNamedItem("name") == null) + { + DebugUtil.getLogger().warn("Node name == null, fileName: " + fileName); + continue; + } + String entityName = node.getAttributes().getNamedItem("name").getNodeValue(); + if (nodeName.equalsIgnoreCase("node")) + { + String type = node.getAttributes().getNamedItem("reader").getNodeValue(); + if (_definitions.containsKey(type)) + { + if (!defsCounter.containsKey(type)) + { + defsCounter.put(type, 1); + } + else + { + defsCounter.put(type, defsCounter.get(type) + 1); + } + List defNodes = _definitions.get(type); + for (ParamNode defNode : defNodes) + { + ParamNode copied = defNode.copy(); + copied.setName(entityName); + if (isHide) + { + copied.setHidden(); + } + nodes.add(copied); + } + } + else + { + ParamNode dataNode = new ParamNode(entityName, ParamNodeType.VARIABLE, ParamType.valueOf(type)); + if (isHide) + { + dataNode.setHidden(); + } + nodes.add(dataNode); + DebugUtil.debug("Found node: " + dataNode.getName()); + } + if (names.contains(entityName)) + { + DebugUtil.getLogger().warn("Node name duplicated [" + entityName + "] fileName: " + fileName); + } + names.add(entityName); + continue; + } + if (nodeName.equalsIgnoreCase("for")) + { + String iteratorName = entityName; + boolean skipWriteSize = parseBoolNode(node, "skipWriteSize", false); + int size = -1; + if (node.getAttributes().getNamedItem("size") != null) + { + String sizeStr = node.getAttributes().getNamedItem("size").getNodeValue(); + if (sizeStr.startsWith("#")) + { + iteratorName = sizeStr.substring(1); + } + else + { + size = Integer.parseInt(sizeStr); + } + } + if (size == 0) + { + DebugUtil.getLogger().warn("Size of cycle [" + iteratorName + "] was set to zero. Deprecated cycle?"); + } + DebugUtil.debug("Found cycle for variable: " + entityName); + ParamNode beginNode2 = new ParamNode(entityName, ParamNodeType.FOR, null); + if (size >= 0) + { + beginNode2.setSize(size); + } + if (isHide) + { + beginNode2.setHidden(); + } + beginNode2.setSkipWriteSize(skipWriteSize); + beginNode2.addSubNodes(parseNodes(node, false, names, fileName)); + beginNode2.setCycleName(iteratorName); + nodes.add(beginNode2); + boolean iteratorFound = false; + for (ParamNode n : nodes) + { + if (!iteratorName.equals(n.getName())) + { + continue; + } + n.setIterator(); + iteratorFound = true; + break; + } + if (iteratorFound || (size >= 0)) + { + continue; + } + throw new CycleArgumentException("Invalid argument [" + iteratorName + "] for [cycle]"); + } + if (nodeName.equalsIgnoreCase("wrapper")) + { + beginNode = new ParamNode(entityName, ParamNodeType.WRAPPER, null); + beginNode.addSubNodes(parseNodes(node, true, names, fileName)); + nodes.add(beginNode); + DebugUtil.debug("Found [wrapper] data " + entityName); + continue; + } + if (nodeName.equalsIgnoreCase("write")) + { + beginNode = new ParamNode(entityName, ParamNodeType.CONSTANT, ParamType.STRING); + beginNode.setHidden(); + nodes.add(beginNode); + DebugUtil.debug("Found [constant] data: " + entityName); + continue; + } + if (!nodeName.equalsIgnoreCase("if")) + { + continue; + } + String paramName = node.getAttributes().getNamedItem("param").getNodeValue(); + String vsl = node.getAttributes().getNamedItem("val").getNodeValue(); + if (!paramName.startsWith("#")) + { + throw new Exception("Invalid argument [" + entityName + "] for [if]"); + } + paramName = paramName.substring(1); + ParamNode beginNode3 = new ParamNode(entityName, ParamNodeType.IF, null); + beginNode3.setParamIf(paramName); + beginNode3.setValIf(vsl); + beginNode3.addSubNodes(parseNodes(node, false, names, fileName)); + nodes.add(beginNode3); + DebugUtil.debug("Found [if] data: " + entityName); + } + return nodes; + } + + public Descriptor findDescriptorForFile(String dir, String fileName) + { + List listDes = _links.get(dir); + if (listDes == null) + { + return null; + } + for (DescriptorLink desc : listDes) + { + Map versions; + if (!fileName.toLowerCase().matches(desc.getNamePattern().toLowerCase()) || !_descriptors.containsKey(desc.getLinkFile()) || !(versions = _descriptors.get(desc.getLinkFile())).containsKey(desc.getLinkVersion())) + { + continue; + } + return versions.get(desc.getLinkVersion()); + } + return null; + } + + private boolean parseBoolNode(Node node, String name, boolean def) + { + if (node.getAttributes() == null) + { + return def; + } + if (node.getAttributes().getNamedItem(name) == null) + { + return def; + } + return node.getAttributes().getNamedItem(name).getNodeValue().equalsIgnoreCase("true"); + } + + private String parseStringNode(Node node, String name, String def) + { + if (node.getAttributes() == null) + { + return def; + } + if (node.getAttributes().getNamedItem(name) == null) + { + return def; + } + return node.getAttributes().getNamedItem(name).getNodeValue(); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorReader.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorReader.java new file mode 100644 index 0000000000..f482ed80db --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/DescriptorReader.java @@ -0,0 +1,395 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +import java.io.File; +import java.math.BigDecimal; +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.l2jmobius.L2ClientDat; +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.config.ConfigDebug; +import com.l2jmobius.data.GameDataName; +import com.l2jmobius.util.ByteReader; +import com.l2jmobius.util.DebugUtil; + +public class DescriptorReader +{ + private static DescriptorReader _instance = new DescriptorReader(); + final String eq = "="; + final String tab = "\t"; + final String nl = System.getProperty("line.separator"); + final String semi = ";"; + final String lb = "["; + final String rb = "]"; + + public static DescriptorReader getInstance() + { + return _instance; + } + + public String parseData(File currentFile, DatCrypter crypter, Descriptor desc, ByteBuffer data) throws Exception + { + String stringData; + if (desc.isRawData()) + { + StringBuilder builder = new StringBuilder(); + readVariables(currentFile, crypter, desc.getNodes().get(0), new HashMap(), data, builder, true); + stringData = builder.toString(); + } + else + { + stringData = this.parseData(currentFile, crypter, data, null, desc.getNodes(), 1, new HashMap(), false, 0).trim(); + } + if (desc.getFormat() != null) + { + stringData = desc.getFormat().decode(stringData); + } + int pos = desc.isSafePackage() ? data.position() + 13 : data.position(); + if (data.limit() > pos) + { + L2ClientDat.addLogConsole("Unpacked not full " + data.position() + "/" + data.limit() + " diff: " + (data.limit() - pos), true); + } + return stringData; + } + + private String parseData(File currentFile, DatCrypter crypter, ByteBuffer data, ParamNode lastNode, List nodes, int cycleSize, Map vars, boolean isNameHidden, int cycleNameLevel) throws Exception + { + if (cycleSize > 0) + { + StringBuilder out = new StringBuilder(); + for (int i = 0; i < cycleSize; ++i) + { + boolean isAddCycleName = !isNameHidden && (lastNode != null) && lastNode.getEntityType().isCycle(); + if (isAddCycleName) + { + for (int k = 0; k < cycleNameLevel; ++k) + { + out.append("\t"); + } + out.append(lastNode.getName().concat("_begin")); + ++cycleNameLevel; + } + int nodeSize = nodes.size(); + int nNode = 0; + for (ParamNode n : nodes) + { + if (n.isIterator()) + { + continue; + } + ++nNode; + } + if (isNameHidden && (nNode > 1)) + { + out.append("{"); + } + for (int j = 0; j < nodeSize; ++j) + { + ParamNode node = nodes.get(j); + if (node.getEntityType().isIf()) + { + Variant var = vars.get(node.getParamIf()); + if ((var == null) || !var.toString().equalsIgnoreCase(node.getValIf())) + { + continue; + } + out.append(this.parseData(currentFile, crypter, data, null, node.getSubNodes(), 1, vars, isNameHidden, cycleNameLevel)); + continue; + } + if (!(node.isIterator() || node.getEntityType().isConstant() || isNameHidden || (!node.getEntityType().isWrapper() && !node.isNameHidden()))) + { + out.append("\t").append(node.getName()).append("="); + } + if (node.getEntityType().isWrapper()) + { + out.append(this.parseData(currentFile, crypter, data, null, node.getSubNodes(), 1, vars, true, cycleNameLevel)); + } + else if (node.getEntityType().isCycle()) + { + int size; + if (node.getSize() >= 0) + { + size = node.getSize(); + } + else + { + Variant var = vars.get(node.getCycleName()); + if (var.isInt()) + { + size = var.getInt(); + } + else if (var.isShort()) + { + size = var.getShort(); + } + else + { + throw new Exception("Wrong cycle variable format for cycle: " + node.getName() + " iterator: " + node.getCycleName()); + } + } + if (node.isNameHidden()) + { + out.append("{"); + } + out.append(this.parseData(currentFile, crypter, data, node, node.getSubNodes(), size, vars, node.isNameHidden(), cycleNameLevel)); + if (node.isNameHidden()) + { + out.append("}"); + } + } + else if (node.getEntityType().isConstant()) + { + out.append(node.getName().replace("\\t", "\t").replace("\\r\\n", "\r\n")); + } + else if (node.getEntityType().isVariable()) + { + readVariables(currentFile, crypter, node, vars, data, out, false); + } + if (!node.isIterator() && !node.getEntityType().isConstant() && isNameHidden && (j != (nodeSize - 1))) + { + out.append(";"); + } + if (!vars.containsKey(node.getName())) + { + continue; + } + DebugUtil.debugPos(data.position(), node.getName(), vars.get(node.getName())); + } + if (isNameHidden) + { + if (nNode > 1) + { + out.append("}"); + } + if (i < (cycleSize - 1)) + { + out.append(";"); + } + } + if (!isAddCycleName) + { + continue; + } + if (out.charAt(out.length() - 1) != '\n') + { + out.append("\t"); + } + out.append(lastNode.getName()).append("_end\r\n"); + --cycleNameLevel; + } + return out.toString(); + } + return ""; + } + + private void readVariables(File currentFile, DatCrypter crypter, ParamNode node, Map vars, ByteBuffer data, StringBuilder out, boolean isRaw) throws Exception + { + switch (node.getType()) + { + case UCHAR: + { + short value = (byte) ByteReader.readChar(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Short.class)); + break; + } + case UBYTE: + { + int value = ByteReader.readUByte(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Integer.class)); + break; + } + case SHORT: + { + short value = ByteReader.readShort(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Short.class)); + break; + } + case USHORT: + { + int value = ByteReader.readShort(data) & 65535; + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Integer.class)); + break; + } + case UINT: + { + int value = ByteReader.readUInt(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Integer.class)); + break; + } + case INT: + { + int value = ByteReader.readInt(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Integer.class)); + break; + } + case CNTR: + { + int value = ByteReader.readCompactInt(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Integer.class)); + break; + } + case UNICODE: + { + String str = ByteReader.readUtfString(data, isRaw); + if (isRaw) + { + out.append(str); + break; + } + if (!node.isIterator()) + { + out.append("[").append(str).append("]"); + } + vars.put(node.getName(), new Variant(str, String.class)); + break; + } + case ASCF: + { + String str = ByteReader.readString(data, isRaw); + if (isRaw) + { + out.append(str); + break; + } + if (!node.isIterator()) + { + out.append("[").append(str).append("]"); + } + vars.put(node.getName(), new Variant(str, String.class)); + break; + } + case DOUBLE: + { + double value = ByteReader.readDouble(data); + if (!node.isIterator()) + { + out.append(new BigDecimal(Double.toString(value)).toPlainString()); + } + vars.put(node.getName(), new Variant(value, Double.class)); + break; + } + case FLOAT: + { + float value = ByteReader.readFloat(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(Float.valueOf(value), Float.class)); + break; + } + case LONG: + { + long value = ByteReader.readLong(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, Long.class)); + break; + } + case RGBA: + { + String value = ByteReader.readRGBA(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, String.class)); + break; + } + case RGB: + { + String value = ByteReader.readRGB(data); + if (!node.isIterator()) + { + out.append(value); + } + vars.put(node.getName(), new Variant(value, String.class)); + break; + } + case HEX: + { + int value = ByteReader.readUByte(data); + if (!node.isIterator()) + { + String hex = Integer.toHexString(value).toUpperCase(); + if (hex.length() == 1) + { + hex = "0" + hex; + } + out.append(hex); + } + vars.put(node.getName(), new Variant(value, Integer.class)); + break; + } + case MAP_INT: + { + int index = ByteReader.readUInt(data); + if (ConfigDebug.DAT_REPLACEMENT_NAMES) + { + String paramName = GameDataName.getInstance().getString(currentFile, crypter, index); + if (!node.isIterator()) + { + out.append(paramName); + } + vars.put(node.getName(), new Variant(paramName, String.class)); + break; + } + if (!node.isIterator()) + { + out.append(index); + } + vars.put(node.getName(), new Variant(index, Integer.class)); + break; + } + } + } + +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorWriter.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorWriter.java new file mode 100644 index 0000000000..97f3592333 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/DescriptorWriter.java @@ -0,0 +1,362 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; + +import com.l2jmobius.clientcryptor.crypt.DatCrypter; +import com.l2jmobius.config.ConfigDebug; +import com.l2jmobius.data.GameDataName; +import com.l2jmobius.util.ByteWriter; +import com.l2jmobius.util.DebugUtil; +import com.l2jmobius.util.Util; +import com.l2jmobius.xml.exceptions.CycleArgumentException; +import com.l2jmobius.xml.exceptions.PackDataException; + +public class DescriptorWriter +{ + private static final byte[] endFileBytes = new byte[] + { + 12, + 83, + 97, + 102, + 101, + 80, + 97, + 99, + 107, + 97, + 103, + 101, + 0 + }; + private static final DescriptorWriter _instance = new DescriptorWriter(); + private static final Logger _log = LogManager.getLogger(DescriptorWriter.class); + + public static DescriptorWriter getInstance() + { + return _instance; + } + + public static byte[] parseData(File currentFile, DatCrypter crypter, Descriptor desc, String data) throws Exception + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(data.length() / 2); + if (desc.getFormat() != null) + { + data = desc.getFormat().encode(data); + } + if (desc.isRawData()) + { + Buffer result = DescriptorWriter.parseNodeValue(currentFile, crypter, data, desc.getNodes().get(0), true); + if (result != null) + { + stream.write((byte[]) result.array()); + } + else + { + _log.error("Failed to parse raw data."); + } + } + else + { + ByteBuffer buffer = ByteBuffer.allocateDirect(data.length() * 2); + String lines = data.replace("\r\n", "\t"); + HashMap counters = new HashMap<>(); + DescriptorWriter.packData(currentFile, crypter, buffer, lines, counters, new HashMap(), new HashMap(), desc.getNodes()); + try + { + buffer.flip(); + stream.write(ByteBuffer.allocate(buffer.limit()).put(buffer).array()); + } + catch (IOException e) + { + DebugUtil.getLogger().error(e.getMessage(), e); + } + } + if (desc.isSafePackage()) + { + stream.write(endFileBytes); + } + return stream.toByteArray(); + } + + private static void packData(File currentFile, DatCrypter crypter, ByteBuffer buffer, String lines, Map counters, Map paramMap, Map mapData, List nodes) throws Exception + { + for (ParamNode node : nodes) + { + try + { + String param; + if (node.isIterator()) + { + counters.put(node, buffer.position()); + continue; + } + if (node.getEntityType().isCycle()) + { + if (!node.isNameHidden()) + { + Pattern pattern = Pattern.compile("\\b" + node.getName().concat("_begin\\b(.*?)\\b").concat(node.getName()).concat("_end\\b"), 32); + Matcher m = pattern.matcher(lines); + ArrayList list = new ArrayList<>(); + while (m.find()) + { + list.add(m.group(1)); + } + DescriptorWriter.writeSize(currentFile, crypter, buffer, counters, node, list.size()); + for (String str : list) + { + paramMap.putAll(Util.stringToMap(str)); + DescriptorWriter.packData(currentFile, crypter, buffer, str, counters, paramMap, mapData, node.getSubNodes()); + } + continue; + } + param = DescriptorWriter.getDataString(node, node.getName(), paramMap, mapData); + if (param == null) + { + throw new Exception("Error getDataString == null node: " + node.getName()); + } + if (param.isEmpty() || param.equals("{}")) + { + DescriptorWriter.writeSize(currentFile, crypter, buffer, counters, node, 0); + continue; + } + List subParams = Util.splitList(param); + int cycleSize = subParams.size(); + if ((node.getSize() > 0) && (node.getSize() != cycleSize)) + { + throw new Exception("Wrong static cycle count for cycle: " + node.getName() + " size: " + subParams.size() + " params: " + Arrays.toString(subParams.toArray())); + } + DescriptorWriter.writeSize(currentFile, crypter, buffer, counters, node, cycleSize); + int nPramNode = 0; + int nCycleNode = 0; + for (ParamNode n : node.getSubNodes()) + { + if (n.getEntityType().isCycle()) + { + ++nCycleNode; + continue; + } + if (n.isIterator()) + { + continue; + } + ++nPramNode; + } + for (String subParam : subParams) + { + int paramIndex = 0; + List sub2Params = (nPramNode > 0) || (nCycleNode > 1) ? Util.splitList(subParam) : Collections.singletonList(subParam); + for (ParamNode n : node.getSubNodes()) + { + if (n.isIterator() || n.getEntityType().isConstant()) + { + continue; + } + if (paramIndex >= sub2Params.size()) + { + throw new Exception("Wrong cycle param count for cycle: " + node.getName() + " paramIndex: " + paramIndex + " params: " + Arrays.toString(sub2Params.toArray())); + } + mapData.put(n, sub2Params.get(paramIndex++)); + } + DescriptorWriter.packData(currentFile, crypter, buffer, lines, counters, paramMap, mapData, node.getSubNodes()); + } + continue; + } + if (node.getEntityType().isWrapper()) + { + List subParams = Util.splitList(DescriptorWriter.getDataString(node, node.getName(), paramMap, mapData)); + int paramIndex = 0; + for (ParamNode n : node.getSubNodes()) + { + if (n.isIterator() || n.getEntityType().isConstant()) + { + continue; + } + mapData.put(n, subParams.get(paramIndex++)); + } + DescriptorWriter.packData(currentFile, crypter, buffer, lines, counters, paramMap, mapData, node.getSubNodes()); + continue; + } + if (node.getEntityType().isVariable()) + { + buffer.put((byte[]) DescriptorWriter.parseNodeValue(currentFile, crypter, DescriptorWriter.getDataString(node, node.getName(), paramMap, mapData), node, false).array()); + continue; + } + if (!node.getEntityType().isIf() || ((param = DescriptorWriter.getDataString(node, node.getParamIf(), paramMap, mapData)) == null) || !node.getValIf().equalsIgnoreCase(param)) + { + continue; + } + DescriptorWriter.packData(currentFile, crypter, buffer, lines, counters, paramMap, mapData, node.getSubNodes()); + } + catch (Exception e) + { + throw new PackDataException(e + "\r\n-node: " + node + "\r\n\tparam: " + paramMap.get(node.getName())); + } + } + } + + private static Buffer parseNodeValue(File currentFile, DatCrypter crypter, String data, ParamNode node, boolean isRaw) + { + ParamType nodeType = node.getType(); + if (nodeType == null) + { + _log.error("Incorrect node type for node " + node); + return null; + } + try + { + switch (nodeType) + { + case UCHAR: + { + return ByteWriter.writeChar(Byte.parseByte(data)); + } + case CNTR: + { + return ByteWriter.writeCompactInt(Integer.parseInt(data)); + } + case UBYTE: + { + return ByteWriter.writeUByte(Short.parseShort(data)); + } + case SHORT: + { + return ByteWriter.writeShort(Short.parseShort(data)); + } + case USHORT: + { + return ByteWriter.writeUShort(Integer.parseInt(data)); + } + case UINT: + case INT: + { + return ByteWriter.writeInt(Integer.parseInt(data)); + } + case UNICODE: + { + return ByteWriter.writeUtfString(isRaw ? data : data.substring(1, data.length() - 1), isRaw); + } + case ASCF: + { + return ByteWriter.writeString(isRaw ? data : data.substring(1, data.length() - 1), isRaw); + } + case DOUBLE: + { + return ByteWriter.writeDouble(Double.parseDouble(data)); + } + case FLOAT: + { + return ByteWriter.writeFloat(Float.parseFloat(data)); + } + case LONG: + { + return ByteWriter.writeLong(Long.parseLong(data)); + } + case RGBA: + { + return ByteWriter.writeRGBA(data); + } + case RGB: + { + return ByteWriter.writeRGB(data); + } + case HEX: + { + return ByteWriter.writeByte((byte) (Integer.parseInt(data, 16) & 255)); + } + case MAP_INT: + { + if (ConfigDebug.DAT_REPLACEMENT_NAMES) + { + return ByteWriter.writeInt(GameDataName.getInstance().getId(currentFile, crypter, node, data)); + } + return ByteWriter.writeInt(Integer.parseInt(data)); + } + } + DebugUtil.getLogger().error("Unsupported primitive type " + (nodeType)); + } + catch (Exception e) + { + _log.error("Failed to parse value for node " + node + " data: " + data, e); + } + return null; + } + + private static String getDataString(ParamNode node, String name, Map paramMap, Map mapData) + { + if ((mapData != null) && mapData.containsKey(node)) + { + return mapData.get(node); + } + return paramMap.get(name); + } + + private static void writeSize(File currentFile, DatCrypter crypter, ByteBuffer buffer, Map counters, ParamNode node, int cycleSize) throws CycleArgumentException + { + if (!node.isSkipWriteSize() && (node.getSize() < 0)) + { + ParamNode iterator = node.getTmpIterator(); + if (iterator == null) + { + counters.keySet().stream().filter(n -> n.getName().equals(node.getCycleName())).forEach(node::setTmpIterator); + iterator = node.getTmpIterator(); + if (iterator == null) + { + throw new CycleArgumentException("Invalid argument [" + node.getName() + "] for cycle"); + } + } + Buffer buff = DescriptorWriter.parseNodeValue(currentFile, crypter, String.valueOf(cycleSize), iterator, false); + int pos = counters.get(iterator); + if (pos >= 0) + { + int rem = buffer.position(); + if (pos == rem) + { + buffer.put((byte[]) buff.array()); + } + else + { + byte[] arrayNext = new byte[rem - pos]; + buffer.position(pos); + buffer.get(arrayNext); + buffer.position(pos); + buffer.put((byte[]) buff.array()); + buffer.put(arrayNext); + } + counters.remove(iterator); + } + } + } + +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/ParamNode.java b/L2ClientDat/java/com/l2jmobius/xml/ParamNode.java new file mode 100644 index 0000000000..4f00dff192 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/ParamNode.java @@ -0,0 +1,189 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +import java.util.ArrayList; +import java.util.List; + +public class ParamNode +{ + private String _name; + private int _size = -1; + private boolean _hidden = false; + private String _cycleName; + private final ParamNodeType _entityType; + private final ParamType _type; + private List _sub; + private boolean _isIterator; + private ParamNode _tmpIterator; + private boolean _skipWriteSize; + private String _paramIf; + private String _valIf; + + ParamNode(String name, ParamNodeType entityType, ParamType type) + { + _name = name; + _entityType = entityType; + _type = type; + } + + public void setName(String name) + { + _name = name; + } + + public void setSize(int size) + { + _size = size; + } + + public int getSize() + { + return _size; + } + + void setIterator() + { + _isIterator = true; + } + + void setHidden() + { + _hidden = true; + } + + boolean isIterator() + { + return _isIterator && (_size < 0); + } + + boolean isNameHidden() + { + return _hidden; + } + + public String getName() + { + return _name; + } + + ParamNodeType getEntityType() + { + return _entityType; + } + + public ParamType getType() + { + return _type; + } + + synchronized ParamNode copy() + { + ParamNode node = new ParamNode(getName(), getEntityType(), getType()); + if (isNameHidden()) + { + node.setHidden(); + } + if (isIterator()) + { + node.setIterator(); + } + node.setSkipWriteSize(isSkipWriteSize()); + node.setCycleName(getCycleName()); + if (getSubNodes() != null) + { + ArrayList list = new ArrayList<>(); + for (ParamNode n : getSubNodes()) + { + ParamNode copyN = n.copy(); + list.add(copyN); + } + node.addSubNodes(list); + } + return node; + } + + synchronized void addSubNodes(List n) + { + if (_sub == null) + { + _sub = new ArrayList<>(); + } + _sub.addAll(n); + } + + List getSubNodes() + { + return _sub; + } + + @Override + public String toString() + { + return _name + "[" + (_entityType) + "][" + _cycleName + "][" + (_type) + "]"; + } + + ParamNode getTmpIterator() + { + return _tmpIterator; + } + + void setTmpIterator(ParamNode tmpIterator) + { + _tmpIterator = tmpIterator; + } + + boolean isSkipWriteSize() + { + return _skipWriteSize; + } + + void setSkipWriteSize(boolean skipWrite) + { + _skipWriteSize = skipWrite; + } + + void setParamIf(String paramIf) + { + _paramIf = paramIf; + } + + void setValIf(String valIf) + { + _valIf = valIf; + } + + String getParamIf() + { + return _paramIf; + } + + String getValIf() + { + return _valIf; + } + + String getCycleName() + { + return _cycleName; + } + + void setCycleName(String cycleName) + { + _cycleName = cycleName; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/ParamNodeType.java b/L2ClientDat/java/com/l2jmobius/xml/ParamNodeType.java new file mode 100644 index 0000000000..59dc2e8aea --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/ParamNodeType.java @@ -0,0 +1,55 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +enum ParamNodeType +{ + FOR, + WRAPPER, + CONSTANT, + VARIABLE, + IF; + + private ParamNodeType() + { + } + + boolean isCycle() + { + return this == FOR; + } + + public boolean isWrapper() + { + return this == WRAPPER; + } + + boolean isConstant() + { + return this == CONSTANT; + } + + boolean isVariable() + { + return this == VARIABLE; + } + + boolean isIf() + { + return this == IF; + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/ParamType.java b/L2ClientDat/java/com/l2jmobius/xml/ParamType.java new file mode 100644 index 0000000000..281778880b --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/ParamType.java @@ -0,0 +1,42 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +enum ParamType +{ + UCHAR, + CNTR, + UBYTE, + USHORT, + SHORT, + UINT, + STRING, + INT, + UNICODE, + ASCF, + DOUBLE, + FLOAT, + LONG, + RGBA, + RGB, + HEX, + MAP_INT; + + private ParamType() + { + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/Variant.java b/L2ClientDat/java/com/l2jmobius/xml/Variant.java new file mode 100644 index 0000000000..551b23d563 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/Variant.java @@ -0,0 +1,80 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml; + +public class Variant +{ + private final Object _value; + private final Class _type; + + Variant(Object value, Class type) + { + _value = type.cast(value); + _type = type; + } + + public final boolean isInt() + { + return _type == Integer.class; + } + + public final boolean isShort() + { + return _type == Short.class; + } + + public final boolean isFloat() + { + return _type == Float.class; + } + + public final boolean isDouble() + { + return _type == Double.class; + } + + public final int getInt() + { + return (Integer) _value; + } + + public final short getShort() + { + return (Short) _value; + } + + public final float getFloat() + { + return ((Float) _value).floatValue(); + } + + public double getDouble() + { + return (Double) _value; + } + + public long getLong() + { + return (Long) _value; + } + + @Override + public final String toString() + { + return String.valueOf(_value); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/exceptions/CycleArgumentException.java b/L2ClientDat/java/com/l2jmobius/xml/exceptions/CycleArgumentException.java new file mode 100644 index 0000000000..83c302ad72 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/exceptions/CycleArgumentException.java @@ -0,0 +1,25 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml.exceptions; + +public class CycleArgumentException extends Exception +{ + public CycleArgumentException(String message) + { + super(message); + } +} diff --git a/L2ClientDat/java/com/l2jmobius/xml/exceptions/PackDataException.java b/L2ClientDat/java/com/l2jmobius/xml/exceptions/PackDataException.java new file mode 100644 index 0000000000..ea6ecf0537 --- /dev/null +++ b/L2ClientDat/java/com/l2jmobius/xml/exceptions/PackDataException.java @@ -0,0 +1,25 @@ +/* + * This file is part of the L2J Mobius project. + * + * 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 . + */ +package com.l2jmobius.xml.exceptions; + +public class PackDataException extends Exception +{ + public PackDataException(String message) + { + super(message); + } +}