Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.extrillius.sweartoggle;
- import org.apache.commons.lang3.StringUtils;
- import org.bukkit.ChatColor;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.AsyncPlayerChatEvent;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.plugin.PluginManager;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- /**
- * Created by TechBug2012 on 1/20/16.
- */
- public class SwearToggle extends JavaPlugin implements Listener {
- private ConfigAccessor playerAccessor;
- private ConfigAccessor wordAccessor;
- private ConfigAccessor pardonedAccessor;
- private List<String> wordList;
- private List<String> usernameList;
- private List<String> pardonedList;
- @Override
- public void onEnable() {
- this.playerAccessor = new ConfigAccessor(this, "players.yml");
- this.playerAccessor.getConfig().addDefault("usernames", new ArrayList<String>());
- usernameList = this.playerAccessor.getConfig().getStringList("usernames");
- this.wordAccessor = new ConfigAccessor(this, "words.yml");
- this.wordAccessor.getConfig().addDefault("banned-words", new ArrayList<String>());
- wordList = this.wordAccessor.getConfig().getStringList("banned-words");
- this.pardonedAccessor = new ConfigAccessor(this, "pardoned.yml");
- this.pardonedAccessor.getConfig().addDefault("pardoned", new ArrayList<String>());
- pardonedList = this.pardonedAccessor.getConfig().getStringList("pardoned");
- this.playerAccessor.getConfig().options().copyDefaults(true);
- this.playerAccessor.saveConfig();
- this.playerAccessor.reloadConfig();
- this.wordAccessor.getConfig().options().copyDefaults(true);
- this.wordAccessor.saveConfig();
- this.wordAccessor.reloadConfig();
- this.pardonedAccessor.getConfig().options().copyDefaults(true);
- this.pardonedAccessor.saveConfig();
- this.pardonedAccessor.reloadConfig();
- getConfig().options().copyDefaults(true);
- saveConfig();
- reloadConfig();
- registerEvents();
- }
- private void registerEvents() {
- PluginManager pm = getServer().getPluginManager();
- pm.registerEvents(this, this);
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent e) {
- if (usernameList.contains(e.getPlayer().getName())) {
- e.getPlayer().sendMessage(ChatColor.GREEN + "Swearing is filtered.");
- } else {
- e.getPlayer().sendMessage(ChatColor.GREEN + "Swearing is unfiltered.");
- }
- }
- @EventHandler
- public void onChat(AsyncPlayerChatEvent event) {
- Set<Player> filteredPlayers = new HashSet<>();
- String newMessage = event.getMessage();
- for (String word : wordList) {
- Pattern pattern = Pattern.compile(".*\\b(" + word + ")\\b.*", Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(newMessage);
- if (matcher.find()) {
- StringBuilder sb = new StringBuilder();
- String match = matcher.group(1);
- for (int i = 0; i < match.length(); i++) {
- sb.append("*");
- }
- newMessage = newMessage.replaceAll(match, sb.toString());
- }
- }
- Iterator<Player> it = event.getRecipients().iterator();
- while (it.hasNext()) {
- Player p = it.next();
- if (usernameList.contains(p.getName())) {
- it.remove();
- filteredPlayers.add(p);
- }
- }
- newMessage = String.format(event.getFormat(), event.getPlayer().getDisplayName(), newMessage);
- for (Player p : filteredPlayers) {
- p.sendMessage(newMessage);
- }
- }
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (!(sender instanceof Player)) {
- sender.sendMessage("You have to be a player to use this command!");
- return false;
- }
- if (args.length == 1) {
- if (args[0].equalsIgnoreCase("on")) {
- if (!(sender.hasPermission("swear.on"))) {
- sender.sendMessage(ChatColor.RED + "You do not have permission to do this.");
- return false;
- }
- if (!(usernameList.contains(sender.getName()))) {
- usernameList.add(sender.getName()); // Use UUIDs in the future.
- this.playerAccessor.getConfig().set("usernames", usernameList);
- this.playerAccessor.saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Swearing is now " + ChatColor.DARK_AQUA + "filtered.");
- } else {
- sender.sendMessage(ChatColor.RED + "Swearing is already filtered!");
- }
- } else if (args[0].equalsIgnoreCase("off")) {
- if (!(sender.hasPermission("swear.off"))) {
- sender.sendMessage(ChatColor.RED + "You do not have permission to do this.");
- }
- if (usernameList.contains(sender.getName())) {
- usernameList.remove(sender.getName()); // Again, use UUIDs in the future.
- this.playerAccessor.saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Swearing is now " + ChatColor.DARK_AQUA + "unfiltered.");
- } else {
- sender.sendMessage(ChatColor.RED + "Swearing is already unfiltered!");
- return false;
- }
- } else if (args[0].equalsIgnoreCase("reload")) {
- if (!(sender.hasPermission("swear.reload"))) {
- sender.sendMessage(ChatColor.RED + "You do not have permission to do this.");
- return false;
- }
- reloadConfig();
- saveConfig();
- this.playerAccessor.reloadConfig();
- this.playerAccessor.saveConfig();
- this.wordAccessor.reloadConfig();
- this.wordAccessor.saveConfig();
- sender.sendMessage(ChatColor.GREEN + "Config reloaded.");
- } else if (args[0].equalsIgnoreCase("add")) {
- sender.sendMessage(ChatColor.RED + "Specify a word to add.");
- } else if (args[0].equalsIgnoreCase("remove")) {
- sender.sendMessage(ChatColor.RED + "Specify a word to remove.");
- } else {
- sender.sendMessage(ChatColor.GREEN + "Commands:");
- sender.sendMessage(ChatColor.GRAY + "/swear on: " + ChatColor.DARK_GRAY + "Filters swear words.");
- sender.sendMessage(ChatColor.GRAY + "/swear off: " + ChatColor.DARK_GRAY + "Unfilters swear words.");
- sender.sendMessage(ChatColor.GRAY + "/swear add: " + ChatColor.DARK_GRAY + "Adds a word to the list.");
- sender.sendMessage(ChatColor.GRAY + "/swear remove: " + ChatColor.DARK_GRAY + "Removes a word from the list.");
- sender.sendMessage(ChatColor.GRAY + "/swear reload: " + ChatColor.DARK_GRAY + "Reloads the plugin.");
- }
- }
- if (args.length == 0) {
- sender.sendMessage(ChatColor.GREEN + "Commands:");
- sender.sendMessage(ChatColor.GRAY + "/swear on: " + ChatColor.DARK_GRAY + "Filters swear words.");
- sender.sendMessage(ChatColor.GRAY + "/swear off: " + ChatColor.DARK_GRAY + "Unfilters swear words.");
- sender.sendMessage(ChatColor.GRAY + "/swear add: " + ChatColor.DARK_GRAY + "Adds a word to the list.");
- sender.sendMessage(ChatColor.GRAY + "/swear remove: " + ChatColor.DARK_GRAY + "Removes a word from the list.");
- sender.sendMessage(ChatColor.GRAY + "/swear reload: " + ChatColor.DARK_GRAY + "Reloads the plugin.");
- }
- if (args.length == 2) {
- if (args[0].equalsIgnoreCase("add")) {
- if (!(sender.hasPermission("swear.add"))) {
- sender.sendMessage(ChatColor.RED + "You do not have permission to do this.");
- return false;
- }
- if (!(wordList.contains(args[1]))) {
- wordList.add(args[1]);
- this.wordAccessor.getConfig().set("banned-words", wordList);
- this.wordAccessor.saveConfig();
- this.wordAccessor.reloadConfig();
- sender.sendMessage(ChatColor.DARK_AQUA + args[1] +
- ChatColor.GREEN + " has been added to the list of banned words.");
- } else {
- sender.sendMessage(ChatColor.RED + "That word has already been added!");
- }
- } else if (args[0].equalsIgnoreCase("remove")) {
- if (!(sender.hasPermission("swear.remove"))) {
- sender.sendMessage(ChatColor.RED + "You do not have permission to do this.");
- return false;
- }
- if (wordList.contains(args[1])) {
- wordList.remove(args[1]);
- this.wordAccessor.getConfig().set("banned-words", wordList);
- this.wordAccessor.saveConfig();
- this.wordAccessor.reloadConfig();
- sender.sendMessage(ChatColor.DARK_AQUA + args[1] +
- ChatColor.GREEN + " has been removed from the list of banned words.");
- } else {
- sender.sendMessage(ChatColor.RED + "That word is not on the list!");
- }
- } else if (args[0].equalsIgnoreCase("pardon")) {
- if (!(sender.hasPermission("swear.pardon"))) {
- sender.sendMessage(ChatColor.RED + "You do not have permission to do this.");
- return false;
- }
- if (!(pardonedList.contains(args[1]))) {
- pardonedList.add(args[1]);
- this.pardonedAccessor.getConfig().set("pardoned", pardonedList);
- this.pardonedAccessor.saveConfig();
- this.pardonedAccessor.reloadConfig();
- sender.sendMessage(ChatColor.DARK_AQUA + args[1] +
- ChatColor.GREEN + " will not be censored.");
- } else {
- sender.sendMessage(ChatColor.RED + "That word is already pardoned!");
- }
- } else if (args[0].equalsIgnoreCase("unpardon")) {
- if (!(sender.hasPermission("swear.unpardon"))) {
- sender.sendMessage(ChatColor.RED + "You do not have permission to do this.");
- return false;
- }
- pardonedList.remove(args[1]);
- this.pardonedAccessor.getConfig().set("pardoned", pardonedList);
- this.pardonedAccessor.saveConfig();
- this.pardonedAccessor.reloadConfig();
- sender.sendMessage(ChatColor.DARK_AQUA + args[1] +
- ChatColor.GREEN + " will be censored.");
- } else {
- sender.sendMessage(ChatColor.RED + "Invalid parameters!");
- sender.sendMessage(ChatColor.GREEN + "Usage:");
- sender.sendMessage(ChatColor.GRAY + "/swear add [word]");
- sender.sendMessage(ChatColor.GRAY + "/swear remove [word]");
- }
- }
- if (args.length > 2) {
- sender.sendMessage(ChatColor.RED + "Too many arguments!");
- return false;
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement