From c2d7fb5a1106449de059a28bd4780f0e1fadabb9 Mon Sep 17 00:00:00 2001 From: Misterzym Date: Thu, 11 Oct 2018 11:52:20 +0300 Subject: [PATCH] =?UTF-8?q?init=20=D0=BE=D1=82=20NeonGC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 ++++ src/plugin.yml | 10 ++++++ src/ru/upworld/chat/ChatListener.java | 52 +++++++++++++++++++++++++++ src/ru/upworld/chat/ChatUtil.java | 29 +++++++++++++++ src/ru/upworld/chat/CommandMsg.java | 48 +++++++++++++++++++++++++ src/ru/upworld/chat/HideStream.java | 26 ++++++++++++++ src/ru/upworld/chat/UpWorldChat.java | 25 +++++++++++++ 7 files changed, 196 insertions(+) create mode 100644 .gitignore create mode 100644 src/plugin.yml create mode 100644 src/ru/upworld/chat/ChatListener.java create mode 100644 src/ru/upworld/chat/ChatUtil.java create mode 100644 src/ru/upworld/chat/CommandMsg.java create mode 100644 src/ru/upworld/chat/HideStream.java create mode 100644 src/ru/upworld/chat/UpWorldChat.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3646f93 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +dist +build +nbproject +test +build.xml +manifest.mf diff --git a/src/plugin.yml b/src/plugin.yml new file mode 100644 index 0000000..08843e3 --- /dev/null +++ b/src/plugin.yml @@ -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, м, ьып] \ No newline at end of file diff --git a/src/ru/upworld/chat/ChatListener.java b/src/ru/upworld/chat/ChatListener.java new file mode 100644 index 0000000..eb49b54 --- /dev/null +++ b/src/ru/upworld/chat/ChatListener.java @@ -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; + } + } +} diff --git a/src/ru/upworld/chat/ChatUtil.java b/src/ru/upworld/chat/ChatUtil.java new file mode 100644 index 0000000..b06b1a6 --- /dev/null +++ b/src/ru/upworld/chat/ChatUtil.java @@ -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; + } +} diff --git a/src/ru/upworld/chat/CommandMsg.java b/src/ru/upworld/chat/CommandMsg.java new file mode 100644 index 0000000..e25f40b --- /dev/null +++ b/src/ru/upworld/chat/CommandMsg.java @@ -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; + } + +} diff --git a/src/ru/upworld/chat/HideStream.java b/src/ru/upworld/chat/HideStream.java new file mode 100644 index 0000000..2e94987 --- /dev/null +++ b/src/ru/upworld/chat/HideStream.java @@ -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); + } +} diff --git a/src/ru/upworld/chat/UpWorldChat.java b/src/ru/upworld/chat/UpWorldChat.java new file mode 100644 index 0000000..036448a --- /dev/null +++ b/src/ru/upworld/chat/UpWorldChat.java @@ -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); + } + +}