Updated message remover to work in 1.12 (and hopefully beyond)

This commit is contained in:
BuildTools 2017-11-14 07:24:15 -05:00
parent c6c4694056
commit 28139c5fd8
12 changed files with 2602 additions and 2526 deletions

17
.classpath Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="MineverseChat"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/Mineverse Network/Servers/Hub/spigot-1.11.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/Mineverse Network/Servers/Hub/plugins/Vault.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/Mineverse Network/Servers/Hub/plugins/PlaceholderAPI.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/Mineverse Network/Servers/Hub/spigot-1.8.8-R0.1-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/MineverseChat Dependencies/Factions-2.7.3/Factions-2.7.3/Factions.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/MineverseChat Dependencies/Factions-2.7.3/Factions-2.7.3/MassiveCore.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/MineverseChat Dependencies/Upload/Plugins/Towny.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/MineverseChat Dependencies/BungeeCord.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/MineverseChat Dependencies/Upload/Plugins/Heroes.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/MineverseChat Dependencies/pircbotx-2.0.1.jar"/>
<classpathentry kind="lib" path="C:/Users/Austin/Desktop/Mineverse Network/Servers/Hub/plugins/ProtocolLib.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/bin/

17
.project Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>venturechat</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1,4 +1,4 @@
name: VentureChat name: VentureChat
main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee
version: 2.11.1 version: 2.12.0
author: Aust1n46 author: Aust1n46

File diff suppressed because it is too large Load Diff

View File

@ -1,188 +1,191 @@
package mineverse.Aust1n46.chat.command.chat; package mineverse.Aust1n46.chat.command.chat;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import mineverse.Aust1n46.chat.ChatMessage; import mineverse.Aust1n46.chat.ChatMessage;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.command.MineverseCommand; import mineverse.Aust1n46.chat.command.MineverseCommand;
//import mineverse.Aust1n46.chat.json.JsonButton; //import mineverse.Aust1n46.chat.json.JsonButton;
import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.Format;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import com.comphenix.protocol.PacketType; import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.WrappedChatComponent; 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\":\"\"}")); public class Removemessage extends MineverseCommand {
private MineverseChat plugin; private PacketContainer emptyLinePacketContainer = createPacketPlayOutChat(WrappedChatComponent.fromJson("{\"extra\":[\" \"],\"text\":\"\"}"));
private WrappedChatComponent messageDeletedComponentPlayer; private MineverseChat plugin;
private WrappedChatComponent messageDeletedComponentPlayer;
public Removemessage(String name) {
super(name); public Removemessage(String name) {
this.plugin = MineverseChat.getInstance(); super(name);
} this.plugin = MineverseChat.getInstance();
}
@Override
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override
public void execute(CommandSender sender, String command, String[] args) { @SuppressWarnings({ "unchecked", "rawtypes" })
if(args.length == 0) { public void execute(CommandSender sender, String command, String[] args) {
sender.sendMessage(ChatColor.RED + "Invalid command: /removemessage [hashcode]"); if(args.length == 0) {
return; sender.sendMessage(ChatColor.RED + "Invalid command: /removemessage [hashcode]");
} return;
final int hash; }
try { final int hash;
hash = Integer.parseInt(args[0]); try {
} hash = Integer.parseInt(args[0]);
catch(Exception e) { }
sender.sendMessage(ChatColor.RED + "Invalid hashcode."); catch(Exception e) {
return; sender.sendMessage(ChatColor.RED + "Invalid hashcode.");
} return;
if(args.length > 1 && Boolean.parseBoolean(args[1]) && sender instanceof Player) { }
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); if(args.length > 1 && Boolean.parseBoolean(args[1]) && sender instanceof Player) {
DataOutputStream out = new DataOutputStream(byteOutStream); ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
try { DataOutputStream out = new DataOutputStream(byteOutStream);
out.writeUTF("RemoveMessage"); try {
out.writeUTF(String.valueOf(hash)); out.writeUTF("RemoveMessage");
((Player) sender).sendPluginMessage(plugin, "VentureChat", byteOutStream.toByteArray()); out.writeUTF(String.valueOf(hash));
out.close(); ((Player) sender).sendPluginMessage(plugin, "VentureChat", byteOutStream.toByteArray());
} out.close();
catch(Exception e) { }
e.printStackTrace(); catch(Exception e) {
} e.printStackTrace();
} }
new BukkitRunnable() { }
public void run() { new BukkitRunnable() {
final Map<Player, List<PacketContainer>> packets = new HashMap(); public void run() {
for(MineverseChatPlayer p : MineverseChat.onlinePlayers) { final Map<Player, List<PacketContainer>> packets = new HashMap();
List<ChatMessage> messages = p.getMessages(); for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
List<PacketContainer> playerPackets = new ArrayList(); List<ChatMessage> messages = p.getMessages();
boolean resend = false; List<PacketContainer> playerPackets = new ArrayList();
for(int fill = 0; fill < 100 - messages.size(); fill++) { boolean resend = false;
playerPackets.add(Removemessage.this.emptyLinePacketContainer); for(int fill = 0; fill < 100 - messages.size(); fill++) {
} playerPackets.add(Removemessage.this.emptyLinePacketContainer);
for(ChatMessage message : messages) { }
if(message.getHash() == hash) { for(ChatMessage message : messages) {
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); if(message.getHash() == hash) {
message.setComponent(removedComponent); WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setHash(-1); message.setComponent(removedComponent);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); message.setHash(-1);
resend = true; playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
continue; 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(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("guiicon")))) {
if(submessage.hashCode() == hash) { String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("guiicon").length() - 1).replaceAll("(§([a-z0-9]))", "");
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); if(submessage.hashCode() == hash) {
message.setComponent(removedComponent); WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setHash(-1); message.setComponent(removedComponent);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); message.setHash(-1);
resend = true; playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
continue; 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(message.getMessage().contains(Format.FormatStringAll(plugin.getConfig().getString("messageremovericon")))) {
if(submessage.hashCode() == hash) { String submessage = message.getMessage().substring(0, message.getMessage().length() - plugin.getConfig().getString("messageremovericon").length() - 1).replaceAll("(§([a-z0-9]))", "");
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); if(submessage.hashCode() == hash) {
message.setComponent(removedComponent); WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setHash(-1); message.setComponent(removedComponent);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); message.setHash(-1);
resend = true; playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
continue; resend = true;
} continue;
int cut = 0; }
for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) { int cut = 0;
if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission())) { for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
cut += b.getIcon().length() - 1; 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"); submessage = submessage.substring(0, submessage.length() - cut).replaceAll("(§([a-z0-9]))", "");
if(submessage.hashCode() == hash) { //System.out.println(submessage + " submess");
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); if(submessage.hashCode() == hash) {
message.setComponent(removedComponent); WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setHash(-1); message.setComponent(removedComponent);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); message.setHash(-1);
resend = true; playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
continue; resend = true;
} continue;
} }
int cut = 0; }
for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) { int cut = 0;
if(b.hasPermission() && p.getPlayer().hasPermission(b.getPermission()) && message.getMessage().contains(b.getIcon())) { for(JsonButton b : MineverseChat.jbInfo.getJsonButtons()) {
cut += b.getIcon().length() - 1; 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()); String submessage = message.getMessage().replaceAll("(§([a-z0-9]))", "");
submessage = submessage.substring(0, submessage.length() - cut); //System.out.println(submessage + " " + submessage.length());
//System.out.println(submessage); submessage = submessage.substring(0, submessage.length() - cut);
if(submessage.hashCode() == hash) { //System.out.println(submessage);
WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer(); if(submessage.hashCode() == hash) {
message.setComponent(removedComponent); WrappedChatComponent removedComponent = p.getPlayer().hasPermission("venturechat.message.bypass") ? Removemessage.this.getMessageDeletedChatComponentAdmin(message) : Removemessage.this.getMessageDeletedChatComponentPlayer();
message.setHash(-1); message.setComponent(removedComponent);
playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent)); message.setHash(-1);
resend = true; playerPackets.add(Removemessage.this.createPacketPlayOutChat(removedComponent));
continue; resend = true;
}*/ continue;
playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent())); }*/
} playerPackets.add(Removemessage.this.createPacketPlayOutChat(message.getComponent()));
if(resend) { }
packets.put(p.getPlayer(), playerPackets); if(resend) {
} packets.put(p.getPlayer(), playerPackets);
} }
new BukkitRunnable() { }
public void run() { new BukkitRunnable() {
for(Player p : packets.keySet()) { public void run() {
List<PacketContainer> pPackets = packets.get(p); for(Player p : packets.keySet()) {
for(PacketContainer c : pPackets) { List<PacketContainer> pPackets = packets.get(p);
Removemessage.this.sendPacketPlayOutChat(p, c); for(PacketContainer c : pPackets) {
} //System.out.println("test packet send");
} Removemessage.this.sendPacketPlayOutChat(p, c);
} }
}.runTask(plugin); }
} }
}.runTaskAsynchronously(plugin); }.runTask(plugin);
} }
}.runTaskAsynchronously(plugin);
private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) { }
PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT);
container.getChatComponents().write(0, component); private PacketContainer createPacketPlayOutChat(WrappedChatComponent component) {
return container; PacketContainer container = new PacketContainer(PacketType.Play.Server.CHAT);
} container.getChatComponents().write(0, component);
container.getChatTypes().write(0, ChatType.CHAT);
private void sendPacketPlayOutChat(Player player, PacketContainer packet) { return container;
try { }
plugin.protocolManager.sendServerPacket(player, packet);
} private void sendPacketPlayOutChat(Player player, PacketContainer packet) {
catch(Exception e) { try {
e.printStackTrace(); plugin.protocolManager.sendServerPacket(player, packet);
} }
} catch(Exception e) {
e.printStackTrace();
public WrappedChatComponent getMessageDeletedChatComponentPlayer() { }
if(this.messageDeletedComponentPlayer == null) { }
this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"<message removed>\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}");
} public WrappedChatComponent getMessageDeletedChatComponentPlayer() {
return this.messageDeletedComponentPlayer; if(this.messageDeletedComponentPlayer == null) {
} this.messageDeletedComponentPlayer = WrappedChatComponent.fromJson("{\"text\":\"\",\"extra\":[{\"text\":\"<message removed>\",\"color\":\"red\",\"italic\":\"true\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + Format.FormatStringAll(plugin.getConfig().getString("messageremoverpermissions")) + "\"}]}}}]}");
}
public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) { return this.messageDeletedComponentPlayer;
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) + "\"}]"; public WrappedChatComponent getMessageDeletedChatComponentAdmin(ChatMessage message) {
} String oMessage = message.getOriginalComponent().getJson().substring(1, message.getOriginalComponent().getJson().length() - 11);
return WrappedChatComponent.fromJson(Format.FormatStringAll("{\"text\":\"\",\"extra\":[{\"text\":\"&c&o<message removed>\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"&7Message: \"," + oMessage + "}}}]}")); 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<message removed>\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"&7Message: \"," + oMessage + "}}}]}"));
}
} }

View File

@ -1,38 +1,38 @@
package mineverse.Aust1n46.chat.command.chat; package mineverse.Aust1n46.chat.command.chat;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.command.MineverseCommand; import mineverse.Aust1n46.chat.command.MineverseCommand;
import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Venturechat extends MineverseCommand { public class Venturechat extends MineverseCommand {
private MineverseChat plugin; private MineverseChat plugin;
public Venturechat(String name) { public Venturechat(String name) {
super(name); super(name);
this.plugin = MineverseChat.getInstance(); this.plugin = MineverseChat.getInstance();
} }
@Override @Override
public void execute(CommandSender sender, String command, String[] args) { public void execute(CommandSender sender, String command, String[] args) {
sender.sendMessage(ChatColor.GOLD + "VentureChat Version: " + plugin.getDescription().getVersion()); sender.sendMessage(ChatColor.GOLD + "VentureChat Version: " + plugin.getDescription().getVersion());
sender.sendMessage(ChatColor.GOLD + "Written by Aust1n46"); sender.sendMessage(ChatColor.GOLD + "Written by Aust1n46");
if (sender instanceof Player) { if (sender instanceof Player && plugin.getConfig().getString("loglevel", "info").equals("debug")) {
Player player = (Player) sender; Player player = (Player) sender;
String title = ChatColor.GOLD + " | " + ChatColor.BLUE.toString() + ChatColor.BOLD + "Click here to begin..." + ChatColor.RESET + ChatColor.GOLD + " | "; String title = ChatColor.GOLD + " | " + ChatColor.BLUE.toString() + ChatColor.BOLD + "Click here to begin..." + ChatColor.RESET + ChatColor.GOLD + " | ";
String spaces = " "; String spaces = " ";
TextComponent tcSpaces = new TextComponent(spaces); TextComponent tcSpaces = new TextComponent(spaces);
TextComponent message = new TextComponent(title); TextComponent message = new TextComponent(title);
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Click here to rank up!").create())); 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")); message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/rules 1"));
tcSpaces.addExtra(message); tcSpaces.addExtra(message);
player.spigot().sendMessage(tcSpaces); player.spigot().sendMessage(tcSpaces);
} }
} }
} }

View File

@ -1,205 +1,206 @@
package mineverse.Aust1n46.chat.listeners; package mineverse.Aust1n46.chat.listeners;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.versions.VersionHandler; import mineverse.Aust1n46.chat.versions.VersionHandler;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.DyeColor; import org.bukkit.DyeColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.banner.Pattern; import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType; import org.bukkit.block.banner.PatternType;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.ArmorStand; import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BannerMeta; import org.bukkit.inventory.meta.BannerMeta;
import org.bukkit.util.EulerAngle; import org.bukkit.util.EulerAngle;
public class CapeListener implements Listener { public class CapeListener implements Listener {
@EventHandler @EventHandler
public void onLeave(PlayerQuitEvent event) { public void onLeave(PlayerQuitEvent event) {
Player p = event.getPlayer(); Player p = event.getPlayer();
if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) { if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
return; return;
} }
MineverseChat.cape.remove(); MineverseChat.cape.remove();
} }
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW)
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player p = event.getPlayer(); Player p = event.getPlayer();
if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) { if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
return; return;
} }
MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND); MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND);
MineverseChat.banner = this.getBanner(); MineverseChat.banner = this.getBanner();
this.equipCape(p, MineverseChat.banner); this.equipCape(p, MineverseChat.banner);
} }
@EventHandler @EventHandler
public void onMove(PlayerMoveEvent event) { public void onMove(PlayerMoveEvent event) {
Player p = event.getPlayer(); Player p = event.getPlayer();
if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) { if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
return; 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()); 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()) { if(p.isSneaking()) {
loc.setY(event.getTo().getY() + 0.85D); loc.setY(event.getTo().getY() + 0.85D);
} }
ArmorStand cape = MineverseChat.cape; ArmorStand cape = MineverseChat.cape;
cape.teleport(loc); cape.teleport(loc);
Double add = Double.valueOf(Math.abs(p.getVelocity().getX()) * 3.0D + Math.abs(p.getVelocity().getZ()) * 3.0D); 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())); cape.setHeadPose(cape.getHeadPose().setZ(cape.getHeadPose().getZ()).setX(-2.45D + add.doubleValue()));
} }
@EventHandler @EventHandler
public void onTeleport(PlayerTeleportEvent event) { public void onTeleport(PlayerTeleportEvent event) {
Player p = event.getPlayer(); Player p = event.getPlayer();
if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) { if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
return; 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()); 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; ArmorStand cape = MineverseChat.cape;
cape.teleport(loc); cape.teleport(loc);
} }
@EventHandler @EventHandler
public void onRespawn(PlayerRespawnEvent event) { public void onRespawn(PlayerRespawnEvent event) {
Player p = event.getPlayer(); Player p = event.getPlayer();
if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) { if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
return; 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()); 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; ArmorStand cape = MineverseChat.cape;
cape.teleport(loc); cape.teleport(loc);
} }
@EventHandler @EventHandler
public void onDeath(PlayerDeathEvent event) { public void onDeath(PlayerDeathEvent event) {
Player p = event.getEntity(); Player p = event.getEntity();
if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) { if(!p.getName().equals("Aust1n46") || !MineverseChat.capeToggle) {
return; return;
} }
Location loc = new Location(event.getEntity().getWorld(), event.getEntity().getLocation().getX(), -1.0D, event.getEntity().getLocation().getZ()); Location loc = new Location(event.getEntity().getWorld(), event.getEntity().getLocation().getX(), -1.0D, event.getEntity().getLocation().getZ());
ArmorStand cape = MineverseChat.cape; ArmorStand cape = MineverseChat.cape;
cape.teleport(loc); cape.teleport(loc);
} }
public void equipCape(Player p, ItemStack i) { 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()); 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; ArmorStand cape = MineverseChat.cape;
cape.setHelmet(i); cape.setHelmet(i);
cape.setHeadPose(cape.getHeadPose().setX(cape.getHeadPose().getX() - 2.4D)); cape.setHeadPose(cape.getHeadPose().setX(cape.getHeadPose().getX() - 2.4D));
cape.setSmall(true); cape.setSmall(true);
cape.setNoDamageTicks(Integer.MAX_VALUE); cape.setNoDamageTicks(Integer.MAX_VALUE);
cape.setVisible(false); cape.setVisible(false);
cape.setGravity(false); cape.setGravity(false);
cape.setArms(false); cape.setArms(false);
cape.setBasePlate(false); cape.setBasePlate(false);
cape.teleport(loc); cape.teleport(loc);
cape.setVisible(false); cape.setVisible(false);
} }
public EulerAngle getAngle(Double d) { public EulerAngle getAngle(Double d) {
return new EulerAngle(0.0D, d.doubleValue(), 0.0D); return new EulerAngle(0.0D, d.doubleValue(), 0.0D);
} }
public void capeInHand(Player p) { @SuppressWarnings("deprecation")
if(p.getName().equals("Aust1n46")) { public void capeInHand(Player p) {
if(p.getInventory().getItemInHand().getType().equals(Material.BANNER)) { if(p.getName().equals("Aust1n46")) {
equipCape(p, p.getInventory().getItemInHand()); if(p.getInventory().getItemInHand().getType().equals(Material.BANNER)) {
BannerMeta b = (BannerMeta) p.getInventory().getItemInHand().getItemMeta(); equipCape(p, p.getInventory().getItemInHand());
this.addBanner("cape", b); BannerMeta b = (BannerMeta) p.getInventory().getItemInHand().getItemMeta();
p.setItemInHand(null); this.addBanner("cape", b);
} p.setItemInHand(null);
} }
} }
}
@EventHandler
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { @EventHandler
final Player p = event.getPlayer(); public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
if(event.getMessage().startsWith("/cape")) { final Player p = event.getPlayer();
if(p.getName().equals("Aust1n46") && !VersionHandler.is1_7_10() && !VersionHandler.is1_7_9() && !VersionHandler.is1_7_2()) { if(event.getMessage().startsWith("/cape")) {
//capeInHand(p); if(p.getName().equals("Aust1n46") && !VersionHandler.is1_7_10() && !VersionHandler.is1_7_9() && !VersionHandler.is1_7_2()) {
if(MineverseChat.capeToggle) { //capeInHand(p);
MineverseChat.cape.remove(); if(MineverseChat.capeToggle) {
MineverseChat.capeToggle = false; MineverseChat.cape.remove();
p.sendMessage(ChatColor.GOLD + "Cape hidden!"); MineverseChat.capeToggle = false;
event.setCancelled(true); p.sendMessage(ChatColor.GOLD + "Cape hidden!");
return; event.setCancelled(true);
} return;
MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND); }
this.equipCape(p, MineverseChat.banner); MineverseChat.cape = (ArmorStand) p.getWorld().spawnEntity(p.getLocation(), EntityType.ARMOR_STAND);
p.sendMessage(ChatColor.GOLD + "Cape shown!"); this.equipCape(p, MineverseChat.banner);
MineverseChat.capeToggle = true; p.sendMessage(ChatColor.GOLD + "Cape shown!");
MineverseChat.banner = this.getBanner(); MineverseChat.capeToggle = true;
event.setCancelled(true); MineverseChat.banner = this.getBanner();
return; event.setCancelled(true);
} return;
} }
} }
}
public List<String> getSerializedPatterns(BannerMeta b) {
List<String> patterns = new ArrayList<String>(); public List<String> getSerializedPatterns(BannerMeta b) {
for(Pattern p : b.getPatterns()) { List<String> patterns = new ArrayList<String>();
String s = p.getPattern().toString() + ";" + p.getColor().toString(); for(Pattern p : b.getPatterns()) {
patterns.add(s); String s = p.getPattern().toString() + ";" + p.getColor().toString();
} patterns.add(s);
return patterns; }
} return patterns;
}
public void addBanner(String s, BannerMeta b) {
FileConfiguration f = MineverseChat.getInstance().getConfig(); public void addBanner(String s, BannerMeta b) {
f.set(s.toUpperCase() + ".display_name", s); FileConfiguration f = MineverseChat.getInstance().getConfig();
s = s.toUpperCase(); f.set(s.toUpperCase() + ".display_name", s);
f.set(s + ".base_color", b.getBaseColor().toString()); s = s.toUpperCase();
f.set(s + ".patterns", getSerializedPatterns(b)); f.set(s + ".base_color", b.getBaseColor().toString());
MineverseChat.getInstance().saveConfig(); f.set(s + ".patterns", getSerializedPatterns(b));
} MineverseChat.getInstance().saveConfig();
}
public ItemStack getBanner() {
ItemStack i = new ItemStack(Material.BANNER, 1); public ItemStack getBanner() {
BannerMeta bMeta = (BannerMeta) i.getItemMeta(); ItemStack i = new ItemStack(Material.BANNER, 1);
bMeta.setBaseColor(DyeColor.valueOf("BLACK")); BannerMeta bMeta = (BannerMeta) i.getItemMeta();
List<String> patterns = new ArrayList<String>(); bMeta.setBaseColor(DyeColor.valueOf("BLACK"));
patterns.add("STRIPE_BOTTOM;MAGENTA"); List<String> patterns = new ArrayList<String>();
patterns.add("STRIPE_TOP;MAGENTA"); patterns.add("STRIPE_BOTTOM;MAGENTA");
patterns.add("STRAIGHT_CROSS;MAGENTA"); patterns.add("STRIPE_TOP;MAGENTA");
patterns.add("BORDER;SILVER"); patterns.add("STRAIGHT_CROSS;MAGENTA");
patterns.add("CREEPER;SILVER"); patterns.add("BORDER;SILVER");
patterns.add("CROSS;BLACK"); patterns.add("CREEPER;SILVER");
patterns.add("CURLY_BORDER;GRAY"); patterns.add("CROSS;BLACK");
patterns.add("RHOMBUS_MIDDLE;BLACK"); patterns.add("CURLY_BORDER;GRAY");
patterns.add("SKULL;MAGENTA"); patterns.add("RHOMBUS_MIDDLE;BLACK");
patterns.add("STRIPE_SMALL;BLACK"); patterns.add("SKULL;MAGENTA");
patterns.add("CURLY_BORDER;BLACK"); patterns.add("STRIPE_SMALL;BLACK");
for(String pat : patterns) { patterns.add("CURLY_BORDER;BLACK");
String[] parts = pat.split(";"); for(String pat : patterns) {
DyeColor d = DyeColor.valueOf(parts[1]); String[] parts = pat.split(";");
PatternType pt = PatternType.valueOf(parts[0]); DyeColor d = DyeColor.valueOf(parts[1]);
bMeta.addPattern(new Pattern(d, pt)); PatternType pt = PatternType.valueOf(parts[0]);
} bMeta.addPattern(new Pattern(d, pt));
String display = Format.FormatStringAll("Cape"); }
bMeta.setDisplayName(display); String display = Format.FormatStringAll("Cape");
List<String> lore = new ArrayList<String>(); bMeta.setDisplayName(display);
bMeta.setLore(lore); List<String> lore = new ArrayList<String>();
i.setItemMeta(bMeta); bMeta.setLore(lore);
return i; i.setItemMeta(bMeta);
} return i;
}
} }

View File

