commit
c2d7fb5a11
7 changed files with 196 additions and 0 deletions
@ -0,0 +1,6 @@ |
|||||||
|
dist |
||||||
|
build |
||||||
|
nbproject |
||||||
|
test |
||||||
|
build.xml |
||||||
|
manifest.mf |
@ -0,0 +1,10 @@ |
|||||||
|
name: UpWorldChat |
||||||
|
main: ru.upworld.chat.UpWorldChat |
||||||
|
description: Chat plugin |
||||||
|
author: NeonGC |
||||||
|
version: 1.13 |
||||||
|
softdepend: [] |
||||||
|
commands: |
||||||
|
msg: |
||||||
|
description: 'Private message command' |
||||||
|
aliases: [m, м, ьып] |
@ -0,0 +1,52 @@ |
|||||||
|
package ru.upworld.chat; |
||||||
|
|
||||||
|
import org.bukkit.Bukkit; |
||||||
|
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 ChatListener implements Listener { |
||||||
|
|
||||||
|
private static final String format = "%chatPrefix" + ChatColor.DARK_GRAY + "%player: " + ChatColor.WHITE + "%message"; |
||||||
|
|
||||||
|
@EventHandler |
||||||
|
public void AsyncPlayerChatEvent(AsyncPlayerChatEvent e) { |
||||||
|
String message = e.getMessage(); |
||||||
|
Player player = e.getPlayer(); |
||||||
|
String formated = ChatUtil.translateColorCodes(format); |
||||||
|
if (message.startsWith("%tcc%") && player.hasPermission("upworld.translateColorCodes")) { |
||||||
|
message = ChatUtil.translateColorCodes(message).replace("%tcc%", ""); |
||||||
|
} |
||||||
|
Chat chat = message.startsWith("!") ? Chat.LOCAL : Chat.GLOBAL; |
||||||
|
if (chat == Chat.LOCAL) { |
||||||
|
Bukkit.getOnlinePlayers().stream().filter((p) -> (p.getLocation().distance(player.getLocation()) <= 100)).forEachOrdered((p) -> { |
||||||
|
e.getRecipients().clear(); |
||||||
|
e.getRecipients().add(p); |
||||||
|
}); |
||||||
|
} else { |
||||||
|
message = message.replaceFirst("!", ""); |
||||||
|
} |
||||||
|
formated = formated.replace("%chatPrefix", chat.getPrefix()); |
||||||
|
formated = formated.replace(" ", ""); |
||||||
|
formated = formated.replace(":", ": "); |
||||||
|
formated = formated.replace("%player", player.getDisplayName()); |
||||||
|
formated = formated.replace("%message", message); |
||||||
|
e.setFormat(formated); |
||||||
|
} |
||||||
|
|
||||||
|
public enum Chat { |
||||||
|
GLOBAL("§9[§6G§9]§f "), LOCAL("§9[§aL§9]§f "); |
||||||
|
|
||||||
|
private final String prefix; |
||||||
|
|
||||||
|
public String getPrefix() { |
||||||
|
return prefix; |
||||||
|
} |
||||||
|
|
||||||
|
private Chat(String prefix) { |
||||||
|
this.prefix = prefix; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
package ru.upworld.chat; |
||||||
|
|
||||||
|
import java.util.regex.Pattern; |
||||||
|
|
||||||
|
public class ChatUtil { |
||||||
|
|
||||||
|
private static final Pattern chatColorPattern = Pattern.compile("(?i)&([0-9A-F])"); |
||||||
|
private static final Pattern chatMagicPattern = Pattern.compile("(?i)&([K])"); |
||||||
|
private static final Pattern chatBoldPattern = Pattern.compile("(?i)&([L])"); |
||||||
|
private static final Pattern chatStrikethroughPattern = Pattern.compile("(?i)&([M])"); |
||||||
|
private static final Pattern chatUnderlinePattern = Pattern.compile("(?i)&([N])"); |
||||||
|
private static final Pattern chatItalicPattern = Pattern.compile("(?i)&([O])"); |
||||||
|
private static final Pattern chatResetPattern = Pattern.compile("(?i)&([R])"); |
||||||
|
|
||||||
|
public static String translateColorCodes(String string) { |
||||||
|
if (string == null) { |
||||||
|
return ""; |
||||||
|
} |
||||||
|
String newstring = string; |
||||||
|
newstring = chatColorPattern.matcher(newstring).replaceAll("§$1"); |
||||||
|
newstring = chatMagicPattern.matcher(newstring).replaceAll("§$1"); |
||||||
|
newstring = chatBoldPattern.matcher(newstring).replaceAll("§$1"); |
||||||
|
newstring = chatStrikethroughPattern.matcher(newstring).replaceAll("§$1"); |
||||||
|
newstring = chatUnderlinePattern.matcher(newstring).replaceAll("§$1"); |
||||||
|
newstring = chatItalicPattern.matcher(newstring).replaceAll("§$1"); |
||||||
|
newstring = chatResetPattern.matcher(newstring).replaceAll("§$1"); |
||||||
|
return newstring; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
package ru.upworld.chat; |
||||||
|
|
||||||
|
import org.bukkit.Bukkit; |
||||||
|
import org.bukkit.ChatColor; |
||||||
|
import org.bukkit.command.Command; |
||||||
|
import org.bukkit.command.CommandExecutor; |
||||||
|
import org.bukkit.command.CommandSender; |
||||||
|
import org.bukkit.entity.Player; |
||||||
|
|
||||||
|
public class CommandMsg implements CommandExecutor { |
||||||
|
|
||||||
|
private final String usage = ChatColor.RED + "/msg <игрок> <сообщение>"; |
||||||
|
private final String noMessage = ChatColor.RED + "Введите сообщение."; |
||||||
|
private final String playerIsOffline = ChatColor.RED + "Введите ник игрока."; |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean onCommand(CommandSender sender, Command cmnd, String string, String[] args) { |
||||||
|
if (args.length == 0) { |
||||||
|
sender.sendMessage(usage); |
||||||
|
return true; |
||||||
|
} else if (args.length == 1) { |
||||||
|
sender.sendMessage(noMessage); |
||||||
|
return true; |
||||||
|
} |
||||||
|
boolean exist = false; |
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) { |
||||||
|
if (player.getName().equals(args[0])) { |
||||||
|
exist = true; |
||||||
|
} |
||||||
|
} |
||||||
|
if (!exist) { |
||||||
|
sender.sendMessage(playerIsOffline); |
||||||
|
return true; |
||||||
|
} |
||||||
|
sender.sendMessage("&e[&fВы &e-> &f" + args[0] + "&e] " + joiner(args)); |
||||||
|
Bukkit.getPlayer(args[0]).sendMessage("&e[&f" + sender.getName() + "&e -> &fВы&e] " + joiner(args)); |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
private String joiner(String[] args) { |
||||||
|
String message = ""; |
||||||
|
for (int i = 1;i < args.length;++i) { |
||||||
|
message = message + args[i] + " "; |
||||||
|
} |
||||||
|
return message; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
package ru.upworld.chat; |
||||||
|
|
||||||
|
import org.bukkit.event.EventHandler; |
||||||
|
import org.bukkit.event.EventPriority; |
||||||
|
import org.bukkit.event.Listener; |
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent; |
||||||
|
import org.bukkit.event.player.PlayerJoinEvent; |
||||||
|
import org.bukkit.event.player.PlayerQuitEvent; |
||||||
|
|
||||||
|
public class HideStream implements Listener { |
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST) |
||||||
|
public void PlayerJoinEvent(PlayerJoinEvent event) { |
||||||
|
event.setJoinMessage(null); |
||||||
|
} |
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST) |
||||||
|
public void PlayerQuitEvent(PlayerQuitEvent event) { |
||||||
|
event.setQuitMessage(null); |
||||||
|
} |
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST) |
||||||
|
public void PlayerDeathEvent(PlayerDeathEvent event) { |
||||||
|
event.setDeathMessage(null); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package ru.upworld.chat; |
||||||
|
|
||||||
|
import org.bukkit.Bukkit; |
||||||
|
import org.bukkit.plugin.java.JavaPlugin; |
||||||
|
|
||||||
|
public class UpWorldChat extends JavaPlugin { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onEnable() { |
||||||
|
Bukkit.getPluginManager().registerEvents(new ChatListener(), this); |
||||||
|
Bukkit.getPluginManager().registerEvents(new HideStream(), this); |
||||||
|
getCommand("msg").setExecutor(new CommandMsg()); |
||||||
|
log("Enabled!"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onDisable() { |
||||||
|
log("Disabled!"); |
||||||
|
} |
||||||
|
|
||||||
|
public void log(String msg) { |
||||||
|
Bukkit.getServer().getConsoleSender().sendMessage("[§3Chat§9] §4" + msg); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue