mirror of
https://github.com/Aust1n46/VentureChat.git
synced 2025-05-22 18:09:06 +00:00
Fix message remover tested against 1.20.4
This commit is contained in:
parent
05762e0bc7
commit
63e3b7d7b9
8
pom.xml
8
pom.xml
@ -5,7 +5,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>mineverse.Aust1n46.chat</groupId>
|
||||
<artifactId>VentureChat</artifactId>
|
||||
<version>3.7.1</version>
|
||||
<version>3.7.2</version>
|
||||
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>
|
||||
<scm>
|
||||
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>
|
||||
@ -221,6 +221,12 @@
|
||||
<version>1.20-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.22</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
@ -10,11 +10,11 @@ public class ChatMessage {
|
||||
private String coloredMessage;
|
||||
private int hash;
|
||||
|
||||
public ChatMessage(WrappedChatComponent component, String message, String coloredMessage, int hash) {
|
||||
public ChatMessage(WrappedChatComponent component, String message, String coloredMessage) {
|
||||
this.component = component;
|
||||
this.message = message;
|
||||
this.coloredMessage = coloredMessage;
|
||||
this.hash = hash;
|
||||
this.hash = message.hashCode();
|
||||
}
|
||||
|
||||
public WrappedChatComponent getComponent() {
|
||||
|
@ -23,6 +23,7 @@ import org.bukkit.plugin.messaging.PluginMessageListener;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.ProtocolManager;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
@ -43,6 +44,7 @@ import mineverse.Aust1n46.chat.listeners.ChatListener;
|
||||
import mineverse.Aust1n46.chat.listeners.CommandListener;
|
||||
import mineverse.Aust1n46.chat.listeners.LoginListener;
|
||||
import mineverse.Aust1n46.chat.listeners.PacketListenerLegacyChat;
|
||||
import mineverse.Aust1n46.chat.listeners.PacketListenerSystemChat;
|
||||
import mineverse.Aust1n46.chat.listeners.SignListener;
|
||||
import mineverse.Aust1n46.chat.localization.Localization;
|
||||
import mineverse.Aust1n46.chat.localization.LocalizedMessage;
|
||||
@ -212,14 +214,17 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
|
||||
}
|
||||
|
||||
private void registerListeners() {
|
||||
PluginManager pluginManager = getServer().getPluginManager();
|
||||
final PluginManager pluginManager = getServer().getPluginManager();
|
||||
pluginManager.registerEvents(new Channel(), this);
|
||||
pluginManager.registerEvents(new ChatListener(), this);
|
||||
pluginManager.registerEvents(new SignListener(), this);
|
||||
pluginManager.registerEvents(new CommandListener(), this);
|
||||
pluginManager.registerEvents(new LoginListener(), this);
|
||||
final ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
|
||||
if (VersionHandler.isUnder_1_19()) {
|
||||
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketListenerLegacyChat());
|
||||
protocolManager.addPacketListener(new PacketListenerLegacyChat());
|
||||
} else {
|
||||
protocolManager.addPacketListener(new PacketListenerSystemChat());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
@ -46,7 +47,7 @@ public class MineverseChatPlayer {
|
||||
private boolean partyChat;
|
||||
private HashMap<ChatChannel, List<Long>> spam;
|
||||
private boolean modified;
|
||||
private List<ChatMessage> messages;
|
||||
private LinkedList<ChatMessage> messages;
|
||||
private String jsonFormat;
|
||||
private boolean editing;
|
||||
private int editHash;
|
||||
@ -83,7 +84,7 @@ public class MineverseChatPlayer {
|
||||
this.replyPlayer = null;
|
||||
this.partyChat = false;
|
||||
this.modified = false;
|
||||
this.messages = new ArrayList<ChatMessage>();
|
||||
this.messages = new LinkedList<ChatMessage>();
|
||||
this.jsonFormat = jsonFormat;
|
||||
this.cooldowns = new HashMap<ChatChannel, Long>();
|
||||
this.spam = new HashMap<ChatChannel, List<Long>>();
|
||||
@ -116,7 +117,7 @@ public class MineverseChatPlayer {
|
||||
this.replyPlayer = null;
|
||||
this.partyChat = false;
|
||||
this.modified = false;
|
||||
this.messages = new ArrayList<ChatMessage>();
|
||||
this.messages = new LinkedList<ChatMessage>();
|
||||
this.jsonFormat = "Default";
|
||||
this.cooldowns = new HashMap<ChatChannel, Long>();
|
||||
this.spam = new HashMap<ChatChannel, List<Long>>();
|
||||
@ -522,9 +523,9 @@ public class MineverseChatPlayer {
|
||||
|
||||
public void addMessage(ChatMessage message) {
|
||||
if(this.messages.size() >= 100) {
|
||||
this.messages.remove(0);
|
||||
this.messages.removeFirst();
|
||||
}
|
||||
this.messages.add(message);
|
||||
this.messages.addLast(message);
|
||||
}
|
||||
|
||||
public void clearMessages() {
|
||||
|
@ -3,7 +3,6 @@ package mineverse.Aust1n46.chat.command.chat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
@ -20,6 +19,7 @@ import mineverse.Aust1n46.chat.api.MineverseChatAPI;
|
||||
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
|
||||
import mineverse.Aust1n46.chat.channel.ChatChannel;
|
||||
import mineverse.Aust1n46.chat.gui.GuiSlot;
|
||||
import mineverse.Aust1n46.chat.gui.ModerationGuiInventory;
|
||||
import mineverse.Aust1n46.chat.localization.LocalizedMessage;
|
||||
import mineverse.Aust1n46.chat.utilities.Format;
|
||||
import mineverse.Aust1n46.chat.versions.VersionHandler;
|
||||
@ -34,7 +34,7 @@ public class VentureChatGui extends Command {
|
||||
@Override
|
||||
public boolean execute(CommandSender sender, String command, String[] args) {
|
||||
if (!(sender instanceof Player)) {
|
||||
Bukkit.getServer().getConsoleSender().sendMessage(LocalizedMessage.COMMAND_MUST_BE_RUN_BY_PLAYER.toString());
|
||||
plugin.getServer().getConsoleSender().sendMessage(LocalizedMessage.COMMAND_MUST_BE_RUN_BY_PLAYER.toString());
|
||||
return true;
|
||||
}
|
||||
if (args.length < 3) {
|
||||
@ -73,40 +73,33 @@ public class VentureChatGui extends Command {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private void openInventory(MineverseChatPlayer mcp, MineverseChatPlayer target, ChatChannel channel, int hash) {
|
||||
Inventory inv = Bukkit.createInventory(null, this.getSlots(), "VentureChat: " + target.getName() + " GUI");
|
||||
ItemStack close = null;
|
||||
ItemStack skull = null;
|
||||
final Inventory inv = plugin.getServer().createInventory(new ModerationGuiInventory(mcp, channel, hash), this.getSlots(), "VentureChat: " + target.getName() + " GUI");
|
||||
final ItemStack close;
|
||||
if (VersionHandler.is1_7()) {
|
||||
close = new ItemStack(Material.BEDROCK);
|
||||
} else {
|
||||
close = new ItemStack(Material.BARRIER);
|
||||
}
|
||||
ItemMeta closeMeta = close.getItemMeta();
|
||||
closeMeta.setDisplayName(ChatColor.RED + "" + ChatColor.ITALIC + "Close GUI");
|
||||
close.setItemMeta(closeMeta);
|
||||
|
||||
final ItemStack skull;
|
||||
if (VersionHandler.is1_7() || VersionHandler.is1_8() || VersionHandler.is1_9() || VersionHandler.is1_10() || VersionHandler.is1_11() || VersionHandler.is1_12()) {
|
||||
skull = new ItemStack(Material.getMaterial("SKULL_ITEM"));
|
||||
} else {
|
||||
skull = new ItemStack(Material.PLAYER_HEAD);
|
||||
}
|
||||
|
||||
ItemMeta closeMeta = close.getItemMeta();
|
||||
closeMeta.setDisplayName(ChatColor.RED + "" + ChatColor.ITALIC + "Close GUI");
|
||||
close.setItemMeta(closeMeta);
|
||||
|
||||
SkullMeta skullMeta = (SkullMeta) skull.getItemMeta();
|
||||
skullMeta.setOwner(target.getName());
|
||||
skullMeta.setOwningPlayer(plugin.getServer().getOfflinePlayer(target.getUUID()));
|
||||
skullMeta.setDisplayName(ChatColor.AQUA + target.getName());
|
||||
List<String> skullLore = new ArrayList<String>();
|
||||
skullLore.add(ChatColor.GRAY + "Channel: " + channel.getColor() + channel.getName());
|
||||
skullLore.add(ChatColor.GRAY + "Hash: " + channel.getColor() + hash);
|
||||
skullMeta.setLore(skullLore);
|
||||
skull.setItemMeta(skullMeta);
|
||||
skull.setDurability((short) 3);
|
||||
inv.setItem(0, skull);
|
||||
|
||||
for (GuiSlot g : GuiSlot.getGuiSlots()) {
|
||||
|
||||
for (final GuiSlot g : GuiSlot.getGuiSlots()) {
|
||||
if (!g.hasPermission() || mcp.getPlayer().hasPermission(g.getPermission())) {
|
||||
if (this.checkSlot(g.getSlot())) {
|
||||
MineverseChat.getInstance().getServer().getConsoleSender()
|
||||
plugin.getServer().getConsoleSender()
|
||||
.sendMessage(Format.FormatStringAll("&cGUI: " + g.getName() + " has invalid slot: " + g.getSlot() + "!"));
|
||||
continue;
|
||||
}
|
||||
@ -125,13 +118,14 @@ public class VentureChatGui extends Command {
|
||||
}
|
||||
}
|
||||
|
||||
inv.setItem(0, skull);
|
||||
inv.setItem(8, close);
|
||||
mcp.getPlayer().openInventory(inv);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private void openInventoryDiscord(MineverseChatPlayer mcp, ChatChannel channel, int hash) {
|
||||
Inventory inv = Bukkit.createInventory(null, this.getSlots(), "VentureChat: Discord_Message GUI");
|
||||
Inventory inv = plugin.getServer().createInventory(null, this.getSlots(), "VentureChat: Discord_Message GUI");
|
||||
ItemStack close = null;
|
||||
ItemStack skull = null;
|
||||
if (VersionHandler.is1_7()) {
|
||||
@ -164,7 +158,7 @@ public class VentureChatGui extends Command {
|
||||
for (GuiSlot g : GuiSlot.getGuiSlots()) {
|
||||
if (!g.hasPermission() || mcp.getPlayer().hasPermission(g.getPermission())) {
|
||||
if (this.checkSlot(g.getSlot())) {
|
||||
MineverseChat.getInstance().getServer().getConsoleSender()
|
||||
plugin.getServer().getConsoleSender()
|
||||
.sendMessage(Format.FormatStringAll("&cGUI: " + g.getName() + " has invalid slot: " + g.getSlot() + "!"));
|
||||
continue;
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
package mineverse.Aust1n46.chat.gui;
|
||||
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
|
||||
import mineverse.Aust1n46.chat.channel.ChatChannel;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
public class ModerationGuiInventory implements InventoryHolder {
|
||||
private MineverseChatPlayer targetMcp;
|
||||
private ChatChannel channel;
|
||||
private int hash;
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -13,10 +13,10 @@ 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.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import mineverse.Aust1n46.chat.MineverseChat;
|
||||
import mineverse.Aust1n46.chat.alias.Alias;
|
||||
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
|
||||
@ -24,6 +24,7 @@ import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
|
||||
import mineverse.Aust1n46.chat.channel.ChatChannel;
|
||||
import mineverse.Aust1n46.chat.database.Database;
|
||||
import mineverse.Aust1n46.chat.gui.GuiSlot;
|
||||
import mineverse.Aust1n46.chat.gui.ModerationGuiInventory;
|
||||
import mineverse.Aust1n46.chat.localization.LocalizedMessage;
|
||||
import mineverse.Aust1n46.chat.utilities.Format;
|
||||
import mineverse.Aust1n46.chat.versions.VersionHandler;
|
||||
@ -137,19 +138,22 @@ public class CommandListener implements Listener {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void InventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
if (item == null || !e.getView().getTitle().contains("VentureChat")) {
|
||||
public void InventoryClick(final InventoryClickEvent event) {
|
||||
final Inventory inventory = event.getInventory();
|
||||
final InventoryHolder inventoryHolder = inventory.getHolder(false);
|
||||
if (!(inventoryHolder instanceof ModerationGuiInventory)) {
|
||||
return;
|
||||
}
|
||||
event.setCancelled(true);
|
||||
final ModerationGuiInventory moderationGuiInventory = (ModerationGuiInventory) inventoryHolder;
|
||||
final MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) event.getWhoClicked());
|
||||
final MineverseChatPlayer target = moderationGuiInventory.getTargetMcp();
|
||||
final ChatChannel channel = moderationGuiInventory.getChannel();
|
||||
final int hash = moderationGuiInventory.getHash();
|
||||
final ItemStack item = event.getCurrentItem();
|
||||
if (item == null) {
|
||||
return;
|
||||
}
|
||||
e.setCancelled(true);
|
||||
MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) e.getWhoClicked());
|
||||
String playerName = e.getView().getTitle().replace(" GUI", "").replace("VentureChat: ", "");
|
||||
MineverseChatPlayer target = MineverseChatAPI.getMineverseChatPlayer(playerName);
|
||||
ItemStack skull = e.getInventory().getItem(0);
|
||||
SkullMeta skullMeta = (SkullMeta) skull.getItemMeta();
|
||||
ChatChannel channel = ChatChannel.getChannel(ChatColor.stripColor(skullMeta.getLore().get(0)).replace("Channel: ", ""));
|
||||
int hash = Integer.parseInt(ChatColor.stripColor(skullMeta.getLore().get(1).replace("Hash: ", "")));
|
||||
if (VersionHandler.is1_7()) {
|
||||
if (item.getType() == Material.BEDROCK) {
|
||||
mcp.getPlayer().closeInventory();
|
||||
@ -159,14 +163,11 @@ public class CommandListener implements Listener {
|
||||
mcp.getPlayer().closeInventory();
|
||||
}
|
||||
}
|
||||
for (GuiSlot g : GuiSlot.getGuiSlots()) {
|
||||
if (g.getIcon() == item.getType() && g.getDurability() == item.getDurability() && g.getSlot() == e.getSlot()) {
|
||||
for (final GuiSlot g : GuiSlot.getGuiSlots()) {
|
||||
if (g.getIcon() == item.getType() && g.getDurability() == item.getDurability() && g.getSlot() == event.getSlot()) {
|
||||
String command = g.getCommand().replace("{channel}", channel.getName()).replace("{hash}", hash + "");
|
||||
if (target != null) {
|
||||
command = command.replace("{player_name}", target.getName());
|
||||
if (target.isOnline()) {
|
||||
command = Format.FormatStringAll(PlaceholderAPI.setBracketPlaceholders(target.getPlayer(), command));
|
||||
}
|
||||
} else {
|
||||
command = command.replace("{player_name}", "Discord_Message");
|
||||
}
|
||||
|
@ -62,7 +62,6 @@ public class PacketListenerLegacyChat extends PacketAdapter {
|
||||
if(message == null) {
|
||||
return;
|
||||
}
|
||||
int hash = message.hashCode();
|
||||
mcp.addMessage(new ChatMessage(chat, message, coloredMessage, hash));
|
||||
mcp.addMessage(new ChatMessage(chat, message, coloredMessage));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,41 @@
|
||||
package mineverse.Aust1n46.chat.listeners;
|
||||
|
||||
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.wrappers.WrappedChatComponent;
|
||||
|
||||
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;
|
||||
|
||||
public class PacketListenerSystemChat extends PacketAdapter {
|
||||
public PacketListenerSystemChat() {
|
||||
super(MineverseChat.getInstance(), ListenerPriority.MONITOR, PacketType.Play.Server.SYSTEM_CHAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPacketSending(final PacketEvent event) {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
final MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer(event.getPlayer());
|
||||
if (mcp == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final WrappedChatComponent chat = event.getPacket().getChatComponents().read(0);
|
||||
if (chat == null) {
|
||||
return;
|
||||
}
|
||||
final String message = Format.toPlainText(chat.getHandle(), chat.getHandleType());
|
||||
final String coloredMessage = Format.toColoredText(chat.getHandle(), chat.getHandleType());
|
||||
if (message == null) {
|
||||
return;
|
||||
}
|
||||
mcp.addMessage(new ChatMessage(chat, message, coloredMessage));
|
||||
}
|
||||
}
|
@ -523,6 +523,9 @@ public class Format {
|
||||
public static String toColoredText(Object o, Class<?> c) {
|
||||
if (VersionHandler.is1_7()) {
|
||||
return "\"extra\":[{\"text\":\"Hover to see original message is not currently supported in 1.7\",\"color\":\"red\"}]";
|
||||
}
|
||||
if (VersionHandler.isAbove_1_19()) {
|
||||
return "\"extra\":[{\"text\":\"Hover to see original message is not currently supported in 1.19+\",\"color\":\"red\"}]";
|
||||
}
|
||||
List<Object> finalList = new ArrayList<>();
|
||||
StringBuilder stringbuilder = new StringBuilder();
|
||||
@ -636,8 +639,7 @@ public class Format {
|
||||
finalList.add(component);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else if (VersionHandler.is1_18() || VersionHandler.is1_19()){
|
||||
ArrayList<?> list = (ArrayList<?>) c.getMethod("b").invoke(o, new Object[0]);
|
||||
for (Object component : list) {
|
||||
ArrayList<?> innerList = (ArrayList<?>) c.getMethod("b").invoke(component, new Object[0]);
|
||||
@ -647,6 +649,8 @@ public class Format {
|
||||
finalList.add(component);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
((List<?>) c.getMethod("h").invoke(o)).forEach(finalList::add);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user