@ -1,289 +1,290 @@
package mineverse.Aust1n46.chat.listeners; package mineverse.Aust1n46.chat.listeners;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.alias.Alias; import mineverse.Aust1n46.chat.alias.Alias;
import mineverse.Aust1n46.chat.alias.AliasInfo; import mineverse.Aust1n46.chat.alias.AliasInfo;
import mineverse.Aust1n46.chat.api.MineverseChatAPI; import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.channel.ChatChannel; import mineverse.Aust1n46.chat.channel.ChatChannel;
import mineverse.Aust1n46.chat.channel.ChatChannelInfo; import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
import mineverse.Aust1n46.chat.gui.GuiSlot; import mineverse.Aust1n46.chat.gui.GuiSlot;
import mineverse.Aust1n46.chat.irc.Bot; import mineverse.Aust1n46.chat.irc.Bot;
import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.utilities.FormatTags; import mineverse.Aust1n46.chat.utilities.FormatTags;
//import org.bukkit.Bukkit; //import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.event.server.ServerCommandEvent;
//import org.bukkit.plugin.Plugin; //import org.bukkit.plugin.Plugin;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.inventory.meta.SkullMeta;
import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.PlaceholderAPI;
//This class listens for commands (Any chat that begins with a /) to use in the command spy and //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. //in the custom commands such as aliases.
public class CommandListener implements CommandExecutor, Listener { public class CommandListener implements CommandExecutor, Listener {
private MineverseChat plugin; private MineverseChat plugin;
private ChatChannelInfo cc; private ChatChannelInfo cc;
private AliasInfo aa; private AliasInfo aa;
private Bot bot; private Bot bot;
public CommandListener(MineverseChat plugin, ChatChannelInfo cc, AliasInfo aa, Bot bot) { public CommandListener(MineverseChat plugin, ChatChannelInfo cc, AliasInfo aa, Bot bot) {
this.plugin = plugin; this.plugin = plugin;
this.cc = cc; this.cc = cc;
this.aa = aa; this.aa = aa;
this.bot = bot; this.bot = bot;
} }
@EventHandler @EventHandler
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) throws FileNotFoundException { public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) throws FileNotFoundException {
ConfigurationSection cs = plugin.getConfig().getConfigurationSection("commandspy"); ConfigurationSection cs = plugin.getConfig().getConfigurationSection("commandspy");
Boolean wec = cs.getBoolean("worldeditcommands", true); Boolean wec = cs.getBoolean("worldeditcommands", true);
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
for(MineverseChatPlayer p : MineverseChat.players) { for(MineverseChatPlayer p : MineverseChat.players) {
if(p.hasCommandSpy() && p.isOnline()) { if(p.hasCommandSpy() && p.isOnline()) {
if(wec) { if(wec) {
p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage()); p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage());
} }
else { else {
if(!(event.getMessage().toLowerCase().startsWith("//"))) { if(!(event.getMessage().toLowerCase().startsWith("//"))) {
p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage()); p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage());
} }
} }
} }
} }
if(!event.getMessage().startsWith("/afk")) { if(!event.getMessage().startsWith("/afk")) {
if(mcp.isAFK()) { if(mcp.isAFK()) {
mcp.setAFK(false); mcp.setAFK(false);
mcp.getPlayer().sendMessage(ChatColor.GOLD + "You are no longer AFK."); mcp.getPlayer().sendMessage(ChatColor.GOLD + "You are no longer AFK.");
if(plugin.getConfig().getBoolean("broadcastafk")) { if(plugin.getConfig().getBoolean("broadcastafk")) {
for(MineverseChatPlayer p : MineverseChat.players) { for(MineverseChatPlayer p : MineverseChat.players) {
if(p.isOnline() && mcp.getName() != p.getName()) { if(p.isOnline() && mcp.getName() != p.getName()) {
p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + " is no longer AFK."); p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + " is no longer AFK.");
} }
} }
} }
} }
} }
String[] blocked = event.getMessage().split(" "); String[] blocked = event.getMessage().split(" ");
if(mcp.getBlockedCommands().contains(blocked[0])) { if(mcp.getBlockedCommands().contains(blocked[0])) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You are blocked from entering this command: " + event.getMessage()); mcp.getPlayer().sendMessage(ChatColor.RED + "You are blocked from entering this command: " + event.getMessage());
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
String message = event.getMessage(); String message = event.getMessage();
/* /*
* boolean cus = false; if((message.startsWith("/pl") || * boolean cus = false; if((message.startsWith("/pl") ||
* message.startsWith("/plugins")) && * message.startsWith("/plugins")) &&
* plugin.getConfig().getBoolean("modifypluginlist", true)) { * plugin.getConfig().getBoolean("modifypluginlist", true)) {
* if(message.contains(" ")) { if(message.split(" ")[0].equals("/pl") || * if(message.contains(" ")) { if(message.split(" ")[0].equals("/pl") ||
* message.split(" ")[0].equals("/plugins")) { cus = true; } } * message.split(" ")[0].equals("/plugins")) { cus = true; } }
* if(message.equals("/pl") || message.equals("/plugins")) { cus = true; * if(message.equals("/pl") || message.equals("/plugins")) { cus = true;
* } if(cus && mcp.getPlayer().hasPermission("bukkit.command.plugins")) * } if(cus && mcp.getPlayer().hasPermission("bukkit.command.plugins"))
* { String pluginlist = ""; for(Plugin p : * { String pluginlist = ""; for(Plugin p :
* Bukkit.getPluginManager().getPlugins()) { pluginlist += * Bukkit.getPluginManager().getPlugins()) { pluginlist +=
* ChatColor.GREEN + p.getName().replace("VentureChat", * ChatColor.GREEN + p.getName().replace("VentureChat",
* plugin.getConfig().getString("pluginname", "VentureChat")) + * plugin.getConfig().getString("pluginname", "VentureChat")) +
* ChatColor.WHITE + ", "; } if(pluginlist.length() > 2) { pluginlist = * ChatColor.WHITE + ", "; } if(pluginlist.length() > 2) { pluginlist =
* pluginlist.substring(0, pluginlist.length() - 2); } * pluginlist.substring(0, pluginlist.length() - 2); }
* mcp.getPlayer().sendMessage("Plugins (" + * mcp.getPlayer().sendMessage("Plugins (" +
* Bukkit.getPluginManager().getPlugins().length + "): " + pluginlist); * Bukkit.getPluginManager().getPlugins().length + "): " + pluginlist);
* event.setCancelled(true); return; } } * event.setCancelled(true); return; } }
*/ */
if(plugin.mysql) { if(plugin.mysql) {
Statement statement; Statement statement;
Calendar currentDate = Calendar.getInstance(); Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = formatter.format(currentDate.getTime()); String date = formatter.format(currentDate.getTime());
try { try {
statement = plugin.c.createStatement(); 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');"); 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) { catch(SQLException error) {
error.printStackTrace(); error.printStackTrace();
} }
} }
for(Alias a : aa.getAliases()) { for(Alias a : aa.getAliases()) {
if(message.toLowerCase().substring(1).split(" ")[0].equals(a.getName().toLowerCase())) { if(message.toLowerCase().substring(1).split(" ")[0].equals(a.getName().toLowerCase())) {
for(String s : a.getComponents()) { for(String s : a.getComponents()) {
if(!mcp.getPlayer().hasPermission(a.getPermission()) && a.hasPermission()) { if(!mcp.getPlayer().hasPermission(a.getPermission()) && a.hasPermission()) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have permission for this alias."); mcp.getPlayer().sendMessage(ChatColor.RED + "You do not have permission for this alias.");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
int num = 1; int num = 1;
if(message.length() < a.getName().length() + 2 || a.getArguments() == 0) num = 0; if(message.length() < a.getName().length() + 2 || a.getArguments() == 0) num = 0;
int arg = 0; int arg = 0;
if(message.substring(a.getName().length() + 1 + num).length() == 0) arg = 1; if(message.substring(a.getName().length() + 1 + num).length() == 0) arg = 1;
String[] args = message.substring(a.getName().length() + 1 + num).split(" "); String[] args = message.substring(a.getName().length() + 1 + num).split(" ");
String send = ""; String send = "";
if(args.length - arg < a.getArguments()) { if(args.length - arg < a.getArguments()) {
String keyword = "arguments."; String keyword = "arguments.";
if(a.getArguments() == 1) keyword = "argument."; if(a.getArguments() == 1) keyword = "argument.";
mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid arguments for this alias, enter at least " + a.getArguments() + " " + keyword); mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid arguments for this alias, enter at least " + a.getArguments() + " " + keyword);
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
for(int b = 0; b < args.length; b++) { for(int b = 0; b < args.length; b++) {
send += " " + args[b]; send += " " + args[b];
} }
if(send.length() > 0) send = send.substring(1); if(send.length() > 0) send = send.substring(1);
s = Format.FormatStringAll(s); s = Format.FormatStringAll(s);
if(mcp.getPlayer().hasPermission("venturechat.color")) send = Format.FormatStringColor(send); if(mcp.getPlayer().hasPermission("venturechat.color")) send = Format.FormatStringColor(send);
if(mcp.getPlayer().hasPermission("venturechat.format")) send = Format.FormatString(send); if(mcp.getPlayer().hasPermission("venturechat.format")) send = Format.FormatString(send);
if(s.startsWith("Command:")) { if(s.startsWith("Command:")) {
mcp.getPlayer().chat(s.substring(9).replace("$", send)); mcp.getPlayer().chat(s.substring(9).replace("$", send));
event.setCancelled(true); event.setCancelled(true);
} }
if(s.startsWith("Message:")) { if(s.startsWith("Message:")) {
mcp.getPlayer().sendMessage(s.substring(9).replace("$", send)); mcp.getPlayer().sendMessage(s.substring(9).replace("$", send));
event.setCancelled(true); event.setCancelled(true);
} }
if(s.startsWith("Broadcast:")) { if(s.startsWith("Broadcast:")) {
plugin.getServer().broadcastMessage(s.substring(11).replace("$", send)); plugin.getServer().broadcastMessage(s.substring(11).replace("$", send));
event.setCancelled(true); event.setCancelled(true);
} }
} }
} }
} }
if(!plugin.quickchat) { if(!plugin.quickchat) {
for(ChatChannel channel : cc.getChannelsInfo()) { for(ChatChannel channel : cc.getChannelsInfo()) {
if(!channel.hasPermission() || mcp.getPlayer().hasPermission(channel.getPermission())) { if(!channel.hasPermission() || mcp.getPlayer().hasPermission(channel.getPermission())) {
if(message.equals("/" + channel.getAlias())) { if(message.equals("/" + channel.getAlias())) {
mcp.getPlayer().sendMessage("Channel Set: " + ChatColor.valueOf(channel.getColor().toUpperCase()) + "[" + channel.getName() + "]"); mcp.getPlayer().sendMessage("Channel Set: " + ChatColor.valueOf(channel.getColor().toUpperCase()) + "[" + channel.getName() + "]");
if(mcp.hasConversation()) { if(mcp.hasConversation()) {
for(MineverseChatPlayer p : MineverseChat.onlinePlayers) { for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
if(p.isSpy()) { if(p.isSpy()) {
p.getPlayer().sendMessage(mcp.getName() + " is no longer in a private conversation with " + MineverseChatAPI.getMineverseChatPlayer(mcp.getConversation()).getName() + "."); 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.getPlayer().sendMessage("You are no longer in private conversation with " + MineverseChatAPI.getMineverseChatPlayer(mcp.getConversation()).getName() + ".");
mcp.setConversation(null); mcp.setConversation(null);
} }
mcp.addListening(channel.getName()); mcp.addListening(channel.getName());
mcp.setCurrentChannel(channel); mcp.setCurrentChannel(channel);
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if(message.toLowerCase().startsWith("/" + channel.getAlias() + " ")) { if(message.toLowerCase().startsWith("/" + channel.getAlias() + " ")) {
message = message.substring(channel.getAlias().length() + 1); message = message.substring(channel.getAlias().length() + 1);
mcp.addListening(channel.getName()); mcp.addListening(channel.getName());
mcp.setQuickChannel(channel); mcp.setQuickChannel(channel);
String format = ""; String format = "";
if(plugin.getConfig().getConfigurationSection("channels." + channel.getName()).getString("format").equalsIgnoreCase("Default")) { 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")); 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 { else {
format = FormatTags.ChatFormat(plugin.getConfig().getConfigurationSection("channels." + channel.getName()).getString("format"), mcp.getPlayer(), plugin, cc, channel, plugin.getConfig().getBoolean("jsonFormat")); 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)) { if(plugin.getConfig().getBoolean("formatcleaner", false)) {
format = format.replace("[]", " "); format = format.replace("[]", " ");
format = format.replace(" ", " ").replace(" ", " ").replace(" ", " "); format = format.replace(" ", " ").replace(" ", " ").replace(" ", " ");
} }
} }
mcp.setQuickChat(true); mcp.setQuickChat(true);
mcp.getPlayer().chat(message); mcp.getPlayer().chat(message);
event.setCancelled(true); event.setCancelled(true);
} }
} }
} }
} }
} }
@EventHandler //old 1.8 command map
public void onServerCommand(ServerCommandEvent event) { @EventHandler
if(plugin.irc && bot.bot.isConnected() && !event.getCommand().equalsIgnoreCase("say ") && event.getCommand().toLowerCase().startsWith("say ")) { public void onServerCommand(ServerCommandEvent event) {
bot.bot.getUserChannelDao().getChannel(bot.channel).send().message("[Server] " + event.getCommand().substring(4)); 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; if(plugin.mysql) {
Calendar currentDate = Calendar.getInstance(); Statement statement;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar currentDate = Calendar.getInstance();
String date = formatter.format(currentDate.getTime()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try { String date = formatter.format(currentDate.getTime());
statement = plugin.c.createStatement(); try {
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');"); 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(); catch(SQLException error) {
} error.printStackTrace();
} }
} }
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { @Override
if(!(sender instanceof Player)) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
plugin.getServer().getConsoleSender().sendMessage(ChatColor.RED + "This command must be run by a player."); if(!(sender instanceof Player)) {
return true; 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()) { MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer((Player) sender);
if(command.getName().toLowerCase().equals(channel.getAlias())) { for(ChatChannel channel : cc.getChannelsInfo()) {
if(args.length == 0) { if(command.getName().toLowerCase().equals(channel.getAlias())) {
mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid command: /" + channel.getAlias() + " message"); if(args.length == 0) {
return true; mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid command: /" + channel.getAlias() + " message");
} return true;
mcp.setQuickChat(true); }
mcp.setQuickChannel(channel); mcp.setQuickChat(true);
mcp.addListening(channel.getName()); mcp.setQuickChannel(channel);
String msg = ""; mcp.addListening(channel.getName());
for(int x = 0; x < args.length; x++) { String msg = "";
if(args[x].length() > 0) msg += " " + args[x]; for(int x = 0; x < args.length; x++) {
} if(args[x].length() > 0) msg += " " + args[x];
mcp.getPlayer().chat(msg); }
return true; mcp.getPlayer().chat(msg);
} return true;
} }
return false; }
} return false;
}
@EventHandler(priority = EventPriority.LOW)
public void InventoryClick(InventoryClickEvent e) { @EventHandler(priority = EventPriority.LOW)
ItemStack item = e.getCurrentItem(); public void InventoryClick(InventoryClickEvent e) {
if(item == null || !e.getInventory().getTitle().contains("VentureChat")) { ItemStack item = e.getCurrentItem();
return; if(item == null || !e.getInventory().getTitle().contains("VentureChat")) {
} return;
e.setCancelled(true); }
MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) e.getWhoClicked()); e.setCancelled(true);
MineverseChatPlayer target = MineverseChatAPI.getMineverseChatPlayer(e.getInventory().getTitle().replace(" GUI", "").replace("VentureChat: ", "")); MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) e.getWhoClicked());
ItemStack skull = e.getInventory().getItem(0); MineverseChatPlayer target = MineverseChatAPI.getMineverseChatPlayer(e.getInventory().getTitle().replace(" GUI", "").replace("VentureChat: ", ""));
SkullMeta skullMeta = (SkullMeta) skull.getItemMeta(); ItemStack skull = e.getInventory().getItem(0);
ChatChannel channel = MineverseChat.ccInfo.getChannelInfo(ChatColor.stripColor(skullMeta.getLore().get(0)).replace("Channel: ", "")); SkullMeta skullMeta = (SkullMeta) skull.getItemMeta();
int hash = Integer.parseInt(ChatColor.stripColor(skullMeta.getLore().get(1).replace("Hash: ", ""))); ChatChannel channel = MineverseChat.ccInfo.getChannelInfo(ChatColor.stripColor(skullMeta.getLore().get(0)).replace("Channel: ", ""));
if(item.getType() == Material.BARRIER) { int hash = Integer.parseInt(ChatColor.stripColor(skullMeta.getLore().get(1).replace("Hash: ", "")));
mcp.getPlayer().closeInventory(); 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()) { for(GuiSlot g : MineverseChat.gsInfo.getGuiSlots()) {
String command = g.getCommand().replace("{channel}", channel.getName()).replace("{hash}", hash + "").replace("{player_name}", target.getName()); if(g.getIcon() == item.getType() && g.getDurability() == item.getDurability() && g.getSlot() == e.getSlot()) {
if(target.isOnline()) { String command = g.getCommand().replace("{channel}", channel.getName()).replace("{hash}", hash + "").replace("{player_name}", target.getName());
command = PlaceholderAPI.setBracketPlaceholders(target.getPlayer(), command); if(target.isOnline()) {
} command = PlaceholderAPI.setBracketPlaceholders(target.getPlayer(), command);
mcp.getPlayer().chat(command); }
} mcp.getPlayer().chat(command);
} }
} }
}
} }

View File

@ -1,147 +1,152 @@
package mineverse.Aust1n46.chat.listeners; package mineverse.Aust1n46.chat.listeners;
import java.util.Iterator; import java.util.Iterator;
import org.json.simple.JSONArray; import org.json.simple.JSONArray;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.JSONValue; import org.json.simple.JSONValue;
import mineverse.Aust1n46.chat.ChatMessage; import mineverse.Aust1n46.chat.ChatMessage;
import mineverse.Aust1n46.chat.MineverseChat; import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI; import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.versions.VersionHandler; import mineverse.Aust1n46.chat.versions.VersionHandler;
import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer; import net.md_5.bungee.chat.ComponentSerializer;
import com.comphenix.protocol.PacketType; import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.ListenerPriority; import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.reflect.StructureModifier; import com.comphenix.protocol.reflect.StructureModifier;
import com.comphenix.protocol.wrappers.WrappedChatComponent; import com.comphenix.protocol.wrappers.WrappedChatComponent;
import me.clip.placeholderapi.PlaceholderAPI; import me.clip.placeholderapi.PlaceholderAPI;
//This class listens for chat packets and intercepts them before they are sent to the Player. //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 //The packets are modified to include advanced json formating and the message remover button if the
//player has permission to remove messages. //player has permission to remove messages.
public class PacketListener extends PacketAdapter { public class PacketListener extends PacketAdapter {
public PacketListener(MineverseChat plugin) { public PacketListener(MineverseChat plugin) {
super(plugin, ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT }); super(plugin, ListenerPriority.MONITOR, new PacketType[] { PacketType.Play.Server.CHAT });
this.plugin = plugin; this.plugin = plugin;
} }
@Override @Override
public void onPacketSending(PacketEvent event) { public void onPacketSending(PacketEvent event) {
if(event.isCancelled() || event.getPacketType() != PacketType.Play.Server.CHAT) { if(event.isCancelled() || event.getPacketType() != PacketType.Play.Server.CHAT) {
return; return;
} }
StructureModifier<WrappedChatComponent> chatP = event.getPacket().getChatComponents(); StructureModifier<WrappedChatComponent> chatP = event.getPacket().getChatComponents();
WrappedChatComponent c = chatP.read(0); WrappedChatComponent c = chatP.read(0);
if (c == null) { if (c == null) {
StructureModifier<BaseComponent[]> modifier = event.getPacket().getSpecificModifier(BaseComponent[].class); StructureModifier<BaseComponent[]> modifier = event.getPacket().getSpecificModifier(BaseComponent[].class);
BaseComponent[] components = modifier.readSafely(0); BaseComponent[] components = modifier.readSafely(0);
if (components == null) { if (components == null) {
return; return;
} }
String msg = ComponentSerializer.toString(components); String msg = ComponentSerializer.toString(components);
if (msg == null) { if (msg == null) {
return; return;
} }
if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) { if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) {
return; return;
} }
msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg); msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg);
modifier.write(0, ComponentSerializer.parse(msg)); modifier.write(0, ComponentSerializer.parse(msg));
return; return;
} }
String msg = c.getJson(); String msg = c.getJson();
if (msg == null) { if (msg == null) {
return; return;
} }
if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) { if (!PlaceholderAPI.getBracketPlaceholderPattern().matcher(msg).find()) {
return; return;
} }
msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg); msg = PlaceholderAPI.setBracketPlaceholders(event.getPlayer(), msg);
chatP.write(0, WrappedChatComponent.fromJson(msg)); chatP.write(0, WrappedChatComponent.fromJson(msg));
try { try {
if(VersionHandler.is1_7_10() || VersionHandler.is1_7_9() || VersionHandler.is1_7_2()) { if(VersionHandler.is1_7_10() || VersionHandler.is1_7_9() || VersionHandler.is1_7_2()) {
if((MineverseChat.posField != null) && !(((boolean) MineverseChat.posField.get(event.getPacket().getHandle())))) { if((MineverseChat.posField != null) && !(((boolean) MineverseChat.posField.get(event.getPacket().getHandle())))) {
return; return;
} }
} }
if(VersionHandler.is1_8()) { else if(VersionHandler.is1_8()) {
if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) { if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) {
return; return;
} }
} }
if(VersionHandler.is1_9() || VersionHandler.is1_10()) { else if(VersionHandler.is1_9() || VersionHandler.is1_10() || VersionHandler.is1_11()){
if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) { if((MineverseChat.posField != null) && (((Byte) MineverseChat.posField.get(event.getPacket().getHandle())).intValue() > 1)) {
return; return;
} }
} }
} else {
catch(IllegalArgumentException | IllegalAccessException e) { if((MineverseChat.posField != null) && ((Object) MineverseChat.posField.get(event.getPacket().getHandle())) == MineverseChat.chatMessageType.getEnumConstants()[2]) {
e.printStackTrace(); return;
} }
WrappedChatComponent chat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0); }
WrappedChatComponent originalChat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0); }
String message = null; catch(IllegalArgumentException | IllegalAccessException e) {
int hash = -1; e.printStackTrace();
try { }
//System.out.println(chat.getJson()); WrappedChatComponent chat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
//message = TextComponent.toPlainText(new TextComponent(chat.getJson())); WrappedChatComponent originalChat = (WrappedChatComponent) event.getPacket().getChatComponents().read(0);
message = (String) MineverseChat.messageMethod.invoke(chat.getHandle(), new Object[0]); String message = null;
//System.out.println(MineverseChat.lastChatMessage.getMessage()); int hash = -1;
hash = message != null ? message.hashCode() : -1; try {
} //System.out.println(chat.getJson());
catch(Exception ex) { //message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
message = TextComponent.toPlainText(new TextComponent(chat.getJson())); message = (String) MineverseChat.messageMethod.invoke(chat.getHandle(), new Object[0]);
System.out.println(message); //System.out.println(MineverseChat.lastChatMessage.getMessage());
//ex.printStackTrace(); hash = message != null ? message.hashCode() : -1;
} }
ChatMessage lastChatMessage = MineverseChat.lastChatMessage; catch(Exception ex) {
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); message = TextComponent.toPlainText(new TextComponent(chat.getJson()));
if(lastChatMessage != null && lastChatMessage.getHash() == hash) { System.out.println(message);
String json = MineverseChat.lastJson; //ex.printStackTrace();
/*if(mcp.getPlayer().hasPermission("venturechat.message.remove")) { }
json = json.substring(0, json.length() - 1); ChatMessage lastChatMessage = MineverseChat.lastChatMessage;
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")) + "\"}}}]"; MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
} if(lastChatMessage != null && lastChatMessage.getHash() == hash) {
if(!mcp.getButtons()) { String json = MineverseChat.lastJson;
for(JsonButton j : MineverseChat.jbInfo.getJsonButtons()) { /*if(mcp.getPlayer().hasPermission("venturechat.message.remove")) {
if(j.hasPermission() && mcp.getPlayer().hasPermission(j.getPermission())) { json = json.substring(0, json.length() - 1);
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")) + "\"}}}]";
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.getButtons()) {
} for(JsonButton j : MineverseChat.jbInfo.getJsonButtons()) {
}*/ if(j.hasPermission() && mcp.getPlayer().hasPermission(j.getPermission())) {
if(mcp.getPlayer().hasPermission("venturechat.gui")) { json = json.substring(0, json.length() - 1);
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()) + "\"}}}]";
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); if(mcp.getPlayer().hasPermission("venturechat.gui")) {
event.getPacket().getChatComponents().write(0, chat); 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"))) + "]}}") + "]}]";
if((message != null) && (chat.getHandle() != null) && mcp != null) { }
mcp.addMessage(new ChatMessage(originalChat, chat, lastChatMessage != null ? lastChatMessage.getSender() : null, message, hash)); //System.out.println(json);
} chat.setJson(json);
} event.getPacket().getChatComponents().write(0, chat);
}
@SuppressWarnings("unused") if((message != null) && (chat.getHandle() != null) && mcp != null) {
private String getMessage(String json) { mcp.addMessage(new ChatMessage(originalChat, chat, lastChatMessage != null ? lastChatMessage.getSender() : null, message, hash));
JSONArray components = (JSONArray) ((JSONObject) JSONValue.parse(json)).get("extra"); }
Iterator<?> iterator = components.iterator(); }
StringBuilder builder = new StringBuilder();
while(iterator.hasNext()) { @SuppressWarnings("unused")
builder.append(((JSONObject) iterator.next()).get("text").toString()); private String getMessage(String json) {
} JSONArray components = (JSONArray) ((JSONObject) JSONValue.parse(json)).get("extra");
return builder.toString(); Iterator<?> iterator = components.iterator();
} StringBuilder builder = new StringBuilder();
while(iterator.hasNext()) {
builder.append(((JSONObject) iterator.next()).get("text").toString());
}
return builder.toString();
}
} }

View File

@ -1,63 +1,71 @@
package mineverse.Aust1n46.chat.versions; package mineverse.Aust1n46.chat.versions;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
//This class contains methods for determining what version of Minecraft the server is running. //This class contains methods for determining what version of Minecraft the server is running.
public class VersionHandler { public class VersionHandler {
public static boolean is1_2_5() { public static boolean is1_2_5() {
return Bukkit.getVersion().contains("1.2.5"); return Bukkit.getVersion().contains("1.2.5");
} }
public static boolean is1_3_2() { public static boolean is1_3_2() {
return Bukkit.getVersion().contains("1.3.2"); return Bukkit.getVersion().contains("1.3.2");
} }
public static boolean is1_4_7() { public static boolean is1_4_7() {
return Bukkit.getVersion().contains("1.4.7"); return Bukkit.getVersion().contains("1.4.7");
} }
public static boolean is1_5_2() { public static boolean is1_5_2() {
return Bukkit.getVersion().contains("1.5.2"); return Bukkit.getVersion().contains("1.5.2");
} }
public static boolean is1_6_2() { public static boolean is1_6_2() {
return Bukkit.getVersion().contains("1.6.2"); return Bukkit.getVersion().contains("1.6.2");
} }
public static boolean is1_6_4() { public static boolean is1_6_4() {
return Bukkit.getVersion().contains("1.6.4"); return Bukkit.getVersion().contains("1.6.4");
} }
public static boolean is1_7_2() { public static boolean is1_7_2() {
return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R1"); return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R1");
} }
public static boolean is1_7_9() { public static boolean is1_7_9() {
return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R3"); return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R3");
} }
public static boolean is1_7_10() { public static boolean is1_7_10() {
return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R4"); return Bukkit.getVersion().contains("1.7") && Bukkit.getServer().getClass().getPackage().getName().contains("R4");
} }
public static boolean is1_8() { public static boolean is1_8() {
return Bukkit.getVersion().contains("1.8"); return Bukkit.getVersion().contains("1.8");
} }
public static boolean is1_9() { public static boolean is1_9() {
return Bukkit.getVersion().contains("1.9"); return Bukkit.getVersion().contains("1.9");
} }
public static boolean is1_10() { public static boolean is1_10() {
return Bukkit.getVersion().contains("1.10"); return Bukkit.getVersion().contains("1.10");
} }
public static boolean isCauldron() { public static boolean is1_11() {
return false; return Bukkit.getVersion().contains("1.11");
} }
public static boolean matchesVersion(String s) { public static boolean is1_12() {
return Bukkit.getVersion().contains(s) || Bukkit.getServer().getClass().getPackage().getName().contains(s); 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);
}
} }

