From 1bb4f57b5a0231bd76e19ff59ee00f5ec05279d0 Mon Sep 17 00:00:00 2001 From: Eva <66324759+saxnbt@users.noreply.github.com> Date: Mon, 21 Mar 2022 19:59:00 +0000 Subject: [PATCH 1/5] Create TagConfiguration.java --- .../config/TagConfiguration.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java b/src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java new file mode 100644 index 0000000..ee09b7d --- /dev/null +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/config/TagConfiguration.java @@ -0,0 +1,42 @@ +package me.StevenLawson.TotalFreedomMod.config; + +import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.File; +import java.io.IOException; + +public class TagConfiguration { + private static Plugin plugin = JavaPlugin.getPlugin(TotalFreedomMod.class); + private static final FileConfiguration playerdata = TotalFreedomMod.getPlugin(TotalFreedomMod.class).getCustomConfig(); + private static File cfile = new File(plugin.getDataFolder(), "playerTags.yml"); + public static void saveTag(String playerUuid, String tag) { + try { + // Set tag value and save. + playerdata.set(playerUuid, tag); + playerdata.save(cfile); + } catch (IOException e){ + e.printStackTrace(); + } + } + + public static String getTag(String playerUuid){ + if(playerdata.get(playerUuid) != null && playerdata.isString(playerUuid)) { + if(!playerdata.getString(playerUuid).isEmpty() && !"".equalsIgnoreCase(playerdata.getString(playerUuid))){ + // Return the value if exists, checking will be done on join event. + return playerdata.getString(playerUuid); + } else { + try { + // Try and write player tags if not added + playerdata.set(playerUuid, ""); + playerdata.save(cfile); + } catch (IOException e){ + e.printStackTrace(); + } + return ""; + } + } else return null; + } +} From 54faffdfec13c5ceec374cd03be64841ff15ccf8 Mon Sep 17 00:00:00 2001 From: Eva <66324759+saxnbt@users.noreply.github.com> Date: Mon, 21 Mar 2022 19:59:29 +0000 Subject: [PATCH 2/5] Update Command_tag.java --- .../TotalFreedomMod/commands/Command_tag.java | 69 +++++++++++++++++-- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java index f352180..844d1a8 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_tag.java @@ -1,6 +1,7 @@ package me.StevenLawson.TotalFreedomMod.commands; import me.StevenLawson.TotalFreedomMod.admin.AdminList; +import me.StevenLawson.TotalFreedomMod.config.TagConfiguration; import me.StevenLawson.TotalFreedomMod.player.PlayerData; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; @@ -8,12 +9,17 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; +import javax.swing.text.html.HTML; import java.util.Arrays; +import java.util.Iterator; import java.util.List; @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) -@CommandParameters(description = "Sets yourself a prefix", usage = "/ | off | clear | clearall>") +@CommandParameters(description = "Sets yourself a prefix", usage = "/ <(-s) set | off | clear | clearall>") public class Command_tag extends FreedomCommand { public static final List FORBIDDEN_WORDS = Arrays.asList("admin", "owner", "moderator", "developer", "console"); @@ -50,6 +56,12 @@ public class Command_tag extends FreedomCommand { if (playerdata.getTag() != null) { count++; + if(TagConfiguration.getTag(playerdata.getUniqueId().toString()) != null){ + String playerTag = TagConfiguration.getTag(playerdata.getUniqueId().toString()); + if(!"".equalsIgnoreCase(playerTag)){ + TagConfiguration.saveTag(sender_p.getUniqueId().toString(), ""); + } + } playerdata.setTag(null); } } @@ -67,6 +79,12 @@ public class Command_tag extends FreedomCommand { else { PlayerData.getPlayerData(sender_p).setTag(null); + if(TagConfiguration.getTag(sender_p.getUniqueId().toString()) != null){ + String playerTag = TagConfiguration.getTag(sender_p.getUniqueId().toString()); + if(!"".equalsIgnoreCase(playerTag)){ + TagConfiguration.saveTag(sender_p.getUniqueId().toString(), ""); + } + } playerMsg("Your tag has been removed."); } @@ -88,14 +106,18 @@ public class Command_tag extends FreedomCommand { } final Player player = getPlayer(args[1]); - if (player == null) { playerMsg(FreedomCommand.PLAYER_NOT_FOUND); return true; } - PlayerData.getPlayerData(player).setTag(null); + if(TagConfiguration.getTag(player.getUniqueId().toString()) != null){ + String playerTag = TagConfiguration.getTag(player.getUniqueId().toString()); + if(!"".equalsIgnoreCase(playerTag)){ + TagConfiguration.saveTag(player.getUniqueId().toString(), ""); + } + } playerMsg("Removed " + player.getName() + "'s tag."); return true; @@ -134,11 +156,48 @@ public class Command_tag extends FreedomCommand { } PlayerData.getPlayerData(sender_p).setTag(outputTag); - playerMsg("Tag set to '" + outputTag + "'."); + playerMsg("Tag set to '" + outputTag + ChatColor.GRAY + "'."); return true; } - else + else if ("-s".equalsIgnoreCase(args[0]) && "set".equalsIgnoreCase(args[1])) + { + final String inputTag = StringUtils.join(args, " ", 2, args.length); + final String outputTag = Utilities.colorize(StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag), + new String[] + { + "" + ChatColor.COLOR_CHAR, "&k" + }, + new String[] + { + "", "" + })) + ChatColor.RESET; + + if (!AdminList.isSuperAdmin(sender)) + { + final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); + + if (rawTag.length() > 20) + { + playerMsg("That tag is too long (Max is 20 characters)."); + return true; + } + + for (String word : FORBIDDEN_WORDS) + { + if (rawTag.contains(word)) + { + playerMsg("That tag contains a forbidden word."); + return true; + } + } + } + + PlayerData.getPlayerData(sender_p).setTag(outputTag); + TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag); + playerMsg("Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)"); + return true; + } else { return false; } From d6b5585a492a69ddcb05ab78792cd6ba653a4c38 Mon Sep 17 00:00:00 2001 From: Eva <66324759+saxnbt@users.noreply.github.com> Date: Mon, 21 Mar 2022 20:00:03 +0000 Subject: [PATCH 3/5] Update PlayerListener.java --- .../TotalFreedomMod/listener/PlayerListener.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java index cf04092..b945d26 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/listener/PlayerListener.java @@ -5,6 +5,7 @@ import me.StevenLawson.TotalFreedomMod.Server; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.ban.BanManager; +import me.StevenLawson.TotalFreedomMod.config.TagConfiguration; import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; import me.StevenLawson.TotalFreedomMod.command.CommandBlocker; import me.StevenLawson.TotalFreedomMod.commands.Command_landmine; @@ -18,6 +19,7 @@ import me.StevenLawson.TotalFreedomMod.util.Utilities; import me.StevenLawson.TotalFreedomMod.world.AdminWorld; import me.StevenLawson.TotalFreedomMod.world.RollbackManager; import me.StevenLawson.TotalFreedomMod.world.RollbackManager.RollbackEntry; +import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.bukkit.*; import org.bukkit.block.Block; @@ -896,7 +898,12 @@ public class PlayerListener implements Listener { } } } - + if(TagConfiguration.getTag(player.getUniqueId().toString()) != null){ + String playerTag = TagConfiguration.getTag(player.getUniqueId().toString()); + if(!"".equalsIgnoreCase(playerTag)){ + PlayerData.getPlayerData(player).setTag(playerTag); + } + } DiscordBridge.transmitMessage(String.format("**%s joined the server**", player.getDisplayName())); } From 4a376fb67491c60df2aced5b3cb8374d00864332 Mon Sep 17 00:00:00 2001 From: Eva <66324759+saxnbt@users.noreply.github.com> Date: Mon, 21 Mar 2022 20:01:17 +0000 Subject: [PATCH 4/5] Update TotalFreedomMod.java --- .../TotalFreedomMod/TotalFreedomMod.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java b/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java index 1dbbf85..85fc616 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java @@ -24,6 +24,9 @@ import me.StevenLawson.TotalFreedomMod.world.FlatlandsWorld; import me.StevenLawson.TotalFreedomMod.world.ProtectedArea; import org.bukkit.World; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.ServicePriority; @@ -31,6 +34,7 @@ import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; import java.io.File; +import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -45,6 +49,7 @@ public class TotalFreedomMod extends JavaPlugin { public static final String CONFIG_FILENAME = "config.yml"; public static final String SUPERADMIN_FILENAME = "superadmin.yml"; public static final String PERMBAN_FILENAME = "permban.yml"; + public static final String PLAYERTAGS_FILENAME = "playerTags.yml"; public static final String UUID_FILENAME = "uuids.db"; public static final String PROTECTED_AREA_FILENAME = "protectedareas.dat"; public static final String SAVED_FLAGS_FILENAME = "savedflags.dat"; @@ -65,6 +70,7 @@ public class TotalFreedomMod extends JavaPlugin { public static Map fuckoffEnabledFor = new HashMap<>(); public static Logger logger; + private FileConfiguration customConfig; // Custom configuration implementation by Eva @Override public void onLoad() { @@ -103,7 +109,8 @@ public class TotalFreedomMod extends JavaPlugin { Utilities.createBackups(CONFIG_FILENAME, true); Utilities.createBackups(SUPERADMIN_FILENAME); Utilities.createBackups(PERMBAN_FILENAME); - + Utilities.createBackups(PLAYERTAGS_FILENAME); + this.createCustomConfig(); // Load services UUIDManager.load(); AdminList.load(); @@ -219,6 +226,25 @@ public class TotalFreedomMod extends JavaPlugin { return CommandHandler.handleCommand(sender, cmd, commandLabel, args); } + public FileConfiguration getCustomConfig() { + return this.customConfig; + } + //CustomConfig implementation by Eva + private void createCustomConfig() { + File customConfigFile = new File(getDataFolder(), "playerTags.yml"); + if (!customConfigFile.exists()) { + customConfigFile.getParentFile().mkdirs(); + saveResource("playerTags.yml", false); + } + + customConfig= new YamlConfiguration(); + try { + customConfig.load(customConfigFile); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + } + } + private static void setAppProperties() { try From 9030869fb0a25bb6f1cb99f5f2796e785fb18f4b Mon Sep 17 00:00:00 2001 From: Eva <66324759+saxnbt@users.noreply.github.com> Date: Mon, 21 Mar 2022 20:01:47 +0000 Subject: [PATCH 5/5] Create playerTags.yml --- src/main/resources/playerTags.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/resources/playerTags.yml diff --git a/src/main/resources/playerTags.yml b/src/main/resources/playerTags.yml new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/resources/playerTags.yml @@ -0,0 +1 @@ +