Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package l2f.gameserver.taskmanager;
- import l2f.gameserver.Config;
- import l2f.gameserver.ThreadPoolManager;
- import l2f.gameserver.model.GameObjectsStorage;
- import l2f.gameserver.model.Player;
- import org.apache.commons.lang3.ArrayUtils;
- import java.util.HashMap;
- import java.util.Map;
- public class ExtremeColoring implements Runnable
- {
- private final Map<Integer, Long> lastUpdates;
- private ExtremeColoring()
- {
- lastUpdates = new HashMap<>();
- }
- public static void startThread()
- {
- ThreadPoolManager.getInstance().scheduleAtFixedRate(new ExtremeColoring(), 200L, 200L);
- }
- @Override
- public void run()
- {
- long currentTime = System.currentTimeMillis();
- for(Player player : GameObjectsStorage.getAllPlayers())
- {
- int[] playerColorsGroup = getMyColors(player);
- int myCurrentColor = player.getAppearence().getNameColor();
- if(canColorBeUpdated(player, playerColorsGroup, myCurrentColor, currentTime))
- {
- int newColor = getNextRecordValue(playerColorsGroup, myCurrentColor);
- updateColor(player, newColor);
- lastUpdates.put(player.getObjectId(), currentTime);
- }
- }
- }
- private static int[] getMyColors(Player player)
- {
- int lastI = 0;
- for (int i : Config.PLAYER_COLORS.keySet())
- {
- if (player.getPvpKills() >= i)
- {
- lastI = i;
- }
- }
- return Config.PLAYER_COLORS.get(lastI);
- }
- private static int getNextRecordValue(int[] array, int currentValue)//I think Rnd.get(array) would be more fun
- {
- for(int i = 0;i < array.length - 1;i ++)
- if(array[i] == currentValue)
- return array[i + 1];
- return array[0];
- }
- private boolean canColorBeUpdated(Player player, int[] playerColorsGroup, int myCurrentColor, long currentTime)
- {
- if(playerColorsGroup == null)
- return false;
- if(!ArrayUtils.contains(playerColorsGroup, myCurrentColor))
- return true;
- return lastUpdates.getOrDefault(player.getObjectId(), 0L) + Config.PLAYER_COLORS_TIME < currentTime;
- }
- private static void updateColor(Player player, int newColor)
- {
- player.getAppearance().setNameColor(newColor);
- player.broadcastUserInfo();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement