DrenepiaWorld Posted September 4, 2015 Posted September 4, 2015 Hello members of MaxCheaters, here is a code for enchant config with different rates for each level. With this code you can configure your server enchant as you want, for weapons and armors and jewels!For example: From +3 to +9 "90%" from 9-10 "80%".Here are the configs to get a first look of the code. #============================================================= # Enchant #============================================================= #------------------------------------------------------------- # Chance of Normal enchant scroll #------------------------------------------------------------- # Weapon NormalWeaponEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; # Armor NormalArmorEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; # Jewelry NormalJewelryEnchantLevel = 1,100;2,100;3,100;4,95;5,90;6,85;7,80;8,75;9,70;10,65;11,60;12,55;13,50;14,45;15,40;16,35; #------------------------------------------------------------- # Chance bless enchant scroll #------------------------------------------------------------- # Weapon BlessWeaponEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; # Armor BlessArmorEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; # Jewelry BlessJewelryEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; #------------------------------------------------------------- # Chance crystal scroll #------------------------------------------------------------- # Weapon CrystalWeaponEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; # Armor CrystalArmorEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; # Jewelry CrystalJewelryEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; And here is the code: ### Eclipse Workspace Patch 1.0 #P aCis Index: gameserver/java/net/sf/l2j/Config.java =================================================================== --- gameserver/java/net/sf/l2j/Config.java (revision 90) +++ gameserver/java/net/sf/l2j/Config.java (working copy) @@ -34,6 +34,8 @@ import java.util.logging.Logger; import javolution.util.FastList; +import javolution.util.FastMap; +import javolution.text.TypeFormat; import net.sf.l2j.util.StringUtil; /** @@ -322,9 +324,17 @@ public static int ALT_GAME_FREIGHT_PRICE; /** Enchant */ - public static int ENCHANT_CHANCE_WEAPON; - public static int ENCHANT_CHANCE_ARMOR; - public static int ENCHANT_CHANCE_JEWELRY; + public final static FastMap<Integer, Integer> NORMAL_WEAPON_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + public final static FastMap<Integer, Integer> BLESS_WEAPON_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + public final static FastMap<Integer, Integer> CRYTAL_WEAPON_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + + public final static FastMap<Integer, Integer> NORMAL_ARMOR_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + public final static FastMap<Integer, Integer> BLESS_ARMOR_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + public final static FastMap<Integer, Integer> CRYSTAL_ARMOR_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + + public final static FastMap<Integer, Integer> NORMAL_JEWELRY_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + public final static FastMap<Integer, Integer> BLESS_JEWELRY_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); + public final static FastMap<Integer, Integer> CRYSTAL_JEWELRY_ENCHANT_LEVEL = new FastMap<Integer, Integer>(); public static int ENCHANT_MAX_WEAPON; public static int ENCHANT_MAX_ARMOR; public static int ENCHANT_MAX_JEWELRY; @@ -917,9 +927,99 @@ ALT_GAME_FREIGHTS = Boolean.parseBoolean(playersSettings.getProperty("AltGameFreights", "False")); ALT_GAME_FREIGHT_PRICE = Integer.parseInt(playersSettings.getProperty("AltGameFreightPrice", "1000")); - ENCHANT_CHANCE_WEAPON = Integer.parseInt(playersSettings.getProperty("EnchantChanceWeapon", "66")); - ENCHANT_CHANCE_ARMOR = Integer.parseInt(playersSettings.getProperty("EnchantChanceArmor", "66")); - ENCHANT_CHANCE_JEWELRY = Integer.parseInt(playersSettings.getProperty("EnchantChanceJewelry", "66")); + String[] propertySplit = playersSettings.getProperty("NormalWeaponEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + NORMAL_WEAPON_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + propertySplit = playersSettings.getProperty("BlessWeaponEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + BLESS_WEAPON_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + propertySplit = playersSettings.getProperty("CrystalWeaponEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + CRYTAL_WEAPON_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + //// + + propertySplit = playersSettings.getProperty("NormalArmorEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + NORMAL_ARMOR_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + propertySplit = playersSettings.getProperty("BlessArmorEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + BLESS_ARMOR_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + propertySplit = playersSettings.getProperty("CrystalArmorEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + CRYSTAL_ARMOR_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + //// + + propertySplit = playersSettings.getProperty("NormalJewelryEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + NORMAL_JEWELRY_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + propertySplit = playersSettings.getProperty("BlessJewelryEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + BLESS_JEWELRY_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } + + propertySplit = playersSettings.getProperty("CrystalJewelryEnchantLevel", "").split(";"); + for(String readData : propertySplit) + { + String[] writeData = readData.split(","); + if(writeData.length != 2) continue; + try { + CRYSTAL_JEWELRY_ENCHANT_LEVEL.put(TypeFormat.parseInt(writeData[0]), TypeFormat.parseInt(writeData[1])); + } catch(NumberFormatException nfe) {} + } ENCHANT_MAX_WEAPON = Integer.parseInt(playersSettings.getProperty("EnchantMaxWeapon", "16")); ENCHANT_MAX_ARMOR = Integer.parseInt(playersSettings.getProperty("EnchantMaxArmor", "16")); ENCHANT_MAX_JEWELRY = Integer.parseInt(playersSettings.getProperty("EnchantMaxJewelry", "16")); @@ -1375,9 +1475,9 @@ else if (pName.equalsIgnoreCase("MaximumWarehouseSlotsForClan")) WAREHOUSE_SLOTS_CLAN = Integer.parseInt(pValue); else if (pName.equalsIgnoreCase("MaximumFreightSlots")) FREIGHT_SLOTS = Integer.parseInt(pValue); - else if (pName.equalsIgnoreCase("EnchantChanceWeapon")) ENCHANT_CHANCE_WEAPON = Integer.parseInt(pValue); - else if (pName.equalsIgnoreCase("EnchantChanceArmor")) ENCHANT_CHANCE_ARMOR = Integer.parseInt(pValue); - else if (pName.equalsIgnoreCase("EnchantChanceJewelry")) ENCHANT_CHANCE_JEWELRY = Integer.parseInt(pValue); + // else if (pName.equalsIgnoreCase("EnchantChanceWeapon")) ENCHANT_CHANCE_WEAPON = Integer.parseInt(pValue); + // else if (pName.equalsIgnoreCase("EnchantChanceArmor")) ENCHANT_CHANCE_ARMOR = Integer.parseInt(pValue); + // else if (pName.equalsIgnoreCase("EnchantChanceJewelry")) ENCHANT_CHANCE_JEWELRY = Integer.parseInt(pValue); else if (pName.equalsIgnoreCase("EnchantMaxWeapon")) ENCHANT_MAX_WEAPON = Integer.parseInt(pValue); else if (pName.equalsIgnoreCase("EnchantMaxArmor")) ENCHANT_MAX_ARMOR = Integer.parseInt(pValue); else if (pName.equalsIgnoreCase("EnchantMaxJewelry")) ENCHANT_MAX_JEWELRY = Integer.parseInt(pValue); Index: gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestEnchantItem.java =================================================================== --- gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestEnchantItem.java (revision 90) +++ gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestEnchantItem.java (working copy) @@ -40,7 +40,13 @@ { protected static final Logger _log = Logger.getLogger(Inventory.class.getName()); private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem"; - private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 }; + private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 }; + private static final int[] NORMAL_WEAPON_SCROLLS = { 729, 947, 951, 955, 959 }; + private static final int[] BLESSED_WEAPON_SCROLLS = { 6569, 6571, 6573, 6575, 6577 }; + private static final int[] CRYSTAL_WEAPON_SCROLLS = { 731, 949, 953, 957, 961 }; + private static final int[] NORMAL_ARMOR_SCROLLS = { 730, 948, 952, 956, 960 }; + private static final int[] BLESSED_ARMOR_SCROLLS = { 6570, 6572, 6574, 6576, 6578 }; + private static final int[] CRYSTAL_ARMOR_SCROLLS = { 732, 950, 954, 958, 962 }; private int _objectId; @@ -200,21 +206,150 @@ int chance = 0; int maxEnchantLevel = 0; - if (item.getItem().getType2() == L2Item.TYPE2_WEAPON) - { - chance = Config.ENCHANT_CHANCE_WEAPON; - maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; - } - else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR) - { - chance = Config.ENCHANT_CHANCE_ARMOR; - maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; - } - else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY) - { - chance = Config.ENCHANT_CHANCE_JEWELRY; - maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; - } + if(item.getItem().getType2() == L2Item.TYPE2_WEAPON) + { + for(int normalweaponscroll : NORMAL_WEAPON_SCROLLS) + { + if(scroll.getItemId() == normalweaponscroll) + { + if(item.getEnchantLevel() + 1 > Config.NORMAL_WEAPON_ENCHANT_LEVEL.size()) + { + chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(Config.NORMAL_WEAPON_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; + } + } + for(int blessedweaponscroll : BLESSED_WEAPON_SCROLLS) + { + if(scroll.getItemId() == blessedweaponscroll) + { + if(item.getEnchantLevel() + 1 > Config.BLESS_WEAPON_ENCHANT_LEVEL.size()) + { + chance = Config.BLESS_WEAPON_ENCHANT_LEVEL.get(Config.BLESS_WEAPON_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.BLESS_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; + } + } + for(int crystalweaponscroll : CRYSTAL_WEAPON_SCROLLS) + { + if(scroll.getItemId() == crystalweaponscroll) + { + if(item.getEnchantLevel() + 1 > Config.CRYTAL_WEAPON_ENCHANT_LEVEL.size()) + { + chance = Config.CRYTAL_WEAPON_ENCHANT_LEVEL.get(Config.CRYTAL_WEAPON_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.CRYTAL_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; + } + } + } + else if(item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR) + { + for(int normalarmorscroll : NORMAL_ARMOR_SCROLLS) + { + if(scroll.getItemId() == normalarmorscroll) + { + if(item.getEnchantLevel() + 1 > Config.NORMAL_ARMOR_ENCHANT_LEVEL.size()) + { + chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(Config.NORMAL_ARMOR_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; + } + } + for(int blessedarmorscroll : BLESSED_ARMOR_SCROLLS) + { + if(scroll.getItemId() == blessedarmorscroll) + { + if(item.getEnchantLevel() + 1 > Config.BLESS_ARMOR_ENCHANT_LEVEL.size()) + { + chance = Config.BLESS_ARMOR_ENCHANT_LEVEL.get(Config.BLESS_ARMOR_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.BLESS_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; + } + } + for(int crystalarmorscroll : CRYSTAL_ARMOR_SCROLLS) + { + if(scroll.getItemId() == crystalarmorscroll) + { + if(item.getEnchantLevel() + 1 > Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.size()) + { + chance = Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.get(Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; + } + } + } + else if(item.getItem().getType2() == L2Item.TYPE2_ACCESSORY) + { + for(int normaljewelscroll : NORMAL_ARMOR_SCROLLS) + { + if(scroll.getItemId() == normaljewelscroll) + { + if(item.getEnchantLevel() + 1 > Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size()) + { + chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; + } + } + for(int blessedjewelscroll : BLESSED_ARMOR_SCROLLS) + { + if(scroll.getItemId() == blessedjewelscroll) + { + if(item.getEnchantLevel() + 1 > Config.BLESS_JEWELRY_ENCHANT_LEVEL.size()) + { + chance = Config.BLESS_JEWELRY_ENCHANT_LEVEL.get(Config.BLESS_JEWELRY_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.BLESS_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; + } + } + for(int crystaljewelscroll : CRYSTAL_ARMOR_SCROLLS) + { + if(scroll.getItemId() == crystaljewelscroll) + { + if(item.getEnchantLevel() + 1 > Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.size()) + { + chance = Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.get(Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.size()); + } + else + { + chance = Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1); + } + maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; + } + } + } if (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX || (item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR Index: gameserver/config/players.properties =================================================================== --- gameserver/config/players.properties (revision 90) +++ gameserver/config/players.properties (working copy) @@ -77,10 +77,35 @@ #============================================================= # Enchant #============================================================= -# % Chance of succeding to enchant an item when it has a chance of breaking -EnchantChanceWeapon = 66 -EnchantChanceArmor = 66 -EnchantChanceJewelry = 66 +#------------------------------------------------------------- +# Chance of Normal enchant scroll +#------------------------------------------------------------- +# Weapon +NormalWeaponEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; +# Armor +NormalArmorEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; +# Jewelry +NormalJewelryEnchantLevel = 1,100;2,100;3,100;4,95;5,90;6,85;7,80;8,75;9,70;10,65;11,60;12,55;13,50;14,45;15,40;16,35; + +#------------------------------------------------------------- +# Chance bless enchant scroll +#------------------------------------------------------------- +# Weapon +BlessWeaponEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; +# Armor +BlessArmorEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; +# Jewelry +BlessJewelryEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; + +#------------------------------------------------------------- +# Chance crystal scroll +#------------------------------------------------------------- +# Weapon +CrystalWeaponEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; +# Armor +CrystalArmorEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; +# Jewelry +CrystalJewelryEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; # Enchant limit [default = 16], 0 =unlimited EnchantMaxWeapon = 16 Credits: ClauElx
DrenepiaWorld Posted September 4, 2015 Author Posted September 4, 2015 thx for share..usefull code :) np mate :)
SweeTs Posted September 4, 2015 Posted September 4, 2015 (edited) Why you are resharing old (not working) crap for aCis? This code uses fastmap, javolution required.. So the code is outdated as hell. You could rework it at least. Edited September 4, 2015 by SweeTs
DrenepiaWorld Posted September 4, 2015 Author Posted September 4, 2015 Why you are resharing old (not working) crap for aCis? This code uses fastmap, javolution required.. So the code is outdated as hell. You could rework it at least. almost all codes on aCis section and here need rework, i found them on my files and i just shared them not even checked them if they're still working cause i used them before some months.. and it's not that hard to make it work lol
SweeTs Posted September 4, 2015 Posted September 4, 2015 (edited) Yes but while you share something, it should be tested or at least up to date. The reason is, someone will take this code and right after the drama begins - "its not working, errors everywhere, help me". That means, the code is useless. Edited September 4, 2015 by SweeTs
DrenepiaWorld Posted September 4, 2015 Author Posted September 4, 2015 Yes but while you share something, it should be tested or at least up to date. The reason is, someone will take this code and right after the drama begins - "its not working, errors everywhere, help me". That means, the code is useless. yup you're so damn right on this, i just didn't check it cause before some months i had no problems.
SweeTs Posted September 4, 2015 Posted September 4, 2015 (edited) Some months is a loong time. Actually on aCis javalotion is dropped, first problem and the Crystal type is also reworked, second problem and so, that makes the code broken :P Edited September 4, 2015 by SweeTs
DrenepiaWorld Posted September 4, 2015 Author Posted September 4, 2015 Some months is a loong time. Actually on aCis javalotion is dropped, first problem and the Crystal type is also reworked, second problem and so, that makes the code broken :P true that :P i had problem with the most of codes i recently added on my sources, the most of codes was useless xd anyway if i get some free time i'll try to update the code to make it work, or you can lock it
Nightw0lf Posted September 4, 2015 Posted September 4, 2015 (edited) remove this code not everybody knows how to remove javolution FastList,FastMap,TypeFormat most ppl cant pass the login screen... jesus +import javolution.util.FastList;+import javolution.util.FastMap;+import javolution.text.TypeFormat; Edited September 4, 2015 by Nightw0lf
Recommended Posts