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