diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..640e4c5
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/.project b/.project
new file mode 100644
index 0000000..95855e8
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ venturechat
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/MineverseChat/bungee.yml b/MineverseChat/bungee.yml
index 684178a..f1c53ff 100644
--- a/MineverseChat/bungee.yml
+++ b/MineverseChat/bungee.yml
@@ -1,4 +1,4 @@
-name: VentureChat
-main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee
-version: 2.11.1
+name: VentureChat
+main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee
+version: 2.12.0
author: Aust1n46
\ No newline at end of file
diff --git a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java
index 8b93b26..7c155e0 100644
--- a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java
+++ b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java
@@ -1,1374 +1,1397 @@
-/*
- * VentureChat plugin for Minecraft servers running Bukkit or Spigot software.
- * @author Aust1n46
- */
-package mineverse.Aust1n46.chat;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.UUID;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import net.milkbowl.vault.chat.Chat;
-import net.milkbowl.vault.permission.Permission;
-
-import mineverse.Aust1n46.chat.irc.Bot;
-import mineverse.Aust1n46.chat.irc.command.IRCCommandInfo;
-//import mineverse.Aust1n46.chat.json.JsonButtonInfo;
-import mineverse.Aust1n46.chat.json.JsonFormatInfo;
-import mineverse.Aust1n46.chat.listeners.CapeListener;
-import mineverse.Aust1n46.chat.listeners.CommandListener;
-import mineverse.Aust1n46.chat.listeners.LoginListener;
-import mineverse.Aust1n46.chat.listeners.ChatListener;
-import mineverse.Aust1n46.chat.listeners.PacketListener;
-import mineverse.Aust1n46.chat.listeners.SignListener;
-import mineverse.Aust1n46.chat.alias.Alias;
-import mineverse.Aust1n46.chat.alias.AliasInfo;
-import mineverse.Aust1n46.chat.api.MineverseChatAPI;
-import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
-import mineverse.Aust1n46.chat.channel.ChatChannel;
-import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
-import mineverse.Aust1n46.chat.command.CCommand;
-import mineverse.Aust1n46.chat.command.MineverseCommand;
-import mineverse.Aust1n46.chat.command.MineverseCommandExecutor;
-import mineverse.Aust1n46.chat.command.chat.Broadcast;
-import mineverse.Aust1n46.chat.command.chat.Buttons;
-import mineverse.Aust1n46.chat.command.chat.Channel;
-import mineverse.Aust1n46.chat.command.chat.Channelinfo;
-import mineverse.Aust1n46.chat.command.chat.Chatinfo;
-import mineverse.Aust1n46.chat.command.chat.Chatreload;
-import mineverse.Aust1n46.chat.command.chat.Chlist;
-import mineverse.Aust1n46.chat.command.chat.Chwho;
-import mineverse.Aust1n46.chat.command.chat.Clearchat;
-import mineverse.Aust1n46.chat.command.chat.Commandblock;
-import mineverse.Aust1n46.chat.command.chat.Commandspy;
-import mineverse.Aust1n46.chat.command.chat.Config;
-import mineverse.Aust1n46.chat.command.chat.Edit;
-import mineverse.Aust1n46.chat.command.chat.Filter;
-import mineverse.Aust1n46.chat.command.chat.Force;
-import mineverse.Aust1n46.chat.command.chat.Forceall;
-import mineverse.Aust1n46.chat.command.chat.Kickchannel;
-import mineverse.Aust1n46.chat.command.chat.Kickchannelall;
-import mineverse.Aust1n46.chat.command.chat.Leave;
-import mineverse.Aust1n46.chat.command.chat.Listen;
-import mineverse.Aust1n46.chat.command.chat.Mail;
-import mineverse.Aust1n46.chat.command.chat.Me;
-import mineverse.Aust1n46.chat.command.chat.Nick;
-import mineverse.Aust1n46.chat.command.chat.Party;
-import mineverse.Aust1n46.chat.command.chat.RangedSpy;
-import mineverse.Aust1n46.chat.command.chat.Removemessage;
-import mineverse.Aust1n46.chat.command.chat.Setchannel;
-import mineverse.Aust1n46.chat.command.chat.Setchannelall;
-import mineverse.Aust1n46.chat.command.chat.VentureChatGui;
-import mineverse.Aust1n46.chat.command.chat.Venturechat;
-import mineverse.Aust1n46.chat.command.message.Afk;
-import mineverse.Aust1n46.chat.command.message.Ignore;
-import mineverse.Aust1n46.chat.command.message.Message;
-import mineverse.Aust1n46.chat.command.message.MessageToggle;
-import mineverse.Aust1n46.chat.command.message.Notifications;
-import mineverse.Aust1n46.chat.command.message.Reply;
-import mineverse.Aust1n46.chat.command.message.Spy;
-import mineverse.Aust1n46.chat.command.mute.Mute;
-import mineverse.Aust1n46.chat.command.mute.Muteall;
-import mineverse.Aust1n46.chat.command.mute.Unmute;
-import mineverse.Aust1n46.chat.command.mute.Unmuteall;
-import mineverse.Aust1n46.chat.database.MySQL;
-import mineverse.Aust1n46.chat.database.PlayerData;
-import mineverse.Aust1n46.chat.gui.GuiSlotInfo;
-import mineverse.Aust1n46.chat.utilities.Format;
-import mineverse.Aust1n46.chat.versions.V1_8;
-import mineverse.Aust1n46.chat.versions.VersionHandler;
-
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandMap;
-import org.bukkit.command.SimpleCommandMap;
-import org.bukkit.entity.ArmorStand;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.plugin.PluginManager;
-import org.bukkit.plugin.RegisteredServiceProvider;
-import org.bukkit.plugin.java.JavaPlugin;
-import org.bukkit.plugin.messaging.PluginMessageListener;
-import org.bukkit.scheduler.BukkitScheduler;
-import org.bukkit.Sound;
-
-import com.comphenix.protocol.ProtocolLibrary;
-import com.comphenix.protocol.ProtocolManager;
-import com.comphenix.protocol.utility.MinecraftReflection;
-
-import me.clip.placeholderapi.PlaceholderAPI;
-
-public class MineverseChat extends JavaPlugin implements PluginMessageListener {
- // Listeners --------------------------------
- private ChatListener chatListener;
- private LoginListener loginListener;
- private SignListener signListener;
- private CommandListener commandListener;
- private PacketListener packetListener;
- private CapeListener capeListener;
- private Channel channelListener;
- public static String[] playerlist;
- public static String playerlist_server;
- public boolean ircListen;
- public ProtocolManager protocolManager;
- public static ChatMessage lastChatMessage;
- public static String lastJson;
- public static Method messageMethod;
- public static Field posField;
- private static Field commandMap;
- private static Field knownCommands;
-
- // Executors --------------------------------
- private MineverseCommandExecutor commandExecutor;
- private Map commands = new HashMap();
-
- // MySQL ------------------------------------
- public Connection c = null;
- public MySQL MySQL;
- public boolean mysql = false;
-
- // SQLite -------------------------------------
- // public Connection lite = null;
-
- // Misc --------------------------------
- public static ChatChannelInfo ccInfo;
- public static AliasInfo aaInfo;
- public static JsonFormatInfo jfInfo;
- // public static JsonButtonInfo jbInfo;
- public static IRCCommandInfo ircInfo;
- public static GuiSlotInfo gsInfo;
- public boolean quickchat = true;
- private static final Logger log = Logger.getLogger("Minecraft");
- private static MineverseChat plugin;
- public static Set players = new HashSet();
- public static Set onlinePlayers = new HashSet();
- public static HashMap networkPlayers = new HashMap();
- public static ArmorStand cape;
- public static ItemStack banner;
- public static boolean capeToggle = false;
- private boolean firstRun = true;
-
- // Vault --------------------------------
- public static Permission permission = null;
- public static Chat chat = null;
- public static CommandMap cmap;
-
- // Offline data ----------------------------
- public Map mutes = new HashMap();
- public Map> mail = new HashMap>();
-
- // IRC Bot -----------
- public Bot bot;
- public boolean irc = false;
-
- private LogLevels curLogLevel;
-
- public long LINELENGTH = 40;
-
- @Override
- public void onEnable() {
- plugin = this;
- try {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Initializing..."));
- if(!getDataFolder().exists()) {
- getDataFolder().mkdirs();
- }
- File file = new File(getDataFolder(), "config.yml");
- if(!file.exists()) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Config not found! Generating file."));
- saveDefaultConfig();
- }
- else {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Config found! Loading file."));
- }
-
- if(!new File(getDataFolder(), "defaultconfig.yml").exists()) {
- saveResource("defaultconfig.yml", false);
- }
- }
- catch(Exception ex) {
- log.severe(String.format("[" + String.format("VentureChat") + "]" + " - Could not load configuration!\n " + ex, getDescription().getName()));
- }
- ccInfo = new ChatChannelInfo(this);
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Checking for Vault..."));
- // Set up Vault
- if(!this.setupPermissions()) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cCould not find Vault dependency, disabling."));
- Bukkit.getPluginManager().disablePlugin(this);
- }
- this.setupChat();
- // Log completion of initialization
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabled Successfully"));
- // Get config and handle
- // Configuration
- PlayerData.initialize();
- if(this.firstRun) {
- for(String uuidString : PlayerData.getPlayerData().getConfigurationSection("players").getKeys(false)) {
- UUID uuid = UUID.fromString(uuidString);
- String name = PlayerData.getPlayerData().getConfigurationSection("players." + uuid).getString("name");
- String currentChannelName = PlayerData.getPlayerData().getConfigurationSection("players." + uuid).getString("current");
- ChatChannel currentChannel = ccInfo.isChannel(currentChannelName) ? ccInfo.getChannelInfo(currentChannelName) : ccInfo.getDefaultChannel();
- Set ignores = new HashSet();
- StringTokenizer i = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("ignores"), ",");
- while(i.hasMoreTokens()) {
- ignores.add(UUID.fromString(i.nextToken()));
- }
- Set listening = new HashSet();
- StringTokenizer l = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("listen"), ",");
- while(l.hasMoreTokens()) {
- String channel = l.nextToken();
- if(ccInfo.isChannel(channel)) {
- listening.add(channel);
- }
- }
- HashMap mutes = new HashMap();
- StringTokenizer m = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("mutes"), ",");
- while(m.hasMoreTokens()) {
- String[] parts = m.nextToken().split(":");
- if(ccInfo.isChannel(parts[0])) {
- if(parts[1].equals("null")) {
- log.info("[VentureChat] Null Mute Time: " + parts[0] + " " + name);
- continue;
- }
- mutes.put(ccInfo.getChannelInfo(parts[0]).getName(), Integer.parseInt(parts[1]));
- }
- }
- Set blockedCommands = new HashSet();
- StringTokenizer b = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("blockedcommands"), ",");
- while(b.hasMoreTokens()) {
- blockedCommands.add(b.nextToken());
- }
- List mail = new ArrayList();
- StringTokenizer ma = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("mail"), ",");
- while(ma.hasMoreTokens()) {
- mail.add(ma.nextToken());
- }
- boolean host = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("host");
- UUID party = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("party").length() > 0 ? UUID.fromString(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("party")) : null;
- boolean filter = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("filter");
- boolean notifications = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("notifications");
- String nickname = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("nickname");
- String jsonFormat = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("jsonformat");
- boolean spy = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("spy", false);
- boolean commandSpy = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("commandspy", false);
- boolean rangedSpy = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("rangedspy", false);
- boolean buttons = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("buttons", true);
- boolean messageToggle = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("messagetoggle", true);
- players.add(new MineverseChatPlayer(uuid, name, currentChannel, ignores, listening, mutes, blockedCommands, mail, host, party, filter, notifications, nickname, jsonFormat, spy, commandSpy, rangedSpy, buttons, messageToggle));
- }
- }
- else {
- for(Player p : this.getServer().getOnlinePlayers()) {
- MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(p);
- mcp.setOnline(true);
- }
- }
-
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Listeners"));
- // Channel information reference
- ircInfo = new IRCCommandInfo(this);
- aaInfo = new AliasInfo(this);
- jfInfo = new JsonFormatInfo(this);
- // jbInfo = new JsonButtonInfo();
- gsInfo = new GuiSlotInfo();
-
- if(ccInfo == null) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cConfiguration is BAD!"));
- }
-
- if(this.getConfig().getConfigurationSection("mysql").getBoolean("enabled")) {
- this.MySQL = new MySQL(this, getConfig().getConfigurationSection("mysql").getString("host"), getConfig().getConfigurationSection("mysql").getString("port"), getConfig().getConfigurationSection("mysql").getString("database"), getConfig().getConfigurationSection("mysql").getString("user"), getConfig().getConfigurationSection("mysql").getString("password"));
- this.mysql = true;
- try {
- c = MySQL.openConnection();
- Statement statement = c.createStatement();
- statement.executeUpdate("CREATE TABLE IF NOT EXISTS `VentureChat` (`rowid` INT(7) NOT NULL AUTO_INCREMENT, `ChatTime` TEXT(100), `UUID` TEXT(100), `Name` TEXT(100), `Server` TEXT(100), `Channel` TEXT(100), `Text` TEXT(300), `Type` TEXT(100), PRIMARY KEY (rowid));");
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Connecting to MySQL Database"));
- }
- catch(ClassNotFoundException | SQLException e) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cFailed to connect to MySQL Database, Reason: " + e));
- this.mysql = false;
- }
- }
-
- /*
- * Future SQLite data storage option SQLite SQLite = new SQLite(this,
- * "PlayerData.db"); try { lite = SQLite.openConnection(); Statement
- * statement = lite.createStatement(); statement.executeUpdate(
- * "CREATE TABLE IF NOT EXISTS `PlayerData` (`Player` TEXT(100), `UUID` TEXT(100), `Default Channel` TEXT(100), `Ignores` TEXT(1000), `Channels` TEXT(1000), `Mutes` TEXT(1000), `Timed Mutes` TEXT(1000), `Blocked Commands` TEXT(1000), `Date` TEXT(100));"
- * ); //statement.executeUpdate(
- * "INSERT INTO `PlayerData` (`Player`, `UUID`, `Default Channel`, `Ignores`, `Channels`, `Mutes`, `Timed Mutes`, `Blocked Commands`, `Date`) VALUES ('bob', 'derp', 'dered', '"
- * +plugin.getServer().getServerName()+
- * "', 'Messaging_Component', 'COMMAND', 'Chat', 'HI', ':D');");
- * log.info(String.format("[" +
- * String.format(getConfig().getString("pluginname", "VentureChat") +
- * "]" + " - Connecting to SQLite Database",
- * getDescription().getName()))); } catch(ClassNotFoundException |
- * SQLException e) { e.printStackTrace(); }
- */
-
- //this.loadCommandMap();
- //this.unregister("msg");
-
- if(this.getConfig().getConfigurationSection("irc").getBoolean("enabled", false)) {
- bot = new Bot(this, ccInfo, ircInfo);
- bot.init();
- irc = true;
- }
-
- commands.put("afk", new Afk("afk"));
- commands.put("buttons", new Buttons("button"));
- commands.put("broadcast", new Broadcast("broadcast"));
- commands.put("channel", new Channel("channel"));
- commands.put("join", new Channel("join"));
- commands.put("channelinfo", new Channelinfo("channelinfo"));
- commands.put("chatinfo", new Chatinfo("chatinfo"));
- commands.put("chatreload", new Chatreload("chatreload"));
- commands.put("chlist", new Chlist("chlist"));
- commands.put("chwho", new Chwho("chwho"));
- commands.put("clearchat", new Clearchat("clearchat"));
- commands.put("commandblock", new Commandblock("commandblock"));
- commands.put("commandspy", new Commandspy("commandspy"));
- commands.put("config", new Config("config"));
- commands.put("edit", new Edit("edit"));
- commands.put("filter", new Filter("filter"));
- commands.put("force", new Force("force"));
- commands.put("forceall", new Forceall("forceall"));
- commands.put("ignore", new Ignore("ignore"));
- commands.put("kickchannel", new Kickchannel("kickchannel"));
- commands.put("kickchannelall", new Kickchannelall("kickchannelall"));
- commands.put("leave", new Leave("leave"));
- commands.put("listen", new Listen("listen"));
- commands.put("mail", new Mail("mail"));
- commands.put("me", new Me("me"));
- commands.put("message", new Message("message"));
- commands.put("tell", new Message("tell"));
- commands.put("whisper", new Message("whisper"));
- commands.put("venturechat", new Venturechat("venturechat"));
- commands.put("mute", new Mute("mute"));
- commands.put("muteall", new Muteall("muteall"));
- commands.put("nick", new Nick("nick"));
- commands.put("notifications", new Notifications("notifications"));
- commands.put("party", new Party("party"));
- commands.put("rangedspy", new RangedSpy("rangedspy"));
- commands.put("removemessage", new Removemessage("removemessage"));
- commands.put("reply", new Reply("reply"));
- commands.put("setchannel", new Setchannel("setchannel"));
- commands.put("setchannelall", new Setchannelall("setchannelall"));
- commands.put("spy", new Spy("spy"));
- commands.put("unmute", new Unmute("unmute"));
- commands.put("unmuteall", new Unmuteall("unmuteall"));
- commands.put("venturechatgui", new VentureChatGui("venturechatgui"));
- commands.put("messagetoggle", new MessageToggle("messagetoggle"));
- commandExecutor = new MineverseCommandExecutor(commands);
- for(String command : commands.keySet()) {
- this.getCommand(command).setExecutor(commandExecutor);
- }
-
- channelListener = new Channel();
- signListener = new SignListener(this, ccInfo);
- chatListener = new ChatListener(this, ccInfo, bot);
- commandListener = new CommandListener(this, ccInfo, aaInfo, bot);
-
- PluginManager pluginManager = getServer().getPluginManager();
- pluginManager.registerEvents(channelListener, this);
- pluginManager.registerEvents(chatListener, this);
- pluginManager.registerEvents(signListener, this);
- pluginManager.registerEvents(commandListener, this);
- if(!VersionHandler.is1_7_10() && !VersionHandler.is1_7_9() && !VersionHandler.is1_7_2()) {
- capeListener = new CapeListener();
- pluginManager.registerEvents(capeListener, this);
- }
- loginListener = new LoginListener(this, ccInfo);
- pluginManager.registerEvents(loginListener, this);
- this.registerPacketListeners();
- try {
- this.loadNMS();
- }
- catch(ClassNotFoundException e) {
- e.printStackTrace();
- }
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Attaching to Executors"));
- try {
- // if(VersionHandler.is1_7_9()) cmap = V1_7_9.v1_7_9();
- // if(VersionHandler.is1_7_10()) cmap = V1_7_10.v1_7_10();
- if(VersionHandler.is1_8()) cmap = V1_8.v1_8();
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- if(cmap == null) {
- this.quickchat = false;
- // log.info(String.format("[" + String.format("VentureChat" + "]" +
- // " - Unrecognized server version, Quickchat commands not
- // registering",
- // getDescription().getName())));
- // log.info(String.format("[" + String.format("VentureChat" + "]" +
- // " - Unrecognized server version, Alias commands not registering",
- // getDescription().getName())));
- }
- else {
- for(ChatChannel c : ccInfo.getChannelsInfo()) {
- CCommand cmd = new CCommand(c.getAlias());
- cmap.register("", cmd);
- cmd.setExecutor(commandListener);
- }
- for(Alias a : aaInfo.getAliases()) {
- CCommand cmd = new CCommand(a.getName());
- cmap.register("", cmd);
- }
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Alias commands"));
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Quickchat commands"));
- }
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord"));
- Bukkit.getMessenger().registerOutgoingPluginChannel(this, "VentureChat");
- Bukkit.getMessenger().registerIncomingPluginChannel(this, "VentureChat", this);
- if(pluginManager.isPluginEnabled("Towny")) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Towny Formatting"));
- }
- if(pluginManager.isPluginEnabled("Jobs")) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Jobs Formatting"));
- }
- if(pluginManager.isPluginEnabled("Factions")) {
- String version = pluginManager.getPlugin("Factions").getDescription().getVersion();
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Factions Formatting version " + version));
- }
- if(pluginManager.isPluginEnabled("Heroes")) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Heroes Formatting"));
- }
- if(pluginManager.isPluginEnabled("PlaceholderAPI")) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling PlaceholderAPI Hook"));
- }
- boolean hooked = PlaceholderAPI.registerPlaceholderHook("venturechat", new VentureChatPlaceholders());
- if(hooked) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Added placeholders to PlaceholderAPI!"));
- }
- else {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cPlaceholders were not added to PlaceholderAPI!"));
- }
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Loading player data"));
- BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
- scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
- @Override
- public void run() {
- PlayerData.savePlayerData();
- if(getConfig().getString("loglevel", "info").equals("debug")) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Saving Player Data"));
- }
- }
- }, 0L, getConfig().getInt("saveinterval") * 1200);
- scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
- @Override
- public void run() {
- for(MineverseChatPlayer p : MineverseChat.players) {
- //Calendar currentDate = Calendar.getInstance();
- //SimpleDateFormat formatter = new SimpleDateFormat("dd:HH:mm:ss");
- //String date = formatter.format(currentDate.getTime());
- //String[] datearray = date.split(":");
- //int time = (Integer.parseInt(datearray[0]) * 1440) + (Integer.parseInt(datearray[1]) * 60) + (Integer.parseInt(datearray[2]));
-
- int time = (int) (System.currentTimeMillis() / 60000);
-
- for(String c : p.getMutes().keySet()) {
- ChatChannel channel = ccInfo.getChannelInfo(c);
- int timemark = p.getMutes().get(channel.getName());
- if(timemark == 0) return;
- // System.out.println(time + " " + timemark);
- if(time > timemark) {
- p.removeMute(channel.getName());
- if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in: " + ChatColor.valueOf(channel.getColor().toUpperCase()) + channel.getName());
- else p.setModified(true);
- }
- }
- }
- if(getConfig().getString("loglevel", "info").equals("debug")) {
- // log.info(String.format("[" +
- // String.format(getConfig().getString("pluginname",
- // "VentureChat") + "]" + " - Updating Player Mutes",
- // getDescription().getName())));
- }
- }
- }, 0L, 20L);
- this.firstRun = false;
- }
-
- @SuppressWarnings("unchecked")
- public void unregister(String name) {
- try {
- ((Map) knownCommands.get((SimpleCommandMap) commandMap.get(Bukkit.getServer()))).remove(name);
- }
- catch(Exception e) {
- }
- }
-
- @SuppressWarnings("unused")
- private void loadCommandMap() {
- try {
- commandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
- commandMap.setAccessible(true);
- knownCommands = SimpleCommandMap.class.getDeclaredField("knownCommands");
- knownCommands.setAccessible(true);
- }
- catch(Exception e) {
- }
- }
-
- public CommandMap getCommandMap() {
- return cmap;
- }
-
- public static MineverseChat getInstance() {
- return MineverseChat.plugin;
- }
-
- private void registerPacketListeners() {
- this.protocolManager = ProtocolLibrary.getProtocolManager();
- this.packetListener = new PacketListener(this);
- this.protocolManager.addPacketListener(this.packetListener);
- }
-
- private void loadNMS() throws ClassNotFoundException {
- /*if(VersionHandler.is1_7_10()) {
- try {
- MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b");
- MineverseChat.posField.setAccessible(true);
- }
- catch(NoSuchFieldException | SecurityException localNoSuchFieldException) {
- localNoSuchFieldException.printStackTrace();
- }
- try {
- MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("IChatBaseComponent").getDeclaredMethod("c", new Class[0]);
- MineverseChat.messageMethod.setAccessible(true);
- }
- catch(SecurityException | NoSuchMethodException e) {
- e.printStackTrace();
- }
- return;
- }*/
- if(VersionHandler.is1_8() || VersionHandler.is1_7_10()) {
- try {
- MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b");
- MineverseChat.posField.setAccessible(true);
- }
- catch(NoSuchFieldException | SecurityException localNoSuchFieldException) {
- localNoSuchFieldException.printStackTrace();
- }
- try {
- MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("IChatBaseComponent").getDeclaredMethod("c", new Class[0]);
- MineverseChat.messageMethod.setAccessible(true);
- }
- catch(SecurityException | NoSuchMethodException e) {
- e.printStackTrace();
- }
- }
- else {
- try {
- MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b");
- MineverseChat.posField.setAccessible(true);
- }
- catch(NoSuchFieldException | SecurityException localNoSuchFieldException) {
- localNoSuchFieldException.printStackTrace();
- }
- try {
- MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("ChatBaseComponent").getDeclaredMethod("toPlainText", new Class[0]);
- MineverseChat.messageMethod.setAccessible(true);
- }
- catch(SecurityException | NoSuchMethodException e) {
- e.printStackTrace();
- }
- }
- }
-
- private boolean setupPermissions() {
- RegisteredServiceProvider permissionProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
- if(permissionProvider != null) {
- permission = permissionProvider.getProvider();
- }
- return(permission != null);
- }
-
- private boolean setupChat() {
- RegisteredServiceProvider chatProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.chat.Chat.class);
- if(chatProvider != null) {
- chat = chatProvider.getProvider();
- }
- return(chat != null);
- }
-
- public long getLineLength() {
- return LINELENGTH;
- }
-
- @Override
- public void onDisable() {
- PlayerData.savePlayerData();
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Disabling..."));
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Disabled Successfully"));
- if(irc) {
- bot.terminate();
- }
- if(MineverseChat.cape != null) {
- MineverseChat.cape.remove();
- }
- }
-
- public void setLogLevel(String loglevel) {
- if(LogLevels.valueOf(loglevel) != null) {
- curLogLevel = LogLevels.valueOf(loglevel);
- }
- else {
- curLogLevel = LogLevels.INFO;
- }
- }
-
- public void logme(LogLevels level, String location, String logline) {
- if(level.ordinal() >= curLogLevel.ordinal()) {
- log.log(Level.INFO, "[VentureChat]: {0}:{1} : {2}", new Object[] { level.toString(), location, logline });
- }
- }
-
- public void synchronize(MineverseChatPlayer mcp, boolean changes) {
- // System.out.println("Sync started...");
- ByteArrayOutputStream outstream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(outstream);
- try {
- out.writeUTF("Sync");
- if(!changes) {
- out.writeUTF("Receive");
- // System.out.println(mcp.getPlayer().getServer().getServerName());
- // out.writeUTF(mcp.getPlayer().getServer().getServerName());
- out.writeUTF(mcp.getUUID().toString());
- }
- else {
- out.writeUTF("Update");
- out.writeUTF(mcp.getUUID().toString());
- // out.writeUTF("Channels");
- int channelCount = 0;
- for(String c : mcp.getListening()) {
- ChatChannel channel = ccInfo.getChannelInfo(c);
- if(channel.getBungee()) {
- channelCount++;
- }
- }
- out.write(channelCount);
- for(String c : mcp.getListening()) {
- ChatChannel channel = ccInfo.getChannelInfo(c);
- if(channel.getBungee()) {
- out.writeUTF(channel.getName());
- }
- }
- // out.writeUTF("Mutes");
- int muteCount = 0;
- for(String c : mcp.getMutes().keySet()) {
- ChatChannel channel = ccInfo.getChannelInfo(c);
- if(channel.getBungee()) {
- muteCount++;
- }
- }
- // System.out.println(muteCount + " mutes");
- out.write(muteCount);
- for(String c : mcp.getMutes().keySet()) {
- ChatChannel channel = ccInfo.getChannelInfo(c);
- if(channel.getBungee()) {
- out.writeUTF(channel.getName());
- }
- }
- int ignoreCount = 0;
- for(@SuppressWarnings("unused")
- UUID c : mcp.getIgnores()) {
- ignoreCount++;
- }
- out.write(ignoreCount);
- for(UUID c : mcp.getIgnores()) {
- out.writeUTF(c.toString());
- }
- out.writeBoolean(mcp.isSpy());
- out.writeBoolean(mcp.getMessageToggle());
- }
- for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
- p.getPlayer().sendPluginMessage(this, "VentureChat", outstream.toByteArray());
- break;
- }
- //System.out.println("Sync start bottom...");
- out.close();
- }
- catch(IOException e) {
- e.printStackTrace();
- }
- }
-
- public void updatePlayerList(MineverseChatPlayer mcp, boolean request) {
- ByteArrayOutputStream outstream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(outstream);
- try {
- out.writeUTF("Sync");
- if(request) {
- out.writeUTF("PlayersReceive");
- // System.out.println(mcp.getPlayer().getServer().getServerName());
- out.writeUTF(this.getServer().getServerName());
- }
- else {
- out.writeUTF("PlayersUpdate");
- // System.out.println(networkPlayers.keySet().size());
- out.write(networkPlayers.keySet().size());
- for(String p : networkPlayers.keySet()) {
- out.writeUTF(p + "," + networkPlayers.get(p));
- }
- }
- mcp.getPlayer().sendPluginMessage(this, "VentureChat", outstream.toByteArray());
- // System.out.println("Sync start bottom...");
- out.close();
- }
- catch(IOException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void onPluginMessageReceived(String channel, Player player, byte[] message) {
- if(!channel.equals("VentureChat")) {
- return;
- }
- try {
- DataInputStream msgin = new DataInputStream(new ByteArrayInputStream(message));
- // System.out.println(msgin.available() + " size");
- String subchannel = msgin.readUTF();
- if(subchannel.equals("Chat")) {
- String chatchannel = msgin.readUTF();
- String chat = msgin.readUTF();
- String playerName = msgin.readUTF();
- String lastMessage = msgin.readUTF();
- String f = msgin.readUTF();
- String c = msgin.readUTF();
- String json = msgin.readUTF();
- MineverseChat.lastChatMessage = new ChatMessage(playerName, lastMessage, lastMessage.hashCode(), f, c, chatchannel);
- lastJson = json;
- Bukkit.getConsoleSender().sendMessage(chat);
- MineverseChatPlayer sender = MineverseChatAPI.getMineverseChatPlayer(playerName);
- for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
- // System.out.println(p.getName());
- if(p.isOnline() && p.getListening().contains(ccInfo.getChannelInfo(chatchannel).getName())) {
- if(plugin.getConfig().getBoolean("ignorechat", false)) {
- // System.out.println(p.getIgnores());
- if(sender == null) {
- // System.out.println("null sender");
- p.getPlayer().sendMessage(chat);
- continue;
- }
- if(!p.getIgnores().contains(sender.getUUID())) {
- // System.out.println("Chat sent");
- p.getPlayer().sendMessage(chat);
- }
- continue;
- }
- p.getPlayer().sendMessage(chat);
- }
- }
- }
- if(subchannel.equals("RemoveMessage")) {
- String hash = msgin.readUTF();
- this.getServer().dispatchCommand(this.getServer().getConsoleSender(), "removemessage " + hash);
- }
- if(subchannel.equals("PlayersUpdate")) {
- networkPlayers.clear();
- int size = msgin.read();
- for(int a = 1; a <= size; a++) {
- String p = msgin.readUTF();
- String[] parts = p.split(",");
- networkPlayers.put(parts[0], parts[1]);
- System.out.print(p);
- }
- }
- if(subchannel.equals("Sync")) {
- if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
- Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Received update..."));
- }
- String uuid = msgin.readUTF();
- MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(UUID.fromString(uuid));
- for(Object ch : p.getListening().toArray()) {
- String c = ch.toString();
- ChatChannel cha = ccInfo.getChannelInfo(c);
- if(cha.getBungee()) {
- p.removeListening(c);
- }
- }
- int size = msgin.read();
- // System.out.println(size);
- for(int a = 0; a < size; a++) {
- String ch = msgin.readUTF();
- if(ccInfo.isChannel(ch)) {
- ChatChannel cha = ccInfo.getChannelInfo(ch);
- if(cha.hasPermission() && p.getPlayer().hasPermission(cha.getPermission())) {
- p.addListening(ch);
- }
- }
- }
- for(Object o : p.getMutes().keySet().toArray()) {
- ChatChannel ch = ccInfo.getChannelInfo((String) o);
- if(ch.getBungee()) {
- p.removeMute(ch.getName());
- }
- }
- int sizeB = msgin.read();
- // System.out.println(sizeB + " mute size");
- for(int b = 0; b < sizeB; b++) {
- String ch = msgin.readUTF();
- // System.out.println(ch);
- if(ccInfo.isChannel(ch)) {
- p.addMute(ch, 0);
- }
- }
- // System.out.println(msgin.available() + " available before");
- p.setSpy(msgin.readBoolean());
- p.setMessageToggle(msgin.readBoolean());
- // System.out.println(msgin.available() + " available after");
- for(Object o : p.getIgnores().toArray()) {
- p.removeIgnore((UUID) o);
- }
- int sizeC = msgin.read();
- // System.out.println(sizeC + " ignore size");
- for(int c = 0; c < sizeC; c++) {
- String i = msgin.readUTF();
- // System.out.println(i);
- p.addIgnore(UUID.fromString(i));
- }
- if(!p.hasPlayed()) {
- for(ChatChannel ch : ccInfo.getAutojoinList()) {
- if(ch.hasPermission()) {
- if(p.getPlayer().hasPermission(ch.getPermission())) {
- p.addListening(ch.getName());
- }
- }
- else {
- p.addListening(ch.getName());
- }
- }
- p.setHasPlayed(true);
- plugin.synchronize(p, true);
- }
- }
- if(subchannel.equals("Ignore")) {
- String identifier = msgin.readUTF();
- if(identifier.equals("Send")) {
- String server = msgin.readUTF();
- String receiver = msgin.readUTF();
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(receiver);
- UUID sender = UUID.fromString(msgin.readUTF());
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(stream);
- if(p == null || !p.isOnline()) {
- out.writeUTF("Ignore");
- out.writeUTF("Offline");
- out.writeUTF(server);
- out.writeUTF(receiver);
- out.writeUTF(sender.toString());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- return;
- }
- p.setReplyPlayer(sender);
- out.writeUTF("Ignore");
- out.writeUTF("Echo");
- out.writeUTF(server);
- out.writeUTF(p.getNickname());
- out.writeUTF(sender.toString());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- return;
- }
- if(identifier.equals("Offline")) {
- String receiver = msgin.readUTF();
- UUID sender = UUID.fromString(msgin.readUTF());
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
- p.getPlayer().sendMessage(ChatColor.RED + "Player: " + ChatColor.GOLD + receiver + ChatColor.RED + " is not online.");
- }
- if(identifier.equals("Echo")) {
- String receiver = msgin.readUTF();
- UUID sender = UUID.fromString(msgin.readUTF());
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
- MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
- String rName = Format.FormatStringAll(receiver);
- if(r != null) {
- rName = Format.FormatStringAll(r.getNickname());
- }
- p.getPlayer().sendMessage(ChatColor.GOLD + "You are now ignoring player: " + ChatColor.RED + rName);
- p.addIgnore(r.getUUID());
- this.synchronize(p, true);
- }
- }
- if(subchannel.equals("Message")) {
- String identifier = msgin.readUTF();
- if(identifier.equals("Send")) {
- String server = msgin.readUTF();
- String receiver = msgin.readUTF();
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(receiver);
- UUID sender = UUID.fromString(msgin.readUTF());
- String sName = msgin.readUTF();
- MineverseChatPlayer s = MineverseChatAPI.getMineverseChatPlayer(sender);
- String msg = msgin.readUTF();
- String echo = msgin.readUTF();
- String spy = msgin.readUTF();
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(stream);
- // System.out.println((p == null) + " null");
- if(p != null) {
- // System.out.println(p.isOnline() + " online");
- }
- if(p == null || !p.isOnline()) {
- out.writeUTF("Message");
- out.writeUTF("Offline");
- out.writeUTF(server);
- out.writeUTF(receiver);
- out.writeUTF(sender.toString());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- return;
- }
- if(p.getIgnores().contains(sender)) {
- out.writeUTF("Message");
- out.writeUTF("Ignore");
- out.writeUTF(server);
- out.writeUTF(receiver);
- out.writeUTF(sender.toString());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- return;
- }
- if(!p.getMessageToggle()) {
- out.writeUTF("Message");
- out.writeUTF("Blocked");
- out.writeUTF(server);
- out.writeUTF(receiver);
- out.writeUTF(sender.toString());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- return;
- }
- if(s != null) {
- sName = Format.FormatStringAll(s.getNickname());
- }
- else {
- UUID uuid = sender;
- String name = sName;
- ChatChannel current = ccInfo.getDefaultChannel();
- Set ignores = new HashSet();
- Set listening = new HashSet();
- listening.add(current.getName());
- HashMap mutes = new HashMap();
- Set blockedCommands = new HashSet();
- List mail = new ArrayList();
- String jsonFormat = "Default";
- s = new MineverseChatPlayer(uuid, name, current, ignores, listening, mutes, blockedCommands, mail, false, null, true, true, name, jsonFormat, false, false, false, true, true);
- MineverseChat.players.add(s);
- }
- p.getPlayer().sendMessage(msg.replace("{playerfrom}", sName).replace("{playerto}", Format.FormatStringAll(p.getNickname())));
- if(p.hasNotifications()) {
- if(VersionHandler.is1_8() || VersionHandler.is1_7_10() || VersionHandler.is1_7_2() || VersionHandler.is1_7_9()) {
- p.getPlayer().playSound(p.getPlayer().getLocation(), Sound.valueOf("LEVEL_UP"), 1, 0);
- }
- else {
- p.getPlayer().playSound(p.getPlayer().getLocation(), Sound.valueOf("ENTITY_PLAYER_LEVELUP"), 1, 0);
- }
- }
- p.setReplyPlayer(sender);
- out.writeUTF("Message");
- out.writeUTF("Echo");
- out.writeUTF(server);
- out.writeUTF(p.getNickname());
- out.writeUTF(sender.toString());
- out.writeUTF(sName);
- out.writeUTF(echo);
- out.writeUTF(spy);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- return;
- }
- if(identifier.equals("Offline")) {
- String receiver = msgin.readUTF();
- UUID sender = UUID.fromString(msgin.readUTF());
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
- p.getPlayer().sendMessage(ChatColor.RED + "Player: " + ChatColor.GOLD + receiver + ChatColor.RED + " is not online.");
- p.setReplyPlayer(null);
- }
- if(identifier.equals("Ignore")) {
- String receiver = msgin.readUTF();
- UUID sender = UUID.fromString(msgin.readUTF());
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
- p.getPlayer().sendMessage(ChatColor.GOLD + receiver + " is currently ignoring your messages.");
- }
- if(identifier.equals("Blocked")) {
- String receiver = msgin.readUTF();
- UUID sender = UUID.fromString(msgin.readUTF());
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
- p.getPlayer().sendMessage(ChatColor.GOLD + receiver + " is currently blocking messages.");
- }
- if(identifier.equals("Echo")) {
- String receiver = msgin.readUTF();
- UUID sender = UUID.fromString(msgin.readUTF());
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
- MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
- String echo = msgin.readUTF();
- String rName = Format.FormatStringAll(receiver);
- if(r != null) {
- rName = Format.FormatStringAll(r.getNickname());
- p.setReplyPlayer(r.getUUID());
- }
- p.getPlayer().sendMessage(echo.replace("{playerfrom}", Format.FormatStringAll(p.getNickname())).replace("{playerto}", rName));
- }
- if(identifier.equals("Spy")) {
- String receiver = msgin.readUTF();
- MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
- UUID sender = UUID.fromString(msgin.readUTF());
- MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
- String sName = msgin.readUTF();
- String spy = msgin.readUTF();
- String rName = receiver;
- if(r != null) {
- rName = Format.FormatStringAll(r.getNickname());
- }
- if(p != null) {
- sName = Format.FormatStringAll(p.getNickname());
- }
- for(MineverseChatPlayer pl : onlinePlayers) {
- if(pl.isSpy() && !pl.getName().equals(sName) && !pl.getName().equals(rName)) {
- pl.getPlayer().sendMessage(spy.replace("{playerto}", rName).replace("{playerfrom}", sName));
- }
- }
- }
- }
- if(subchannel.equals("Mute")) {
- String sendplayer = msgin.readUTF();
- String mutePlayer = msgin.readUTF();
- String chatchannel = msgin.readUTF();
- String server = msgin.readUTF();
- String time = msgin.readUTF();
- int numtime = 0;
- MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
- ChatChannel cc = ccInfo.getChannelInfo(chatchannel);
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(stream);
- if(cc == null) {
- try {
- out.writeUTF("Mute");
- out.writeUTF("Channel");
- out.writeUTF(sendplayer);
- out.writeUTF(chatchannel);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(p == null) {
- try {
- out.writeUTF("Mute");
- out.writeUTF("Player");
- out.writeUTF(sendplayer);
- out.writeUTF(mutePlayer);
- out.writeUTF(server);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(!cc.isMutable()) {
- try {
- out.writeUTF("Mute");
- out.writeUTF("Mutable");
- out.writeUTF(sendplayer);
- out.writeUTF(cc.getName());
- out.writeUTF(cc.getColor());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(p.isMuted(cc.getName())) {
- try {
- out.writeUTF("Mute");
- out.writeUTF("Already");
- out.writeUTF(sendplayer);
- out.writeUTF(mutePlayer);
- out.writeUTF(cc.getName());
- out.writeUTF(cc.getColor());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(!time.equals("None\n")) {
- try {
- numtime = Integer.parseInt(time);
- if(numtime > 0) {
- Calendar currentDate = Calendar.getInstance();
- SimpleDateFormat formatter = new SimpleDateFormat("dd:HH:mm:ss");
- String date = formatter.format(currentDate.getTime());
- String[] datearray = date.split(":");
- int datetime = (Integer.parseInt(datearray[0]) * 1440) + (Integer.parseInt(datearray[1]) * 60) + (Integer.parseInt(datearray[2]));
- p.addMute(cc.getName(), datetime + numtime);
- String keyword = "minutes";
- if(numtime == 1) keyword = "minute";
- if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName() + ChatColor.RED + " for " + time + " " + keyword);
- else p.setModified(true);
- if(cc.getBungee()) {
- MineverseChat.getInstance().synchronize(p, true);
- }
- try {
- out.writeUTF("Mute");
- out.writeUTF("Valid");
- out.writeUTF(sendplayer);
- out.writeUTF(mutePlayer);
- out.writeUTF(cc.getName());
- out.writeUTF(cc.getColor());
- out.writeUTF(time);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- try {
- out.writeUTF("Mute");
- out.writeUTF("Time");
- out.writeUTF(sendplayer);
- out.writeUTF(time);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- catch(Exception e) {
- try {
- out.writeUTF("Mute");
- out.writeUTF("Time");
- out.writeUTF(sendplayer);
- out.writeUTF(time);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e1) {
- e1.printStackTrace();
- }
- return;
- }
- }
- p.addMute(cc.getName(), 0);
- if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName());
- else p.setModified(true);
- if(cc.getBungee()) {
- MineverseChat.getInstance().synchronize(p, true);
- }
- try {
- out.writeUTF("Mute");
- out.writeUTF("Valid");
- out.writeUTF(sendplayer);
- out.writeUTF(mutePlayer);
- out.writeUTF(cc.getName());
- out.writeUTF(cc.getColor());
- out.writeUTF(time);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(subchannel.equals("Muteall")) {
- String sendplayer = msgin.readUTF();
- String muteplayer = msgin.readUTF();
- String server = msgin.readUTF();
- Player mp = Bukkit.getPlayer(muteplayer);
- MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(stream);
- if(mp == null) {
- try {
- out.writeUTF("Muteall");
- out.writeUTF("Player");
- out.writeUTF(sendplayer);
- out.writeUTF(muteplayer);
- out.writeUTF(server);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- boolean bungee = false;
- for(ChatChannel c : ccInfo.getChannelsInfo()) {
- if(c.isMutable()) {
- p.addMute(c.getName(), 0);
- if(c.getBungee()) {
- bungee = true;
- }
- }
- }
- if(bungee) {
- MineverseChat.getInstance().synchronize(p, true);
- }
- if(p.isOnline()) {
- p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in all channels.");
- }
- else p.setModified(true);
- try {
- out.writeUTF("Muteall");
- out.writeUTF("Valid");
- out.writeUTF(sendplayer);
- out.writeUTF(muteplayer);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(subchannel.equals("Unmuteall")) {
- String sendplayer = msgin.readUTF();
- String muteplayer = msgin.readUTF();
- String server = msgin.readUTF();
- Player mp = Bukkit.getPlayer(muteplayer);
- MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(stream);
- if(mp == null) {
- try {
- out.writeUTF("Unmuteall");
- out.writeUTF("Player");
- out.writeUTF(sendplayer);
- out.writeUTF(muteplayer);
- out.writeUTF(server);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- boolean bungee = false;
- for(ChatChannel c : ccInfo.getChannelsInfo()) {
- p.removeMute(c.getName());
- if(c.getBungee()) {
- bungee = true;
- }
- }
- if(bungee) {
- MineverseChat.getInstance().synchronize(p, true);
- }
- if(p.isOnline()) {
- p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in all channels.");
- }
- else p.setModified(true);
- try {
- out.writeUTF("Unmuteall");
- out.writeUTF("Valid");
- out.writeUTF(sendplayer);
- out.writeUTF(muteplayer);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(subchannel.equals("Unmute")) {
- String sendplayer = msgin.readUTF();
- String mutePlayer = msgin.readUTF();
- String chatchannel = msgin.readUTF();
- String server = msgin.readUTF();
- MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
- ChatChannel cc = ccInfo.getChannelInfo(chatchannel);
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(stream);
- if(cc == null) {
- try {
- out.writeUTF("Unmute");
- out.writeUTF("Channel");
- out.writeUTF(sendplayer);
- out.writeUTF(chatchannel);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(p == null) {
- try {
- out.writeUTF("Unmute");
- out.writeUTF("Player");
- out.writeUTF(sendplayer);
- out.writeUTF(mutePlayer);
- out.writeUTF(server);
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- if(!p.isMuted(cc.getName())) {
- try {
- out.writeUTF("Unmute");
- out.writeUTF("Already");
- out.writeUTF(sendplayer);
- out.writeUTF(mutePlayer);
- out.writeUTF(cc.getName());
- out.writeUTF(cc.getColor());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- p.removeMute(cc.getName());
- if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName());
- else p.setModified(true);
- if(cc.getBungee()) {
- MineverseChat.getInstance().synchronize(p, true);
- }
- try {
- out.writeUTF("Unmute");
- out.writeUTF("Valid");
- out.writeUTF(sendplayer);
- out.writeUTF(mutePlayer);
- out.writeUTF(cc.getName());
- out.writeUTF(cc.getColor());
- player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- return;
- }
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
+/*
+ * VentureChat plugin for Minecraft servers running Bukkit or Spigot software.
+ * @author Aust1n46
+ */
+package mineverse.Aust1n46.chat;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import net.milkbowl.vault.chat.Chat;
+import net.milkbowl.vault.permission.Permission;
+
+import mineverse.Aust1n46.chat.irc.Bot;
+import mineverse.Aust1n46.chat.irc.command.IRCCommandInfo;
+//import mineverse.Aust1n46.chat.json.JsonButtonInfo;
+import mineverse.Aust1n46.chat.json.JsonFormatInfo;
+import mineverse.Aust1n46.chat.listeners.CapeListener;
+import mineverse.Aust1n46.chat.listeners.CommandListener;
+import mineverse.Aust1n46.chat.listeners.LoginListener;
+import mineverse.Aust1n46.chat.listeners.ChatListener;
+import mineverse.Aust1n46.chat.listeners.PacketListener;
+import mineverse.Aust1n46.chat.listeners.SignListener;
+import mineverse.Aust1n46.chat.alias.Alias;
+import mineverse.Aust1n46.chat.alias.AliasInfo;
+import mineverse.Aust1n46.chat.api.MineverseChatAPI;
+import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
+import mineverse.Aust1n46.chat.channel.ChatChannel;
+import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
+import mineverse.Aust1n46.chat.command.CCommand;
+import mineverse.Aust1n46.chat.command.MineverseCommand;
+import mineverse.Aust1n46.chat.command.MineverseCommandExecutor;
+import mineverse.Aust1n46.chat.command.chat.Broadcast;
+import mineverse.Aust1n46.chat.command.chat.Buttons;
+import mineverse.Aust1n46.chat.command.chat.Channel;
+import mineverse.Aust1n46.chat.command.chat.Channelinfo;
+import mineverse.Aust1n46.chat.command.chat.Chatinfo;
+import mineverse.Aust1n46.chat.command.chat.Chatreload;
+import mineverse.Aust1n46.chat.command.chat.Chlist;
+import mineverse.Aust1n46.chat.command.chat.Chwho;
+import mineverse.Aust1n46.chat.command.chat.Clearchat;
+import mineverse.Aust1n46.chat.command.chat.Commandblock;
+import mineverse.Aust1n46.chat.command.chat.Commandspy;
+import mineverse.Aust1n46.chat.command.chat.Config;
+import mineverse.Aust1n46.chat.command.chat.Edit;
+import mineverse.Aust1n46.chat.command.chat.Filter;
+import mineverse.Aust1n46.chat.command.chat.Force;
+import mineverse.Aust1n46.chat.command.chat.Forceall;
+import mineverse.Aust1n46.chat.command.chat.Kickchannel;
+import mineverse.Aust1n46.chat.command.chat.Kickchannelall;
+import mineverse.Aust1n46.chat.command.chat.Leave;
+import mineverse.Aust1n46.chat.command.chat.Listen;
+import mineverse.Aust1n46.chat.command.chat.Mail;
+import mineverse.Aust1n46.chat.command.chat.Me;
+import mineverse.Aust1n46.chat.command.chat.Nick;
+import mineverse.Aust1n46.chat.command.chat.Party;
+import mineverse.Aust1n46.chat.command.chat.RangedSpy;
+import mineverse.Aust1n46.chat.command.chat.Removemessage;
+import mineverse.Aust1n46.chat.command.chat.Setchannel;
+import mineverse.Aust1n46.chat.command.chat.Setchannelall;
+import mineverse.Aust1n46.chat.command.chat.VentureChatGui;
+import mineverse.Aust1n46.chat.command.chat.Venturechat;
+import mineverse.Aust1n46.chat.command.message.Afk;
+import mineverse.Aust1n46.chat.command.message.Ignore;
+import mineverse.Aust1n46.chat.command.message.Message;
+import mineverse.Aust1n46.chat.command.message.MessageToggle;
+import mineverse.Aust1n46.chat.command.message.Notifications;
+import mineverse.Aust1n46.chat.command.message.Reply;
+import mineverse.Aust1n46.chat.command.message.Spy;
+import mineverse.Aust1n46.chat.command.mute.Mute;
+import mineverse.Aust1n46.chat.command.mute.Muteall;
+import mineverse.Aust1n46.chat.command.mute.Unmute;
+import mineverse.Aust1n46.chat.command.mute.Unmuteall;
+import mineverse.Aust1n46.chat.database.MySQL;
+import mineverse.Aust1n46.chat.database.PlayerData;
+import mineverse.Aust1n46.chat.gui.GuiSlotInfo;
+import mineverse.Aust1n46.chat.utilities.Format;
+import mineverse.Aust1n46.chat.versions.V1_8;
+import mineverse.Aust1n46.chat.versions.VersionHandler;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandMap;
+import org.bukkit.command.SimpleCommandMap;
+import org.bukkit.entity.ArmorStand;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.plugin.PluginManager;
+import org.bukkit.plugin.RegisteredServiceProvider;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.bukkit.plugin.messaging.PluginMessageListener;
+import org.bukkit.scheduler.BukkitScheduler;
+import org.bukkit.Sound;
+
+import com.comphenix.protocol.ProtocolLibrary;
+import com.comphenix.protocol.ProtocolManager;
+import com.comphenix.protocol.utility.MinecraftReflection;
+
+import me.clip.placeholderapi.PlaceholderAPI;
+
+public class MineverseChat extends JavaPlugin implements PluginMessageListener {
+ // Listeners --------------------------------
+ private ChatListener chatListener;
+ private LoginListener loginListener;
+ private SignListener signListener;
+ private CommandListener commandListener;
+ private PacketListener packetListener;
+ private CapeListener capeListener;
+ private Channel channelListener;
+ public static String[] playerlist;
+ public static String playerlist_server;
+ public boolean ircListen;
+ public ProtocolManager protocolManager;
+ public static ChatMessage lastChatMessage;
+ public static String lastJson;
+ public static Method messageMethod;
+ public static Field posField;
+ public static Class chatMessageType;
+ private static Field commandMap;
+ private static Field knownCommands;
+
+ // Executors --------------------------------
+ private MineverseCommandExecutor commandExecutor;
+ private Map commands = new HashMap();
+
+ // MySQL ------------------------------------
+ public Connection c = null;
+ public MySQL MySQL;
+ public boolean mysql = false;
+
+ // SQLite -------------------------------------
+ // public Connection lite = null;
+
+ // Misc --------------------------------
+ public static ChatChannelInfo ccInfo;
+ public static AliasInfo aaInfo;
+ public static JsonFormatInfo jfInfo;
+ // public static JsonButtonInfo jbInfo;
+ public static IRCCommandInfo ircInfo;
+ public static GuiSlotInfo gsInfo;
+ public boolean quickchat = true;
+ private static final Logger log = Logger.getLogger("Minecraft");
+ private static MineverseChat plugin;
+ public static Set players = new HashSet();
+ public static Set onlinePlayers = new HashSet();
+ public static HashMap networkPlayers = new HashMap();
+ public static ArmorStand cape;
+ public static ItemStack banner;
+ public static boolean capeToggle = false;
+ private boolean firstRun = true;
+
+ // Vault --------------------------------
+ public static Permission permission = null;
+ public static Chat chat = null;
+ public static CommandMap cmap;
+
+ // Offline data ----------------------------
+ public Map mutes = new HashMap();
+ public Map> mail = new HashMap>();
+
+ // IRC Bot -----------
+ public Bot bot;
+ public boolean irc = false;
+
+ private LogLevels curLogLevel;
+
+ public long LINELENGTH = 40;
+
+ @Override
+ public void onEnable() {
+ plugin = this;
+ try {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Initializing..."));
+ if(!getDataFolder().exists()) {
+ getDataFolder().mkdirs();
+ }
+ File file = new File(getDataFolder(), "config.yml");
+ if(!file.exists()) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Config not found! Generating file."));
+ saveDefaultConfig();
+ }
+ else {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Config found! Loading file."));
+ }
+
+ if(!new File(getDataFolder(), "defaultconfig.yml").exists()) {
+ saveResource("defaultconfig.yml", false);
+ }
+ }
+ catch(Exception ex) {
+ log.severe(String.format("[" + String.format("VentureChat") + "]" + " - Could not load configuration!\n " + ex, getDescription().getName()));
+ }
+ ccInfo = new ChatChannelInfo(this);
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Checking for Vault..."));
+ // Set up Vault
+ if(!this.setupPermissions()) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cCould not find Vault dependency, disabling."));
+ Bukkit.getPluginManager().disablePlugin(this);
+ }
+ this.setupChat();
+ // Log completion of initialization
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabled Successfully"));
+ // Get config and handle
+ // Configuration
+ PlayerData.initialize();
+ if(this.firstRun) {
+ for(String uuidString : PlayerData.getPlayerData().getConfigurationSection("players").getKeys(false)) {
+ UUID uuid = UUID.fromString(uuidString);
+ String name = PlayerData.getPlayerData().getConfigurationSection("players." + uuid).getString("name");
+ String currentChannelName = PlayerData.getPlayerData().getConfigurationSection("players." + uuid).getString("current");
+ ChatChannel currentChannel = ccInfo.isChannel(currentChannelName) ? ccInfo.getChannelInfo(currentChannelName) : ccInfo.getDefaultChannel();
+ Set ignores = new HashSet();
+ StringTokenizer i = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("ignores"), ",");
+ while(i.hasMoreTokens()) {
+ ignores.add(UUID.fromString(i.nextToken()));
+ }
+ Set listening = new HashSet();
+ StringTokenizer l = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("listen"), ",");
+ while(l.hasMoreTokens()) {
+ String channel = l.nextToken();
+ if(ccInfo.isChannel(channel)) {
+ listening.add(channel);
+ }
+ }
+ HashMap mutes = new HashMap();
+ StringTokenizer m = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("mutes"), ",");
+ while(m.hasMoreTokens()) {
+ String[] parts = m.nextToken().split(":");
+ if(ccInfo.isChannel(parts[0])) {
+ if(parts[1].equals("null")) {
+ log.info("[VentureChat] Null Mute Time: " + parts[0] + " " + name);
+ continue;
+ }
+ mutes.put(ccInfo.getChannelInfo(parts[0]).getName(), Integer.parseInt(parts[1]));
+ }
+ }
+ Set blockedCommands = new HashSet();
+ StringTokenizer b = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("blockedcommands"), ",");
+ while(b.hasMoreTokens()) {
+ blockedCommands.add(b.nextToken());
+ }
+ List mail = new ArrayList();
+ StringTokenizer ma = new StringTokenizer(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("mail"), ",");
+ while(ma.hasMoreTokens()) {
+ mail.add(ma.nextToken());
+ }
+ boolean host = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("host");
+ UUID party = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("party").length() > 0 ? UUID.fromString(PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("party")) : null;
+ boolean filter = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("filter");
+ boolean notifications = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("notifications");
+ String nickname = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("nickname");
+ String jsonFormat = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getString("jsonformat");
+ boolean spy = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("spy", false);
+ boolean commandSpy = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("commandspy", false);
+ boolean rangedSpy = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("rangedspy", false);
+ boolean buttons = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("buttons", true);
+ boolean messageToggle = PlayerData.getPlayerData().getConfigurationSection("players." + uuidString).getBoolean("messagetoggle", true);
+ players.add(new MineverseChatPlayer(uuid, name, currentChannel, ignores, listening, mutes, blockedCommands, mail, host, party, filter, notifications, nickname, jsonFormat, spy, commandSpy, rangedSpy, buttons, messageToggle));
+ }
+ }
+ else {
+ for(Player p : this.getServer().getOnlinePlayers()) {
+ MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(p);
+ mcp.setOnline(true);
+ }
+ }
+
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Listeners"));
+ // Channel information reference
+ ircInfo = new IRCCommandInfo(this);
+ aaInfo = new AliasInfo(this);
+ jfInfo = new JsonFormatInfo(this);
+ // jbInfo = new JsonButtonInfo();
+ gsInfo = new GuiSlotInfo();
+
+ if(ccInfo == null) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cConfiguration is BAD!"));
+ }
+
+ if(this.getConfig().getConfigurationSection("mysql").getBoolean("enabled")) {
+ this.MySQL = new MySQL(this, getConfig().getConfigurationSection("mysql").getString("host"), getConfig().getConfigurationSection("mysql").getString("port"), getConfig().getConfigurationSection("mysql").getString("database"), getConfig().getConfigurationSection("mysql").getString("user"), getConfig().getConfigurationSection("mysql").getString("password"));
+ this.mysql = true;
+ try {
+ c = MySQL.openConnection();
+ Statement statement = c.createStatement();
+ statement.executeUpdate("CREATE TABLE IF NOT EXISTS `VentureChat` (`rowid` INT(7) NOT NULL AUTO_INCREMENT, `ChatTime` TEXT(100), `UUID` TEXT(100), `Name` TEXT(100), `Server` TEXT(100), `Channel` TEXT(100), `Text` TEXT(300), `Type` TEXT(100), PRIMARY KEY (rowid));");
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Connecting to MySQL Database"));
+ }
+ catch(ClassNotFoundException | SQLException e) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cFailed to connect to MySQL Database, Reason: " + e));
+ this.mysql = false;
+ }
+ }
+
+ /*
+ * Future SQLite data storage option SQLite SQLite = new SQLite(this,
+ * "PlayerData.db"); try { lite = SQLite.openConnection(); Statement
+ * statement = lite.createStatement(); statement.executeUpdate(
+ * "CREATE TABLE IF NOT EXISTS `PlayerData` (`Player` TEXT(100), `UUID` TEXT(100), `Default Channel` TEXT(100), `Ignores` TEXT(1000), `Channels` TEXT(1000), `Mutes` TEXT(1000), `Timed Mutes` TEXT(1000), `Blocked Commands` TEXT(1000), `Date` TEXT(100));"
+ * ); //statement.executeUpdate(
+ * "INSERT INTO `PlayerData` (`Player`, `UUID`, `Default Channel`, `Ignores`, `Channels`, `Mutes`, `Timed Mutes`, `Blocked Commands`, `Date`) VALUES ('bob', 'derp', 'dered', '"
+ * +plugin.getServer().getServerName()+
+ * "', 'Messaging_Component', 'COMMAND', 'Chat', 'HI', ':D');");
+ * log.info(String.format("[" +
+ * String.format(getConfig().getString("pluginname", "VentureChat") +
+ * "]" + " - Connecting to SQLite Database",
+ * getDescription().getName()))); } catch(ClassNotFoundException |
+ * SQLException e) { e.printStackTrace(); }
+ */
+
+ //this.loadCommandMap();
+ //this.unregister("msg");
+
+ if(this.getConfig().getConfigurationSection("irc").getBoolean("enabled", false)) {
+ bot = new Bot(this, ccInfo, ircInfo);
+ bot.init();
+ irc = true;
+ }
+
+ commands.put("afk", new Afk("afk"));
+ commands.put("buttons", new Buttons("button"));
+ commands.put("broadcast", new Broadcast("broadcast"));
+ commands.put("channel", new Channel("channel"));
+ commands.put("join", new Channel("join"));
+ commands.put("channelinfo", new Channelinfo("channelinfo"));
+ commands.put("chatinfo", new Chatinfo("chatinfo"));
+ commands.put("chatreload", new Chatreload("chatreload"));
+ commands.put("chlist", new Chlist("chlist"));
+ commands.put("chwho", new Chwho("chwho"));
+ commands.put("clearchat", new Clearchat("clearchat"));
+ commands.put("commandblock", new Commandblock("commandblock"));
+ commands.put("commandspy", new Commandspy("commandspy"));
+ commands.put("config", new Config("config"));
+ commands.put("edit", new Edit("edit"));
+ commands.put("filter", new Filter("filter"));
+ commands.put("force", new Force("force"));
+ commands.put("forceall", new Forceall("forceall"));
+ commands.put("ignore", new Ignore("ignore"));
+ commands.put("kickchannel", new Kickchannel("kickchannel"));
+ commands.put("kickchannelall", new Kickchannelall("kickchannelall"));
+ commands.put("leave", new Leave("leave"));
+ commands.put("listen", new Listen("listen"));
+ commands.put("mail", new Mail("mail"));
+ commands.put("me", new Me("me"));
+ commands.put("message", new Message("message"));
+ commands.put("tell", new Message("tell"));
+ commands.put("whisper", new Message("whisper"));
+ commands.put("venturechat", new Venturechat("venturechat"));
+ commands.put("mute", new Mute("mute"));
+ commands.put("muteall", new Muteall("muteall"));
+ commands.put("nick", new Nick("nick"));
+ commands.put("notifications", new Notifications("notifications"));
+ commands.put("party", new Party("party"));
+ commands.put("rangedspy", new RangedSpy("rangedspy"));
+ commands.put("removemessage", new Removemessage("removemessage"));
+ commands.put("reply", new Reply("reply"));
+ commands.put("setchannel", new Setchannel("setchannel"));
+ commands.put("setchannelall", new Setchannelall("setchannelall"));
+ commands.put("spy", new Spy("spy"));
+ commands.put("unmute", new Unmute("unmute"));
+ commands.put("unmuteall", new Unmuteall("unmuteall"));
+ commands.put("venturechatgui", new VentureChatGui("venturechatgui"));
+ commands.put("messagetoggle", new MessageToggle("messagetoggle"));
+ commandExecutor = new MineverseCommandExecutor(commands);
+ for(String command : commands.keySet()) {
+ this.getCommand(command).setExecutor(commandExecutor);
+ }
+
+ channelListener = new Channel();
+ signListener = new SignListener(this, ccInfo);
+ chatListener = new ChatListener(this, ccInfo, bot);
+ commandListener = new CommandListener(this, ccInfo, aaInfo, bot);
+
+ PluginManager pluginManager = getServer().getPluginManager();
+ pluginManager.registerEvents(channelListener, this);
+ pluginManager.registerEvents(chatListener, this);
+ pluginManager.registerEvents(signListener, this);
+ pluginManager.registerEvents(commandListener, this);
+ if(!VersionHandler.is1_7_10() && !VersionHandler.is1_7_9() && !VersionHandler.is1_7_2()) {
+ capeListener = new CapeListener();
+ pluginManager.registerEvents(capeListener, this);
+ }
+ loginListener = new LoginListener(this, ccInfo);
+ pluginManager.registerEvents(loginListener, this);
+ this.registerPacketListeners();
+ try {
+ this.loadNMS();
+ }
+ catch(ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Attaching to Executors"));
+ try {
+ // if(VersionHandler.is1_7_9()) cmap = V1_7_9.v1_7_9();
+ // if(VersionHandler.is1_7_10()) cmap = V1_7_10.v1_7_10();
+ if(VersionHandler.is1_8()) cmap = V1_8.v1_8();
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ this.quickchat = false;
+ if(cmap == null) {
+ this.quickchat = false;
+ // log.info(String.format("[" + String.format("VentureChat" + "]" +
+ // " - Unrecognized server version, Quickchat commands not
+ // registering",
+ // getDescription().getName())));
+ // log.info(String.format("[" + String.format("VentureChat" + "]" +
+ // " - Unrecognized server version, Alias commands not registering",
+ // getDescription().getName())));
+ }
+ else {
+ /*Don't run this code right now
+ for(ChatChannel c : ccInfo.getChannelsInfo()) {
+ CCommand cmd = new CCommand(c.getAlias());
+ cmap.register("", cmd);
+ cmd.setExecutor(commandListener);
+ }
+ for(Alias a : aaInfo.getAliases()) {
+ CCommand cmd = new CCommand(a.getName());
+ cmap.register("", cmd);
+ }
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Alias commands"));
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Quickchat commands"));
+ */
+ }
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord"));
+ Bukkit.getMessenger().registerOutgoingPluginChannel(this, "VentureChat");
+ Bukkit.getMessenger().registerIncomingPluginChannel(this, "VentureChat", this);
+ if(pluginManager.isPluginEnabled("Towny")) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Towny Formatting"));
+ }
+ if(pluginManager.isPluginEnabled("Jobs")) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Jobs Formatting"));
+ }
+ if(pluginManager.isPluginEnabled("Factions")) {
+ String version = pluginManager.getPlugin("Factions").getDescription().getVersion();
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Factions Formatting version " + version));
+ }
+ if(pluginManager.isPluginEnabled("Heroes")) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling Heroes Formatting"));
+ }
+ if(pluginManager.isPluginEnabled("PlaceholderAPI")) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Enabling PlaceholderAPI Hook"));
+ }
+ boolean hooked = PlaceholderAPI.registerPlaceholderHook("venturechat", new VentureChatPlaceholders());
+ if(hooked) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Added placeholders to PlaceholderAPI!"));
+ }
+ else {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cPlaceholders were not added to PlaceholderAPI!"));
+ }
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Loading player data"));
+ BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
+ scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
+ @Override
+ public void run() {
+ PlayerData.savePlayerData();
+ if(getConfig().getString("loglevel", "info").equals("debug")) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Saving Player Data"));
+ }
+ }
+ }, 0L, getConfig().getInt("saveinterval") * 1200);
+ scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
+ @Override
+ public void run() {
+ for(MineverseChatPlayer p : MineverseChat.players) {
+ //Calendar currentDate = Calendar.getInstance();
+ //SimpleDateFormat formatter = new SimpleDateFormat("dd:HH:mm:ss");
+ //String date = formatter.format(currentDate.getTime());
+ //String[] datearray = date.split(":");
+ //int time = (Integer.parseInt(datearray[0]) * 1440) + (Integer.parseInt(datearray[1]) * 60) + (Integer.parseInt(datearray[2]));
+
+ int time = (int) (System.currentTimeMillis() / 60000);
+
+ for(String c : p.getMutes().keySet()) {
+ ChatChannel channel = ccInfo.getChannelInfo(c);
+ int timemark = p.getMutes().get(channel.getName());
+ if(timemark == 0) return;
+ // System.out.println(time + " " + timemark);
+ if(time > timemark) {
+ p.removeMute(channel.getName());
+ if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in: " + ChatColor.valueOf(channel.getColor().toUpperCase()) + channel.getName());
+ else p.setModified(true);
+ }
+ }
+ }
+ if(getConfig().getString("loglevel", "info").equals("debug")) {
+ // log.info(String.format("[" +
+ // String.format(getConfig().getString("pluginname",
+ // "VentureChat") + "]" + " - Updating Player Mutes",
+ // getDescription().getName())));
+ }
+ }
+ }, 0L, 20L);
+ this.firstRun = false;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void unregister(String name) {
+ try {
+ ((Map) knownCommands.get((SimpleCommandMap) commandMap.get(Bukkit.getServer()))).remove(name);
+ }
+ catch(Exception e) {
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private void loadCommandMap() {
+ try {
+ commandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
+ commandMap.setAccessible(true);
+ knownCommands = SimpleCommandMap.class.getDeclaredField("knownCommands");
+ knownCommands.setAccessible(true);
+ }
+ catch(Exception e) {
+ }
+ }
+
+ public CommandMap getCommandMap() {
+ return cmap;
+ }
+
+ public static MineverseChat getInstance() {
+ return MineverseChat.plugin;
+ }
+
+ private void registerPacketListeners() {
+ this.protocolManager = ProtocolLibrary.getProtocolManager();
+ this.packetListener = new PacketListener(this);
+ this.protocolManager.addPacketListener(this.packetListener);
+ }
+
+ private void loadNMS() throws ClassNotFoundException {
+ /*if(VersionHandler.is1_7_10()) {
+ try {
+ MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b");
+ MineverseChat.posField.setAccessible(true);
+ }
+ catch(NoSuchFieldException | SecurityException localNoSuchFieldException) {
+ localNoSuchFieldException.printStackTrace();
+ }
+ try {
+ MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("IChatBaseComponent").getDeclaredMethod("c", new Class[0]);
+ MineverseChat.messageMethod.setAccessible(true);
+ }
+ catch(SecurityException | NoSuchMethodException e) {
+ e.printStackTrace();
+ }
+ return;
+ }*/
+ if(VersionHandler.is1_8() || VersionHandler.is1_7_10()) {
+ try {
+ MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b");
+ MineverseChat.posField.setAccessible(true);
+ }
+ catch(NoSuchFieldException | SecurityException localNoSuchFieldException) {
+ localNoSuchFieldException.printStackTrace();
+ }
+ try {
+ MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("IChatBaseComponent").getDeclaredMethod("c", new Class[0]);
+ MineverseChat.messageMethod.setAccessible(true);
+ }
+ catch(SecurityException | NoSuchMethodException e) {
+ e.printStackTrace();
+ }
+ }
+ else {
+ try {
+ MineverseChat.posField = MinecraftReflection.getMinecraftClass("PacketPlayOutChat").getDeclaredField("b");
+ MineverseChat.posField.setAccessible(true);
+ }
+ catch(NoSuchFieldException | SecurityException localNoSuchFieldException) {
+ localNoSuchFieldException.printStackTrace();
+ }
+ try {
+ MineverseChat.messageMethod = MinecraftReflection.getMinecraftClass("ChatBaseComponent").getDeclaredMethod("toPlainText", new Class[0]);
+ MineverseChat.messageMethod.setAccessible(true);
+ }
+ catch(SecurityException | NoSuchMethodException e) {
+ e.printStackTrace();
+ }
+ try {
+ MineverseChat.chatMessageType = getNMSClass("ChatMessageType");
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private Class> getNMSClass(String name) {
+ try {
+ return Class.forName("net.minecraft.server." + getVersion() + "." + name);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ private String getVersion() {
+ return Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
+ }
+
+ private boolean setupPermissions() {
+ RegisteredServiceProvider permissionProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
+ if(permissionProvider != null) {
+ permission = permissionProvider.getProvider();
+ }
+ return(permission != null);
+ }
+
+ private boolean setupChat() {
+ RegisteredServiceProvider chatProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.chat.Chat.class);
+ if(chatProvider != null) {
+ chat = chatProvider.getProvider();
+ }
+ return(chat != null);
+ }
+
+ public long getLineLength() {
+ return LINELENGTH;
+ }
+
+ @Override
+ public void onDisable() {
+ PlayerData.savePlayerData();
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Disabling..."));
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Disabled Successfully"));
+ if(irc) {
+ bot.terminate();
+ }
+ if(MineverseChat.cape != null) {
+ MineverseChat.cape.remove();
+ }
+ }
+
+ public void setLogLevel(String loglevel) {
+ if(LogLevels.valueOf(loglevel) != null) {
+ curLogLevel = LogLevels.valueOf(loglevel);
+ }
+ else {
+ curLogLevel = LogLevels.INFO;
+ }
+ }
+
+ public void logme(LogLevels level, String location, String logline) {
+ if(level.ordinal() >= curLogLevel.ordinal()) {
+ log.log(Level.INFO, "[VentureChat]: {0}:{1} : {2}", new Object[] { level.toString(), location, logline });
+ }
+ }
+
+ public void synchronize(MineverseChatPlayer mcp, boolean changes) {
+ // System.out.println("Sync started...");
+ ByteArrayOutputStream outstream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(outstream);
+ try {
+ out.writeUTF("Sync");
+ if(!changes) {
+ out.writeUTF("Receive");
+ // System.out.println(mcp.getPlayer().getServer().getServerName());
+ // out.writeUTF(mcp.getPlayer().getServer().getServerName());
+ out.writeUTF(mcp.getUUID().toString());
+ }
+ else {
+ out.writeUTF("Update");
+ out.writeUTF(mcp.getUUID().toString());
+ // out.writeUTF("Channels");
+ int channelCount = 0;
+ for(String c : mcp.getListening()) {
+ ChatChannel channel = ccInfo.getChannelInfo(c);
+ if(channel.getBungee()) {
+ channelCount++;
+ }
+ }
+ out.write(channelCount);
+ for(String c : mcp.getListening()) {
+ ChatChannel channel = ccInfo.getChannelInfo(c);
+ if(channel.getBungee()) {
+ out.writeUTF(channel.getName());
+ }
+ }
+ // out.writeUTF("Mutes");
+ int muteCount = 0;
+ for(String c : mcp.getMutes().keySet()) {
+ ChatChannel channel = ccInfo.getChannelInfo(c);
+ if(channel.getBungee()) {
+ muteCount++;
+ }
+ }
+ // System.out.println(muteCount + " mutes");
+ out.write(muteCount);
+ for(String c : mcp.getMutes().keySet()) {
+ ChatChannel channel = ccInfo.getChannelInfo(c);
+ if(channel.getBungee()) {
+ out.writeUTF(channel.getName());
+ }
+ }
+ int ignoreCount = 0;
+ for(@SuppressWarnings("unused")
+ UUID c : mcp.getIgnores()) {
+ ignoreCount++;
+ }
+ out.write(ignoreCount);
+ for(UUID c : mcp.getIgnores()) {
+ out.writeUTF(c.toString());
+ }
+ out.writeBoolean(mcp.isSpy());
+ out.writeBoolean(mcp.getMessageToggle());
+ }
+ for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
+ p.getPlayer().sendPluginMessage(this, "VentureChat", outstream.toByteArray());
+ break;
+ }
+ //System.out.println("Sync start bottom...");
+ out.close();
+ }
+ catch(IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void updatePlayerList(MineverseChatPlayer mcp, boolean request) {
+ ByteArrayOutputStream outstream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(outstream);
+ try {
+ out.writeUTF("Sync");
+ if(request) {
+ out.writeUTF("PlayersReceive");
+ // System.out.println(mcp.getPlayer().getServer().getServerName());
+ out.writeUTF(this.getServer().getServerName());
+ }
+ else {
+ out.writeUTF("PlayersUpdate");
+ // System.out.println(networkPlayers.keySet().size());
+ out.write(networkPlayers.keySet().size());
+ for(String p : networkPlayers.keySet()) {
+ out.writeUTF(p + "," + networkPlayers.get(p));
+ }
+ }
+ mcp.getPlayer().sendPluginMessage(this, "VentureChat", outstream.toByteArray());
+ // System.out.println("Sync start bottom...");
+ out.close();
+ }
+ catch(IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onPluginMessageReceived(String channel, Player player, byte[] message) {
+ if(!channel.equals("VentureChat")) {
+ return;
+ }
+ try {
+ DataInputStream msgin = new DataInputStream(new ByteArrayInputStream(message));
+ // System.out.println(msgin.available() + " size");
+ String subchannel = msgin.readUTF();
+ if(subchannel.equals("Chat")) {
+ String chatchannel = msgin.readUTF();
+ String chat = msgin.readUTF();
+ String playerName = msgin.readUTF();
+ String lastMessage = msgin.readUTF();
+ String f = msgin.readUTF();
+ String c = msgin.readUTF();
+ String json = msgin.readUTF();
+ MineverseChat.lastChatMessage = new ChatMessage(playerName, lastMessage, lastMessage.hashCode(), f, c, chatchannel);
+ lastJson = json;
+ Bukkit.getConsoleSender().sendMessage(chat);
+ MineverseChatPlayer sender = MineverseChatAPI.getMineverseChatPlayer(playerName);
+ for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
+ // System.out.println(p.getName());
+ if(p.isOnline() && p.getListening().contains(ccInfo.getChannelInfo(chatchannel).getName())) {
+ if(plugin.getConfig().getBoolean("ignorechat", false)) {
+ // System.out.println(p.getIgnores());
+ if(sender == null) {
+ // System.out.println("null sender");
+ p.getPlayer().sendMessage(chat);
+ continue;
+ }
+ if(!p.getIgnores().contains(sender.getUUID())) {
+ // System.out.println("Chat sent");
+ p.getPlayer().sendMessage(chat);
+ }
+ continue;
+ }
+ p.getPlayer().sendMessage(chat);
+ }
+ }
+ }
+ if(subchannel.equals("RemoveMessage")) {
+ String hash = msgin.readUTF();
+ this.getServer().dispatchCommand(this.getServer().getConsoleSender(), "removemessage " + hash);
+ }
+ if(subchannel.equals("PlayersUpdate")) {
+ networkPlayers.clear();
+ int size = msgin.read();
+ for(int a = 1; a <= size; a++) {
+ String p = msgin.readUTF();
+ String[] parts = p.split(",");
+ networkPlayers.put(parts[0], parts[1]);
+ System.out.print(p);
+ }
+ }
+ if(subchannel.equals("Sync")) {
+ if(plugin.getConfig().getString("loglevel", "info").equals("debug")) {
+ Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Received update..."));
+ }
+ String uuid = msgin.readUTF();
+ MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(UUID.fromString(uuid));
+ for(Object ch : p.getListening().toArray()) {
+ String c = ch.toString();
+ ChatChannel cha = ccInfo.getChannelInfo(c);
+ if(cha.getBungee()) {
+ p.removeListening(c);
+ }
+ }
+ int size = msgin.read();
+ // System.out.println(size);
+ for(int a = 0; a < size; a++) {
+ String ch = msgin.readUTF();
+ if(ccInfo.isChannel(ch)) {
+ ChatChannel cha = ccInfo.getChannelInfo(ch);
+ if(cha.hasPermission() && p.getPlayer().hasPermission(cha.getPermission())) {
+ p.addListening(ch);
+ }
+ }
+ }
+ for(Object o : p.getMutes().keySet().toArray()) {
+ ChatChannel ch = ccInfo.getChannelInfo((String) o);
+ if(ch.getBungee()) {
+ p.removeMute(ch.getName());
+ }
+ }
+ int sizeB = msgin.read();
+ // System.out.println(sizeB + " mute size");
+ for(int b = 0; b < sizeB; b++) {
+ String ch = msgin.readUTF();
+ // System.out.println(ch);
+ if(ccInfo.isChannel(ch)) {
+ p.addMute(ch, 0);
+ }
+ }
+ // System.out.println(msgin.available() + " available before");
+ p.setSpy(msgin.readBoolean());
+ p.setMessageToggle(msgin.readBoolean());
+ // System.out.println(msgin.available() + " available after");
+ for(Object o : p.getIgnores().toArray()) {
+ p.removeIgnore((UUID) o);
+ }
+ int sizeC = msgin.read();
+ // System.out.println(sizeC + " ignore size");
+ for(int c = 0; c < sizeC; c++) {
+ String i = msgin.readUTF();
+ // System.out.println(i);
+ p.addIgnore(UUID.fromString(i));
+ }
+ if(!p.hasPlayed()) {
+ for(ChatChannel ch : ccInfo.getAutojoinList()) {
+ if(ch.hasPermission()) {
+ if(p.getPlayer().hasPermission(ch.getPermission())) {
+ p.addListening(ch.getName());
+ }
+ }
+ else {
+ p.addListening(ch.getName());
+ }
+ }
+ p.setHasPlayed(true);
+ plugin.synchronize(p, true);
+ }
+ }
+ if(subchannel.equals("Ignore")) {
+ String identifier = msgin.readUTF();
+ if(identifier.equals("Send")) {
+ String server = msgin.readUTF();
+ String receiver = msgin.readUTF();
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(receiver);
+ UUID sender = UUID.fromString(msgin.readUTF());
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(stream);
+ if(p == null || !p.isOnline()) {
+ out.writeUTF("Ignore");
+ out.writeUTF("Offline");
+ out.writeUTF(server);
+ out.writeUTF(receiver);
+ out.writeUTF(sender.toString());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ return;
+ }
+ p.setReplyPlayer(sender);
+ out.writeUTF("Ignore");
+ out.writeUTF("Echo");
+ out.writeUTF(server);
+ out.writeUTF(p.getNickname());
+ out.writeUTF(sender.toString());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ return;
+ }
+ if(identifier.equals("Offline")) {
+ String receiver = msgin.readUTF();
+ UUID sender = UUID.fromString(msgin.readUTF());
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
+ p.getPlayer().sendMessage(ChatColor.RED + "Player: " + ChatColor.GOLD + receiver + ChatColor.RED + " is not online.");
+ }
+ if(identifier.equals("Echo")) {
+ String receiver = msgin.readUTF();
+ UUID sender = UUID.fromString(msgin.readUTF());
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
+ MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
+ String rName = Format.FormatStringAll(receiver);
+ if(r != null) {
+ rName = Format.FormatStringAll(r.getNickname());
+ }
+ p.getPlayer().sendMessage(ChatColor.GOLD + "You are now ignoring player: " + ChatColor.RED + rName);
+ p.addIgnore(r.getUUID());
+ this.synchronize(p, true);
+ }
+ }
+ if(subchannel.equals("Message")) {
+ String identifier = msgin.readUTF();
+ if(identifier.equals("Send")) {
+ String server = msgin.readUTF();
+ String receiver = msgin.readUTF();
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(receiver);
+ UUID sender = UUID.fromString(msgin.readUTF());
+ String sName = msgin.readUTF();
+ MineverseChatPlayer s = MineverseChatAPI.getMineverseChatPlayer(sender);
+ String msg = msgin.readUTF();
+ String echo = msgin.readUTF();
+ String spy = msgin.readUTF();
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(stream);
+ // System.out.println((p == null) + " null");
+ if(p != null) {
+ // System.out.println(p.isOnline() + " online");
+ }
+ if(p == null || !p.isOnline()) {
+ out.writeUTF("Message");
+ out.writeUTF("Offline");
+ out.writeUTF(server);
+ out.writeUTF(receiver);
+ out.writeUTF(sender.toString());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ return;
+ }
+ if(p.getIgnores().contains(sender)) {
+ out.writeUTF("Message");
+ out.writeUTF("Ignore");
+ out.writeUTF(server);
+ out.writeUTF(receiver);
+ out.writeUTF(sender.toString());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ return;
+ }
+ if(!p.getMessageToggle()) {
+ out.writeUTF("Message");
+ out.writeUTF("Blocked");
+ out.writeUTF(server);
+ out.writeUTF(receiver);
+ out.writeUTF(sender.toString());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ return;
+ }
+ if(s != null) {
+ sName = Format.FormatStringAll(s.getNickname());
+ }
+ else {
+ UUID uuid = sender;
+ String name = sName;
+ ChatChannel current = ccInfo.getDefaultChannel();
+ Set ignores = new HashSet();
+ Set listening = new HashSet();
+ listening.add(current.getName());
+ HashMap mutes = new HashMap();
+ Set blockedCommands = new HashSet();
+ List mail = new ArrayList();
+ String jsonFormat = "Default";
+ s = new MineverseChatPlayer(uuid, name, current, ignores, listening, mutes, blockedCommands, mail, false, null, true, true, name, jsonFormat, false, false, false, true, true);
+ MineverseChat.players.add(s);
+ }
+ p.getPlayer().sendMessage(msg.replace("{playerfrom}", sName).replace("{playerto}", Format.FormatStringAll(p.getNickname())));
+ if(p.hasNotifications()) {
+ if(VersionHandler.is1_8() || VersionHandler.is1_7_10() || VersionHandler.is1_7_2() || VersionHandler.is1_7_9()) {
+ p.getPlayer().playSound(p.getPlayer().getLocation(), Sound.valueOf("LEVEL_UP"), 1, 0);
+ }
+ else {
+ p.getPlayer().playSound(p.getPlayer().getLocation(), Sound.valueOf("ENTITY_PLAYER_LEVELUP"), 1, 0);
+ }
+ }
+ p.setReplyPlayer(sender);
+ out.writeUTF("Message");
+ out.writeUTF("Echo");
+ out.writeUTF(server);
+ out.writeUTF(p.getNickname());
+ out.writeUTF(sender.toString());
+ out.writeUTF(sName);
+ out.writeUTF(echo);
+ out.writeUTF(spy);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ return;
+ }
+ if(identifier.equals("Offline")) {
+ String receiver = msgin.readUTF();
+ UUID sender = UUID.fromString(msgin.readUTF());
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
+ p.getPlayer().sendMessage(ChatColor.RED + "Player: " + ChatColor.GOLD + receiver + ChatColor.RED + " is not online.");
+ p.setReplyPlayer(null);
+ }
+ if(identifier.equals("Ignore")) {
+ String receiver = msgin.readUTF();
+ UUID sender = UUID.fromString(msgin.readUTF());
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
+ p.getPlayer().sendMessage(ChatColor.GOLD + receiver + " is currently ignoring your messages.");
+ }
+ if(identifier.equals("Blocked")) {
+ String receiver = msgin.readUTF();
+ UUID sender = UUID.fromString(msgin.readUTF());
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
+ p.getPlayer().sendMessage(ChatColor.GOLD + receiver + " is currently blocking messages.");
+ }
+ if(identifier.equals("Echo")) {
+ String receiver = msgin.readUTF();
+ UUID sender = UUID.fromString(msgin.readUTF());
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
+ MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
+ String echo = msgin.readUTF();
+ String rName = Format.FormatStringAll(receiver);
+ if(r != null) {
+ rName = Format.FormatStringAll(r.getNickname());
+ p.setReplyPlayer(r.getUUID());
+ }
+ p.getPlayer().sendMessage(echo.replace("{playerfrom}", Format.FormatStringAll(p.getNickname())).replace("{playerto}", rName));
+ }
+ if(identifier.equals("Spy")) {
+ String receiver = msgin.readUTF();
+ MineverseChatPlayer r = MineverseChatAPI.getMineverseChatPlayer(receiver);
+ UUID sender = UUID.fromString(msgin.readUTF());
+ MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(sender);
+ String sName = msgin.readUTF();
+ String spy = msgin.readUTF();
+ String rName = receiver;
+ if(r != null) {
+ rName = Format.FormatStringAll(r.getNickname());
+ }
+ if(p != null) {
+ sName = Format.FormatStringAll(p.getNickname());
+ }
+ for(MineverseChatPlayer pl : onlinePlayers) {
+ if(pl.isSpy() && !pl.getName().equals(sName) && !pl.getName().equals(rName)) {
+ pl.getPlayer().sendMessage(spy.replace("{playerto}", rName).replace("{playerfrom}", sName));
+ }
+ }
+ }
+ }
+ if(subchannel.equals("Mute")) {
+ String sendplayer = msgin.readUTF();
+ String mutePlayer = msgin.readUTF();
+ String chatchannel = msgin.readUTF();
+ String server = msgin.readUTF();
+ String time = msgin.readUTF();
+ int numtime = 0;
+ MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
+ ChatChannel cc = ccInfo.getChannelInfo(chatchannel);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(stream);
+ if(cc == null) {
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Channel");
+ out.writeUTF(sendplayer);
+ out.writeUTF(chatchannel);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(p == null) {
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Player");
+ out.writeUTF(sendplayer);
+ out.writeUTF(mutePlayer);
+ out.writeUTF(server);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(!cc.isMutable()) {
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Mutable");
+ out.writeUTF(sendplayer);
+ out.writeUTF(cc.getName());
+ out.writeUTF(cc.getColor());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(p.isMuted(cc.getName())) {
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Already");
+ out.writeUTF(sendplayer);
+ out.writeUTF(mutePlayer);
+ out.writeUTF(cc.getName());
+ out.writeUTF(cc.getColor());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(!time.equals("None\n")) {
+ try {
+ numtime = Integer.parseInt(time);
+ if(numtime > 0) {
+ Calendar currentDate = Calendar.getInstance();
+ SimpleDateFormat formatter = new SimpleDateFormat("dd:HH:mm:ss");
+ String date = formatter.format(currentDate.getTime());
+ String[] datearray = date.split(":");
+ int datetime = (Integer.parseInt(datearray[0]) * 1440) + (Integer.parseInt(datearray[1]) * 60) + (Integer.parseInt(datearray[2]));
+ p.addMute(cc.getName(), datetime + numtime);
+ String keyword = "minutes";
+ if(numtime == 1) keyword = "minute";
+ if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName() + ChatColor.RED + " for " + time + " " + keyword);
+ else p.setModified(true);
+ if(cc.getBungee()) {
+ MineverseChat.getInstance().synchronize(p, true);
+ }
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Valid");
+ out.writeUTF(sendplayer);
+ out.writeUTF(mutePlayer);
+ out.writeUTF(cc.getName());
+ out.writeUTF(cc.getColor());
+ out.writeUTF(time);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Time");
+ out.writeUTF(sendplayer);
+ out.writeUTF(time);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ catch(Exception e) {
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Time");
+ out.writeUTF(sendplayer);
+ out.writeUTF(time);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e1) {
+ e1.printStackTrace();
+ }
+ return;
+ }
+ }
+ p.addMute(cc.getName(), 0);
+ if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName());
+ else p.setModified(true);
+ if(cc.getBungee()) {
+ MineverseChat.getInstance().synchronize(p, true);
+ }
+ try {
+ out.writeUTF("Mute");
+ out.writeUTF("Valid");
+ out.writeUTF(sendplayer);
+ out.writeUTF(mutePlayer);
+ out.writeUTF(cc.getName());
+ out.writeUTF(cc.getColor());
+ out.writeUTF(time);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(subchannel.equals("Muteall")) {
+ String sendplayer = msgin.readUTF();
+ String muteplayer = msgin.readUTF();
+ String server = msgin.readUTF();
+ Player mp = Bukkit.getPlayer(muteplayer);
+ MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(stream);
+ if(mp == null) {
+ try {
+ out.writeUTF("Muteall");
+ out.writeUTF("Player");
+ out.writeUTF(sendplayer);
+ out.writeUTF(muteplayer);
+ out.writeUTF(server);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ boolean bungee = false;
+ for(ChatChannel c : ccInfo.getChannelsInfo()) {
+ if(c.isMutable()) {
+ p.addMute(c.getName(), 0);
+ if(c.getBungee()) {
+ bungee = true;
+ }
+ }
+ }
+ if(bungee) {
+ MineverseChat.getInstance().synchronize(p, true);
+ }
+ if(p.isOnline()) {
+ p.getPlayer().sendMessage(ChatColor.RED + "You have just been muted in all channels.");
+ }
+ else p.setModified(true);
+ try {
+ out.writeUTF("Muteall");
+ out.writeUTF("Valid");
+ out.writeUTF(sendplayer);
+ out.writeUTF(muteplayer);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(subchannel.equals("Unmuteall")) {
+ String sendplayer = msgin.readUTF();
+ String muteplayer = msgin.readUTF();
+ String server = msgin.readUTF();
+ Player mp = Bukkit.getPlayer(muteplayer);
+ MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(stream);
+ if(mp == null) {
+ try {
+ out.writeUTF("Unmuteall");
+ out.writeUTF("Player");
+ out.writeUTF(sendplayer);
+ out.writeUTF(muteplayer);
+ out.writeUTF(server);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ boolean bungee = false;
+ for(ChatChannel c : ccInfo.getChannelsInfo()) {
+ p.removeMute(c.getName());
+ if(c.getBungee()) {
+ bungee = true;
+ }
+ }
+ if(bungee) {
+ MineverseChat.getInstance().synchronize(p, true);
+ }
+ if(p.isOnline()) {
+ p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in all channels.");
+ }
+ else p.setModified(true);
+ try {
+ out.writeUTF("Unmuteall");
+ out.writeUTF("Valid");
+ out.writeUTF(sendplayer);
+ out.writeUTF(muteplayer);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(subchannel.equals("Unmute")) {
+ String sendplayer = msgin.readUTF();
+ String mutePlayer = msgin.readUTF();
+ String chatchannel = msgin.readUTF();
+ String server = msgin.readUTF();
+ MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
+ ChatChannel cc = ccInfo.getChannelInfo(chatchannel);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(stream);
+ if(cc == null) {
+ try {
+ out.writeUTF("Unmute");
+ out.writeUTF("Channel");
+ out.writeUTF(sendplayer);
+ out.writeUTF(chatchannel);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(p == null) {
+ try {
+ out.writeUTF("Unmute");
+ out.writeUTF("Player");
+ out.writeUTF(sendplayer);
+ out.writeUTF(mutePlayer);
+ out.writeUTF(server);
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ if(!p.isMuted(cc.getName())) {
+ try {
+ out.writeUTF("Unmute");
+ out.writeUTF("Already");
+ out.writeUTF(sendplayer);
+ out.writeUTF(mutePlayer);
+ out.writeUTF(cc.getName());
+ out.writeUTF(cc.getColor());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ p.removeMute(cc.getName());
+ if(p.isOnline()) p.getPlayer().sendMessage(ChatColor.RED + "You have just been unmuted in: " + ChatColor.valueOf(cc.getColor().toUpperCase()) + cc.getName());
+ else p.setModified(true);
+ if(cc.getBungee()) {
+ MineverseChat.getInstance().synchronize(p, true);
+ }
+ try {
+ out.writeUTF("Unmute");
+ out.writeUTF("Valid");
+ out.writeUTF(sendplayer);
+ out.writeUTF(mutePlayer);
+ out.writeUTF(cc.getName());
+ out.writeUTF(cc.getColor());
+ player.sendPluginMessage(this, "VentureChat", stream.toByteArray());
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return;
+ }
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
}
\ No newline at end of file
diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java
index d4ea9c3..70c8e04 100644
--- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java
+++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Removemessage.java
@@ -1,188 +1,191 @@
-package mineverse.Aust1n46.chat.command.chat;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import mineverse.Aust1n46.chat.ChatMessage;
-import mineverse.Aust1n46.chat.MineverseChat;
-import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
-import mineverse.Aust1n46.chat.command.MineverseCommand;
-//import mineverse.Aust1n46.chat.json.JsonButton;
-import mineverse.Aust1n46.chat.utilities.Format;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.bukkit.scheduler.BukkitRunnable;
-
-import com.comphenix.protocol.PacketType;
-import com.comphenix.protocol.events.PacketContainer;
-import com.comphenix.protocol.wrappers.WrappedChatComponent;
-
-public class Removemessage extends MineverseCommand {
- private PacketContainer emptyLinePacketContainer = createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}"));
- private MineverseChat plugin;
- private WrappedChatComponent messageDeletedComponentPlayer;
-
- public Removemessage(String name) {
- super(name);
- this.plugin = MineverseChat.getInstance();
- }
-
- @Override
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public void execute(CommandSender sender, String command, String[] args) {
- if(args.length == 0) {
- sender.sendMessage(ChatColor.RED + "Invalid command: /removemessage [hashcode]");
- return;
- }
- final int hash;
- try {
- hash = Integer.parseInt(args[0]);
- }
- catch(Exception e) {
- sender.sendMessage(ChatColor.RED + "Invalid hashcode.");
- return;
- }
- if(args.length > 1 && Boolean.parseBoolean(args[1]) && sender instanceof Player) {
- ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(byteOutStream);
- try {
- out.writeUTF("RemoveMessage");
- out.writeUTF(String.valueOf(hash));
- ((Player) sender).sendPluginMessage(plugin, "VentureChat", byteOutStream.toByteArray());
- out.close();
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- new BukkitRunnable() {
- public void run() {
- final Map> packets = new HashMap();
- for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
- List messages = p.getMessages();
- List playerPackets = new ArrayList();
- boolean resend = false;
- for(int fill = 0; fill < 100 - messages.size(); fill++) {
- playerPackets.add(Removemessage.this.emptyLinePacketContainer);
- }
- for(ChatMessage message : messages) {
- if(message.getHash() == hash) {
- WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
- message.setComponent(removedComponent);
- message.setHash(-1);
- playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
- resend = true;
- continue;
- }
- if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("guiicon")))) {
- String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("guiicon").length() - 1).replaceAll("(§([a-z0-9]))", "");
- if(submessage.hashCode() == hash) {
- WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
- message.setComponent(removedComponent);
- message.setHash(-1);
- playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
- resend = true;
- continue;
- }
- }
- /*if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")))) {
- String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("messageremovericon").length() - 1).replaceAll("(§([a-z0-9]))", "");
- if(submessage.hashCode() == hash) {
- WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
- message.setComponent(removedComponent);
- message.setHash(-1);
- playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
- resend = true;
- continue;
- }
- int cut = 0;
- for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
- if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission())) {
- cut += b.getIcon().length() - 1;
- }
- }
- submessage = submessage.substring(0, submessage.length() - cut).replaceAll("(§([a-z0-9]))", "");
- //System.out.println(submessage + " submess");
- if(submessage.hashCode() == hash) {
- WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
- message.setComponent(removedComponent);
- message.setHash(-1);
- playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
- resend = true;
- continue;
- }
- }
- int cut = 0;
- for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
- if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission()) && message.getMessage().contains(b.getIcon())) {
- cut += b.getIcon().length() - 1;
- }
- }
- String submessage = message.getMessage().replaceAll("(§([a-z0-9]))", "");
- //System.out.println(submessage + " " + submessage.length());
- submessage = submessage.substring(0, submessage.length() - cut);
- //System.out.println(submessage);
- if(submessage.hashCode() == hash) {
- WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
- message.setComponent(removedComponent);
- message.setHash(-1);
- playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
- resend = true;
- continue;
- }*/
- playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent()));
- }
- if(resend) {
- packets.put(p.getPlayer(), playerPackets);
- }
- }
- new BukkitRunnable() {
- public void run() {
- for(Player p : packets.keySet()) {
- List pPackets = packets.get(p);
- for(PacketContainer c : pPackets) {
- Removemessage.this.sendPacketPlayOutChat(p, c);
- }
- }
- }
- }.runTask(plugin);
- }
- }.runTaskAsynchronously(plugin);
- }
-
- private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) {
- PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT);
- container.getChatComponents().write(0, component);
- return container;
- }
-
- private void sendPacketPlayOutChat(Player player, PacketContainer packet) {
- try {
- plugin.protocolManager.sendServerPacket(player, packet);
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
-
- public WrappedChatComponent getMessageDeletedChatComponentPlayer() {
- if(this.messageDeletedComponentPlayer == null) {
- this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}");
- }
- return this.messageDeletedComponentPlayer;
- }
-
- public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) {
- String oMessage = message.getOriginalComponent().getJson().substring(1, message.getOriginalComponent().getJson().length() - 11);
- if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("guiicon")))) {
- oMessage = oMessage.substring(0, oMessage.length() - plugin.getConfig().getString("guiicon").length() - 4) + "\"}]";
- }
- return WrappedChatComponent.fromJson(Format.FormatStringAll("{\"text\":\"\",\"extra\":[{\"text\":\"&c&o\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"&7Message: \"," + oMessage + "}}}]}"));
- }
+package mineverse.Aust1n46.chat.command.chat;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import mineverse.Aust1n46.chat.ChatMessage;
+import mineverse.Aust1n46.chat.MineverseChat;
+import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
+import mineverse.Aust1n46.chat.command.MineverseCommand;
+//import mineverse.Aust1n46.chat.json.JsonButton;
+import mineverse.Aust1n46.chat.utilities.Format;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+import com.comphenix.protocol.PacketType;
+import com.comphenix.protocol.events.PacketContainer;
+import com.comphenix.protocol.wrappers.EnumWrappers.ChatType;
+import com.comphenix.protocol.wrappers.WrappedChatComponent;
+
+public class Removemessage extends MineverseCommand {
+ private PacketContainer emptyLinePacketContainer = createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}"));
+ private MineverseChat plugin;
+ private WrappedChatComponent messageDeletedComponentPlayer;
+
+ public Removemessage(String name) {
+ super(name);
+ this.plugin = MineverseChat.getInstance();
+ }
+
+ @Override
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void execute(CommandSender sender, String command, String[] args) {
+ if(args.length == 0) {
+ sender.sendMessage(ChatColor.RED + "Invalid command: /removemessage [hashcode]");
+ return;
+ }
+ final int hash;
+ try {
+ hash = Integer.parseInt(args[0]);
+ }
+ catch(Exception e) {
+ sender.sendMessage(ChatColor.RED + "Invalid hashcode.");
+ return;
+ }
+ if(args.length > 1 && Boolean.parseBoolean(args[1]) && sender instanceof Player) {
+ ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(byteOutStream);
+ try {
+ out.writeUTF("RemoveMessage");
+ out.writeUTF(String.valueOf(hash));
+ ((Player) sender).sendPluginMessage(plugin, "VentureChat", byteOutStream.toByteArray());
+ out.close();
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+ new BukkitRunnable() {
+ public void run() {
+ final Map> packets = new HashMap();
+ for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
+ List messages = p.getMessages();
+ List playerPackets = new ArrayList();
+ boolean resend = false;
+ for(int fill = 0; fill < 100 - messages.size(); fill++) {
+ playerPackets.add(Removemessage.this.emptyLinePacketContainer);
+ }
+ for(ChatMessage message : messages) {
+ if(message.getHash() == hash) {
+ WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
+ message.setComponent(removedComponent);
+ message.setHash(-1);
+ playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
+ resend = true;
+ continue;
+ }
+ if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("guiicon")))) {
+ String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("guiicon").length() - 1).replaceAll("(§([a-z0-9]))", "");
+ if(submessage.hashCode() == hash) {
+ WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
+ message.setComponent(removedComponent);
+ message.setHash(-1);
+ playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
+ resend = true;
+ continue;
+ }
+ }
+ /*if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")))) {
+ String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("messageremovericon").length() - 1).replaceAll("(§([a-z0-9]))", "");
+ if(submessage.hashCode() == hash) {
+ WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
+ message.setComponent(removedComponent);
+ message.setHash(-1);
+ playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
+ resend = true;
+ continue;
+ }
+ int cut = 0;
+ for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
+ if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission())) {
+ cut += b.getIcon().length() - 1;
+ }
+ }
+ submessage = submessage.substring(0, submessage.length() - cut).replaceAll("(§([a-z0-9]))", "");
+ //System.out.println(submessage + " submess");
+ if(submessage.hashCode() == hash) {
+ WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
+ message.setComponent(removedComponent);
+ message.setHash(-1);
+ playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
+ resend = true;
+ continue;
+ }
+ }
+ int cut = 0;
+ for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
+ if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission()) && message.getMessage().contains(b.getIcon())) {
+ cut += b.getIcon().length() - 1;
+ }
+ }
+ String submessage = message.getMessage().replaceAll("(§([a-z0-9]))", "");
+ //System.out.println(submessage + " " + submessage.length());
+ submessage = submessage.substring(0, submessage.length() - cut);
+ //System.out.println(submessage);
+ if(submessage.hashCode() == hash) {
+ WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
+ message.setComponent(removedComponent);
+ message.setHash(-1);
+ playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
+ resend = true;
+ continue;
+ }*/
+ playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent()));
+ }
+ if(resend) {
+ packets.put(p.getPlayer(), playerPackets);
+ }
+ }
+ new BukkitRunnable() {
+ public void run() {
+ for(Player p : packets.keySet()) {
+ List pPackets = packets.get(p);
+ for(PacketContainer c : pPackets) {
+ //System.out.println("test packet send");
+ Removemessage.this.sendPacketPlayOutChat(p, c);
+ }
+ }
+ }
+ }.runTask(plugin);
+ }
+ }.runTaskAsynchronously(plugin);
+ }
+
+ private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) {
+ PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT);
+ container.getChatComponents().write(0, component);
+ container.getChatTypes().write(0, ChatType.CHAT);
+ return container;
+ }
+
+ private void sendPacketPlayOutChat(Player player, PacketContainer packet) {
+ try {
+ plugin.protocolManager.sendServerPacket(player, packet);
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public WrappedChatComponent getMessageDeletedChatComponentPlayer() {
+ if(this.messageDeletedComponentPlayer == null) {
+ this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}");
+ }
+ return this.messageDeletedComponentPlayer;
+ }
+
+ public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) {
+ String oMessage = message.getOriginalComponent().getJson().substring(1, message.getOriginalComponent().getJson().length() - 11);
+ if(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("guiicon")))) {
+ oMessage = oMessage.substring(0, oMessage.length() - plugin.getConfig().getString("guiicon").length() - 4) + "\"}]";
+ }
+ return WrappedChatComponent.fromJson(Format.FormatStringAll("{\"text\":\"\",\"extra\":[{\"text\":\"&c&o\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"&7Message: \"," + oMessage + "}}}]}"));
+ }
}
\ No newline at end of file
diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Venturechat.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Venturechat.java
index 09f8b32..244b271 100644
--- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Venturechat.java
+++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Venturechat.java
@@ -1,38 +1,38 @@
-package mineverse.Aust1n46.chat.command.chat;
-
-import mineverse.Aust1n46.chat.MineverseChat;
-import mineverse.Aust1n46.chat.command.MineverseCommand;
-import net.md_5.bungee.api.chat.ClickEvent;
-import net.md_5.bungee.api.chat.ComponentBuilder;
-import net.md_5.bungee.api.chat.HoverEvent;
-import net.md_5.bungee.api.chat.TextComponent;
-
-import org.bukkit.ChatColor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-public class Venturechat extends MineverseCommand {
- private MineverseChat plugin;
-
- public Venturechat(String name) {
- super(name);
- this.plugin = MineverseChat.getInstance();
- }
-
- @Override
- public void execute(CommandSender sender, String command, String[] args) {
- sender.sendMessage(ChatColor.GOLD + "VentureChat Version: " + plugin.getDescription().getVersion());
- sender.sendMessage(ChatColor.GOLD + "Written by Aust1n46");
- if (sender instanceof Player) {
- Player player = (Player) sender;
- String title = ChatColor.GOLD + " | " + ChatColor.BLUE.toString() + ChatColor.BOLD + "Click here to begin..." + ChatColor.RESET + ChatColor.GOLD + " | ";
- String spaces = " ";
- TextComponent tcSpaces = new TextComponent(spaces);
- TextComponent message = new TextComponent(title);
- message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Click here to rank up!").create()));
- message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/rules 1"));
- tcSpaces.addExtra(message);
- player.spigot().sendMessage(tcSpaces);
- }
- }
+package mineverse.Aust1n46.chat.command.chat;
+
+import mineverse.Aust1n46.chat.MineverseChat;
+import mineverse.Aust1n46.chat.command.MineverseCommand;
+import net.md_5.bungee.api.chat.ClickEvent;
+import net.md_5.bungee.api.chat.ComponentBuilder;
+import net.md_5.bungee.api.chat.HoverEvent;
+import net.md_5.bungee.api.chat.TextComponent;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class Venturechat extends MineverseCommand {
+ private MineverseChat plugin;
+
+ public Venturechat(String name) {
+ super(name);
+ this.plugin = MineverseChat.getInstance();
+ }
+
+ @Override
+ public void execute(CommandSender sender, String command, String[] args) {
+ sender.sendMessage(ChatColor.GOLD + "VentureChat Version: " + plugin.getDescription().getVersion());
+ sender.sendMessage(ChatColor.GOLD + "Written by Aust1n46");
+ if (sender instanceof Player && plugin.getConfig().getString("loglevel", "info").equals("debug")) {
+ Player player = (Player) sender;
+ String title = ChatColor.GOLD + " | " + ChatColor.BLUE.toString() + ChatColor.BOLD + "Click here to begin..." + ChatColor.RESET + ChatColor.GOLD + " | ";
+ String spaces = " ";
+ TextComponent tcSpaces = new TextComponent(spaces);
+ TextComponent message = new TextComponent(title);
+ message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Click here to rank up!").create()));
+ message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/rules 1"));
+ tcSpaces.addExtra(message);
+ player.spigot().sendMessage(tcSpaces);
+ }
+ }
}
\ No newline at end of file
diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/CapeListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/CapeListener.java
index 5c0e4cf..98f70a6 100644
--- a/MineverseChat/mineverse/Aust1n46/chat/listeners/CapeListener.java
+++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/CapeListener.java
@@ -1,205 +1,206 @@
-package mineverse.Aust1n46.chat.listeners;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import mineverse.Aust1n46.chat.MineverseChat;
-import mineverse.Aust1n46.chat.utilities.Format;
-import mineverse.Aust1n46.chat.versions.VersionHandler;
-
-import org.bukkit.ChatColor;
-import org.bukkit.DyeColor;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.banner.Pattern;
-import org.bukkit.block.banner.PatternType;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.entity.ArmorStand;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Player;
-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.PlayerCommandPreprocessEvent;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerMoveEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-import org.bukkit.event.player.PlayerRespawnEvent;
-import org.bukkit.event.player.PlayerTeleportEvent;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.BannerMeta;
-import org.bukkit.util.EulerAngle;
-
-public class CapeListener implements Listener {
- @EventHandler
- public void onLeave(PlayerQuitEvent event) {
- Player p = event.getPlayer();
- if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
- return;
- }
- MineverseChat.cape.remove();
- }
-
- @EventHandler(priority = EventPriority.LOW)
- public void onPlayerJoin(PlayerJoinEvent event) {
- Player p = event.getPlayer();
- if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
- return;
- }
- MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND);
- MineverseChat.banner = this.getBanner();
- this.equipCape(p, MineverseChat.banner);
- }
-
- @EventHandler
- public void onMove(PlayerMoveEvent event) {
- Player p = event.getPlayer();
- if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
- return;
- }
- Location loc = new Location(event.getTo().getWorld(), event.getTo().getX(), event.getTo().getY() + 1.05D, event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
- if(p.isSneaking()) {
- loc.setY(event.getTo().getY() + 0.85D);
- }
- ArmorStand cape = MineverseChat.cape;
- cape.teleport(loc);
- Double add = Double.valueOf(Math.abs(p.getVelocity().getX()) * 3.0D + Math.abs(p.getVelocity().getZ()) * 3.0D);
- cape.setHeadPose(cape.getHeadPose().setZ(cape.getHeadPose().getZ()).setX(-2.45D + add.doubleValue()));
- }
-
- @EventHandler
- public void onTeleport(PlayerTeleportEvent event) {
- Player p = event.getPlayer();
- if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
- return;
- }
- Location loc = new Location(event.getTo().getWorld(), event.getTo().getX(), event.getTo().getY() + 1.05D, event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
- ArmorStand cape = MineverseChat.cape;
- cape.teleport(loc);
- }
-
- @EventHandler
- public void onRespawn(PlayerRespawnEvent event) {
- Player p = event.getPlayer();
- if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
- return;
- }
- Location loc = new Location(event.getRespawnLocation().getWorld(), event.getRespawnLocation().getX(), event.getRespawnLocation().getY() + 1.05D, event.getRespawnLocation().getZ(), event.getRespawnLocation().getYaw(), event.getRespawnLocation().getPitch());
- ArmorStand cape = MineverseChat.cape;
- cape.teleport(loc);
- }
-
- @EventHandler
- public void onDeath(PlayerDeathEvent event) {
- Player p = event.getEntity();
- if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
- return;
- }
- Location loc = new Location(event.getEntity().getWorld(), event.getEntity().getLocation().getX(), -1.0D, event.getEntity().getLocation().getZ());
- ArmorStand cape = MineverseChat.cape;
- cape.teleport(loc);
- }
-
- public void equipCape(Player p, ItemStack i) {
- Location loc = new Location(p.getLocation().getWorld(), p.getLocation().getX(), p.getLocation().getY() + 1.05D, p.getLocation().getZ(), p.getLocation().getYaw(), p.getLocation().getPitch());
- ArmorStand cape = MineverseChat.cape;
- cape.setHelmet(i);
- cape.setHeadPose(cape.getHeadPose().setX(cape.getHeadPose().getX() - 2.4D));
- cape.setSmall(true);
- cape.setNoDamageTicks(Integer.MAX_VALUE);
- cape.setVisible(false);
- cape.setGravity(false);
- cape.setArms(false);
- cape.setBasePlate(false);
- cape.teleport(loc);
- cape.setVisible(false);
- }
-
- public EulerAngle getAngle(Double d) {
- return new EulerAngle(0.0D, d.doubleValue(), 0.0D);
- }
-
- public void capeInHand(Player p) {
- if(p.getName().equals("Aust1n46")) {
- if(p.getInventory().getItemInHand().getType().equals(Material.BANNER)) {
- equipCape(p, p.getInventory().getItemInHand());
- BannerMeta b = (BannerMeta) p.getInventory().getItemInHand().getItemMeta();
- this.addBanner("cape", b);
- p.setItemInHand(null);
- }
- }
- }
-
- @EventHandler
- public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
- final Player p = event.getPlayer();
- if(event.getMessage().startsWith("/cape")) {
- if(p.getName().equals("Aust1n46") && !VersionHandler.is1_7_10() && !VersionHandler.is1_7_9() && !VersionHandler.is1_7_2()) {
- //capeInHand(p);
- if(MineverseChat.capeToggle) {
- MineverseChat.cape.remove();
- MineverseChat.capeToggle = false;
- p.sendMessage(ChatColor.GOLD + "Cape hidden!");
- event.setCancelled(true);
- return;
- }
- MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND);
- this.equipCape(p, MineverseChat.banner);
- p.sendMessage(ChatColor.GOLD + "Cape shown!");
- MineverseChat.capeToggle = true;
- MineverseChat.banner = this.getBanner();
- event.setCancelled(true);
- return;
- }
- }
- }
-
- public List getSerializedPatterns(BannerMeta b) {
- List patterns = new ArrayList();
- for(Pattern p : b.getPatterns()) {
- String s = p.getPattern().toString() + ";" + p.getColor().toString();
- patterns.add(s);
- }
- return patterns;
- }
-
- public void addBanner(String s, BannerMeta b) {
- FileConfiguration f = MineverseChat.getInstance().getConfig();
- f.set(s.toUpperCase() + ".display_name", s);
- s = s.toUpperCase();
- f.set(s + ".base_color", b.getBaseColor().toString());
- f.set(s + ".patterns", getSerializedPatterns(b));
- MineverseChat.getInstance().saveConfig();
- }
-
- public ItemStack getBanner() {
- ItemStack i = new ItemStack(Material.BANNER, 1);
- BannerMeta bMeta = (BannerMeta) i.getItemMeta();
- bMeta.setBaseColor(DyeColor.valueOf("BLACK"));
- List patterns = new ArrayList();
- patterns.add("STRIPE_BOTTOM;MAGENTA");
- patterns.add("STRIPE_TOP;MAGENTA");
- patterns.add("STRAIGHT_CROSS;MAGENTA");
- patterns.add("BORDER;SILVER");
- patterns.add("CREEPER;SILVER");
- patterns.add("CROSS;BLACK");
- patterns.add("CURLY_BORDER;GRAY");
- patterns.add("RHOMBUS_MIDDLE;BLACK");
- patterns.add("SKULL;MAGENTA");
- patterns.add("STRIPE_SMALL;BLACK");
- patterns.add("CURLY_BORDER;BLACK");
- for(String pat : patterns) {
- String[] parts = pat.split(";");
- DyeColor d = DyeColor.valueOf(parts[1]);
- PatternType pt = PatternType.valueOf(parts[0]);
- bMeta.addPattern(new Pattern(d, pt));
- }
- String display = Format.FormatStringAll("Cape");
- bMeta.setDisplayName(display);
- List lore = new ArrayList();
- bMeta.setLore(lore);
- i.setItemMeta(bMeta);
- return i;
- }
+package mineverse.Aust1n46.chat.listeners;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import mineverse.Aust1n46.chat.MineverseChat;
+import mineverse.Aust1n46.chat.utilities.Format;
+import mineverse.Aust1n46.chat.versions.VersionHandler;
+
+import org.bukkit.ChatColor;
+import org.bukkit.DyeColor;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.block.banner.Pattern;
+import org.bukkit.block.banner.PatternType;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.ArmorStand;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
+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.PlayerCommandPreprocessEvent;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerMoveEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+import org.bukkit.event.player.PlayerRespawnEvent;
+import org.bukkit.event.player.PlayerTeleportEvent;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.BannerMeta;
+import org.bukkit.util.EulerAngle;
+
+public class CapeListener implements Listener {
+ @EventHandler
+ public void onLeave(PlayerQuitEvent event) {
+ Player p = event.getPlayer();
+ if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
+ return;
+ }
+ MineverseChat.cape.remove();
+ }
+
+ @EventHandler(priority = EventPriority.LOW)
+ public void onPlayerJoin(PlayerJoinEvent event) {
+ Player p = event.getPlayer();
+ if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
+ return;
+ }
+ MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND);
+ MineverseChat.banner = this.getBanner();
+ this.equipCape(p, MineverseChat.banner);
+ }
+
+ @EventHandler
+ public void onMove(PlayerMoveEvent event) {
+ Player p = event.getPlayer();
+ if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
+ return;
+ }
+ Location loc = new Location(event.getTo().getWorld(), event.getTo().getX(), event.getTo().getY() + 1.05D, event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
+ if(p.isSneaking()) {
+ loc.setY(event.getTo().getY() + 0.85D);
+ }
+ ArmorStand cape = MineverseChat.cape;
+ cape.teleport(loc);
+ Double add = Double.valueOf(Math.abs(p.getVelocity().getX()) * 3.0D + Math.abs(p.getVelocity().getZ()) * 3.0D);
+ cape.setHeadPose(cape.getHeadPose().setZ(cape.getHeadPose().getZ()).setX(-2.45D + add.doubleValue()));
+ }
+
+ @EventHandler
+ public void onTeleport(PlayerTeleportEvent event) {
+ Player p = event.getPlayer();
+ if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
+ return;
+ }
+ Location loc = new Location(event.getTo().getWorld(), event.getTo().getX(), event.getTo().getY() + 1.05D, event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
+ ArmorStand cape = MineverseChat.cape;
+ cape.teleport(loc);
+ }
+
+ @EventHandler
+ public void onRespawn(PlayerRespawnEvent event) {
+ Player p = event.getPlayer();
+ if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
+ return;
+ }
+ Location loc = new Location(event.getRespawnLocation().getWorld(), event.getRespawnLocation().getX(), event.getRespawnLocation().getY() + 1.05D, event.getRespawnLocation().getZ(), event.getRespawnLocation().getYaw(), event.getRespawnLocation().getPitch());
+ ArmorStand cape = MineverseChat.cape;
+ cape.teleport(loc);
+ }
+
+ @EventHandler
+ public void onDeath(PlayerDeathEvent event) {
+ Player p = event.getEntity();
+ if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
+ return;
+ }
+ Location loc = new Location(event.getEntity().getWorld(), event.getEntity().getLocation().getX(), -1.0D, event.getEntity().getLocation().getZ());
+ ArmorStand cape = MineverseChat.cape;
+ cape.teleport(loc);
+ }
+
+ public void equipCape(Player p, ItemStack i) {
+ Location loc = new Location(p.getLocation().getWorld(), p.getLocation().getX(), p.getLocation().getY() + 1.05D, p.getLocation().getZ(), p.getLocation().getYaw(), p.getLocation().getPitch());
+ ArmorStand cape = MineverseChat.cape;
+ cape.setHelmet(i);
+ cape.setHeadPose(cape.getHeadPose().setX(cape.getHeadPose().getX() - 2.4D));
+ cape.setSmall(true);
+ cape.setNoDamageTicks(Integer.MAX_VALUE);
+ cape.setVisible(false);
+ cape.setGravity(false);
+ cape.setArms(false);
+ cape.setBasePlate(false);
+ cape.teleport(loc);
+ cape.setVisible(false);
+ }
+
+ public EulerAngle getAngle(Double d) {
+ return new EulerAngle(0.0D, d.doubleValue(), 0.0D);
+ }
+
+ @SuppressWarnings("deprecation")
+ public void capeInHand(Player p) {
+ if(p.getName().equals("Aust1n46")) {
+ if(p.getInventory().getItemInHand().getType().equals(Material.BANNER)) {
+ equipCape(p, p.getInventory().getItemInHand());
+ BannerMeta b = (BannerMeta) p.getInventory().getItemInHand().getItemMeta();
+ this.addBanner("cape", b);
+ p.setItemInHand(null);
+ }
+ }
+ }
+
+ @EventHandler
+ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
+ final Player p = event.getPlayer();
+ if(event.getMessage().startsWith("/cape")) {
+ if(p.getName().equals("Aust1n46") && !VersionHandler.is1_7_10() && !VersionHandler.is1_7_9() && !VersionHandler.is1_7_2()) {
+ //capeInHand(p);
+ if(MineverseChat.capeToggle) {
+ MineverseChat.cape.remove();
+ MineverseChat.capeToggle = false;
+ p.sendMessage(ChatColor.GOLD + "Cape hidden!");
+ event.setCancelled(true);
+ return;
+ }
+ MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND);
+ this.equipCape(p, MineverseChat.banner);
+ p.sendMessage(ChatColor.GOLD + "Cape shown!");
+ MineverseChat.capeToggle = true;
+ MineverseChat.banner = this.getBanner();
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+
+ public List getSerializedPatterns(BannerMeta b) {
+ List patterns = new ArrayList();
+ for(Pattern p : b.getPatterns()) {
+ String s = p.getPattern().toString() + ";" + p.getColor().toString();
+ patterns.add(s);
+ }
+ return patterns;
+ }
+
+ public void addBanner(String s, BannerMeta b) {
+ FileConfiguration f = MineverseChat.getInstance().getConfig();
+ f.set(s.toUpperCase() + ".display_name", s);
+ s = s.toUpperCase();
+ f.set(s + ".base_color", b.getBaseColor().toString());
+ f.set(s + ".patterns", getSerializedPatterns(b));
+ MineverseChat.getInstance().saveConfig();
+ }
+
+ public ItemStack getBanner() {
+ ItemStack i = new ItemStack(Material.BANNER, 1);
+ BannerMeta bMeta = (BannerMeta) i.getItemMeta();
+ bMeta.setBaseColor(DyeColor.valueOf("BLACK"));
+ List patterns = new ArrayList();
+ patterns.add("STRIPE_BOTTOM;MAGENTA");
+ patterns.add("STRIPE_TOP;MAGENTA");
+ patterns.add("STRAIGHT_CROSS;MAGENTA");
+ patterns.add("BORDER;SILVER");
+ patterns.add("CREEPER;SILVER");
+ patterns.add("CROSS;BLACK");
+ patterns.add("CURLY_BORDER;GRAY");
+ patterns.add("RHOMBUS_MIDDLE;BLACK");
+ patterns.add("SKULL;MAGENTA");
+ patterns.add("STRIPE_SMALL;BLACK");
+ patterns.add("CURLY_BORDER;BLACK");
+ for(String pat : patterns) {
+ String[] parts = pat.split(";");
+ DyeColor d = DyeColor.valueOf(parts[1]);
+ PatternType pt = PatternType.valueOf(parts[0]);
+ bMeta.addPattern(new Pattern(d, pt));
+ }
+ String display = Format.FormatStringAll("Cape");
+ bMeta.setDisplayName(display);
+ List lore = new ArrayList();
+ bMeta.setLore(lore);
+ i.setItemMeta(bMeta);
+ return i;
+ }
}
\ No newline at end of file
diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java
index 5f4c973..eb3307a 100644
--- a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java
+++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java
@@ -1,289 +1,290 @@
-package mineverse.Aust1n46.chat.listeners;
-
-import java.io.FileNotFoundException;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-
-import mineverse.Aust1n46.chat.MineverseChat;
-import mineverse.Aust1n46.chat.alias.Alias;
-import mineverse.Aust1n46.chat.alias.AliasInfo;
-import mineverse.Aust1n46.chat.api.MineverseChatAPI;
-import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
-import mineverse.Aust1n46.chat.channel.ChatChannel;
-import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
-import mineverse.Aust1n46.chat.gui.GuiSlot;
-import mineverse.Aust1n46.chat.irc.Bot;
-import mineverse.Aust1n46.chat.utilities.Format;
-import mineverse.Aust1n46.chat.utilities.FormatTags;
-
-//import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Material;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.Listener;
-import org.bukkit.event.inventory.InventoryClickEvent;
-import org.bukkit.event.player.PlayerCommandPreprocessEvent;
-import org.bukkit.event.server.ServerCommandEvent;
-//import org.bukkit.plugin.Plugin;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
-
-import me.clip.placeholderapi.PlaceholderAPI;
-
-//This class listens for commands (Any chat that begins with a /) to use in the command spy and
-//in the custom commands such as aliases.
-public class CommandListener implements CommandExecutor, Listener {
- private MineverseChat plugin;
- private ChatChannelInfo cc;
- private AliasInfo aa;
- private Bot bot;
-
- public CommandListener(MineverseChat plugin, ChatChannelInfo cc, AliasInfo aa, Bot bot) {
- this.plugin = plugin;
- this.cc = cc;
- this.aa = aa;
- this.bot = bot;
- }
-
- @EventHandler
- public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) throws FileNotFoundException {
- ConfigurationSection cs = plugin.getConfig().getConfigurationSection("commandspy");
- Boolean wec = cs.getBoolean("worldeditcommands", true);
- MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
- for(MineverseChatPlayer p : MineverseChat.players) {
- if(p.hasCommandSpy() && p.isOnline()) {
- if(wec) {
- p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage());
- }
- else {
- if(!(event.getMessage().toLowerCase().startsWith("//"))) {
- p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage());
- }
- }
- }
- }
-
- if(!event.getMessage().startsWith("/afk")) {
- if(mcp.isAFK()) {
- mcp.setAFK(false);
- mcp.getPlayer().sendMessage(ChatColor.GOLD + "You are no longer AFK.");
- if(plugin.getConfig().getBoolean("broadcastafk")) {
- for(MineverseChatPlayer p : MineverseChat.players) {
- if(p.isOnline() && mcp.getName() != p.getName()) {
- p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + " is no longer AFK.");
- }
- }
- }
- }
- }
-
- String[] blocked = event.getMessage().split(" ");
- if(mcp.getBlockedCommands().contains(blocked[0])) {
- mcp.getPlayer().sendMessage(ChatColor.RED + "You are blocked from entering this command: " + event.getMessage());
- event.setCancelled(true);
- return;
- }
-
- String message = event.getMessage();
- /*
- * boolean cus = false; if((message.startsWith("/pl") ||
- * message.startsWith("/plugins")) &&
- * plugin.getConfig().getBoolean("modifypluginlist", true)) {
- * if(message.contains(" ")) { if(message.split(" ")[0].equals("/pl") ||
- * message.split(" ")[0].equals("/plugins")) { cus = true; } }
- * if(message.equals("/pl") || message.equals("/plugins")) { cus = true;
- * } if(cus && mcp.getPlayer().hasPermission("bukkit.command.plugins"))
- * { String pluginlist = ""; for(Plugin p :
- * Bukkit.getPluginManager().getPlugins()) { pluginlist +=
- * ChatColor.GREEN + p.getName().replace("VentureChat",
- * plugin.getConfig().getString("pluginname", "VentureChat")) +
- * ChatColor.WHITE + ", "; } if(pluginlist.length() > 2) { pluginlist =
- * pluginlist.substring(0, pluginlist.length() - 2); }
- * mcp.getPlayer().sendMessage("Plugins (" +
- * Bukkit.getPluginManager().getPlugins().length + "): " + pluginlist);
- * event.setCancelled(true); return; } }
- */
-
- if(plugin.mysql) {
- Statement statement;
- Calendar currentDate = Calendar.getInstance();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String date = formatter.format(currentDate.getTime());
- try {
- statement = plugin.c.createStatement();
- statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getServerName() + "', 'Command_Component', '" + event.getMessage().replace("'", "''") + "', 'Command');");
- }
- catch(SQLException error) {
- error.printStackTrace();
- }
- }
-
- for(Alias a : aa.getAliases()) {
- if(message.toLowerCase().substring(1).split(" ")[0].equals(a.getName().toLowerCase())) {
- for(String s : a.getComponents()) {
- if(!mcp.getPlayer().hasPermission(a.getPermission()) && a.hasPermission()) {
- mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have permission for this alias.");
- event.setCancelled(true);
- return;
- }
- int num = 1;
- if(message.length() < a.getName().length() + 2 || a.getArguments() == 0) num = 0;
- int arg = 0;
- if(message.substring(a.getName().length() + 1 + num).length() == 0) arg = 1;
- String[] args = message.substring(a.getName().length() + 1 + num).split(" ");
- String send = "";
- if(args.length - arg < a.getArguments()) {
- String keyword = "arguments.";
- if(a.getArguments() == 1) keyword = "argument.";
- mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid arguments for this alias, enter at least " + a.getArguments() + " " + keyword);
- event.setCancelled(true);
- return;
- }
- for(int b = 0; b < args.length; b++) {
- send += " " + args[b];
- }
- if(send.length() > 0) send = send.substring(1);
- s = Format.FormatStringAll(s);
- if(mcp.getPlayer().hasPermission("venturechat.color")) send = Format.FormatStringColor(send);
- if(mcp.getPlayer().hasPermission("venturechat.format")) send = Format.FormatString(send);
- if(s.startsWith("Command:")) {
- mcp.getPlayer().chat(s.substring(9).replace("$", send));
- event.setCancelled(true);
- }
- if(s.startsWith("Message:")) {
- mcp.getPlayer().sendMessage(s.substring(9).replace("$", send));
- event.setCancelled(true);
- }
- if(s.startsWith("Broadcast:")) {
- plugin.getServer().broadcastMessage(s.substring(11).replace("$", send));
- event.setCancelled(true);
- }
- }
- }
- }
-
- if(!plugin.quickchat) {
- for(ChatChannel channel : cc.getChannelsInfo()) {
- if(!channel.hasPermission() || mcp.getPlayer().hasPermission(channel.getPermission())) {
- if(message.equals("/" + channel.getAlias())) {
- mcp.getPlayer().sendMessage("Channel Set: " + ChatColor.valueOf(channel.getColor().toUpperCase()) + "[" + channel.getName() + "]");
- if(mcp.hasConversation()) {
- for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
- if(p.isSpy()) {
- p.getPlayer().sendMessage(mcp.getName() + " is no longer in a private conversation with " + MineverseChatAPI.getMineverseChatPlayer(mcp.getConversation()).getName() + ".");
- }
- }
- mcp.getPlayer().sendMessage("You are no longer in private conversation with " + MineverseChatAPI.getMineverseChatPlayer(mcp.getConversation()).getName() + ".");
- mcp.setConversation(null);
- }
- mcp.addListening(channel.getName());
- mcp.setCurrentChannel(channel);
- event.setCancelled(true);
- return;
- }
- if(message.toLowerCase().startsWith("/" + channel.getAlias() + " ")) {
- message = message.substring(channel.getAlias().length() + 1);
- mcp.addListening(channel.getName());
- mcp.setQuickChannel(channel);
- String format = "";
- if(plugin.getConfig().getConfigurationSection("channels." + channel.getName()).getString("format").equalsIgnoreCase("Default")) {
- format = FormatTags.ChatFormat(ChatColor.valueOf(channel.getColor().toUpperCase()) + "[" + channel.getName() + "] {prefix}{name}" + ChatColor.valueOf(channel.getColor().toUpperCase()) + ":" + ChatColor.valueOf(channel.getChatColor().toUpperCase()), mcp.getPlayer(), plugin, cc, channel, plugin.getConfig().getBoolean("jsonFormat"));
- }
- else {
- format = FormatTags.ChatFormat(plugin.getConfig().getConfigurationSection("channels." + channel.getName()).getString("format"), mcp.getPlayer(), plugin, cc, channel, plugin.getConfig().getBoolean("jsonFormat"));
- if(plugin.getConfig().getBoolean("formatcleaner", false)) {
- format = format.replace("[]", " ");
- format = format.replace(" ", " ").replace(" ", " ").replace(" ", " ");
- }
- }
- mcp.setQuickChat(true);
- mcp.getPlayer().chat(message);
- event.setCancelled(true);
- }
- }
- }
- }
- }
-
- @EventHandler
- public void onServerCommand(ServerCommandEvent event) {
- if(plugin.irc && bot.bot.isConnected() && !event.getCommand().equalsIgnoreCase("say ") && event.getCommand().toLowerCase().startsWith("say ")) {
- bot.bot.getUserChannelDao().getChannel(bot.channel).send().message("[Server] " + event.getCommand().substring(4));
- }
- if(plugin.mysql) {
- Statement statement;
- Calendar currentDate = Calendar.getInstance();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String date = formatter.format(currentDate.getTime());
- try {
- statement = plugin.c.createStatement();
- statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', 'N/A', 'Console', '" + plugin.getServer().getServerName() + "', 'Command_Component', '" + event.getCommand().replace("'", "''") + "', 'Command');");
- }
- catch(SQLException error) {
- error.printStackTrace();
- }
- }
- }
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if(!(sender instanceof Player)) {
- plugin.getServer().getConsoleSender().sendMessage(ChatColor.RED + "This command must be run by a player.");
- return true;
- }
- MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer((Player) sender);
- for(ChatChannel channel : cc.getChannelsInfo()) {
- if(command.getName().toLowerCase().equals(channel.getAlias())) {
- if(args.length == 0) {
- mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid command: /" + channel.getAlias() + " message");
- return true;
- }
- mcp.setQuickChat(true);
- mcp.setQuickChannel(channel);
- mcp.addListening(channel.getName());
- String msg = "";
- for(int x = 0; x < args.length; x++) {
- if(args[x].length() > 0) msg += " " + args[x];
- }
- mcp.getPlayer().chat(msg);
- return true;
- }
- }
- return false;
- }
-
- @EventHandler(priority = EventPriority.LOW)
- public void InventoryClick(InventoryClickEvent e) {
- ItemStack item = e.getCurrentItem();
- if(item == null || !e.getInventory().getTitle().contains("VentureChat")) {
- return;
- }
- e.setCancelled(true);
- MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) e.getWhoClicked());
- MineverseChatPlayer target = MineverseChatAPI.getMineverseChatPlayer(e.getInventory().getTitle().replace(" GUI", "").replace("VentureChat: ", ""));
- ItemStack skull = e.getInventory().getItem(0);
- SkullMeta skullMeta = (SkullMeta) skull.getItemMeta();
- ChatChannel channel = MineverseChat.ccInfo.getChannelInfo(ChatColor.stripColor(skullMeta.getLore().get(0)).replace("Channel: ", ""));
- int hash = Integer.parseInt(ChatColor.stripColor(skullMeta.getLore().get(1).replace("Hash: ", "")));
- if(item.getType() == Material.BARRIER) {
- mcp.getPlayer().closeInventory();
- }
- for(GuiSlot g : MineverseChat.gsInfo.getGuiSlots()) {
- if(g.getIcon() == item.getType() && g.getDurability() == item.getDurability() && g.getSlot() == e.getSlot()) {
- String command = g.getCommand().replace("{channel}", channel.getName()).replace("{hash}", hash + "").replace("{player_name}", target.getName());
- if(target.isOnline()) {
- command = PlaceholderAPI.setBracketPlaceholders(target.getPlayer(), command);
- }
- mcp.getPlayer().chat(command);
- }
- }
- }
+package mineverse.Aust1n46.chat.listeners;
+
+import java.io.FileNotFoundException;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+import mineverse.Aust1n46.chat.MineverseChat;
+import mineverse.Aust1n46.chat.alias.Alias;
+import mineverse.Aust1n46.chat.alias.AliasInfo;
+import mineverse.Aust1n46.chat.api.MineverseChatAPI;
+import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
+import mineverse.Aust1n46.chat.channel.ChatChannel;
+import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
+import mineverse.Aust1n46.chat.gui.GuiSlot;
+import mineverse.Aust1n46.chat.irc.Bot;
+import mineverse.Aust1n46.chat.utilities.Format;
+import mineverse.Aust1n46.chat.utilities.FormatTags;
+
+//import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.event.player.PlayerCommandPreprocessEvent;
+import org.bukkit.event.server.ServerCommandEvent;
+//import org.bukkit.plugin.Plugin;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.SkullMeta;
+
+import me.clip.placeholderapi.PlaceholderAPI;
+
+//This class listens for commands (Any chat that begins with a /) to use in the command spy and
+//in the custom commands such as aliases.
+public class CommandListener implements CommandExecutor, Listener {
+ private MineverseChat plugin;
+ private ChatChannelInfo cc;
+ private AliasInfo aa;
+ private Bot bot;
+
+ public CommandListener(MineverseChat plugin, ChatChannelInfo cc, AliasInfo aa, Bot bot) {
+ this.plugin = plugin;
+ this.cc = cc;
+ this.aa = aa;
+ this.bot = bot;
+ }
+
+ @EventHandler
+ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) throws FileNotFoundException {
+ ConfigurationSection cs = plugin.getConfig().getConfigurationSection("commandspy");
+ Boolean wec = cs.getBoolean("worldeditcommands", true);
+ MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
+ for(MineverseChatPlayer p : MineverseChat.players) {
+ if(p.hasCommandSpy() && p.isOnline()) {
+ if(wec) {
+ p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage());
+ }
+ else {
+ if(!(event.getMessage().toLowerCase().startsWith("//"))) {
+ p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage());
+ }
+ }
+ }
+ }
+
+ if(!event.getMessage().startsWith("/afk")) {
+ if(mcp.isAFK()) {
+ mcp.setAFK(false);
+ mcp.getPlayer().sendMessage(ChatColor.GOLD + "You are no longer AFK.");
+ if(plugin.getConfig().getBoolean("broadcastafk")) {
+ for(MineverseChatPlayer p : MineverseChat.players) {
+ if(p.isOnline() && mcp.getName() != p.getName()) {
+ p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + " is no longer AFK.");
+ }
+ }
+ }
+ }
+ }
+
+ String[] blocked = event.getMessage().split(" ");
+ if(mcp.getBlockedCommands().contains(blocked[0])) {
+ mcp.getPlayer().sendMessage(ChatColor.RED + "You are blocked from entering this command: " + event.getMessage());
+ event.setCancelled(true);
+ return;
+ }
+
+ String message = event.getMessage();
+ /*
+ * boolean cus = false; if((message.startsWith("/pl") ||
+ * message.startsWith("/plugins")) &&
+ * plugin.getConfig().getBoolean("modifypluginlist", true)) {
+ * if(message.contains(" ")) { if(message.split(" ")[0].equals("/pl") ||
+ * message.split(" ")[0].equals("/plugins")) { cus = true; } }
+ * if(message.equals("/pl") || message.equals("/plugins")) { cus = true;
+ * } if(cus && mcp.getPlayer().hasPermission("bukkit.command.plugins"))
+ * { String pluginlist = ""; for(Plugin p :
+ * Bukkit.getPluginManager().getPlugins()) { pluginlist +=
+ * ChatColor.GREEN + p.getName().replace("VentureChat",
+ * plugin.getConfig().getString("pluginname", "VentureChat")) +
+ * ChatColor.WHITE + ", "; } if(pluginlist.length() > 2) { pluginlist =
+ * pluginlist.substring(0, pluginlist.length() - 2); }
+ * mcp.getPlayer().sendMessage("Plugins (" +
+ * Bukkit.getPluginManager().getPlugins().length + "): " + pluginlist);
+ * event.setCancelled(true); return; } }
+ */
+
+ if(plugin.mysql) {
+ Statement statement;
+ Calendar currentDate = Calendar.getInstance();
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String date = formatter.format(currentDate.getTime());
+ try {
+ statement = plugin.c.createStatement();
+ statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getServerName() + "', 'Command_Component', '" + event.getMessage().replace("'", "''") + "', 'Command');");
+ }
+ catch(SQLException error) {
+ error.printStackTrace();
+ }
+ }
+
+ for(Alias a : aa.getAliases()) {
+ if(message.toLowerCase().substring(1).split(" ")[0].equals(a.getName().toLowerCase())) {
+ for(String s : a.getComponents()) {
+ if(!mcp.getPlayer().hasPermission(a.getPermission()) && a.hasPermission()) {
+ mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have permission for this alias.");
+ event.setCancelled(true);
+ return;
+ }
+ int num = 1;
+ if(message.length() < a.getName().length() + 2 || a.getArguments() == 0) num = 0;
+ int arg = 0;
+ if(message.substring(a.getName().length() + 1 + num).length() == 0) arg = 1;
+ String[] args = message.substring(a.getName().length() + 1 + num).split(" ");
+ String send = "";
+ if(args.length - arg < a.getArguments()) {
+ String keyword = "arguments.";
+ if(a.getArguments() == 1) keyword = "argument.";
+ mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid arguments for this alias, enter at least " + a.getArguments() + " " + keyword);
+ event.setCancelled(true);
+ return;
+ }
+ for(int b = 0; b < args.length; b++) {
+ send += " " + args[b];
+ }
+ if(send.length() > 0) send = send.substring(1);
+ s = Format.FormatStringAll(s);
+ if(mcp.getPlayer().hasPermission("venturechat.color")) send = Format.FormatStringColor(send);
+ if(mcp.getPlayer().hasPermission("venturechat.format")) send = Format.FormatString(send);
+ if(s.startsWith("Command:")) {
+ mcp.getPlayer().chat(s.substring(9).replace("$", send));
+ event.setCancelled(true);
+ }
+ if(s.startsWith("Message:")) {
+ mcp.getPlayer().sendMessage(s.substring(9).replace("$", send));
+ event.setCancelled(true);
+ }
+ if(s.startsWith("Broadcast:")) {
+ plugin.getServer().broadcastMessage(s.substring(11).replace("$", send));
+ event.setCancelled(true);
+ }
+ }
+ }
+ }
+
+ if(!plugin.quickchat) {
+ for(ChatChannel channel : cc.getChannelsInfo()) {
+ if(!channel.hasPermission() || mcp.getPlayer().hasPermission(channel.getPermission())) {
+ if(message.equals("/" + channel.getAlias())) {
+ mcp.getPlayer().sendMessage("Channel Set: " + ChatColor.valueOf(channel.getColor().toUpperCase()) + "[" + channel.getName() + "]");
+ if(mcp.hasConversation()) {
+ for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
+ if(p.isSpy()) {
+ p.getPlayer().sendMessage(mcp.getName() + " is no longer in a private conversation with " + MineverseChatAPI.getMineverseChatPlayer(mcp.getConversation()).getName() + ".");
+ }
+ }
+ mcp.getPlayer().sendMessage("You are no longer in private conversation with " + MineverseChatAPI.getMineverseChatPlayer(mcp.getConversation()).getName() + ".");
+ mcp.setConversation(null);
+ }
+ mcp.addListening(channel.getName());
+ mcp.setCurrentChannel(channel);
+ event.setCancelled(true);
+ return;
+ }
+ if(message.toLowerCase().startsWith("/" + channel.getAlias() + " ")) {
+ message = message.substring(channel.getAlias().length() + 1);
+ mcp.addListening(channel.getName());
+ mcp.setQuickChannel(channel);
+ String format = "";
+ if(plugin.getConfig().getConfigurationSection("channels." + channel.getName()).getString("format").equalsIgnoreCase("Default")) {
+ format = FormatTags.ChatFormat(ChatColor.valueOf(channel.getColor().toUpperCase()) + "[" + channel.getName() + "] {prefix}{name}" + ChatColor.valueOf(channel.getColor().toUpperCase()) + ":" + ChatColor.valueOf(channel.getChatColor().toUpperCase()), mcp.getPlayer(), plugin, cc, channel, plugin.getConfig().getBoolean("jsonFormat"));
+ }
+ else {
+ format = FormatTags.ChatFormat(plugin.getConfig().getConfigurationSection("channels." + channel.getName()).getString("format"), mcp.getPlayer(), plugin, cc, channel, plugin.getConfig().getBoolean("jsonFormat"));
+ if(plugin.getConfig().getBoolean("formatcleaner", false)) {
+ format = format.replace("[]", " ");
+ format = format.replace(" ", " ").replace(" ", " ").replace(" ", " ");
+ }
+ }
+ mcp.setQuickChat(true);
+ mcp.getPlayer().chat(message);
+ event.setCancelled(true);
+ }
+ }
+ }
+ }
+ }
+
+ //old 1.8 command map
+ @EventHandler
+ public void onServerCommand(ServerCommandEvent event) {
+ if(plugin.irc && bot.bot.isConnected() && !event.getCommand().equalsIgnoreCase("say ") && event.getCommand().toLowerCase().startsWith("say ")) {
+ bot.bot.getUserChannelDao().getChannel(bot.channel).send().message("[Server] " + event.getCommand().substring(4));
+ }
+ if(plugin.mysql) {
+ Statement statement;
+ Calendar currentDate = Calendar.getInstance();
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String date = formatter.format(currentDate.getTime());
+ try {
+ statement = plugin.c.createStatement();
+ statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', 'N/A', 'Console', '" + plugin.getServer().getServerName() + "', 'Command_Component', '" + event.getCommand().replace("'", "''") + "', 'Command');");
+ }
+ catch(SQLException error) {
+ error.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ if(!(sender instanceof Player)) {
+ plugin.getServer().getConsoleSender().sendMessage(ChatColor.RED + "This command must be run by a player.");
+ return true;
+ }
+ MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer((Player) sender);
+ for(ChatChannel channel : cc.getChannelsInfo()) {
+ if(command.getName().toLowerCase().equals(channel.getAlias())) {
+ if(args.length == 0) {
+ mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid command: /" + channel.getAlias() + " message");
+ return true;
+ }
+ mcp.setQuickChat(true);
+ mcp.setQuickChannel(channel);
+ mcp.addListening(channel.getName());
+ String msg = "";
+ for(int x = 0; x < args.length; x++) {
+ if(args[x].length() > 0) msg += " " + args[x];
+ }
+ mcp.getPlayer().chat(msg);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @EventHandler(priority = EventPriority.LOW)
+ public void InventoryClick(InventoryClickEvent e) {
+ ItemStack item = e.getCurrentItem();
+ if(item == null || !e.getInventory().getTitle().contains("VentureChat")) {
+ return;
+ }
+ e.setCancelled(true);
+ MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) e.getWhoClicked());
+ MineverseChatPlayer target = MineverseChatAPI.getMineverseChatPlayer(e.getInventory().getTitle().replace(" GUI", "").replace("VentureChat: ", ""));
+ ItemStack skull = e.getInventory().getItem(0);
+ SkullMeta skullMeta = (SkullMeta) skull.getItemMeta();
+ ChatChannel channel = MineverseChat.ccInfo.getChannelInfo(ChatColor.stripColor(skullMeta.getLore().get(0)).replace("Channel: ", ""));
+ int hash = Integer.parseInt(ChatColor.stripColor(skullMeta.getLore().get(1).replace("Hash: ", "")));
+ if(item.getType() == Material.BARRIER) {
+ mcp.getPlayer().closeInventory();
+ }
+ for(GuiSlot g : MineverseChat.gsInfo.getGuiSlots()) {
+ if(g.getIcon() == item.getType() && g.getDurability() == item.getDurability() && g.getSlot() == e.getSlot()) {
+ String command = g.getCommand().replace("{channel}", channel.getName()).replace("{hash}", hash + "").replace("{player_name}", target.getName());
+ if(target.isOnline()) {
+ command = PlaceholderAPI.setBracketPlaceholders(target.getPlayer(), command);
+ }
+ mcp.getPlayer().chat(command);
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java
index 0dc61cf..0d8b058 100644
--- a/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java
+++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/PacketListener.java
@@ -1,147 +1,152 @@
-package mineverse.Aust1n46.chat.listeners;
-
-import java.util.Iterator;
-
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.JSONValue;
-
-import mineverse.Aust1n46.chat.ChatMessage;
-import mineverse.Aust1n46.chat.MineverseChat;
-import mineverse.Aust1n46.chat.api.MineverseChatAPI;
-import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
-import mineverse.Aust1n46.chat.utilities.Format;
-import mineverse.Aust1n46.chat.versions.VersionHandler;
-import net.md_5.bungee.api.chat.BaseComponent;
-import net.md_5.bungee.api.chat.TextComponent;
-import net.md_5.bungee.chat.ComponentSerializer;
-
-import com.comphenix.protocol.PacketType;
-import com.comphenix.protocol.events.ListenerPriority;
-import com.comphenix.protocol.events.PacketAdapter;
-import com.comphenix.protocol.events.PacketEvent;
-import com.comphenix.protocol.reflect.StructureModifier;
-import com.comphenix.protocol.wrappers.WrappedChatComponent;
-
-import me.clip.placeholderapi.PlaceholderAPI;
-
-//This class listens for chat packets and intercepts them before they are sent to the Player.
-//The packets are modified to include advanced json formating and the message remover button if the
-//player has permission to remove messages.
-public class PacketListener extends PacketAdapter {
- public PacketListener(MineverseChat plugin) {
- super(plugin, ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT });
- this.plugin = plugin;
- }
-
- @Override
- public void onPacketSending(PacketEvent event) {
- if(event.isCancelled() || event.getPacketType() != PacketType.Play.Server.CHAT) {
- return;
- }
-
- StructureModifier chatP = event.getPacket().getChatComponents();
- WrappedChatComponent c = chatP.read(0);
- if (c == null) {
- StructureModifier modifier = event.getPacket().getSpecificModifier(BaseComponent[].class);
- BaseComponent[] components = modifier.readSafely(0);
- if (components == null) {
- return;
- }
- String msg = ComponentSerializer.toString(components);
- if (msg == null) {
- return;
- }
- if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) {
- return;
- }
- msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg);
- modifier.write(0, ComponentSerializer.parse(msg));
- return;
- }
- String msg = c.getJson();
- if (msg == null) {
- return;
- }
- if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) {
- return;
- }
- msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg);
- chatP.write(0, WrappedChatComponent.fromJson(msg));
-
- try {
- if(VersionHandler.is1_7_10() || VersionHandler.is1_7_9() || VersionHandler.is1_7_2()) {
- if((MineverseChat.posField != null) && !(((boolean) MineverseChat.posField.get(event.getPacket().getHandle())))) {
- return;
- }
- }
- if(VersionHandler.is1_8()) {
- if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) {
- return;
- }
- }
- if(VersionHandler.is1_9() || VersionHandler.is1_10()) {
- if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) {
- return;
- }
- }
- }
- catch(IllegalArgumentException | IllegalAccessException e) {
- e.printStackTrace();
- }
- WrappedChatComponent chat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
- WrappedChatComponent originalChat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
- String message = null;
- int hash = -1;
- try {
- //System.out.println(chat.getJson());
- //message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
- message = (String) MineverseChat.messageMethod.invoke(chat.getHandle(), new Object[0]);
- //System.out.println(MineverseChat.lastChatMessage.getMessage());
- hash = message != null ? message.hashCode() : -1;
- }
- catch(Exception ex) {
- message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
- System.out.println(message);
- //ex.printStackTrace();
- }
- ChatMessage lastChatMessage = MineverseChat.lastChatMessage;
- MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
- if(lastChatMessage != null && lastChatMessage.getHash() == hash) {
- String json = MineverseChat.lastJson;
- /*if(mcp.getPlayer().hasPermission("venturechat.message.remove")) {
- json = json.substring(0, json.length() - 1);
- json += ",{\"text\":\" " + Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")) + "\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/removemessage " + lastChatMessage.getHash() + " true" +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremovertext")) + "\"}}}]";
- }
- if(!mcp.getButtons()) {
- for(JsonButton j : MineverseChat.jbInfo.getJsonButtons()) {
- if(j.hasPermission() && mcp.getPlayer().hasPermission(j.getPermission())) {
- json = json.substring(0, json.length() - 1);
- json += ",{\"text\":\" " + Format.FormatStringAll(j.getIcon()) + "\",\"clickEvent\":{\"action\":\"" + j.getAction() + "\",\"value\":\"/" + j.getCommand().replace("{channel}", lastChatMessage.getChannel()).replace("{player}", lastChatMessage.getSender()) + "\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"" + Format.FormatStringAll(j.getText()) + "\"}}}]";
- }
- }
- }*/
- if(mcp.getPlayer().hasPermission("venturechat.gui")) {
- json = json.substring(0, json.length() - 1);
- json += "," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + lastChatMessage.getSender() + " " + lastChatMessage.getChannel() + " " + lastChatMessage.getHash() +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]}]";
- }
- //System.out.println(json);
- chat.setJson(json);
- event.getPacket().getChatComponents().write(0, chat);
- }
- if((message != null) && (chat.getHandle() != null) && mcp != null) {
- mcp.addMessage(new ChatMessage(originalChat, chat, lastChatMessage != null ? lastChatMessage.getSender() : null, message, hash));
- }
- }
-
- @SuppressWarnings("unused")
- private String getMessage(String json) {
- JSONArray components = (JSONArray) ((JSONObject) JSONValue.parse(json)).get("extra");
- Iterator> iterator = components.iterator();
- StringBuilder builder = new StringBuilder();
- while(iterator.hasNext()) {
- builder.append(((JSONObject) iterator.next()).get("text").toString());
- }
- return builder.toString();
- }
+package mineverse.Aust1n46.chat.listeners;
+
+import java.util.Iterator;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.JSONValue;
+
+import mineverse.Aust1n46.chat.ChatMessage;
+import mineverse.Aust1n46.chat.MineverseChat;
+import mineverse.Aust1n46.chat.api.MineverseChatAPI;
+import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
+import mineverse.Aust1n46.chat.utilities.Format;
+import mineverse.Aust1n46.chat.versions.VersionHandler;
+import net.md_5.bungee.api.chat.BaseComponent;
+import net.md_5.bungee.api.chat.TextComponent;
+import net.md_5.bungee.chat.ComponentSerializer;
+
+import com.comphenix.protocol.PacketType;
+import com.comphenix.protocol.events.ListenerPriority;
+import com.comphenix.protocol.events.PacketAdapter;
+import com.comphenix.protocol.events.PacketEvent;
+import com.comphenix.protocol.reflect.StructureModifier;
+import com.comphenix.protocol.wrappers.WrappedChatComponent;
+
+import me.clip.placeholderapi.PlaceholderAPI;
+
+//This class listens for chat packets and intercepts them before they are sent to the Player.
+//The packets are modified to include advanced json formating and the message remover button if the
+//player has permission to remove messages.
+public class PacketListener extends PacketAdapter {
+ public PacketListener(MineverseChat plugin) {
+ super(plugin, ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT });
+ this.plugin = plugin;
+ }
+
+ @Override
+ public void onPacketSending(PacketEvent event) {
+ if(event.isCancelled() || event.getPacketType() != PacketType.Play.Server.CHAT) {
+ return;
+ }
+
+ StructureModifier chatP = event.getPacket().getChatComponents();
+ WrappedChatComponent c = chatP.read(0);
+ if (c == null) {
+ StructureModifier modifier = event.getPacket().getSpecificModifier(BaseComponent[].class);
+ BaseComponent[] components = modifier.readSafely(0);
+ if (components == null) {
+ return;
+ }
+ String msg = ComponentSerializer.toString(components);
+ if (msg == null) {
+ return;
+ }
+ if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) {
+ return;
+ }
+ msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg);
+ modifier.write(0, ComponentSerializer.parse(msg));
+ return;
+ }
+ String msg = c.getJson();
+ if (msg == null) {
+ return;
+ }
+ if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) {
+ return;
+ }
+ msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg);
+ chatP.write(0, WrappedChatComponent.fromJson(msg));
+
+ try {
+ if(VersionHandler.is1_7_10() || VersionHandler.is1_7_9() || VersionHandler.is1_7_2()) {
+ if((MineverseChat.posField != null) && !(((boolean) MineverseChat.posField.get(event.getPacket().getHandle())))) {
+ return;
+ }
+ }
+ else if(VersionHandler.is1_8()) {
+ if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) {
+ return;
+ }
+ }
+ else if(VersionHandler.is1_9() || VersionHandler.is1_10() || VersionHandler.is1_11()){
+ if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) {
+ return;
+ }
+ }
+ else {
+ if((MineverseChat.posField != null) && ((Object) MineverseChat.posField.get(event.getPacket().getHandle())) == MineverseChat.chatMessageType.getEnumConstants()[2]) {
+ return;
+ }
+ }
+ }
+ catch(IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ WrappedChatComponent chat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
+ WrappedChatComponent originalChat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
+ String message = null;
+ int hash = -1;
+ try {
+ //System.out.println(chat.getJson());
+ //message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
+ message = (String) MineverseChat.messageMethod.invoke(chat.getHandle(), new Object[0]);
+ //System.out.println(MineverseChat.lastChatMessage.getMessage());
+ hash = message != null ? message.hashCode() : -1;
+ }
+ catch(Exception ex) {
+ message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
+ System.out.println(message);
+ //ex.printStackTrace();
+ }
+ ChatMessage lastChatMessage = MineverseChat.lastChatMessage;
+ MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
+ if(lastChatMessage != null && lastChatMessage.getHash() == hash) {
+ String json = MineverseChat.lastJson;
+ /*if(mcp.getPlayer().hasPermission("venturechat.message.remove")) {
+ json = json.substring(0, json.length() - 1);
+ json += ",{\"text\":\" " + Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")) + "\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/removemessage " + lastChatMessage.getHash() + " true" +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremovertext")) + "\"}}}]";
+ }
+ if(!mcp.getButtons()) {
+ for(JsonButton j : MineverseChat.jbInfo.getJsonButtons()) {
+ if(j.hasPermission() && mcp.getPlayer().hasPermission(j.getPermission())) {
+ json = json.substring(0, json.length() - 1);
+ json += ",{\"text\":\" " + Format.FormatStringAll(j.getIcon()) + "\",\"clickEvent\":{\"action\":\"" + j.getAction() + "\",\"value\":\"/" + j.getCommand().replace("{channel}", lastChatMessage.getChannel()).replace("{player}", lastChatMessage.getSender()) + "\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"" + Format.FormatStringAll(j.getText()) + "\"}}}]";
+ }
+ }
+ }*/
+ if(mcp.getPlayer().hasPermission("venturechat.gui")) {
+ json = json.substring(0, json.length() - 1);
+ json += "," + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guiicon")), ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + lastChatMessage.getSender() + " " + lastChatMessage.getChannel() + " " + lastChatMessage.getHash() +"\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[" + Format.convertToJsonColors(Format.FormatStringAll(plugin.getConfig().getString("guitext"))) + "]}}") + "]}]";
+ }
+ //System.out.println(json);
+ chat.setJson(json);
+ event.getPacket().getChatComponents().write(0, chat);
+ }
+ if((message != null) && (chat.getHandle() != null) && mcp != null) {
+ mcp.addMessage(new ChatMessage(originalChat, chat, lastChatMessage != null ? lastChatMessage.getSender() : null, message, hash));
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private String getMessage(String json) {
+ JSONArray components = (JSONArray) ((JSONObject) JSONValue.parse(json)).get("extra");
+ Iterator> iterator = components.iterator();
+ StringBuilder builder = new StringBuilder();
+ while(iterator.hasNext()) {
+ builder.append(((JSONObject) iterator.next()).get("text").toString());
+ }
+ return builder.toString();
+ }
}
\ No newline at end of file
diff --git a/MineverseChat/mineverse/Aust1n46/chat/versions/VersionHandler.java b/MineverseChat/mineverse/Aust1n46/chat/versions/VersionHandler.java
index de69fa9..1b41f67 100644
--- a/MineverseChat/mineverse/Aust1n46/chat/versions/VersionHandler.java
+++ b/MineverseChat/mineverse/Aust1n46/chat/versions/VersionHandler.java
@@ -1,63 +1,71 @@
-package mineverse.Aust1n46.chat.versions;
-
-import org.bukkit.Bukkit;
-
-//This class contains methods for determining what version of Minecraft the server is running.
-public class VersionHandler {
-
- public static boolean is1_2_5() {
- return Bukkit.getVersion().contains("1.2.5");
- }
-
- public static boolean is1_3_2() {
- return Bukkit.getVersion().contains("1.3.2");
- }
-
- public static boolean is1_4_7() {
- return Bukkit.getVersion().contains("1.4.7");
- }
-
- public static boolean is1_5_2() {
- return Bukkit.getVersion().contains("1.5.2");
- }
-
- public static boolean is1_6_2() {
- return Bukkit.getVersion().contains("1.6.2");
- }
-
- public static boolean is1_6_4() {
- return Bukkit.getVersion().contains("1.6.4");
- }
-
- public static boolean is1_7_2() {
- return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R1");
- }
-
- public static boolean is1_7_9() {
- return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R3");
- }
-
- public static boolean is1_7_10() {
- return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R4");
- }
-
- public static boolean is1_8() {
- return Bukkit.getVersion().contains("1.8");
- }
-
- public static boolean is1_9() {
- return Bukkit.getVersion().contains("1.9");
- }
-
- public static boolean is1_10() {
- return Bukkit.getVersion().contains("1.10");
- }
-
- public static boolean isCauldron() {
- return false;
- }
-
- public static boolean matchesVersion(String s) {
- return Bukkit.getVersion().contains(s) || Bukkit.getServer().getClass().getPackage().getName().contains(s);
- }
+package mineverse.Aust1n46.chat.versions;
+
+import org.bukkit.Bukkit;
+
+//This class contains methods for determining what version of Minecraft the server is running.
+public class VersionHandler {
+
+ public static boolean is1_2_5() {
+ return Bukkit.getVersion().contains("1.2.5");
+ }
+
+ public static boolean is1_3_2() {
+ return Bukkit.getVersion().contains("1.3.2");
+ }
+
+ public static boolean is1_4_7() {
+ return Bukkit.getVersion().contains("1.4.7");
+ }
+
+ public static boolean is1_5_2() {
+ return Bukkit.getVersion().contains("1.5.2");
+ }
+
+ public static boolean is1_6_2() {
+ return Bukkit.getVersion().contains("1.6.2");
+ }
+
+ public static boolean is1_6_4() {
+ return Bukkit.getVersion().contains("1.6.4");
+ }
+
+ public static boolean is1_7_2() {
+ return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R1");
+ }
+
+ public static boolean is1_7_9() {
+ return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R3");
+ }
+
+ public static boolean is1_7_10() {
+ return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R4");
+ }
+
+ public static boolean is1_8() {
+ return Bukkit.getVersion().contains("1.8");
+ }
+
+ public static boolean is1_9() {
+ return Bukkit.getVersion().contains("1.9");
+ }
+
+ public static boolean is1_10() {
+ return Bukkit.getVersion().contains("1.10");
+ }
+
+ public static boolean is1_11() {
+ return Bukkit.getVersion().contains("1.11");
+ }
+
+ public static boolean is1_12() {
+ return Bukkit.getVersion().contains("1.12");
+ }
+
+ public static boolean isCauldron() {
+ return false;
+ }
+
+ public static boolean matchesVersion(String s) {
+ return Bukkit.getVersion().contains(s) || Bukkit.getServer().getClass().getPackage().getName().contains(s);
+ }
}
\ No newline at end of file
diff --git a/MineverseChat/plugin.yml b/MineverseChat/plugin.yml
index 52beec8..1734bb6 100644
--- a/MineverseChat/plugin.yml
+++ b/MineverseChat/plugin.yml
@@ -1,227 +1,227 @@
-name: VentureChat
-version: 2.11.1
-main: mineverse.Aust1n46.chat.MineverseChat
-depend: [Vault, ProtocolLib, PlaceholderAPI]
-softdepend: [Towny, Factions, Heroes]
-Author: Aust1n46
-description: Chat with channels with many features!
-commands:
- mute:
- usage: /mute [playername] [channel]
- aliases: [mp,vmute]
- description: Mutes player in a channel so they cannot talk.
- permission-message: You don't have
- unmute:
- usage: /unmute [playername] [channel]
- aliases: [ump,vunmute]
- description: Unmutes player in a channel so they can talk again.
- permission-message: You don't have
- tell:
- usage: /tell [playername] [msg]
- aliases: [vtell]
- description: Send a message to a player
- permission-message: You don't have
- ignore:
- usage: /ignore [playername] or /ignore ? for more information
- aliases: [vignore]
- description: This allows you to prevent a player from sending you a tell /ignore list to see who you have ignored
- permission-message: You don't have
- whisper:
- usage: /whisper [playername] [msg]
- aliases: [w,vwhisper]
- description: Send a message to a player
- permission-message: You don't have
- channel:
- usage: /channel [channelname]
- aliases: [ch,vchannel]
- description: Allows players to add the ability to listen to the channel
- permission-message: You don't have
- leave:
- usage: /leave [channelname]
- aliases: [lev,vleave]
- description: Allows players to leave listening to a channel
- permission-message: You don't have
- join:
- usage: /join [channelname]
- aliases: [vjoin]
- description: Allows players to join a channel
- permission-message: You don't have
- chlist:
- usage: /chlist
- aliases: [chl,vchlist]
- description: Allows players to see a listing of available channels
- permission-message: You don't have
- chwho:
- usage: /chwho [channelname]
- aliases: [chw,vchwho]
- description: Allows players to see a listing of who is listening on a channel
- permission-message: You don't have
- setchannel:
- usage: /setchannel [playername] [channel]
- aliases: [sc,vsetchannel]
- description: Sets a players channel
- permission-message: You don't have
- kickchannel:
- usage: /kickchannel [playername] [channel]
- aliases: [kc,vkickchannel]
- description: Kicks a player out of a channel
- permission-message: You don't have
- message:
- usage: /message [playername] [msg]
- aliases: [msg,pm,vmessage]
- description: Send a message to a player
- muteall:
- usage: /muteall [playername]
- aliases: [mpa,vmuteall]
- description: Mute a player in all channels
- permission-message: You don't have
- unmuteall:
- usage: /unmuteall [playername]
- aliases: [umpa,vunmuteall]
- description: Unmute a player in all channels
- permission-message: You don't have
- kickchannelall:
- usage: /kickchannelall [playername]
- aliases: [kca,vkickchannelall]
- description: Kick a player from all channels
- permission-message: You don't have
- setchannelall:
- usage: /setchannelall [playername]
- aliases: [sca,vsetchannelall]
- description: Set a player into all channels
- permission-message: You don't have
- force:
- usage: /force [playername] [message]
- aliases: [for,vforce]
- description: Force a player to chat or execute a command
- permission-message: You don't have
- forceall:
- usage: /forceall [message]
- aliases: [fora,vforceall]
- description: Force all players to chat or execute a command
- permission-message: You don't have
- listen:
- usage: /listen [channel]
- aliases: [lis,vlisten]
- description: Listen to a channel without setting it as the one your chatting in
- permission-message: You don't have
- chatreload:
- usage: /chatreload
- aliases: [cr,vchatreload]
- description: Reload the config file
- permission-message: You don't have
- afk:
- usage: /afk
- aliases: [vafk]
- description: Set yourself as afk
- permission-message: You don't have
- reply:
- usage: /reply [msg]
- aliases: [r,vreply]
- description: Reply to a message
- permission-message: You don't have
- spy:
- usage: /spy
- aliases: [vspy]
- description: Spy on tells
- permission-message: You don't have
- commandspy:
- usage: /commandspy
- aliases: [comspy,vcommandspy]
- description: Spy on commands
- permission-message: You don't have
- chatinfo:
- usage: /chatinfo
- aliases: [ci,vchatinfo]
- description: Check a players chat info
- permission-message: You don't have
- channelinfo:
- usage: /channelinfo
- aliases: [chi,vchannelinfo]
- description: Check a channels info
- permission-message: You don't have
- venturechat:
- usage: /venturechat
- aliases: [vc]
- description: Check plugin information
- permission-message: You don't have
- me:
- usage: /me
- aliases: [vme]
- description: Send an emote
- permission-message: You don't have
- filter:
- usage: /filter
- aliases: [fil,vfilter]
- description: Toggle filter on and off
- permission-message: You don't have
- broadcast:
- usage: /broadcast [msg]
- aliases: [bc,vbroadcast]
- description: Broadcast a message
- permission-message: You don't have
- commandblock:
- usage: /commandblock [player] [command]
- aliases: [cb,vcommandblock]
- description: Toggle a player blocked from entering a command
- permission-message: You don't have
- nick:
- usage: /nick {player} [nickname]
- aliases: [vnick]
- description: Set a players nickname
- permission-message: You don't have
- party:
- usage: /party help
- aliases: [p,chatparty,cp,vparty]
- description: Party commands
- permission-message: You don't have
- config:
- usage: /config help
- aliases: [vconfig]
- description: Edit commands
- permission-message: You don't have
- clearchat:
- usage: /clearchat
- aliases: [cc,vclearchat]
- description: Clear every players chat
- permission-message: You don't have
- notifications:
- usage: /notifications
- aliases: [notify,vnotify]
- description: Toggles your notifications
- permission-message: You don't have
- mail:
- usage: /mail help
- aliases: [vmail]
- description: Mail commands
- permission-message: You don't have
- removemessage:
- usage: /removemessage [hashcode]
- aliases: [rm,vremovemessage]
- description: Remove a message from the chat
- permission-message: You don't have
- edit:
- usage: /
- aliases: [vedit]
- description: Edit your last chat message
- permission-message: You don't have
- rangedspy:
- usage: /
- aliases: [rspy,vrangedspy]
- description: Toggle spying on ranged channels
- permission-message: You don't have
- buttons:
- usage: /
- aliases: [vbuttons]
- description: Toggle viewing json buttons
- permission-message: You don't have
- venturechatgui:
- usage: /
- aliases: [vchatgui]
- description: Opens the chat management gui
- permission-message: You don't have
- messagetoggle:
- usage: /
- aliases: [mtoggle,vmessagetoggle]
- description: Toggle receiving messages
+name: VentureChat
+version: 2.12.0
+main: mineverse.Aust1n46.chat.MineverseChat
+depend: [Vault, ProtocolLib, PlaceholderAPI]
+softdepend: [Towny, Factions, Heroes]
+Author: Aust1n46
+description: Chat with channels with many features!
+commands:
+ mute:
+ usage: /mute [playername] [channel]
+ aliases: [mp,vmute]
+ description: Mutes player in a channel so they cannot talk.
+ permission-message: You don't have
+ unmute:
+ usage: /unmute [playername] [channel]
+ aliases: [ump,vunmute]
+ description: Unmutes player in a channel so they can talk again.
+ permission-message: You don't have
+ tell:
+ usage: /tell [playername] [msg]
+ aliases: [vtell]
+ description: Send a message to a player
+ permission-message: You don't have
+ ignore:
+ usage: /ignore [playername] or /ignore ? for more information
+ aliases: [vignore]
+ description: This allows you to prevent a player from sending you a tell /ignore list to see who you have ignored
+ permission-message: You don't have
+ whisper:
+ usage: /whisper [playername] [msg]
+ aliases: [w,vwhisper]
+ description: Send a message to a player
+ permission-message: You don't have
+ channel:
+ usage: /channel [channelname]
+ aliases: [ch,vchannel]
+ description: Allows players to add the ability to listen to the channel
+ permission-message: You don't have
+ leave:
+ usage: /leave [channelname]
+ aliases: [lev,vleave]
+ description: Allows players to leave listening to a channel
+ permission-message: You don't have
+ join:
+ usage: /join [channelname]
+ aliases: [vjoin]
+ description: Allows players to join a channel
+ permission-message: You don't have
+ chlist:
+ usage: /chlist
+ aliases: [chl,vchlist]
+ description: Allows players to see a listing of available channels
+ permission-message: You don't have
+ chwho:
+ usage: /chwho [channelname]
+ aliases: [chw,vchwho]
+ description: Allows players to see a listing of who is listening on a channel
+ permission-message: You don't have
+ setchannel:
+ usage: /setchannel [playername] [channel]
+ aliases: [sc,vsetchannel]
+ description: Sets a players channel
+ permission-message: You don't have
+ kickchannel:
+ usage: /kickchannel [playername] [channel]
+ aliases: [kc,vkickchannel]
+ description: Kicks a player out of a channel
+ permission-message: You don't have
+ message:
+ usage: /message [playername] [msg]
+ aliases: [msg,pm,vmessage]
+ description: Send a message to a player
+ muteall:
+ usage: /muteall [playername]
+ aliases: [mpa,vmuteall]
+ description: Mute a player in all channels
+ permission-message: You don't have
+ unmuteall:
+ usage: /unmuteall [playername]
+ aliases: [umpa,vunmuteall]
+ description: Unmute a player in all channels
+ permission-message: You don't have
+ kickchannelall:
+ usage: /kickchannelall [playername]
+ aliases: [kca,vkickchannelall]
+ description: Kick a player from all channels
+ permission-message: You don't have
+ setchannelall:
+ usage: /setchannelall [playername]
+ aliases: [sca,vsetchannelall]
+ description: Set a player into all channels
+ permission-message: You don't have
+ force:
+ usage: /force [playername] [message]
+ aliases: [for,vforce]
+ description: Force a player to chat or execute a command
+ permission-message: You don't have
+ forceall:
+ usage: /forceall [message]
+ aliases: [fora,vforceall]
+ description: Force all players to chat or execute a command
+ permission-message: You don't have
+ listen:
+ usage: /listen [channel]
+ aliases: [lis,vlisten]
+ description: Listen to a channel without setting it as the one your chatting in
+ permission-message: You don't have
+ chatreload:
+ usage: /chatreload
+ aliases: [cr,vchatreload]
+ description: Reload the config file
+ permission-message: You don't have
+ afk:
+ usage: /afk
+ aliases: [vafk]
+ description: Set yourself as afk
+ permission-message: You don't have
+ reply:
+ usage: /reply [msg]
+ aliases: [r,vreply]
+ description: Reply to a message
+ permission-message: You don't have
+ spy:
+ usage: /spy
+ aliases: [vspy]
+ description: Spy on tells
+ permission-message: You don't have
+ commandspy:
+ usage: /commandspy
+ aliases: [comspy,vcommandspy]
+ description: Spy on commands
+ permission-message: You don't have
+ chatinfo:
+ usage: /chatinfo
+ aliases: [ci,vchatinfo]
+ description: Check a players chat info
+ permission-message: You don't have
+ channelinfo:
+ usage: /channelinfo
+ aliases: [chi,vchannelinfo]
+ description: Check a channels info
+ permission-message: You don't have
+ venturechat:
+ usage: /venturechat
+ aliases: [vc]
+ description: Check plugin information
+ permission-message: You don't have
+ me:
+ usage: /me
+ aliases: [vme]
+ description: Send an emote
+ permission-message: You don't have
+ filter:
+ usage: /filter
+ aliases: [fil,vfilter]
+ description: Toggle filter on and off
+ permission-message: You don't have
+ broadcast:
+ usage: /broadcast [msg]
+ aliases: [bc,vbroadcast]
+ description: Broadcast a message
+ permission-message: You don't have
+ commandblock:
+ usage: /commandblock [player] [command]
+ aliases: [cb,vcommandblock]
+ description: Toggle a player blocked from entering a command
+ permission-message: You don't have
+ nick:
+ usage: /nick {player} [nickname]
+ aliases: [vnick]
+ description: Set a players nickname
+ permission-message: You don't have
+ party:
+ usage: /party help
+ aliases: [p,chatparty,cp,vparty]
+ description: Party commands
+ permission-message: You don't have
+ config:
+ usage: /config help
+ aliases: [vconfig]
+ description: Edit commands
+ permission-message: You don't have
+ clearchat:
+ usage: /clearchat
+ aliases: [cc,vclearchat]
+ description: Clear every players chat
+ permission-message: You don't have
+ notifications:
+ usage: /notifications
+ aliases: [notify,vnotify]
+ description: Toggles your notifications
+ permission-message: You don't have
+ mail:
+ usage: /mail help
+ aliases: [vmail]
+ description: Mail commands
+ permission-message: You don't have
+ removemessage:
+ usage: /removemessage [hashcode]
+ aliases: [rm,vremovemessage]
+ description: Remove a message from the chat
+ permission-message: You don't have
+ edit:
+ usage: /
+ aliases: [vedit]
+ description: Edit your last chat message
+ permission-message: You don't have
+ rangedspy:
+ usage: /
+ aliases: [rspy,vrangedspy]
+ description: Toggle spying on ranged channels
+ permission-message: You don't have
+ buttons:
+ usage: /
+ aliases: [vbuttons]
+ description: Toggle viewing json buttons
+ permission-message: You don't have
+ venturechatgui:
+ usage: /
+ aliases: [vchatgui]
+ description: Opens the chat management gui
+ permission-message: You don't have
+ messagetoggle:
+ usage: /
+ aliases: [mtoggle,vmessagetoggle]
+ description: Toggle receiving messages
permission-message: You don't have
\ No newline at end of file