From d77ee76ea79930998676d2a7c44dd9d29d4d4a2b Mon Sep 17 00:00:00 2001 From: Driftay Date: Thu, 7 Nov 2019 07:09:45 -0500 Subject: [PATCH] Blacklisted Names & Misc changes to setup for new revamp --- pom.xml | 19 +++ .../java/com/massivecraft/factions/Conf.java | 3 + .../massivecraft/factions/FactionsPlugin.java | 4 +- .../factions/cmd/chest/ChestLogsHandler.java | 123 ------------------ .../util/ClipPlaceholderAPIManager.java | 5 + .../factions/util/ItemBuilder.java | 97 ++++++++++++++ .../massivecraft/factions/util/MiscUtil.java | 7 + .../factions/util/RomanNumber.java | 31 +++++ .../util/serializable/InventoryUtils.java | 20 +++ .../factions/util/serializable/Item.java | 40 ++++++ .../massivecraft/factions/zcore/util/TL.java | 2 + 11 files changed, 225 insertions(+), 126 deletions(-) delete mode 100644 src/main/java/com/massivecraft/factions/cmd/chest/ChestLogsHandler.java create mode 100644 src/main/java/com/massivecraft/factions/util/ItemBuilder.java create mode 100644 src/main/java/com/massivecraft/factions/util/RomanNumber.java create mode 100644 src/main/java/com/massivecraft/factions/util/serializable/InventoryUtils.java create mode 100644 src/main/java/com/massivecraft/factions/util/serializable/Item.java diff --git a/pom.xml b/pom.xml index 476366cc..dc08668f 100644 --- a/pom.xml +++ b/pom.xml @@ -126,6 +126,11 @@ + + org.ocpsoft.prettytime + prettytime + 4.0.0.Final + net.milkbowl.vault VaultAPI @@ -376,6 +381,12 @@ + + me.rayzr522 + jsonmessage + 1.0.0 + compile + org.codemc.worldguardwrapper worldguardwrapper @@ -411,6 +422,14 @@ spigot-repo https://hub.spigotmc.org/nexus/content/groups/public/ + + org.ocpsoft.prettytime + https://mvnrepository.com/artifact/org.ocpsoft.prettytime/prettytime + + + rayzr-repo + https://cdn.rawgit.com/Rayzr522/maven-repo/master/ + maven.sk89q.com http://maven.sk89q.com/repo/ diff --git a/src/main/java/com/massivecraft/factions/Conf.java b/src/main/java/com/massivecraft/factions/Conf.java index 43e702bf..274095dd 100644 --- a/src/main/java/com/massivecraft/factions/Conf.java +++ b/src/main/java/com/massivecraft/factions/Conf.java @@ -70,6 +70,7 @@ public class Conf { public static boolean chatTagEnabled = true; public static transient boolean chatTagHandledByAnotherPlugin = false; public static boolean chatTagRelationColored = true; + public static List blacklistedFactionNames = new ArrayList<>(); public static String chatTagReplaceString = "[FACTION]"; public static String chatTagInsertAfterString = ""; public static String chatTagInsertBeforeString = ""; @@ -378,6 +379,8 @@ public class Conf { static { baseCommandAliases.add("f"); + blacklistedFactionNames.add("somenamehere"); + territoryEnemyDenyCommands.add("home"); territoryEnemyDenyCommands.add("sethome"); territoryEnemyDenyCommands.add("spawn"); diff --git a/src/main/java/com/massivecraft/factions/FactionsPlugin.java b/src/main/java/com/massivecraft/factions/FactionsPlugin.java index 52e5757f..223ac265 100755 --- a/src/main/java/com/massivecraft/factions/FactionsPlugin.java +++ b/src/main/java/com/massivecraft/factions/FactionsPlugin.java @@ -11,7 +11,6 @@ import com.massivecraft.factions.cmd.FCommand; import com.massivecraft.factions.cmd.check.CheckTask; import com.massivecraft.factions.cmd.check.WeeWooTask; import com.massivecraft.factions.cmd.chest.AntiChestListener; -import com.massivecraft.factions.cmd.chest.ChestLogsHandler; import com.massivecraft.factions.discord.DiscordListener; import com.massivecraft.factions.discord.FactionChatHandler; import com.massivecraft.factions.integration.Econ; @@ -288,8 +287,7 @@ public class FactionsPlugin extends MPlugin { new FUpgradesGUI(), new UpgradesListener(), new MissionHandler(this), - new AntiChestListener(), - new ChestLogsHandler() + new AntiChestListener() }; for (Listener eventListener : eventsListener) diff --git a/src/main/java/com/massivecraft/factions/cmd/chest/ChestLogsHandler.java b/src/main/java/com/massivecraft/factions/cmd/chest/ChestLogsHandler.java deleted file mode 100644 index 0a8e1edd..00000000 --- a/src/main/java/com/massivecraft/factions/cmd/chest/ChestLogsHandler.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.massivecraft.factions.cmd.chest; - -import com.massivecraft.factions.FPlayers; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class ChestLogsHandler implements Listener { - - - public static HashMap> removeMap = new HashMap<>(); - public static HashMap> addMap = new HashMap<>(); - public static HashMap totalMap = new HashMap<>(); - - public static int getAll(String uuid) { - int t = 0; - t = t + removeMap.get(uuid).size(); - t = t + addMap.get(uuid).size(); - return t; - } - - public static int getAll() { - int t = 0; - for (Map.Entry> entry : removeMap.entrySet()) { - t = t + entry.getValue().size(); - } - for (Map.Entry> entry : addMap.entrySet()) { - t = t + entry.getValue().size(); - } - return t; - } - - public void mapAdd(String uuid, String string) { - List list = new ArrayList<>(); - if (addMap.get(uuid) != null) { - list = addMap.get(uuid); - } - list.add(string); - addMap.remove(uuid); - addMap.put(uuid, list); - - if (totalMap.get(uuid) == null) { - totalMap.put(uuid, 1); - } else { - int t = totalMap.get(uuid); - totalMap.remove(uuid); - totalMap.put(uuid, t + 1); - } - } - - public void mapRemove(String uuid, String string) { - List list = new ArrayList<>(); - if (removeMap.get(uuid) != null) { - list = removeMap.get(uuid); - } - list.add(string); - removeMap.remove(uuid); - removeMap.put(uuid, list); - if (totalMap.get(uuid) == null) { - totalMap.put(uuid, 1); - } else { - int t = totalMap.get(uuid); - totalMap.remove(uuid); - totalMap.put(uuid, t + 1); - } - } - - public String itemString(ItemStack itemStack) { - String s = "x" + itemStack.getAmount() + " " + itemStack.getType().name().toLowerCase(); - if (itemStack.hasItemMeta() && itemStack.getItemMeta().hasDisplayName()) { - s = s + " (" + itemStack.getItemMeta().getDisplayName() + ")"; - } - return s.replace("_", " "); - } - - @EventHandler - public void fChestInventoryClick(InventoryClickEvent e) { - Player p = (Player) e.getWhoClicked(); - - Inventory topInventory = p.getOpenInventory().getTopInventory(); - Inventory bottomInventory = p.getOpenInventory().getBottomInventory(); - if (topInventory != null) { - if (topInventory.equals(FPlayers.getInstance().getByPlayer(p).getFaction().getChestInventory())) { - - if (e.getClickedInventory() != null) { - if (e.getClickedInventory().equals(topInventory)) { - ItemStack current = e.getCurrentItem(); - if (current == null) return; - ItemStack cursor = e.getCursor(); - if (e.getClick().isShiftClick()) return; - if (cursor != null) { - if (current.getType().equals(Material.AIR)) { - if (!cursor.getType().equals(Material.AIR)) { - mapAdd(p.getName(), itemString(cursor)); - } - } else { - if (!current.getType().equals(Material.AIR)) { - mapRemove(p.getName(), itemString(current)); - } - } - } - } else { - if (e.getClickedInventory().equals(bottomInventory)) { - //clicking from bottom inventory - if (e.getClick().isShiftClick()) { - } - } - } - } - } - } - } -} - diff --git a/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java b/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java index 13b59e6f..e2aae64e 100644 --- a/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java +++ b/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java @@ -3,6 +3,7 @@ package com.massivecraft.factions.util; import com.massivecraft.factions.*; import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.struct.Relation; +import com.massivecraft.factions.tag.Tag; import com.massivecraft.factions.zcore.util.TL; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.clip.placeholderapi.expansion.Relational; @@ -104,6 +105,10 @@ public class ClipPlaceholderAPIManager extends PlaceholderExpansion implements R // Then Faction stuff case "faction_name": return fPlayer.hasFaction() ? faction.getTag() : TL.NOFACTION_PREFIX.toString(); + case "faction_name_custom": + return fPlayer.hasFaction() ? Tag.parsePlain(fPlayer, TL.PLACEHOLDER_CUSTOM_FACTION.toString()) : ""; + case "faction_only_space": + return fPlayer.hasFaction() ? " " : ""; case "faction_power": return String.valueOf(faction.getPowerRounded()); case "faction_powermax": diff --git a/src/main/java/com/massivecraft/factions/util/ItemBuilder.java b/src/main/java/com/massivecraft/factions/util/ItemBuilder.java new file mode 100644 index 00000000..c6ec344c --- /dev/null +++ b/src/main/java/com/massivecraft/factions/util/ItemBuilder.java @@ -0,0 +1,97 @@ +package com.massivecraft.factions.util; + + +import com.massivecraft.factions.FactionsPlugin; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class ItemBuilder { + private ItemMeta meta; + private ItemStack item; + + public ItemBuilder(ItemStack item) { + this.item = item; + this.meta = item.getItemMeta(); + } + + public ItemBuilder(Material material, int amount, int durability) { + this(new ItemStack(material, amount, (short) durability)); + } + + public ItemBuilder(Material material, int amount) { + this(material, amount, 0); + } + + public ItemBuilder(Material material) { + this(material, 1); + } + + public static List color(List string) { + List colored = new ArrayList<>(); + for (String line : string) { + colored.add(FactionsPlugin.instance.color(line)); + } + return colored; + } + + public ItemBuilder durability(short durability) { + this.item.setDurability(durability); + return this; + } + + public ItemBuilder lore(String... lore) { + if (lore != null) { + ArrayList arrayList = new ArrayList<>(); + for (String line : lore) { + arrayList.add(FactionsPlugin.instance.color(line)); + } + this.meta.setLore(arrayList); + } + return this; + } + + public ItemBuilder lore(List lore) { + this.meta.setLore(color(lore)); + return this; + } + + public ItemBuilder name(String name) { + this.meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name)); + return this; + } + + public ItemStack build() { + this.item.setItemMeta(this.meta); + return this.item; + } + + public ItemBuilder amount(int amount) { + this.item.setAmount(amount); + return this; + } + + public ItemBuilder glowing(boolean status) { + if (status) { + this.meta.addItemFlags(ItemFlag.HIDE_ENCHANTS); + this.meta.addEnchant(Enchantment.DURABILITY, 1, true); + } else { + this.meta.removeItemFlags(ItemFlag.HIDE_ENCHANTS); + this.meta.removeEnchant(Enchantment.DURABILITY); + } + return this; + } + + public ItemBuilder addLineToLore(String line) { + List lore = this.meta.getLore(); + lore.add(FactionsPlugin.instance.color(line)); + this.meta.setLore(lore); + return this; + } +} diff --git a/src/main/java/com/massivecraft/factions/util/MiscUtil.java b/src/main/java/com/massivecraft/factions/util/MiscUtil.java index 18cf68a4..9490d402 100644 --- a/src/main/java/com/massivecraft/factions/util/MiscUtil.java +++ b/src/main/java/com/massivecraft/factions/util/MiscUtil.java @@ -67,6 +67,13 @@ public class MiscUtil { public static ArrayList validateTag(String str) { ArrayList errors = new ArrayList<>(); + for (String blacklistItem : Conf.blacklistedFactionNames) { + if (str.toLowerCase().contains(blacklistItem.toLowerCase())) { + errors.add(FactionsPlugin.instance.txt.parse(TL.GENERIC_FACTIONTAG_BLACKLIST.toString())); + break; + } + } + if (getComparisonString(str).length() < Conf.factionTagLengthMin) { errors.add(FactionsPlugin.getInstance().txt.parse(TL.GENERIC_FACTIONTAG_TOOSHORT.toString(), Conf.factionTagLengthMin)); } diff --git a/src/main/java/com/massivecraft/factions/util/RomanNumber.java b/src/main/java/com/massivecraft/factions/util/RomanNumber.java new file mode 100644 index 00000000..277b04bc --- /dev/null +++ b/src/main/java/com/massivecraft/factions/util/RomanNumber.java @@ -0,0 +1,31 @@ +package com.massivecraft.factions.util; + +import java.util.TreeMap; + +public class RomanNumber { + private static TreeMap map; + + static { + (map = new TreeMap<>()).put(1000, "M"); + RomanNumber.map.put(900, "CM"); + RomanNumber.map.put(500, "D"); + RomanNumber.map.put(400, "CD"); + RomanNumber.map.put(100, "C"); + RomanNumber.map.put(90, "XC"); + RomanNumber.map.put(50, "L"); + RomanNumber.map.put(40, "XL"); + RomanNumber.map.put(10, "X"); + RomanNumber.map.put(9, "IX"); + RomanNumber.map.put(5, "V"); + RomanNumber.map.put(4, "IV"); + RomanNumber.map.put(1, "I"); + } + + public static String toRoman(int number) { + int l = RomanNumber.map.floorKey(number); + if (number == l) { + return RomanNumber.map.get(number); + } + return RomanNumber.map.get(l) + toRoman(number - l); + } +} diff --git a/src/main/java/com/massivecraft/factions/util/serializable/InventoryUtils.java b/src/main/java/com/massivecraft/factions/util/serializable/InventoryUtils.java new file mode 100644 index 00000000..0a38d8f4 --- /dev/null +++ b/src/main/java/com/massivecraft/factions/util/serializable/InventoryUtils.java @@ -0,0 +1,20 @@ +package com.massivecraft.factions.util.serializable; + +public class InventoryUtils { + private int x; + private int y; + private int rows; + + public InventoryUtils(int x, int y, int rows) { + this.x = x; + this.y = y; + this.rows = rows; + } + + public void increment() { + if (this.x == 9) { + this.x = 0; + ++this.y; + } + } +} diff --git a/src/main/java/com/massivecraft/factions/util/serializable/Item.java b/src/main/java/com/massivecraft/factions/util/serializable/Item.java new file mode 100644 index 00000000..762614c7 --- /dev/null +++ b/src/main/java/com/massivecraft/factions/util/serializable/Item.java @@ -0,0 +1,40 @@ +package com.massivecraft.factions.util.serializable; + + +import com.massivecraft.factions.util.ItemBuilder; +import com.massivecraft.factions.util.XMaterial; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class Item { + private String name; + private List lore; + private XMaterial material; + private int amount; + private int slot; + + public Item(String name, List lore, XMaterial material, int amount, int slot) { + this.name = name; + this.lore = lore; + this.material = material; + this.amount = amount; + this.slot = slot; + } + + public ItemStack buildItemStack(boolean isSelected) { + return new ItemBuilder(material.parseItem()).name(name).lore(lore).glowing(isSelected).amount(amount).build(); + } + + public int getAmount() { + return this.amount; + } + + public String getName() { + return this.name; + } + + public int getSlot() { + return this.slot; + } +} diff --git a/src/main/java/com/massivecraft/factions/zcore/util/TL.java b/src/main/java/com/massivecraft/factions/zcore/util/TL.java index 5aa8666b..2f3e2fb5 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TL.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TL.java @@ -1020,6 +1020,7 @@ public enum TL { GENERIC_TRANSLATION_VERSION("Translation: %1$s(%2$s,%3$s) State: %4$s"), GENERIC_TRANSLATION_CONTRIBUTORS("Translation contributors: %1$s"), GENERIC_TRANSLATION_RESPONSIBLE("Responsible for translation: %1$s"), + GENERIC_FACTIONTAG_BLACKLIST("&cThat faction tag is blacklisted."), GENERIC_FACTIONTAG_TOOSHORT("The faction tag can't be shorter than %1$s chars."), GENERIC_FACTIONTAG_TOOLONG("The faction tag can't be longer than %s chars."), GENERIC_FACTIONTAG_ALPHANUMERIC("Faction tag must be alphanumeric. \"%s\" is not allowed."), @@ -1043,6 +1044,7 @@ public enum TL { PLAYER_NOT_FOUND("&c&l[!] &b%1$s &7is either not online or not in your faction!"), PLACEHOLDER_ROLE_NAME("None"), + PLACEHOLDER_CUSTOM_FACTION("{faction} "), WARBANNER_NOFACTION("&cYou need a faction to use a warbanner!"),