View File

@ -1,227 +1,227 @@
name: VentureChat name: VentureChat
version: 2.11.1 version: 2.12.0
main: mineverse.Aust1n46.chat.MineverseChat main: mineverse.Aust1n46.chat.MineverseChat
depend: [Vault, ProtocolLib, PlaceholderAPI] depend: [Vault, ProtocolLib, PlaceholderAPI]
softdepend: [Towny, Factions, Heroes] softdepend: [Towny, Factions, Heroes]
Author: Aust1n46 Author: Aust1n46
description: Chat with channels with many features! description: Chat with channels with many features!
commands: commands:
mute: mute:
usage: /mute [playername] [channel] usage: /mute [playername] [channel]
aliases: [mp,vmute] aliases: [mp,vmute]
description: Mutes player in a channel so they cannot talk. description: Mutes player in a channel so they cannot talk.
permission-message: You don't have <permission> permission-message: You don't have <permission>
unmute: unmute:
usage: /unmute [playername] [channel] usage: /unmute [playername] [channel]
aliases: [ump,vunmute] aliases: [ump,vunmute]
description: Unmutes player in a channel so they can talk again. description: Unmutes player in a channel so they can talk again.
permission-message: You don't have <permission> permission-message: You don't have <permission>
tell: tell:
usage: /tell [playername] [msg] usage: /tell [playername] [msg]
aliases: [vtell] aliases: [vtell]
description: Send a message to a player description: Send a message to a player
permission-message: You don't have <permission> permission-message: You don't have <permission>
ignore: ignore:
usage: /ignore [playername] or /ignore ? for more information usage: /ignore [playername] or /ignore ? for more information
aliases: [vignore] aliases: [vignore]
description: This allows you to prevent a player from sending you a tell /ignore list to see who you have ignored 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 <permission> permission-message: You don't have <permission>
whisper: whisper:
usage: /whisper [playername] [msg] usage: /whisper [playername] [msg]
aliases: [w,vwhisper] aliases: [w,vwhisper]
description: Send a message to a player description: Send a message to a player
permission-message: You don't have <permission> permission-message: You don't have <permission>
channel: channel:
usage: /channel [channelname] usage: /channel [channelname]
aliases: [ch,vchannel] aliases: [ch,vchannel]
description: Allows players to add the ability to listen to the channel description: Allows players to add the ability to listen to the channel
permission-message: You don't have <permission> permission-message: You don't have <permission>
leave: leave:
usage: /leave [channelname] usage: /leave [channelname]
aliases: [lev,vleave] aliases: [lev,vleave]
description: Allows players to leave listening to a channel description: Allows players to leave listening to a channel
permission-message: You don't have <permission> permission-message: You don't have <permission>
join: join:
usage: /join [channelname] usage: /join [channelname]
aliases: [vjoin] aliases: [vjoin]
description: Allows players to join a channel description: Allows players to join a channel
permission-message: You don't have <permission> permission-message: You don't have <permission>
chlist: chlist:
usage: /chlist usage: /chlist
aliases: [chl,vchlist] aliases: [chl,vchlist]
description: Allows players to see a listing of available channels description: Allows players to see a listing of available channels
permission-message: You don't have <permission> permission-message: You don't have <permission>
chwho: chwho:
usage: /chwho [channelname] usage: /chwho [channelname]
aliases: [chw,vchwho] aliases: [chw,vchwho]
description: Allows players to see a listing of who is listening on a channel description: Allows players to see a listing of who is listening on a channel
permission-message: You don't have <permission> permission-message: You don't have <permission>
setchannel: setchannel:
usage: /setchannel [playername] [channel] usage: /setchannel [playername] [channel]
aliases: [sc,vsetchannel] aliases: [sc,vsetchannel]
description: Sets a players channel description: Sets a players channel
permission-message: You don't have <permission> permission-message: You don't have <permission>
kickchannel: kickchannel:
usage: /kickchannel [playername] [channel] usage: /kickchannel [playername] [channel]
aliases: [kc,vkickchannel] aliases: [kc,vkickchannel]
description: Kicks a player out of a channel description: Kicks a player out of a channel
permission-message: You don't have <permission> permission-message: You don't have <permission>
message: message:
usage: /message [playername] [msg] usage: /message [playername] [msg]
aliases: [msg,pm,vmessage] aliases: [msg,pm,vmessage]
description: Send a message to a player description: Send a message to a player
muteall: muteall:
usage: /muteall [playername] usage: /muteall [playername]
aliases: [mpa,vmuteall] aliases: [mpa,vmuteall]
description: Mute a player in all channels description: Mute a player in all channels
permission-message: You don't have <permission> permission-message: You don't have <permission>
unmuteall: unmuteall:
usage: /unmuteall [playername] usage: /unmuteall [playername]
aliases: [umpa,vunmuteall] aliases: [umpa,vunmuteall]
description: Unmute a player in all channels description: Unmute a player in all channels
permission-message: You don't have <permission> permission-message: You don't have <permission>
kickchannelall: kickchannelall:
usage: /kickchannelall [playername] usage: /kickchannelall [playername]
aliases: [kca,vkickchannelall] aliases: [kca,vkickchannelall]
description: Kick a player from all channels description: Kick a player from all channels
permission-message: You don't have <permission> permission-message: You don't have <permission>
setchannelall: setchannelall:
usage: /setchannelall [playername] usage: /setchannelall [playername]
aliases: [sca,vsetchannelall] aliases: [sca,vsetchannelall]
description: Set a player into all channels description: Set a player into all channels
permission-message: You don't have <permission> permission-message: You don't have <permission>
force: force:
usage: /force [playername] [message] usage: /force [playername] [message]
aliases: [for,vforce] aliases: [for,vforce]
description: Force a player to chat or execute a command description: Force a player to chat or execute a command
permission-message: You don't have <permission> permission-message: You don't have <permission>
forceall: forceall:
usage: /forceall [message] usage: /forceall [message]
aliases: [fora,vforceall] aliases: [fora,vforceall]
description: Force all players to chat or execute a command description: Force all players to chat or execute a command
permission-message: You don't have <permission> permission-message: You don't have <permission>
listen: listen:
usage: /listen [channel] usage: /listen [channel]
aliases: [lis,vlisten] aliases: [lis,vlisten]
description: Listen to a channel without setting it as the one your chatting in description: Listen to a channel without setting it as the one your chatting in
permission-message: You don't have <permission> permission-message: You don't have <permission>
chatreload: chatreload:
usage: /chatreload usage: /chatreload
aliases: [cr,vchatreload] aliases: [cr,vchatreload]
description: Reload the config file description: Reload the config file
permission-message: You don't have <permission> permission-message: You don't have <permission>
afk: afk:
usage: /afk usage: /afk
aliases: [vafk] aliases: [vafk]
description: Set yourself as afk description: Set yourself as afk
permission-message: You don't have <permission> permission-message: You don't have <permission>
reply: reply:
usage: /reply [msg] usage: /reply [msg]
aliases: [r,vreply] aliases: [r,vreply]
description: Reply to a message description: Reply to a message
permission-message: You don't have <permission> permission-message: You don't have <permission>
spy: spy:
usage: /spy usage: /spy
aliases: [vspy] aliases: [vspy]
description: Spy on tells description: Spy on tells
permission-message: You don't have <permission> permission-message: You don't have <permission>
commandspy: commandspy:
usage: /commandspy usage: /commandspy
aliases: [comspy,vcommandspy] aliases: [comspy,vcommandspy]
description: Spy on commands description: Spy on commands
permission-message: You don't have <permission> permission-message: You don't have <permission>
chatinfo: chatinfo:
usage: /chatinfo usage: /chatinfo
aliases: [ci,vchatinfo] aliases: [ci,vchatinfo]
description: Check a players chat info description: Check a players chat info
permission-message: You don't have <permission> permission-message: You don't have <permission>
channelinfo: channelinfo:
usage: /channelinfo usage: /channelinfo
aliases: [chi,vchannelinfo] aliases: [chi,vchannelinfo]
description: Check a channels info description: Check a channels info
permission-message: You don't have <permission> permission-message: You don't have <permission>
venturechat: venturechat:
usage: /venturechat usage: /venturechat
aliases: [vc] aliases: [vc]
description: Check plugin information description: Check plugin information
permission-message: You don't have <permission> permission-message: You don't have <permission>
me: me:
usage: /me usage: /me
aliases: [vme] aliases: [vme]
description: Send an emote description: Send an emote
permission-message: You don't have <permission> permission-message: You don't have <permission>
filter: filter:
usage: /filter usage: /filter
aliases: [fil,vfilter] aliases: [fil,vfilter]
description: Toggle filter on and off description: Toggle filter on and off
permission-message: You don't have <permission> permission-message: You don't have <permission>
broadcast: broadcast:
usage: /broadcast [msg] usage: /broadcast [msg]
aliases: [bc,vbroadcast] aliases: [bc,vbroadcast]
description: Broadcast a message description: Broadcast a message
permission-message: You don't have <permission> permission-message: You don't have <permission>
commandblock: commandblock:
usage: /commandblock [player] [command] usage: /commandblock [player] [command]
aliases: [cb,vcommandblock] aliases: [cb,vcommandblock]
description: Toggle a player blocked from entering a command description: Toggle a player blocked from entering a command
permission-message: You don't have <permission> permission-message: You don't have <permission>
nick: nick:
usage: /nick {player} [nickname] usage: /nick {player} [nickname]
aliases: [vnick] aliases: [vnick]
description: Set a players nickname description: Set a players nickname
permission-message: You don't have <permission> permission-message: You don't have <permission>
party: party:
usage: /party help usage: /party help
aliases: [p,chatparty,cp,vparty] aliases: [p,chatparty,cp,vparty]
description: Party commands description: Party commands
permission-message: You don't have <permission> permission-message: You don't have <permission>
config: config:
usage: /config help usage: /config help
aliases: [vconfig] aliases: [vconfig]
description: Edit commands description: Edit commands
permission-message: You don't have <permission> permission-message: You don't have <permission>
clearchat: clearchat:
usage: /clearchat usage: /clearchat
aliases: [cc,vclearchat] aliases: [cc,vclearchat]
description: Clear every players chat description: Clear every players chat
permission-message: You don't have <permission> permission-message: You don't have <permission>
notifications: notifications:
usage: /notifications usage: /notifications
aliases: [notify,vnotify] aliases: [notify,vnotify]
description: Toggles your notifications description: Toggles your notifications
permission-message: You don't have <permission> permission-message: You don't have <permission>
mail: mail:
usage: /mail help usage: /mail help
aliases: [vmail] aliases: [vmail]
description: Mail commands description: Mail commands
permission-message: You don't have <permission> permission-message: You don't have <permission>
removemessage: removemessage:
usage: /removemessage [hashcode] usage: /removemessage [hashcode]
aliases: [rm,vremovemessage] aliases: [rm,vremovemessage]
description: Remove a message from the chat description: Remove a message from the chat
permission-message: You don't have <permission> permission-message: You don't have <permission>
edit: edit:
usage: /<command> usage: /<command>
aliases: [vedit] aliases: [vedit]
description: Edit your last chat message description: Edit your last chat message
permission-message: You don't have <permission> permission-message: You don't have <permission>
rangedspy: rangedspy:
usage: /<command> usage: /<command>
aliases: [rspy,vrangedspy] aliases: [rspy,vrangedspy]
description: Toggle spying on ranged channels description: Toggle spying on ranged channels
permission-message: You don't have <permission> permission-message: You don't have <permission>
buttons: buttons:
usage: /<command> usage: /<command>
aliases: [vbuttons] aliases: [vbuttons]
description: Toggle viewing json buttons description: Toggle viewing json buttons
permission-message: You don't have <permission> permission-message: You don't have <permission>
venturechatgui: venturechatgui:
usage: /<command> usage: /<command>
aliases: [vchatgui] aliases: [vchatgui]
description: Opens the chat management gui description: Opens the chat management gui
permission-message: You don't have <permission> permission-message: You don't have <permission>
messagetoggle: messagetoggle:
usage: /<command> usage: /<command>
aliases: [mtoggle,vmessagetoggle] aliases: [mtoggle,vmessagetoggle]
description: Toggle receiving messages description: Toggle receiving messages
permission-message: You don't have <permission> permission-message: You don't have <permission>