diff --git a/src/main/java/me/dadus33/chatitem/ChatItem.java b/src/main/java/me/dadus33/chatitem/ChatItem.java index a2e306ac..cf18c745 100644 --- a/src/main/java/me/dadus33/chatitem/ChatItem.java +++ b/src/main/java/me/dadus33/chatitem/ChatItem.java @@ -9,7 +9,6 @@ import java.util.StringJoiner; import java.util.concurrent.CompletableFuture; -import org.bukkit.ChatColor; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.PluginCommand; @@ -34,7 +33,11 @@ import me.dadus33.chatitem.listeners.InventoryListener; import me.dadus33.chatitem.listeners.JoinListener; import me.dadus33.chatitem.listeners.TranslationInventoryListener; +import me.dadus33.chatitem.platform.IPlatform; +import me.dadus33.chatitem.platform.hook.PaperPlatform; +import me.dadus33.chatitem.platform.hook.SpigotPlatform; import me.dadus33.chatitem.playernamer.PlayerNamerManager; +import me.dadus33.chatitem.utils.Colors; import me.dadus33.chatitem.utils.PacketUtils; import me.dadus33.chatitem.utils.ReflectionUtils; import me.dadus33.chatitem.utils.SemVer; @@ -43,6 +46,10 @@ public class ChatItem extends JavaPlugin { + private static final IPlatform platform = PacketUtils.IS_PAPER ? new PaperPlatform() : new SpigotPlatform(); + public static IPlatform getPlatform() { + return platform; + } public final static int CFG_VER = 13; public static boolean discordSrvSupport = false, hasNewVersion = false; private static ChatItem instance; @@ -64,7 +71,7 @@ public static void reload(CommandSender sender) { if (!pl.storage.messageReload.isEmpty()) sender.sendMessage(pl.storage.messageReload); if (!oldChatManager.equalsIgnoreCase(pl.storage.manager)) - sender.sendMessage(ChatColor.GOLD + "Changing the manager with command reloading CAN produce issue. It's mostly suggested to restart after finding the better manager for you."); + sender.sendMessage(Colors.GOLD + "Changing the manager with command reloading CAN produce issue. It's mostly suggested to restart after finding the better manager for you."); } } @@ -198,12 +205,12 @@ public void onEnable() { String content = Utils.getFromURL(urlName); if (Strings.isNullOrEmpty(content)) return; - SemVer currentVersion = SemVer.parse(getDescription().getVersion()); + SemVer currentVersion = SemVer.parse(getPlatform().getPluginVersion(this)); if (currentVersion == null) return; SemVer latestVersion = SemVer.parse(content); if (latestVersion != null && latestVersion.isNewerThan(currentVersion)) { - hasNewVersion = !content.equalsIgnoreCase(getDescription().getVersion()); + hasNewVersion = !content.equalsIgnoreCase(getPlatform().getPluginVersion(this)); if (hasNewVersion) getLogger().info(storage.updateMessage); } diff --git a/src/main/java/me/dadus33/chatitem/Storage.java b/src/main/java/me/dadus33/chatitem/Storage.java index 76caf43f..2ead9652 100644 --- a/src/main/java/me/dadus33/chatitem/Storage.java +++ b/src/main/java/me/dadus33/chatitem/Storage.java @@ -3,9 +3,10 @@ import java.util.List; import java.util.stream.Collectors; -import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; +import me.dadus33.chatitem.utils.Colors; + public class Storage { public String handName, nameFormat, amountFormat, commandFormat, manager, permissionName, buggedClientAction, language; @@ -63,7 +64,7 @@ public Storage(FileConfiguration cnf) { } public static String color(String s) { - return s == null || s.isEmpty() ? s : ChatColor.translateAlternateColorCodes('&', s); + return s == null || s.isEmpty() ? s : Colors.translateAlternateColorCodes('&', s); } private static void colorStringList(List input) { @@ -76,10 +77,10 @@ private void checkConfigVersion() { int latestVersion = ChatItem.CFG_VER; if (latestVersion != configVersion) { ChatItem pl = ChatItem.getInstance(); - pl.getLogger().warning(ChatColor.RED + "ChatItem detected an older or invalid configuration file. Replacing it with the default config..."); + pl.getLogger().warning("ChatItem detected an older or invalid configuration file. Replacing it with the default config..."); performOverwrite(); conf = pl.getConfig(); - pl.getLogger().warning(ChatColor.RED + "Replacement complete!"); + pl.getLogger().warning("Replacement complete!"); } } diff --git a/src/main/java/me/dadus33/chatitem/Translation.java b/src/main/java/me/dadus33/chatitem/Translation.java index 0790b523..ec173837 100644 --- a/src/main/java/me/dadus33/chatitem/Translation.java +++ b/src/main/java/me/dadus33/chatitem/Translation.java @@ -14,6 +14,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.inventory.ItemStack; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -53,6 +54,11 @@ public static JsonObject getMessages() { return messages; } + public static String getMessage(String key) { + JsonElement result = messages.get(key); + return result == null ? "" : result.getAsString(); + } + public static void loadLang(String lang) { ChatItem pl = ChatItem.getInstance(); File langFile = new File(folder, lang + ".json"); diff --git a/src/main/java/me/dadus33/chatitem/chatmanager/ChatManager.java b/src/main/java/me/dadus33/chatitem/chatmanager/ChatManager.java index 2ebffe13..e1546aab 100644 --- a/src/main/java/me/dadus33/chatitem/chatmanager/ChatManager.java +++ b/src/main/java/me/dadus33/chatitem/chatmanager/ChatManager.java @@ -8,7 +8,6 @@ import javax.annotation.Nullable; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.block.ShulkerBox; import org.bukkit.entity.Player; @@ -26,10 +25,12 @@ import me.dadus33.chatitem.invsee.hook.EnderChestShower; import me.dadus33.chatitem.invsee.hook.PlayerInventoryShower; import me.dadus33.chatitem.itemnamer.NamerManager; +import me.dadus33.chatitem.utils.Colors; import me.dadus33.chatitem.utils.ItemUtils; import me.dadus33.chatitem.utils.Utils; import me.dadus33.chatitem.utils.Version; +@SuppressWarnings("deprecation") public abstract class ChatManager { public static String inTest = null; @@ -155,7 +156,7 @@ public static List getMaxLinesFromItem(Player p, ItemStack item) { lines.add(meta.hasDisplayName() ? meta.getDisplayName() : NamerManager.getName(p, item, ChatItem.getInstance().getStorage())); if (meta.hasEnchants()) { meta.getEnchants().forEach((enchant, lvl) -> { - lines.add(ChatColor.RESET + Utils.getEnchantName(enchant) + " " + Utils.toRoman(lvl)); + lines.add(Colors.RESET + Utils.getEnchantName(enchant) + " " + Utils.toRoman(lvl)); }); } if (meta.hasLore()) @@ -206,7 +207,7 @@ public static String getNameOfItem(Player p, ItemStack item, Storage c) { if (c.handDisabled) return ItemSlot.HAND.getPlaceholders().get(0); else - return c.handName.replace("{name}", p.getName()).replace("{display-name}", p.getDisplayName()); + return getHandName(p); } return styleItem(p, item, c); } @@ -218,12 +219,16 @@ public static String getNameForChatAction(Player p, ChatAction action, Storage c if (c.handDisabled) return ItemSlot.HAND.getPlaceholders().get(0); else - return c.handName.replace("{name}", p.getName()).replace("{display-name}", p.getDisplayName()); + return getHandName(p); } return styleItem(p, item, c); } return ""; } + + public static String getHandName(Player p) { + return ChatItem.getInstance().getStorage().handName.replace("{name}", p.getName()).replace("{display-name}", p.getDisplayName()); + } public static String calculateTime(long seconds) { Storage c = ChatItem.getInstance().getStorage(); diff --git a/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/IComponentManager.java b/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/IComponentManager.java index f124a811..44c174c9 100644 --- a/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/IComponentManager.java +++ b/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/IComponentManager.java @@ -58,7 +58,7 @@ default Object manageItem(Player p, Chat chat, ChatItemPacket packet, ItemStack } default Object manageEmpty(Player p, Chat chat, ChatItemPacket packet, String json, Storage c) { - String message = JSONManipulator.getInstance().parseEmpty(json, c.handName, c.tooltipHand, chat.getPlayer()); + String message = JSONManipulator.getInstance().parseEmpty(json, ChatManager.getHandName(p), c.tooltipHand, chat.getPlayer()); if (message != null) { ChatItem.debug("(v1) Writing empty message: " + message); writeJson(packet, message); diff --git a/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/AdventureComponentManager.java b/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/AdventureComponentManager.java index a3b30fb6..a0cbfcce 100644 --- a/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/AdventureComponentManager.java +++ b/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/AdventureComponentManager.java @@ -88,11 +88,9 @@ public Object manageItem(Player p, Chat chat, ChatItemPacket packet, ItemStack i public Object manageEmpty(Player p, Chat chat, ChatItemPacket packet, String json, Storage c) { Component builder = Component.text(""); c.tooltipHand.forEach(s -> builder.append(Component.text(s))); - Player sender = chat.getPlayer(); ChatAction action = chat.getAction(); if (action.isItem()) { - String handName = c.handName.replace("{name}", sender.getName()).replace("{display-name}", sender.getDisplayName()); - return manage(p, chat, packet, handName, HoverEvent.showText(builder), null); + return manage(p, chat, packet, ChatManager.getHandName(p), HoverEvent.showText(builder), null); } return manage(p, chat, packet, Messages.getMessage(action.getSlot().name().toLowerCase() + ".chat", "%cible%", chat.getPlayer().getName()), HoverEvent.showText(Component.text(Messages.getMessage(action.getSlot().name().toLowerCase() + ".hover", "%cible%", chat.getPlayer().getName()))), diff --git a/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/StringComponentManager.java b/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/StringComponentManager.java index d2e00ee6..3b6071e9 100644 --- a/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/StringComponentManager.java +++ b/src/main/java/me/dadus33/chatitem/chatmanager/v1/basecomp/hook/StringComponentManager.java @@ -78,14 +78,13 @@ public Object manageItem(Player p, Chat chat, ChatItemPacket packet, ItemStack i public Object manageEmpty(Player p, Chat chat, ChatItemPacket packet, String json, Storage c) { ComponentBuilder builder = new ComponentBuilder(""); c.tooltipHand.forEach(s -> builder.append(s)); - Player sender = chat.getPlayer(); HoverEvent hover; ClickEvent click; String rep; ChatAction action = chat.getAction(); if (action.isItem()) { hover = Utils.createTextHover(builder.create()); - rep = c.handName.replace("{name}", sender.getName()).replace("{display-name}", sender.getDisplayName()); + rep = ChatManager.getHandName(p); click = null; } else { hover = Utils.createTextHover(Messages.getMessage(action.getSlot().name().toLowerCase() + ".hover", "%cible%", chat.getPlayer().getName())); diff --git a/src/main/java/me/dadus33/chatitem/chatmanager/v1/json/JSONManipulator.java b/src/main/java/me/dadus33/chatitem/chatmanager/v1/json/JSONManipulator.java index d4a8796d..428159e0 100644 --- a/src/main/java/me/dadus33/chatitem/chatmanager/v1/json/JSONManipulator.java +++ b/src/main/java/me/dadus33/chatitem/chatmanager/v1/json/JSONManipulator.java @@ -102,6 +102,7 @@ else if (extraElement.isJsonObject()) return obj.toString(); } + @SuppressWarnings("deprecation") public String parseEmpty(String json, String repl, List tooltip, Player sender) { JsonObject obj = JsonParser.parseString(json).getAsJsonObject(); JsonArray array = obj.has("extra") ? obj.getAsJsonArray("extra") : new JsonArray(); diff --git a/src/main/java/me/dadus33/chatitem/chatmanager/v1/listeners/ChatPacketManager.java b/src/main/java/me/dadus33/chatitem/chatmanager/v1/listeners/ChatPacketManager.java index dd1990d7..183f59cd 100644 --- a/src/main/java/me/dadus33/chatitem/chatmanager/v1/listeners/ChatPacketManager.java +++ b/src/main/java/me/dadus33/chatitem/chatmanager/v1/listeners/ChatPacketManager.java @@ -75,6 +75,7 @@ private void tryRegister(IComponentManager getter) { ChatItem.debug("Component " + getter.getClass().getSimpleName() + " doesn't answer conditions"); } + @SuppressWarnings("deprecation") @Override public void onSend(ChatItemPacket e) { if (!e.hasPlayer() || !e.getPacketType().equals(PacketType.Server.CHAT)) diff --git a/src/main/java/me/dadus33/chatitem/chatmanager/v2/ChatListener.java b/src/main/java/me/dadus33/chatitem/chatmanager/v2/ChatListener.java index 4d67eda1..0314960a 100644 --- a/src/main/java/me/dadus33/chatitem/chatmanager/v2/ChatListener.java +++ b/src/main/java/me/dadus33/chatitem/chatmanager/v2/ChatListener.java @@ -36,6 +36,7 @@ import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.TextComponent; +@SuppressWarnings("deprecation") public class ChatListener implements Listener { private static Method saveMethod; diff --git a/src/main/java/me/dadus33/chatitem/commands/ChatItemCommand.java b/src/main/java/me/dadus33/chatitem/commands/ChatItemCommand.java index eefe7e27..784a35ec 100644 --- a/src/main/java/me/dadus33/chatitem/commands/ChatItemCommand.java +++ b/src/main/java/me/dadus33/chatitem/commands/ChatItemCommand.java @@ -6,7 +6,6 @@ import java.util.Locale; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -23,11 +22,13 @@ import me.dadus33.chatitem.chatmanager.v2.ChatListener; import me.dadus33.chatitem.invsee.InvShower; import me.dadus33.chatitem.listeners.InventoryListener; +import me.dadus33.chatitem.utils.Colors; import me.dadus33.chatitem.utils.Messages; import me.dadus33.chatitem.utils.Utils; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.TextComponent; +@SuppressWarnings("deprecation") public class ChatItemCommand implements CommandExecutor, TabExecutor { private static final List orders = Arrays.asList("packet", "chat", "both"); @@ -82,35 +83,35 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String p.spigot().sendMessage(text); } else if (args[0].equalsIgnoreCase("select") && p.hasPermission("chatitem.reload")) { if(args.length == 1) { - p.sendMessage(ChatColor.GRAY + "----------" + ChatColor.GOLD + " ChatItem - Setup " + ChatColor.GRAY + "----------"); - p.sendMessage(ChatColor.AQUA + "Welcome in the help of setup." + ChatColor.YELLOW + " Please follow step by simply answer to test."); + p.sendMessage(Colors.GRAY + "----------" + Colors.GOLD + " ChatItem - Setup " + Colors.GRAY + "----------"); + p.sendMessage(Colors.AQUA + "Welcome in the help of setup." + Colors.YELLOW + " Please follow step by simply answer to test."); sendCheckSelectMessage(p, orders.get(0)); } else { String tested = args[1]; if(!orders.contains(tested)) { - p.sendMessage(ChatColor.RED + "Unknow test for " + tested + "."); + p.sendMessage(Colors.RED + "Unknow test for " + tested + "."); return false; } if(args.length == 2) { - p.sendMessage(ChatColor.RED + "Can't find if it works"); + p.sendMessage(Colors.RED + "Can't find if it works"); return false; } if(args[2].equalsIgnoreCase("yes")) { ChatManager.setTesting(null); InventoryListener.setInConfig("manager", tested); - p.sendMessage(ChatColor.GREEN + "Perfect ! Updating config ..."); + p.sendMessage(Colors.GREEN + "Perfect ! Updating config ..."); ChatItem.reload(p); } else if(args[2].equalsIgnoreCase("no")) { int index = orders.indexOf(tested); if(orders.size() == (index + 1)) { - p.sendMessage(ChatColor.RED + "Sad. Sorry but nothing is available. I suggest you to come on discord for more help. Do '/chatitem link' for all links."); + p.sendMessage(Colors.RED + "Sad. Sorry but nothing is available. I suggest you to come on discord for more help. Do '/chatitem link' for all links."); ChatManager.setTesting(null); } else { - p.sendMessage(ChatColor.RED + "Sad. Checking for next manager ..."); + p.sendMessage(Colors.RED + "Sad. Checking for next manager ..."); sendCheckSelectMessage(p, orders.get(index + 1)); } } else { - p.sendMessage(ChatColor.RED + "Can't find if it works"); + p.sendMessage(Colors.RED + "Can't find if it works"); } } } else if (args[0].equalsIgnoreCase("seeinv")) { @@ -133,15 +134,15 @@ private void sendCheckSelectMessage(Player p, String testing) { p.chat("Checking for " + testing + ": [i]"); Bukkit.getScheduler().runTaskLater(ChatItem.getInstance(), () -> { - TextComponent text = new TextComponent(ChatColor.GOLD + "Did it worked fine? "); - TextComponent agree = new TextComponent(ChatColor.GREEN + "Yes"); + TextComponent text = new TextComponent(Colors.GOLD + "Did it worked fine? "); + TextComponent agree = new TextComponent(Colors.GREEN + "Yes"); agree.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/chatitem select " + testing + " yes")); - agree.setHoverEvent(Utils.createTextHover(ChatColor.GRAY + "Click to say it worked fine")); + agree.setHoverEvent(Utils.createTextHover(Colors.GRAY + "Click to say it worked fine")); text.addExtra(agree); text.addExtra(" "); - TextComponent decline = new TextComponent(ChatColor.RED + "No"); + TextComponent decline = new TextComponent(Colors.RED + "No"); decline.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/chatitem select " + testing + " no")); - decline.setHoverEvent(Utils.createTextHover(ChatColor.GRAY + "Click to say it's not working as expected")); + decline.setHoverEvent(Utils.createTextHover(Colors.GRAY + "Click to say it's not working as expected")); text.addExtra(decline); p.spigot().sendMessage(text); }, 2); diff --git a/src/main/java/me/dadus33/chatitem/hook/ecoenchants/EcoEnchantsSupport.java b/src/main/java/me/dadus33/chatitem/hook/ecoenchants/EcoEnchantsSupport.java index d0871146..bdc7abbf 100644 --- a/src/main/java/me/dadus33/chatitem/hook/ecoenchants/EcoEnchantsSupport.java +++ b/src/main/java/me/dadus33/chatitem/hook/ecoenchants/EcoEnchantsSupport.java @@ -18,7 +18,7 @@ public static boolean hasSupport() { } public static boolean load() { - String ver = Bukkit.getPluginManager().getPlugin("EcoEnchants").getDescription().getVersion(); + String ver = ChatItem.getPlatform().getPluginVersion(Bukkit.getPluginManager().getPlugin("EcoEnchants")); if(ver.startsWith("8.")) supportedVersion = 8; else if(ver.startsWith("10.")) @@ -34,6 +34,7 @@ else if(ver.startsWith("12.")) return true; } + @SuppressWarnings("deprecation") public static ItemStack manageItem(ItemStack item) { if(supportedVersion == 8) { List addLore = EcoEnchantsV8Support.getLores(item); diff --git a/src/main/java/me/dadus33/chatitem/invsee/hook/EnderChestShower.java b/src/main/java/me/dadus33/chatitem/invsee/hook/EnderChestShower.java index de822308..29cc97c9 100644 --- a/src/main/java/me/dadus33/chatitem/invsee/hook/EnderChestShower.java +++ b/src/main/java/me/dadus33/chatitem/invsee/hook/EnderChestShower.java @@ -1,10 +1,10 @@ package me.dadus33.chatitem.invsee.hook; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import me.dadus33.chatitem.ChatItem; import me.dadus33.chatitem.invsee.InvShower; import me.dadus33.chatitem.listeners.holder.CustomInventoryHolder; import me.dadus33.chatitem.utils.ItemUtils; @@ -26,7 +26,7 @@ public EnderChestShower(Player cible) { @Override public void open(Player p) { - Inventory inv = Bukkit.createInventory(new CustomInventoryHolder(), items.length, Messages.getMessage("enderchest.name", "%cible%", name)); + Inventory inv = ChatItem.getPlatform().createInventory(new CustomInventoryHolder(), items.length, Messages.getMessage("enderchest.name", "%cible%", name)); for(int i = 0; i < items.length; i++) inv.setItem(i, items[i]); diff --git a/src/main/java/me/dadus33/chatitem/invsee/hook/PlayerInventoryShower.java b/src/main/java/me/dadus33/chatitem/invsee/hook/PlayerInventoryShower.java index 9a589edd..adaaa685 100644 --- a/src/main/java/me/dadus33/chatitem/invsee/hook/PlayerInventoryShower.java +++ b/src/main/java/me/dadus33/chatitem/invsee/hook/PlayerInventoryShower.java @@ -2,12 +2,12 @@ import java.util.HashMap; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; +import me.dadus33.chatitem.ChatItem; import me.dadus33.chatitem.invsee.InvShower; import me.dadus33.chatitem.listeners.holder.CustomInventoryHolder; import me.dadus33.chatitem.utils.ItemUtils; @@ -34,10 +34,10 @@ public PlayerInventoryShower(Player cible) { @Override public void open(Player p) { - Inventory inv = Bukkit.createInventory(new CustomInventoryHolder(), 54, Messages.getMessage("inventory.name", "%cible%", name)); + Inventory inv = ChatItem.getPlatform().createInventory(new CustomInventoryHolder(), 54, Messages.getMessage("inventory.name", "%cible%", name)); for(int i = 0; i < 18; i++) - inv.setItem(i, ItemUtils.createItem(ItemUtils.getMaterialWithCompatibility("BROWN_STAINED_GLASS_PANE", "STAINED_GLASS_PANE"), "")); + inv.setItem(i, ItemUtils.ITEM_EMPTY_BROWN); inv.setItem(2, new ItemStack(ItemUtils.getMaterialWithCompatibility("EXPERIENCE_BOTTLE", "EXP_BOTTLE"), level == 0 ? 1 : (level >= 64 ? 64 : level))); diff --git a/src/main/java/me/dadus33/chatitem/itemnamer/hook/ItemDisplayNamer.java b/src/main/java/me/dadus33/chatitem/itemnamer/hook/ItemDisplayNamer.java index c3cd8707..8458efee 100644 --- a/src/main/java/me/dadus33/chatitem/itemnamer/hook/ItemDisplayNamer.java +++ b/src/main/java/me/dadus33/chatitem/itemnamer/hook/ItemDisplayNamer.java @@ -7,6 +7,7 @@ import me.dadus33.chatitem.Storage; import me.dadus33.chatitem.itemnamer.INamer; +@SuppressWarnings("deprecation") public class ItemDisplayNamer implements INamer { @Override diff --git a/src/main/java/me/dadus33/chatitem/listeners/InventoryListener.java b/src/main/java/me/dadus33/chatitem/listeners/InventoryListener.java index 4cbf469d..8c202b77 100644 --- a/src/main/java/me/dadus33/chatitem/listeners/InventoryListener.java +++ b/src/main/java/me/dadus33/chatitem/listeners/InventoryListener.java @@ -1,16 +1,7 @@ package me.dadus33.chatitem.listeners; -import me.dadus33.chatitem.ChatItem; -import me.dadus33.chatitem.Storage; -import me.dadus33.chatitem.Translation; -import me.dadus33.chatitem.listeners.holder.AdminHolder; -import me.dadus33.chatitem.listeners.holder.ChatItemHolder; -import me.dadus33.chatitem.listeners.holder.CustomInventoryHolder; -import me.dadus33.chatitem.utils.ItemUtils; -import me.dadus33.chatitem.utils.Messages; -import me.dadus33.chatitem.utils.PacketUtils; +import java.util.Arrays; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -21,9 +12,15 @@ import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; -import java.util.Arrays; - -import static me.dadus33.chatitem.utils.ItemUtils.createItem; +import me.dadus33.chatitem.ChatItem; +import me.dadus33.chatitem.Storage; +import me.dadus33.chatitem.Translation; +import me.dadus33.chatitem.listeners.holder.AdminHolder; +import me.dadus33.chatitem.listeners.holder.ChatItemHolder; +import me.dadus33.chatitem.listeners.holder.CustomInventoryHolder; +import me.dadus33.chatitem.utils.ItemUtils; +import me.dadus33.chatitem.utils.Messages; +import me.dadus33.chatitem.utils.PacketUtils; public class InventoryListener implements Listener { @@ -112,9 +109,9 @@ public static void setInConfig(String key, Object val) { public static void open(Player p) { AdminHolder holder = new AdminHolder(); Storage c = ChatItem.getInstance().getStorage(); - Inventory inv = Bukkit.createInventory(holder, 27, Messages.getMessage("admin-inv.name")); + Inventory inv = ChatItem.getPlatform().createInventory(holder, 27, Messages.getMessage("admin-inv.name")); for (int i = 0; i < inv.getSize(); i++) - inv.setItem(i, createItem(ItemUtils.WHITE_STAINED_GLASS, "-")); + inv.setItem(i, ChatItem.getPlatform().createItemStack(ItemUtils.WHITE_STAINED_GLASS, "-")); int slot = 0; for (String manager : Arrays.asList("all", "auto", "packet", "chat", "paper")) { @@ -133,26 +130,27 @@ public static void open(Player p) { inv.setItem(21, getAmountChangeItem(Material.IRON_DOOR, "limit-per-message", c.limit)); inv.setItem(22, getAmountChangeItem(Material.APPLE, "cooldown", c.cooldown)); inv.setItem(23, getBoolChangeItem(Material.BLAZE_ROD, "check-update", c.checkUpdate)); - inv.setItem(24, createItem(Material.BOOK, Messages.getMessage("admin-inv.language.name"), Messages.getMessage( - "admin-inv.language.lore", "%name%", Translation.getMessages().get("language.name").getAsString()))); + inv.setItem(24, ChatItem.getPlatform().createTranslatedItemStack(Material.BOOK, "admin-inv.language", "%name%", + Translation.getMessage("language.name"))); - inv.setItem(26, createItem(ItemUtils.MATERIAL_CLOSE, Messages.getMessage("admin-inv.close"))); + inv.setItem(26, ChatItem.getPlatform().createItemStack(ItemUtils.MATERIAL_CLOSE, + Messages.getMessage("admin-inv.close"))); p.openInventory(inv); } private static ItemStack getBoolChangeItem(Material type, String key, boolean b) { - return createItem(type, + return ChatItem.getPlatform().createItemStack(type, Messages.getMessage("admin-inv." + key, "%state%", Messages.getMessage(b ? "enabled" : "disabled")), Messages.getMessageList("admin-inv.bool-lore")); } private static ItemStack getAmountChangeItem(Material type, String key, int amount) { - return createItem(type, Messages.getMessage("admin-inv." + key, "%state%", amount), + return ChatItem.getPlatform().createItemStack(type, Messages.getMessage("admin-inv." + key, "%state%", amount), Messages.getMessageList("admin-inv.amount-lore")); } private static ItemStack getManagerItem(String manager, Object... placeholders) { - return createItem(Material.PAPER, Messages.getMessage("admin-inv.manager." + manager + ".name", placeholders), - Messages.getMessageList("admin-inv.manager." + manager + ".lore", placeholders)); + return ChatItem.getPlatform().createTranslatedItemStack(Material.PAPER, "admin-inv.manager." + manager, + placeholders); } } diff --git a/src/main/java/me/dadus33/chatitem/listeners/JoinListener.java b/src/main/java/me/dadus33/chatitem/listeners/JoinListener.java index 4c7c22f0..aeacd3e3 100644 --- a/src/main/java/me/dadus33/chatitem/listeners/JoinListener.java +++ b/src/main/java/me/dadus33/chatitem/listeners/JoinListener.java @@ -14,6 +14,7 @@ public class JoinListener implements Listener { + @SuppressWarnings("deprecation") @EventHandler public void onJoin(PlayerJoinEvent e) { Player p = e.getPlayer(); diff --git a/src/main/java/me/dadus33/chatitem/listeners/TranslationInventoryListener.java b/src/main/java/me/dadus33/chatitem/listeners/TranslationInventoryListener.java index 34d05e0d..a075ea3c 100644 --- a/src/main/java/me/dadus33/chatitem/listeners/TranslationInventoryListener.java +++ b/src/main/java/me/dadus33/chatitem/listeners/TranslationInventoryListener.java @@ -1,12 +1,8 @@ package me.dadus33.chatitem.listeners; -import static me.dadus33.chatitem.utils.ItemUtils.createItem; - import java.util.ArrayList; import java.util.List; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; @@ -21,6 +17,7 @@ import me.dadus33.chatitem.ChatItem; import me.dadus33.chatitem.Translation; import me.dadus33.chatitem.listeners.holder.TranslationHolder; +import me.dadus33.chatitem.utils.Colors; import me.dadus33.chatitem.utils.ItemUtils; import me.dadus33.chatitem.utils.Messages; @@ -55,7 +52,7 @@ else if(type.equals(Material.PAPER)) { pl.getConfig().set("general.language", lang); pl.saveConfig(); Translation.loadLang(lang); - p.sendMessage(ChatColor.GREEN + "Language changed to " + Translation.getMessages().get("language.name").getAsString()); + p.sendMessage(Colors.GREEN + "Language changed to " + Translation.getMessages().get("language.name").getAsString()); } } @@ -64,23 +61,23 @@ public static void open(Player p, int page) { int perPage = 45; List langs = new ArrayList<>(Translation.getAllLangs().keySet()); TranslationHolder holder = new TranslationHolder(page); - Inventory inv = Bukkit.createInventory(holder, 54, "Change language - " + ChatColor.GOLD + " Page " + (page + 1) + " / " + ((langs.size() / perPage) + 1)); + Inventory inv = ChatItem.getPlatform().createInventory(holder, 54, "Change language - " + Colors.GOLD + " Page " + (page + 1) + " / " + ((langs.size() / perPage) + 1)); for(int i = 0; i < 9; i ++) inv.setItem(i, new ItemStack(ItemUtils.GRAY_STAINED_GLASS_PANE)); - inv.setItem(0, createItem(Material.ARROW, ChatColor.GRAY + "Back")); + inv.setItem(0, ChatItem.getPlatform().createItemStack(Material.ARROW, Colors.GRAY + "Back")); if(page > 0) - inv.setItem(3, createItem(Material.ARROW, ChatColor.RED + "Previous page")); + inv.setItem(3, ChatItem.getPlatform().createItemStack(Material.ARROW, Colors.RED + "Previous page")); if(langs.size() > (perPage * (page + 1))) - inv.setItem(5, createItem(Material.ARROW, ChatColor.GREEN + "Next page")); + inv.setItem(5, ChatItem.getPlatform().createItemStack(Material.ARROW, Colors.GREEN + "Next page")); - inv.setItem(8, createItem(ItemUtils.MATERIAL_CLOSE, Messages.getMessage("admin-inv.close"))); + inv.setItem(8, ChatItem.getPlatform().createItemStack(ItemUtils.MATERIAL_CLOSE, Messages.getMessage("admin-inv.close"))); int slot = 9; for(int i = (page * perPage); i < langs.size() && (i < ((page + 1) * perPage)); i++) { String lang = langs.get(i); holder.langBySlot.put(slot, lang); - ItemStack item = createItem(Material.PAPER, ChatColor.GOLD + Translation.getAllLangs().get(lang), ChatColor.GRAY + "Clic to select this language"); + ItemStack item = ChatItem.getPlatform().createItemStack(Material.PAPER, Colors.GOLD + Translation.getAllLangs().get(lang), Colors.GRAY + "Clic to select this language"); if(lang.equalsIgnoreCase(ChatItem.getInstance().getStorage().language)) { item.addUnsafeEnchantment(Enchantment.DURABILITY, 1); ItemMeta meta = item.getItemMeta(); diff --git a/src/main/java/me/dadus33/chatitem/platform/IPlatform.java b/src/main/java/me/dadus33/chatitem/platform/IPlatform.java new file mode 100644 index 00000000..a5a0159f --- /dev/null +++ b/src/main/java/me/dadus33/chatitem/platform/IPlatform.java @@ -0,0 +1,31 @@ +package me.dadus33.chatitem.platform; + +import java.util.Arrays; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.Plugin; + +import me.dadus33.chatitem.utils.Messages; + +public interface IPlatform { + + Inventory createInventory(InventoryHolder holder, int slot, String name); + + ItemStack createItemStack(Material type, String name); + + default ItemStack createTranslatedItemStack(Material type, String key, Object... placeholders) { + return createItemStack(type, Messages.getMessage(key + ".name", placeholders), Messages.getMessageList(key + ".lore", placeholders)); + } + + default ItemStack createItemStack(Material type, String name, String... lore) { + return createItemStack(type, name, Arrays.asList(lore)); + } + + ItemStack createItemStack(Material type, String name, List lore); + + String getPluginVersion(Plugin plugin); +} diff --git a/src/main/java/me/dadus33/chatitem/platform/hook/PaperPlatform.java b/src/main/java/me/dadus33/chatitem/platform/hook/PaperPlatform.java new file mode 100644 index 00000000..8bc9f811 --- /dev/null +++ b/src/main/java/me/dadus33/chatitem/platform/hook/PaperPlatform.java @@ -0,0 +1,48 @@ +package me.dadus33.chatitem.platform.hook; + +import java.util.List; +import java.util.stream.Collectors; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.Plugin; + +import me.dadus33.chatitem.platform.IPlatform; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; + +public class PaperPlatform implements IPlatform { + + @Override + public Inventory createInventory(InventoryHolder holder, int slot, String name) { + return Bukkit.createInventory(holder, slot, Component.text(name)); + } + + @Override + public ItemStack createItemStack(Material type, String name) { + ItemStack item = new ItemStack(type); + ItemMeta meta = (ItemMeta) item.getItemMeta(); + meta.displayName(Component.text(name).color(NamedTextColor.WHITE)); + item.setItemMeta(meta); + return item; + } + + @Override + public ItemStack createItemStack(Material type, String name, List lore) { + ItemStack item = new ItemStack(type); + ItemMeta meta = (ItemMeta) item.getItemMeta(); + meta.displayName(Component.text(name).color(NamedTextColor.WHITE)); + meta.lore(lore.stream().map(Component::text).collect(Collectors.toList())); + item.setItemMeta(meta); + return item; + } + + @Override + public String getPluginVersion(Plugin plugin) { + return plugin.getPluginMeta().getVersion(); + } +} diff --git a/src/main/java/me/dadus33/chatitem/platform/hook/SpigotPlatform.java b/src/main/java/me/dadus33/chatitem/platform/hook/SpigotPlatform.java new file mode 100644 index 00000000..a6e3e2d0 --- /dev/null +++ b/src/main/java/me/dadus33/chatitem/platform/hook/SpigotPlatform.java @@ -0,0 +1,48 @@ +package me.dadus33.chatitem.platform.hook; + +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.Plugin; + +import me.dadus33.chatitem.platform.IPlatform; +import me.dadus33.chatitem.utils.Colors; + +@SuppressWarnings("deprecation") +public class SpigotPlatform implements IPlatform { + + @Override + public Inventory createInventory(InventoryHolder holder, int slot, String name) { + return Bukkit.createInventory(holder, slot, name); + } + + @Override + public ItemStack createItemStack(Material type, String name) { + ItemStack item = new ItemStack(type); + ItemMeta meta = (ItemMeta) item.getItemMeta(); + meta.setDisplayName(Colors.RESET + name); + item.setItemMeta(meta); + return item; + } + + @Override + public ItemStack createItemStack(Material type, String name, List lore) { + ItemStack item = new ItemStack(type); + ItemMeta meta = (ItemMeta) item.getItemMeta(); + meta.setDisplayName(Colors.RESET + name); + meta.setLore(lore); + item.setItemMeta(meta); + return item; + } + + @Override + public String getPluginVersion(Plugin plugin) { + return plugin.getDescription().getVersion(); + } + +} diff --git a/src/main/java/me/dadus33/chatitem/playernamer/PlayerNamerManager.java b/src/main/java/me/dadus33/chatitem/playernamer/PlayerNamerManager.java index d0b1fecd..6c1a4fc0 100644 --- a/src/main/java/me/dadus33/chatitem/playernamer/PlayerNamerManager.java +++ b/src/main/java/me/dadus33/chatitem/playernamer/PlayerNamerManager.java @@ -23,7 +23,7 @@ public static void load(ChatItem pl) { if (plugin != null) { - char majorVersion = plugin.getDescription().getVersion().charAt(0); + char majorVersion = ChatItem.getPlatform().getPluginVersion(plugin).charAt(0); if (majorVersion == '3') setPlayerNamer(new HexNicksV3PlayerNamer()); diff --git a/src/main/java/me/dadus33/chatitem/utils/ColorManager.java b/src/main/java/me/dadus33/chatitem/utils/ColorManager.java index 14bfd101..540bc2ce 100644 --- a/src/main/java/me/dadus33/chatitem/utils/ColorManager.java +++ b/src/main/java/me/dadus33/chatitem/utils/ColorManager.java @@ -8,6 +8,7 @@ public class ColorManager { + public static final char COLOR_CHAR = '§'; public static final List COLORS = Arrays.asList("4", "c", "6", "e", "2", "a", "b", "3", "1", "9", "d", "5", "f", "7", "8", "0"); public static boolean isHexColor(ChatColor c) { @@ -82,7 +83,7 @@ public static String fixColor(String message) { String colorCode = "", text = ""; boolean waiting = false; for (char args : message.toCharArray()) { - if (args == '§') { // begin of color + if (args == COLOR_CHAR) { // begin of color waiting = true; // waiting for color code } else if (waiting) { // if waiting for code and valid str // if it's hexademical value and with enough space for full color diff --git a/src/main/java/me/dadus33/chatitem/utils/Colors.java b/src/main/java/me/dadus33/chatitem/utils/Colors.java new file mode 100644 index 00000000..4f044dc7 --- /dev/null +++ b/src/main/java/me/dadus33/chatitem/utils/Colors.java @@ -0,0 +1,29 @@ +package me.dadus33.chatitem.utils; + +import org.jetbrains.annotations.NotNull; + +import com.google.common.base.Preconditions; + +public class Colors { + + public static final String YELLOW = ColorManager.COLOR_CHAR + "e"; + public static final String AQUA = ColorManager.COLOR_CHAR + "b"; + public static final String GOLD = ColorManager.COLOR_CHAR + "6"; + public static final String GRAY = ColorManager.COLOR_CHAR + "7"; + public static final String RED = ColorManager.COLOR_CHAR + "c"; + public static final String GREEN = ColorManager.COLOR_CHAR + "a"; + public static final String RESET = ColorManager.COLOR_CHAR + "r"; + + public static String translateAlternateColorCodes(char altColorChar, @NotNull String textToTranslate) { + Preconditions.checkArgument(textToTranslate != null, "Cannot translate null text"); + + char[] b = textToTranslate.toCharArray(); + for (int i = 0; i < b.length - 1; i++) { + if (b[i] == altColorChar && ColorManager.COLORS.contains(b[i + 1] + "")) { + b[i] = ColorManager.COLOR_CHAR; + b[i + 1] = Character.toLowerCase(b[i + 1]); + } + } + return new String(b); + } +} diff --git a/src/main/java/me/dadus33/chatitem/utils/ItemUtils.java b/src/main/java/me/dadus33/chatitem/utils/ItemUtils.java index 99ad4249..93c60cd5 100644 --- a/src/main/java/me/dadus33/chatitem/utils/ItemUtils.java +++ b/src/main/java/me/dadus33/chatitem/utils/ItemUtils.java @@ -1,15 +1,13 @@ package me.dadus33.chatitem.utils; -import java.util.Arrays; -import java.util.List; - import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import me.dadus33.chatitem.ChatItem; + public class ItemUtils { public static final Material MATERIAL_CLOSE = getMaterialWithCompatibility("BARRIER", "REDSTONE_BLOCK"); @@ -25,8 +23,11 @@ public class ItemUtils { public static final Material BIRCH_WOOD_STAIRS = getMaterialWithCompatibility("BIRCH_WOOD_STAIRS", "BIRCH_STAIRS"); // colored items - public static final Material GRAY_STAINED_GLASS_PANE = getMaterialWithCompatibility("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE"); - public static final Material WHITE_STAINED_GLASS = getMaterialWithCompatibility("STAINED_GLASS_PANE", "WHITE_STAINED_GLASS_PANE"); + public static final Material BROWN_STAINED_GLASS_PANE = getMaterialWithCompatibility("BROWN_STAINED_GLASS_PANE", "STAINED_GLASS_PANE"); + public static final Material GRAY_STAINED_GLASS_PANE = getMaterialWithCompatibility("GRAY_STAINED_GLASS_PANE", "STAINED_GLASS_PANE"); + public static final Material WHITE_STAINED_GLASS = getMaterialWithCompatibility("WHITE_STAINED_GLASS_PANE", "STAINED_GLASS_PANE"); + + public static final ItemStack ITEM_EMPTY_BROWN = ChatItem.getPlatform().createItemStack(BROWN_STAINED_GLASS_PANE, ""); public static Material getMaterialWithCompatibility(String... tempMat) { for(String s : tempMat) { @@ -40,42 +41,6 @@ public static Material getMaterialWithCompatibility(String... tempMat) { } return null; } - - public static ItemStack createItem(Material m, String name, String... lore) { - return createItem(m, name, 1, lore); - } - - public static ItemStack createItem(Material m, String name, int quantite, String... lore) { - ItemStack item = new ItemStack(m, quantite); - ItemMeta meta = (ItemMeta) item.getItemMeta(); - meta.setDisplayName(ChatColor.RESET + name); - meta.setLore(Arrays.asList(lore)); - item.setItemMeta(meta); - return item; - } - - public static ItemStack createItem(Material m, String name, List lore) { - return createItem(m, name, 1, lore); - } - - public static ItemStack createItem(Material m, String name, int quantite, List lore) { - ItemStack item = new ItemStack(m, quantite); - ItemMeta meta = (ItemMeta) item.getItemMeta(); - meta.setDisplayName(ChatColor.RESET + name); - meta.setLore(lore); - item.setItemMeta(meta); - return item; - } - - @SuppressWarnings("deprecation") - public static ItemStack createItem(Material m, String name, int amount, byte b, String... lore) { - ItemStack item = new ItemStack(m, amount, b); - ItemMeta meta = (ItemMeta) item.getItemMeta(); - meta.setDisplayName(ChatColor.RESET + name); - meta.setLore(Arrays.asList(lore)); - item.setItemMeta(meta); - return item; - } public static ItemStack hideAttributes(ItemStack stack) { if (Version.getVersion().isNewerThan(Version.V1_7)) { @@ -95,6 +60,7 @@ public static boolean isEmpty(ItemStack item) { return item == null || item.getType().equals(Material.AIR); } + @SuppressWarnings("deprecation") public static void stripData(ItemStack i) { if (i == null) { return; diff --git a/src/main/java/me/dadus33/chatitem/utils/Utils.java b/src/main/java/me/dadus33/chatitem/utils/Utils.java index 8b6cbdfa..4549523f 100644 --- a/src/main/java/me/dadus33/chatitem/utils/Utils.java +++ b/src/main/java/me/dadus33/chatitem/utils/Utils.java @@ -120,7 +120,7 @@ public static String getFromURL(String urlName) { connection.setUseCaches(true); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); - connection.setRequestProperty("User-Agent", "ChatItem " + pl.getDescription().getVersion()); + connection.setRequestProperty("User-Agent", "ChatItem"); connection.setDoOutput(true); connection.setRequestMethod("GET"); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));