Skip to content

Instantly share code, notes, and snippets.

@NeatMonster
Created September 19, 2015 07:44
Show Gist options
  • Save NeatMonster/4e2cc05be8c91c77cfee to your computer and use it in GitHub Desktop.
Save NeatMonster/4e2cc05be8c91c77cfee to your computer and use it in GitHub Desktop.
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