2015-07-10 15:02:50 +00:00
|
|
|
package com.lenis0012.bukkit.marriage2.listeners;
|
|
|
|
|
|
|
|
import com.lenis0012.bukkit.marriage2.MPlayer;
|
2016-02-23 22:02:24 +00:00
|
|
|
import com.lenis0012.bukkit.marriage2.config.Settings;
|
2015-07-10 15:02:50 +00:00
|
|
|
import com.lenis0012.bukkit.marriage2.internal.MarriageCore;
|
2016-02-23 22:02:24 +00:00
|
|
|
import org.bukkit.Bukkit;
|
2015-07-10 15:02:50 +00:00
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
2016-02-23 22:02:24 +00:00
|
|
|
import org.bukkit.event.EventPriority;
|
2015-07-10 15:02:50 +00:00
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
|
|
|
|
|
|
public class ChatListener implements Listener {
|
|
|
|
private final MarriageCore core;
|
|
|
|
|
|
|
|
public ChatListener(MarriageCore core) {
|
|
|
|
this.core = core;
|
|
|
|
}
|
|
|
|
|
2016-02-23 22:02:24 +00:00
|
|
|
@EventHandler(priority = EventPriority.LOWEST)
|
2015-07-10 15:02:50 +00:00
|
|
|
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
|
|
|
final Player player = event.getPlayer();
|
|
|
|
MPlayer mp = core.getMPlayer(player.getUniqueId());
|
2016-02-23 22:02:24 +00:00
|
|
|
if(mp.isInChat()) {
|
2016-04-20 20:28:33 +00:00
|
|
|
// Private chat
|
2016-02-23 22:02:24 +00:00
|
|
|
if(!isOnline(mp.getPartner())) {
|
|
|
|
mp.setInChat(false);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
event.setCancelled(true);
|
|
|
|
String message = Settings.PM_FORMAT.value()
|
|
|
|
.replace("{name}", player.getDisplayName())
|
|
|
|
.replace("{message}", event.getMessage())
|
|
|
|
.replace("{heart}", "\u2764");
|
2016-03-19 16:18:43 +00:00
|
|
|
message = formatIcons(message);
|
2016-02-23 22:02:24 +00:00
|
|
|
message = ChatColor.translateAlternateColorCodes('&', message);
|
|
|
|
|
|
|
|
Player partner = Bukkit.getPlayer(mp.getPartner().getUniqueId());
|
|
|
|
player.sendMessage(message);
|
|
|
|
partner.sendMessage(message);
|
2016-04-20 20:28:33 +00:00
|
|
|
|
|
|
|
// Admin chat spy
|
|
|
|
String adminMessage = null; // No need to format message if we're not going to send it.
|
|
|
|
for(Player admin : Bukkit.getOnlinePlayers()) {
|
|
|
|
if(admin.equals(player) || admin.equals(partner)) continue;
|
|
|
|
final MPlayer mAdmin = core.getMPlayer(admin.getUniqueId());
|
|
|
|
if(!mAdmin.isChatSpy()) continue;
|
|
|
|
if(adminMessage == null) {
|
|
|
|
// Format message
|
|
|
|
adminMessage = Settings.CHATSPY_FORMAT.value()
|
|
|
|
.replace("{sender}", player.getDisplayName())
|
|
|
|
.replace("{receiver}", partner.getDisplayName());
|
|
|
|
adminMessage = formatIcons(adminMessage);
|
|
|
|
adminMessage = ChatColor.translateAlternateColorCodes('&', adminMessage)
|
|
|
|
.replace("{message}", event.getMessage());
|
|
|
|
}
|
|
|
|
admin.sendMessage(adminMessage);
|
|
|
|
}
|
|
|
|
|
2016-02-23 22:02:24 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-01 10:22:14 +00:00
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
2016-02-23 22:02:24 +00:00
|
|
|
public void onPlayerChatLate(AsyncPlayerChatEvent event) {
|
2016-03-19 16:30:51 +00:00
|
|
|
String format = event.getFormat();
|
2016-02-27 23:57:54 +00:00
|
|
|
final Player player = event.getPlayer();
|
|
|
|
final MPlayer mplayer = core.getMPlayer(player.getUniqueId());
|
2016-03-01 10:22:14 +00:00
|
|
|
|
2016-03-19 16:23:24 +00:00
|
|
|
if(Settings.FORCE_FORMAT.value()) {
|
2016-03-19 16:30:51 +00:00
|
|
|
format = "{marriage_status}" + event.getFormat(); // Enforce marriage format
|
2016-03-19 16:23:24 +00:00
|
|
|
}
|
2016-03-01 10:22:14 +00:00
|
|
|
|
2016-03-19 16:18:43 +00:00
|
|
|
// Marriage status
|
2016-02-28 14:27:03 +00:00
|
|
|
if(format.contains("{marriage_status}")) {
|
|
|
|
String status = "";
|
|
|
|
if(mplayer.isMarried()) {
|
2016-02-28 14:55:57 +00:00
|
|
|
String partner = player.hasMetadata("marriedTo") ? player.getMetadata("marriedTo").get(0).asString() : "";
|
|
|
|
status = Settings.CHAT_FORMAT.value()
|
|
|
|
.replace("{heart}", "\u2764")
|
|
|
|
.replace("{partner}", partner);
|
2016-03-19 16:18:43 +00:00
|
|
|
status = formatIcons(status);
|
2016-02-28 14:55:57 +00:00
|
|
|
|
2016-02-28 14:27:03 +00:00
|
|
|
status = ChatColor.translateAlternateColorCodes('&', status);
|
|
|
|
}
|
2016-02-25 09:44:54 +00:00
|
|
|
event.setFormat(format.replace("{marriage_status}", status));
|
|
|
|
}
|
2016-02-23 22:02:24 +00:00
|
|
|
|
2016-03-19 16:18:43 +00:00
|
|
|
// Gender format
|
|
|
|
if(format.contains("{marriage_gender}")) {
|
|
|
|
String gender = mplayer.getGender().getChatPrefix();
|
|
|
|
gender = formatIcons(gender);
|
|
|
|
gender = ChatColor.translateAlternateColorCodes('&', gender);
|
|
|
|
event.setFormat(format.replace("{marriage_gender}", gender));
|
2015-07-10 15:02:50 +00:00
|
|
|
}
|
2016-03-19 16:18:43 +00:00
|
|
|
}
|
2016-02-23 22:02:24 +00:00
|
|
|
|
2016-03-19 16:18:43 +00:00
|
|
|
private String formatIcons(String text) {
|
|
|
|
return text.replace("{heart}", "\u2764")
|
|
|
|
.replace("{icon:heart}", "\u2764")
|
|
|
|
.replace("{icon:male}", "\u2642")
|
|
|
|
.replace("{icon:female}", "\u2640")
|
|
|
|
.replace("{icon:genderless}", "\u26B2");
|
2016-02-23 22:02:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private boolean isOnline(MPlayer mp) {
|
|
|
|
if(mp == null) return false;
|
|
|
|
Player player = Bukkit.getPlayer(mp.getUniqueId());
|
|
|
|
return player != null && player.isOnline();
|
2015-07-10 15:02:50 +00:00
|
|
|
}
|
|
|
|
}
|