Skip to content

Instantly share code, notes, and snippets.

@cFerg
Last active February 26, 2016 08:13
Show Gist options
  • Select an option

  • Save cFerg/5e1a44e487027df33324 to your computer and use it in GitHub Desktop.

Select an option

Save cFerg/5e1a44e487027df33324 to your computer and use it in GitHub Desktop.
Ping Notification
package elite;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class NotifyAPI extends JavaPlugin{
public static void chatPing(Player player, ChatColor playerColor, String message, ChatColor messageColor, ChatColor pingColor){
String p = (playerColor + player.getName());
String pm = (": " + message);
String m = (messageColor + pm);
handlePing("", player, p, "", m, messageColor, pingColor);
}
public static void chatPing(String prefix, ChatColor prefixColor, Player player, ChatColor playerColor, String message, ChatColor messageColor, ChatColor pingColor){
String pre = (prefixColor + prefix);
String p = (playerColor + player.getName());
String pm = (": " + message);
String m = (messageColor + pm);
handlePing(pre, player, p, "", m, messageColor, pingColor);
}
public static void chatPing(String prefix, ChatColor prefixColor, Player player, ChatColor playerColor, String suffix, ChatColor suffixColor, String message, ChatColor messageColor, ChatColor pingColor){
String pre = (prefixColor + prefix);
String p = (playerColor + player.getName());
String s = (suffixColor + suffix);
String pm = (": " + message);
String m = (messageColor + pm);
handlePing(pre, player, p, s, m, messageColor, pingColor);
}
private static void handlePing(String prefix, Player player, String user, String suffix, String message, ChatColor messageColor, ChatColor pingColor){
List<Player> players = player.getWorld().getPlayers();
List<Player> pinged = new ArrayList<>();
for (String split : message.split("\\s+")) {
String name = split.replaceAll("[^a-zA-Z0-9_]", "");
if (players.contains(Bukkit.getPlayer(name))){
if (!name.equalsIgnoreCase(player.getName())){
pinged.add(Bukkit.getPlayer(name));
players.remove(Bukkit.getPlayer(name));
}
}
}
if (pinged.isEmpty()){
for (Player p : players){
String m = (prefix + user + suffix + message);
p.sendMessage(m);
}
}else{
String m = (prefix + user + suffix + message);
for (Player p : players){
p.sendMessage(m);
}
sendPing(prefix, user, suffix, message, pinged, messageColor, pingColor);
}
}
private static void sendPing(String prefix, String user, String suffix, String message, List<Player> pinged, ChatColor messageColor, ChatColor pingColor){
for (Player p : pinged){
String newchat = "";
String player = p.getName();
for (String split : message.split("\\s+")) {
String name = split.replaceAll("[^a-zA-Z0-9_]", "");
if (pinged.contains(Bukkit.getPlayerExact(name))){
name = (messageColor + split);
String disp = name.replaceAll("(?i)" + player, (pingColor + player + messageColor + ""));
newchat = newchat + disp + " ";
}else{
newchat = newchat + (messageColor + split) + " ";
}
}
String m = (prefix + user + suffix + newchat);
p.sendMessage(m);
p.playSound(p.getLocation(), Sound.LEVEL_UP, 50, 50);
}
}
}
package elite.mini.event;
import static elite.NotifyAPI.chatPing;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
public class PlayerChat implements Listener{
@EventHandler
public void onChat(AsyncPlayerChatEvent e){
Player player = e.getPlayer();
String message = e.getMessage();
e.setCancelled(true);
String prefix = "[Diamond] ";
String suffix = " *";
chatPing(prefix, ChatColor.AQUA, player, ChatColor.AQUA, suffix, ChatColor.GOLD, message, ChatColor.WHITE, ChatColor.LIGHT_PURPLE);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment