1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| public class GeneralChatHandler extends AbstractPacketHandler { public static String[] swearWords = { "f.*?u.*?k", "s.*?h.*?t", "bi.*?h", "bas.*?d", "m.*?f.*?", "c.*?nt", "as.*?s", "s.*?ck", "w.*?nk", "co.*?on", "wo.*?g", "ni.*?g.*?r", "c.*?c.*?k", "penis", "vagina", "c.*?um", "p.*?i.*?s", "p.*?orn", "ar.*?se", "nexon", "ho.*?r.*?ny", "dil.*?do", "doggystyle", "cl.*?it", "fann.*?y", "ho.*?re.*?", "kn.*?ob", "mastur.*?", "****", "hitler", "n.*?uts", "sob.*?", "shag.*?", "sl.*?ut.*?", "testi.*?", "t.*?wa.*?t", "viagr.*?a", "wil.*?ly", "wil.*?lie", "jism", "dog.*?gy", "donkeyri.*?b", "breas.*?t", "bl.*?wjo.*?b", "b.*?b", "beastiality", "an.*?al", "cawk", "pus.*?s.*?", "rim.*?m", "ejaculate", "ejakulate", "er.*?ct", "horni", "horna", "se.*?x", "se.*?ck", "ga.*?y", "fk", "we*?nis" }; @Override public void handlePacket(SeekableLittleEndianAccessor slea, RenoriaClient c) { String text = slea.readRenoriaAsciiString(); if (!CommandProcessor.executeCommand(c, c.getMessageCallback(), text.split(" "))) { c.getPlayer().getMap().broadcastMessage(PacketCreator.getChatBubble(c.getPlayer(), filter(text), c.getPlayer().isGM())); } } public static String filter(String in) { for (String swearWord : swearWords) { String stars; Pattern pat = Pattern.compile(swearWord, Pattern.CASE_INSENSITIVE); Matcher mat = pat.matcher(in); while (mat.find()) { char[] haha = new char[mat.end() - mat.start()]; for (int i = 0; i < mat.end() - mat.start(); i++) { haha[i] = '*'; } stars = new String(haha); in = mat.replaceFirst(stars); } } return in; } } |