Created
September 19, 2015 07:44
-
-
Save NeatMonster/4e2cc05be8c91c77cfee to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package fr.neatmonster.censor; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.Collections; | |
import java.util.List; | |
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.plugin.java.JavaPlugin; | |
public class CensorSheep extends JavaPlugin implements Listener { | |
private final List<String> exprs = Collections.synchronizedList(new ArrayList<String>()); | |
@Override | |
public void onEnable() { | |
getServer().getPluginManager().registerEvents(this, this); | |
exprs.clear(); | |
exprs.addAll(getConfig().getStringList("words")); | |
if (exprs.isEmpty()) { | |
exprs.add("Dolly"); | |
exprs.add("Shrek"); | |
exprs.add("Lucky"); | |
} | |
getConfig().set("words", exprs); | |
saveConfig(); | |
} | |
@Override | |
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) { | |
if (cmd.getName().equalsIgnoreCase("censor")) { | |
if (sender instanceof Player) { | |
final Player player = (Player) sender; | |
if (args.length == 1 && args[0].equalsIgnoreCase("list")) { | |
String msg = "La liste contient "; | |
synchronized (exprs) { | |
for (final String expr : exprs) | |
msg += "'" + expr + "', "; | |
} | |
player.sendMessage(ChatColor.YELLOW + msg.substring(0, msg.length() - 2)); | |
} else if (args.length > 1 && args[0].equalsIgnoreCase("add")) { | |
final String expr = String.join(" ", Arrays.asList(args).subList(1, args.length)); | |
exprs.add(expr); | |
getConfig().set("words", exprs); | |
saveConfig(); | |
player.sendMessage(ChatColor.GREEN + "Added '" + expr + "' to the list."); | |
} else if (args.length > 1 && args[0].equalsIgnoreCase("remove")) { | |
final String expr = String.join(" ", Arrays.asList(args).subList(1, args.length)); | |
exprs.remove(expr); | |
getConfig().set("words", exprs); | |
saveConfig(); | |
player.sendMessage(ChatColor.GREEN + "Removed '" + expr + "' from the list."); | |
} else { | |
player.sendMessage(ChatColor.YELLOW + "Usage:"); | |
player.sendMessage(ChatColor.YELLOW + "/censor list - lists all expressions"); | |
player.sendMessage(ChatColor.YELLOW + "/censor add <expr> - adds an expression"); | |
player.sendMessage(ChatColor.YELLOW + "/censor remove <expr> - removes an expression"); | |
} | |
} else | |
sender.sendMessage("You're not a sheep, are you a wolf?"); | |
return true; | |
} | |
return false; | |
} | |
@EventHandler(ignoreCancelled = true) | |
public void onAsyncPlayerChat(final AsyncPlayerChatEvent event) { | |
final String msg = event.getMessage().toLowerCase(); | |
synchronized (exprs) { | |
for (final String expr : exprs) | |
if (msg.contains(expr.toLowerCase())) { | |
event.getPlayer().sendMessage(ChatColor.RED + "Bahhhh."); | |
event.setCancelled(true); | |
break; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment