/******************************************************************************* * Copyright 2014 stuntguy3000 (Luke Anderson) and coasterman10. * * 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 2 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. ******************************************************************************/ package org.eodsteven.CrafterNexus.chat; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.eodsteven.CrafterNexus.Util; import org.eodsteven.CrafterNexus.VaultHooks; import org.eodsteven.CrafterNexus.object.GameTeam; import org.eodsteven.CrafterNexus.object.Golem; import org.eodsteven.CrafterNexus.object.PlayerMeta; public class ChatUtil { private static final String DARK_AQUA = ChatColor.DARK_AQUA.toString(); private static final String DARK_GRAY = ChatColor.DARK_GRAY.toString(); private static final String DARK_PURPLE = ChatColor.DARK_PURPLE.toString(); private static final String DARK_RED = ChatColor.DARK_RED.toString(); private static final String RESET = ChatColor.RESET.toString(); private static final String GRAY = ChatColor.GRAY.toString(); private static final String RED = ChatColor.RED.toString(); private static boolean roman = false; public static void setRoman(boolean b) { roman = b; } public static void allMessage(GameTeam team, Player sender, String message, boolean dead) { String group; String username; if (team == GameTeam.NONE) { group = DARK_GRAY + "[" + DARK_PURPLE + "Lobby" + DARK_GRAY + "]"; username = RESET + sender.getName(); } else { group = DARK_GRAY + "[" + team.color() + "All" + DARK_GRAY + "]"; username = team.color() + sender.getName(); if (dead) { group = DARK_GRAY + "[" + DARK_RED + "DEAD" + DARK_GRAY + "] " + group; } } String msg = message; String permGroup = VaultHooks.getGroup(sender.getName()); if (!permGroup.equals("")) group += " " + permGroup + RESET; String toSend = group + " " + username + RESET + ": " + msg; for (Player player : Bukkit.getOnlinePlayers()) player.sendMessage(toSend); } public static void teamMessage(GameTeam team, Player sender, String message, boolean dead) { String group; if (team == GameTeam.NONE) { allMessage(team, sender, message, false); return; } else { group = GRAY + "[" + team.color() + "Team" + GRAY + "]"; if (dead) { group = DARK_GRAY + "[" + DARK_RED + "DEAD" + DARK_GRAY + "] " + group; } } String permGroup = VaultHooks.getGroup(sender.getName()); if (!permGroup.equals("")) group += " " + permGroup + RESET; String toSend = group + " " + team.color() + sender.getName() + RESET + ": " + message; for (Player player : team.getPlayers()) player.sendMessage(toSend); } public static void broadcast(String message) { Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', message)); } public static void nexusDestroyed(GameTeam attacker, GameTeam victim, Player p) { broadcast(GRAY + "===============[ " + victim.color().toString() + "Nexus Destroyed" + GRAY + " ]==============="); broadcast(attacker.color().toString() + p.getName() + GRAY + " from " + attacker.coloredName() + GRAY + " destroyed " + victim.coloredName() + "'s" + GRAY + " Nexus!"); broadcast(GRAY + "==============================================="); } public static String nexusBreakMessage(Player breaker, GameTeam attacker, GameTeam victim) { return colorizeName(breaker, attacker) + GRAY + " has damaged the " + victim.coloredName() + " team's Nexus!"; } private static String colorizeName(Player player, GameTeam team) { return team.color() + player.getName(); } public static void phaseMessage(int phase) { broadcast(GRAY + "===========[ " + DARK_AQUA + "Progress" + GRAY + " ]==========="); broadcast(Util.getPhaseColor(phase) + "Phase " + translateRoman(phase) + GRAY + " has started"); switch (phase) { case 1: broadcast(GRAY + "Each nexus is invincible until Phase " + translateRoman(2)); break; case 2: broadcast(GRAY + "Each nexus is no longer invincible"); broadcast(GRAY + "Boss Iron Golems will now spawn, Kill them for the Loot"); break; case 3: broadcast(GRAY + "Diamonds will now spawn in the middle"); break; case 4: break; case 5: broadcast(RED + "Double nexus damage"); } broadcast(GRAY + "================================"); } public static void winMessage(GameTeam winner) { broadcast(GRAY + "================[ " + winner.color().toString() + "End Game" + GRAY + " ]================"); broadcast(GRAY + "Team " + winner.coloredName() + GRAY + " Wins Crafter's Nexus! Restarting game..."); broadcast(GRAY + "=========================================="); } public static void bossDeath(Golem b, Player killer, GameTeam team) { broadcast(GRAY + "==========[ " + DARK_AQUA + "Boss Killed" + GRAY + " ]=========="); broadcast(GRAY + b.getBossName() + GRAY + " was killed by " + colorizeName(killer, team)); broadcast(GRAY + "================================"); } public static void bossRespawn(Golem b) { broadcast(GRAY + "================[ " + DARK_AQUA + "Boss" + GRAY + " ]================"); broadcast(GRAY + b.getBossName() + GRAY + " has respawned! Go slay the beast!"); broadcast(GRAY + "======================================="); } public static String formatDeathMessage(Player victim, Player killer, String original) { GameTeam killerTeam = PlayerMeta.getMeta(killer).getTeam(); String killerColor = killerTeam != null ? killerTeam.color().toString() : ChatColor.DARK_PURPLE.toString(); String killerName = killerColor + killer.getName() + ChatColor.GRAY; String message = ChatColor.GRAY + formatDeathMessage(victim, original); message = message.replace(killer.getName(), killerName); return message; } public static String formatDeathMessage(Player victim, String original) { GameTeam victimTeam = PlayerMeta.getMeta(victim).getTeam(); String victimColor = victimTeam != null ? victimTeam.color().toString() : ChatColor.DARK_PURPLE.toString(); String victimName = victimColor + victim.getName() + ChatColor.GRAY; String message = ChatColor.GRAY + original; message = message.replace(victim.getName(), victimName); if (message.contains(" �8�")) { String[] arr = message.split(" �8�"); message = arr[0]; } return message.replace("was slain by", "was killed by"); } public static String translateRoman(int number) { if (!roman) return String.valueOf(number); switch (number) { case 0: return "0"; case 1: return "I"; case 2: return "II"; case 3: return "III"; case 4: return "IV"; case 5: return "V"; case 6: return "VI"; case 7: return "VII"; case 8: return "VIII"; case 9: return "IX"; case 10: return "X"; default: return String.valueOf(number); } } private ChatUtil() { } }