Skip to content

Commit

Permalink
Merge pull request #43 from MultiChat/version-1.7.2
Browse files Browse the repository at this point in the history
Version 1.7.2
  • Loading branch information
OllieMartin authored Apr 2, 2019
2 parents 443f411 + d1435f8 commit 66ba762
Show file tree
Hide file tree
Showing 21 changed files with 298 additions and 34 deletions.
2 changes: 1 addition & 1 deletion multichat/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>xyz.olivermartin.multichat</groupId>
<artifactId>multichat</artifactId>
<version>1.7.1</version>
<version>1.7.2</version>

<repositories>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ public static void onPluginMessage(PluginMessageEvent ev) {
}

if (ev.getTag().equals("multichat:chat")) {

DebugManager.log("{multichat:chat} Got a plugin message");

ByteArrayInputStream stream = new ByteArrayInputStream(ev.getData());
Expand All @@ -212,14 +212,19 @@ public static void onPluginMessage(PluginMessageEvent ev) {
DebugManager.log("{multichat:chat} Message = " + message);
String format = in.readUTF();

DebugManager.log("{multichat:chat} Format (before removal of double chars) = " + format);

format = format.replace("%%","%");

DebugManager.log("{multichat:chat} Format = " + format);

ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);

if (player == null) return;

if (player == null) {
DebugManager.log("{multichat:chat} Could not get player! Abandoning chat message...");
return;
}

DebugManager.log("{multichat:chat} Got player successfully! Name = " + player.getName());

synchronized (player) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ public class ChatControl {
private static Set<UUID> mutedPlayers;
private static Map<UUID, Set<UUID>> ignoreMap;
private static Map<UUID, PlayerSpamInfo> spamMap;

public static boolean controlLinks = false;
public static String linkMessage = "[LINK REMOVED]";

public static Set<UUID> getMutedPlayers() {
return mutedPlayers;
Expand Down Expand Up @@ -280,6 +283,11 @@ public static void reload() {
}

}

public static String replaceLinks(String message) {
if (!controlLinks) return message;
return message.replaceAll("((https|http):\\/\\/)?(www\\.)?([-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.)+[a-zA-Z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)", linkMessage);
}

public static void spamPardonPlayer(UUID uuid) {
spamMap.remove(uuid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,11 @@ public void onChat(ChatEvent event) {
event.setCancelled(true);
return;
}

if (!player.hasPermission("multichat.chat.link")) {
message = ChatControl.replaceLinks(message);
event.setMessage(message);
}

// Let server know players channel preference
BungeeComm.sendPlayerChannelMessage(player.getName(), Channel.getChannel(player.getUniqueId()).getName(), Channel.getChannel(player.getUniqueId()), player.getServer().getInfo(), (player.hasPermission("multichat.chat.colour")||player.hasPermission("multichat.chat.color")));
Expand All @@ -362,6 +367,7 @@ public void onChat(ChatEvent event) {

} else {
MessageManager.sendMessage(player, "freezechat_frozen");
event.setCancelled(true);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@
*/
public class MultiChat extends Plugin implements Listener {

public static final String LATEST_VERSION = "1.7.1";
public static final String LATEST_VERSION = "1.7.2";

public static final String[] ALLOWED_VERSIONS = new String[] {

LATEST_VERSION,
"1.7.1",
"1.7",
"1.6.2",
"1.6.1",
Expand Down Expand Up @@ -234,8 +235,8 @@ public void onEnable() {
System.out.println("[MultiChat] Creating plugin directory!");
getDataFolder().mkdirs();
}
String translationsDir = configDir.toString() + "\\translations";

String translationsDir = configDir.toString() + File.separator + "translations";
if (!new File(translationsDir).exists()) {
System.out.println("[MultiChat] Creating translations directory!");
new File(translationsDir).mkdirs();
Expand Down Expand Up @@ -292,6 +293,12 @@ public void onEnable() {
// Run start-up routines
Startup();
UUIDNameManager.Startup();

// Set up chat control stuff
if (chatcontrolYML.contains("link_control")) {
ChatControl.controlLinks = chatcontrolYML.getBoolean("link_control");
ChatControl.linkMessage = chatcontrolYML.getString("link_removal_message");
}

// Set default channel
defaultChannel = configYML.getString("default_channel");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,12 @@ public void execute(CommandSender sender, String[] args) {
ChatControl.reload();

System.out.println("VERSION LOADED: " + MultiChat.configversion);

// Set up chat control stuff
if (ConfigManager.getInstance().getHandler("chatcontrol.yml").getConfig().contains("link_control")) {
ChatControl.controlLinks = ConfigManager.getInstance().getHandler("chatcontrol.yml").getConfig().getBoolean("link_control");
ChatControl.linkMessage = ConfigManager.getInstance().getHandler("chatcontrol.yml").getConfig().getString("link_removal_message");
}

// Set default channel
MultiChat.defaultChannel = ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("default_channel");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
Expand Down Expand Up @@ -80,6 +82,10 @@ public static boolean hookedPAPI() {
public static String localChatFormat = "&7&lLOCAL &f> &f%DISPLAYNAME%&f: ";
public static boolean setLocalFormat = false;
public static boolean forceMultiChatFormat = false;

public static boolean showNicknamePrefix = false;
public static String nicknamePrefix = "~";
public static List<String> nicknameBlacklist = new ArrayList<String>();

@SuppressWarnings("unchecked")
public void onEnable() {
Expand Down Expand Up @@ -114,6 +120,12 @@ public void onEnable() {
}

}

if (config.contains("show_nickname_prefix")) {
showNicknamePrefix = config.getBoolean("show_nickname_prefix");
nicknamePrefix = config.getString("nickname_prefix");
nicknameBlacklist = config.getStringList("nickname_blacklist");
}

File f = new File(configDir, nameDataFile);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.Set;
import java.util.UUID;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -72,18 +73,33 @@ private void setDefaultData() {
mapNameFormatted = new HashMap<String,String>();

}

/**
* Returns the FORMATTED NICKNAME of a player if they have one set, otherwise returns their username
*
* @param uuid The Unique ID of the player to lookup
* @return The NICKNAME of the player if it is set, otherwise their username
*/
public String getCurrentName(UUID uuid) {
return getCurrentName(uuid, true);
}

/**
* Returns the FORMATTED NICKNAME of a player if they have one set, otherwise returns their username
*
* @param uuid The Unique ID of the player to lookup
* @param withPrefix Should the nickname prefix also be returned if it is set?
* @return The NICKNAME of the player if it is set, otherwise their username
*/
public String getCurrentName(UUID uuid, boolean withPrefix) {

synchronized (mapUUIDNick) {
if (mapUUIDNick.containsKey(uuid)) {
return mapNickFormatted.get(mapUUIDNick.get(uuid));
if (MultiChatSpigot.showNicknamePrefix && withPrefix) {
return MultiChatSpigot.nicknamePrefix + mapNickFormatted.get(mapUUIDNick.get(uuid));
} else {
return mapNickFormatted.get(mapUUIDNick.get(uuid));
}
}
}

Expand Down Expand Up @@ -211,7 +227,7 @@ public Optional<String> getCurrentNameFromName(String username) {
return Optional.of(getCurrentName(uuid));

}

/**
* Gets a player's formatted name from their username
*
Expand Down Expand Up @@ -409,20 +425,26 @@ public Optional<Set<UUID>> getPartialNicknameMatches(String nickname) {

if (!uuidSet.isEmpty()) return Optional.of(uuidSet);

for (String nick : nickSet) {
try {
for (String nick : nickSet) {

if (nick.matches(nickname)) {
uuidSet.add(mapNickUUID.get(nick));
}
if (nick.matches(nickname)) {
uuidSet.add(mapNickUUID.get(nick));
}

}
} catch (PatternSyntaxException e) {
/*
* Its not a valid regex, so we will just say there are no matches!
*/
}

if (!uuidSet.isEmpty()) return Optional.of(uuidSet);

return Optional.empty();

}

/**
* Return the UUIDs of players who have names containing characters provided in the name argument
* @param name The characters of the name to check
Expand Down Expand Up @@ -454,12 +476,18 @@ public Optional<Set<UUID>> getPartialNameMatches(String name) {

if (!uuidSet.isEmpty()) return Optional.of(uuidSet);

for (String n : nameSet) {
try {
for (String n : nameSet) {

if (n.matches(name)) {
uuidSet.add(mapNameUUID.get(n));
}
if (n.matches(name)) {
uuidSet.add(mapNameUUID.get(n));
}

}
} catch (PatternSyntaxException e) {
/*
* Its not a valid regex, so we will just say there are no matches!
*/
}

if (!uuidSet.isEmpty()) return Optional.of(uuidSet);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label,

}

if (config.contains("show_nickname_prefix")) {
MultiChatSpigot.showNicknamePrefix = config.getBoolean("show_nickname_prefix");
MultiChatSpigot.nicknamePrefix = config.getString("nickname_prefix");
MultiChatSpigot.nicknameBlacklist = config.getStringList("nickname_blacklist");
}

commandSender.sendMessage(ChatColor.GREEN + "The plugin has been reloaded!");

return true;
Expand Down Expand Up @@ -138,6 +144,35 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label,

}

String targetNickname = NameManager.getInstance().stripAllFormattingCodes(NameManager.getInstance().getCurrentName(targetUUID));
String targetName = NameManager.getInstance().getName(targetUUID);

if (NameManager.getInstance().existsNickname(args[0]) && !targetNickname.equalsIgnoreCase(NameManager.getInstance().stripAllFormattingCodes(args[0])) ) { //&& !sender.hasPermission("multichatspigot.nick.duplicate")) {

sender.sendMessage(ChatColor.DARK_RED + "Sorry, this nickname is already in use!");
return true;

}

if (NameManager.getInstance().existsPlayer(args[0]) && !targetName.equalsIgnoreCase(NameManager.getInstance().stripAllFormattingCodes(args[0])) && !sender.hasPermission("multichatspigot.nick.impersonate")) {

sender.sendMessage(ChatColor.DARK_RED + "Sorry, a player already exists with this name!");
return true;

}

boolean blacklisted = false;
for (String bl : MultiChatSpigot.nicknameBlacklist) {
if (NameManager.getInstance().stripAllFormattingCodes(args[0]).matches(bl)) blacklisted = true;
}

if (blacklisted) {

sender.sendMessage(ChatColor.DARK_RED + "Sorry, this name is not allowed!");
return true;

}

NameManager.getInstance().setNickname(targetUUID, args[0]);
MetaManager.getInstance().updatePlayerMeta(sender.getName(), MultiChatSpigot.setDisplayNameLastVal, MultiChatSpigot.displayNameFormatLastVal);

Expand Down Expand Up @@ -193,6 +228,35 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label,

}

String targetNickname = NameManager.getInstance().stripAllFormattingCodes(NameManager.getInstance().getCurrentName(targetUUID));
String targetName = NameManager.getInstance().getName(targetUUID);

if (NameManager.getInstance().existsNickname(args[1]) && !targetNickname.equalsIgnoreCase(NameManager.getInstance().stripAllFormattingCodes(args[0])) ) { //&& !sender.hasPermission("multichatspigot.nick.duplicate")) {

sender.sendMessage(ChatColor.DARK_RED + "Sorry, this nickname is already in use!");
return true;

}

if (NameManager.getInstance().existsPlayer(args[1]) && !targetName.equalsIgnoreCase(NameManager.getInstance().stripAllFormattingCodes(args[0])) && !sender.hasPermission("multichatspigot.nick.impersonate")) {

sender.sendMessage(ChatColor.DARK_RED + "Sorry, a player already exists with this name!");
return true;

}

boolean blacklisted = false;
for (String bl : MultiChatSpigot.nicknameBlacklist) {
if (NameManager.getInstance().stripAllFormattingCodes(args[1]).matches(bl)) blacklisted = true;
}

if (blacklisted) {

sender.sendMessage(ChatColor.DARK_RED + "Sorry, this name is not allowed!");
return true;

}

NameManager.getInstance().setNickname(targetUUID, args[1]);
MetaManager.getInstance().updatePlayerMeta(target.getName(), MultiChatSpigot.setDisplayNameLastVal, MultiChatSpigot.displayNameFormatLastVal);

Expand Down Expand Up @@ -247,7 +311,7 @@ public boolean onCommand(CommandSender commandSender, Command cmd, String label,
for (UUID uuid : matches.get()) {

if (limit > 0 || sender.hasPermission("multichatspigot.realname.nolimit")) {
sender.sendMessage(ChatColor.GREEN + "Nickname: '" + NameManager.getInstance().getCurrentName(uuid) + "' Belongs to player: '" + NameManager.getInstance().getName(uuid) + "'");
sender.sendMessage(ChatColor.GREEN + "Nickname: '" + NameManager.getInstance().getCurrentName(uuid, false) + "' Belongs to player: '" + NameManager.getInstance().getName(uuid) + "'");
limit--;
} else {
sender.sendMessage(ChatColor.DARK_GREEN + "Only the first 10 results have been shown, please try a more specific query!");
Expand Down
Loading

0 comments on commit 66ba762

Please sign in to comment.