look for com.l2jserver.gameserver.model.actor.appearance.ColorNameManager.java
and replace it for:
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.model.actor.appearance;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Set;
import com.l2jserver.L2DatabaseFactory;
import javolution.util.FastMap;
/**
* @author BiggBoss
*/
public class ColorNameManager
{
private static FastMap<Integer, String> _pvpColor = new FastMap<Integer, String>();
private static FastMap<Integer, String> _pkColor = new FastMap<Integer, String>();
private ColorNameManager()
{
}
public static ColorNameManager getInstance()
{
return SingletonHolder._cne;
}
/**
* Will load all pvp count with their respective color at server start up
* Also will set up the higher pvp/pk count rank for future purposes
*/
public void loadValues()
{
Connection con = null;
try
{
_pvpColor.put(0, "FFFFFF");
_pkColor.put(0, "FFFFFF");
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement pvpStatement = con.prepareStatement("SELECT * FROM pvp_color_nick WHERE type = ?");
pvpStatement.setString(1, "pvp");
ResultSet pvpRset = pvpStatement.executeQuery();
while(pvpRset.next())
{
_pvpColor.put(pvpRset.getInt("pvppk_count"), pvpRset.getString("color"));
}
pvpRset.close();
pvpStatement.close();
PreparedStatement pkStatement = con.prepareStatement("SELECT * FROM pvp_color_nick WHERE type = ?");
pkStatement.setString(1, "pk");
ResultSet pkRset = pkStatement.executeQuery();
while(pkRset.next())
{
_pkColor.put(pkRset.getInt("pvppk_count"), pkRset.getString("color"));
}
pkRset.close();
pkStatement.close();
}
catch(SQLException sqle)
{
sqle.printStackTrace();
}
finally
{
try
{
if(con != null)
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
System.out.println("ColorNameManager: Loaded " + _pvpColor.size() + " colors for pvp kills!");
System.out.println("ColorNameManager: Loaded " + _pkColor.size() + " colors for pk kills!");
}
/**
* Returns a string-representative with the color of the rank
* @param kills
* @param forPvp
* @return a String containing the Hexadecimal color
*/
public String getColor(int kills, boolean forPvp)
{
String color = "";
if(forPvp)
color = _pvpColor.get(getValueBefore(kills, _pvpColor.keySet()));
else
color = _pkColor.get(getValueBefore(kills, _pkColor.keySet()));
return color;
}
/**
* Will return the value just before the given value contained
* in the provided Set of integers
* @param value
* @param set
* @return the value just before the provided one
*/
private static int getValueBefore(int value, Set<Integer> set)
{
int counter = 0;
for(int i : set)
{
if(i > counter && value > i)
counter = i;
}
return counter;
}
static class SingletonHolder
{
static ColorNameManager _cne = new ColorNameManager();
}
}