🎯 ChatFilterPlus | Полностью настраиваемая фильтрация чата (маты, ссылки, капс, спам слова)

🎯 ChatFilterPlus | Полностью настраиваемая фильтрация чата (маты, ссылки, капс, спам слова) v2.0 (Полная переработка плагина)

Создайте и подтвердите аккаунт для скачивания
2.2 Строго запрещено использование нецензурных слов, брани, оскорбительных выражений, в независимости от того, в каком виде и кому они были адресованы. В том числе при подмене букв символами
Вот совет - иди переучивай java и программирование

Главы про структуры данных пропущены как минимум. И перечитай мое предпоследнее сообщение
бл, вот какая разница? как я сказал многим вообще похуй на код, им главное чтобы плагин работал. и я тоже также думаю. и мне похуй что ты мне на это скажешь
 
бл, вот какая разница? как я сказал многим вообще похуй на код, им главное чтобы плагин работал. и я тоже также думаю. и мне похуй что ты мне на это скажешь
За 2 минуты можно переписать данную херню (то что на скрине), чтобы она работала в 1000+ раз быстрее. Это база. Сделай уже наконец это и не позорься дальше. Лично я смогу вытащить это и до 5_000 + но это ни капли не очевидно и там нужно действительно углубляться в теорию, математику и знать как работает jvm, но это уже прям вообще отдельная тема и не база

Ну или не заявляй что у тебя "высокая производительность"
 
Последнее редактирование:
offtop UniversalBlocker всё ещё лучший
offtop
Когда нибудь ... Я опубликую свой "Лингвистик" ... Который на чистой математике, без готовых таблиц потрошит русские предложения по словам на логические связи ... В функции к-го так же может входить предположение пола, возраста, темперамента ... Поиск "Друзей" ... Поиск "одинаковых" людей ... Или просто гибкий авто-ответчик или поиск "запрещенных" слов (с разными склонениями, числами итд)
 
2.2 Строго запрещено использование нецензурных слов, брани, оскорбительных выражений, в независимости от того, в каком виде и кому они были адресованы. В том числе при подмене букв символами
offtop
Когда нибудь ... Я опубликую свой "Лингвистик" ... Который на чистой математике, без готовых таблиц потрошит русские предложения по словам на логические связи ... В функции к-го так же может входить предположение пола, возраста, темперамента ... Поиск "Друзей" ... Поиск "одинаковых" людей ... Или просто гибкий авто-ответчик или поиск "запрещенных" слов (с разными склонениями, числами итд)
offtop Ълять, подключи чат к иишке и начисляй виолейты если иишка нашла мат или чот ещё. Много виолейтов - мут/бан
И мозгу трахать не надо
 
offtop Ълять, подключи чат к иишке и начисляй виолейты если иишка нашла мат или чот ещё. Много виолейтов - мут/бан
И мозгу трахать не надо
offtop
У меня нет такой цели. Мне фиолетово на наличие мата, пока он не начинает быть в направленной и прямо агрессивной форме на того, кому не следовало бы получать такое.
Однако "Лингвистик" существует. И не так уж и много времени на него и потратил я.
И оно вполне может даже может на моем дохленьком ноуте прогонять через себя под 40_000 предложений в секунду (Вне зависимости от количества правил, по которым надо проверять, хоть 50к будет одновременно, скорость практически не упадет)
 
Последнее редактирование:
почему? мне нравиться, в правилах это запрещено?)
это неудобно читать обычным людям, невозможно читать озвучивалкой страниц, не парсится поисковыми ботами, выделяется не на тёмной теме и вообще минус вайб
 
это неудобно читать обычным людям и невозможно читать озвучивалкой страниц
хм, почему же кому-то не удобно читать?) никто не жаловался ещё, и зачем использовать озвучивалку страниц?) мне так нравиться просто, выглядит красиво и приятно)
 
Последнее редактирование:
милкивейка обновил(а) ресурс You must be logged in to see this link. новой записью:

You must be logged in to see this link.

Итак, могу представить абсолютно новый плагин — полный рефакторинг кода и функционала. Раньше плагин был интересным, но по качеству сделан так себе, а сейчас это уже получается не просто плагин на фильтрацию, а что-то большее ))

В общем, теперь вместо двух фильтров, как было раньше, стало 5 очень, прям реально умных и точных фильтров: маты, ссылки с доменами, капс, спам и заблокированные слова

Долго я старался, ну и наконец-то доделал мой плагин. Лично я могу сказать, что по-моему мнению...

You must be logged in to see this link.
 
Ай как нехорошо писать плагины ИИшкой от начала и до конца без перепроверки

Так могла сделать только иишка:

Почему?
Она всегда считает, что всё, что содержит в себе какой бы то ни было асинхрон требует конкурентных мап, даже когда они неуместны, как при чат ивенте. Чат ивент происходит всегда в ОДНОМ потоке для конкретного игрока (либо каждый раз в новом для leaf по умолчанию, но это не суть)
Важно тут то, что использование в данном случае конкурентной мапы излишне.
При чтении мапы и отсутствии иных действий с ней никаких ошибок не будет, следовательно тратить ресурсы на излишнюю синхронизацию смысла не имеет.

Аналогичный ИИ слоп:

Почему?
ИИ не знает, как работает майнкрафт на низком уровне, а человек бы банально не сделал подобного. Игрок чисто физически не может отправить пакет чата, который имел бы в себе пустую строку, а ивент не может вернуть null в message , оно не зря отмечено как NotNull.
(Аналогично с PlayerCommandPreprocessEvent, логика схожа)

И самый ОЧЕВИДНЫЙ след ИИшки:

Так могла сделать ИСКЛЮЧИТЕЛЬНО ии модель, поскольку ни один человек не станет указывать класс с пакетами вместо импорта, если на то нет очевидной причины (дубликата импорта с идентичным именем класса, заметно при работе с NMS), но даже в такой ситуации в данном конкретном случае любой человек предпочёл бы данному некрасивому импорту использование var

Помимо того можно прикопаться к данным моментам:
1)
А именно !word.trim().isEmpty()

Такое необходимо отсекать на моменте в ConfigManager, чтобы пустые элементы не записывались в лист или сет в принципе, точно сказать ИИ это или нет нельзя, но всё же момент занятный.

2)

Я не вижу причин, чтобы делать так. ИИ любят создавать копии листов без причин, просто для абстрактной "безопасности", игнорируя логику. Но всё же это конечно не факт, что ИИ.

3) Следим за руками
3 места, где используется plugin.getServer()

Но вот тут:

Используется просто Bukkit.
plugin.getServer().yourStuff по сути идентичен Bukkit.yourStuff, а потому не ясно непостоянство.

getServer я могу предпочесть в JavaPlugin, где использовать геттер для сервера вместо статик методов бакита просто, но в ином случае это как будто не имеет никакого смысла...


Кроме того:
1) Не ясно в чём отличия bad-words от blocked-words?
Конфиги идентичны за исключением разве что опции detect-english-lookalikes:
Ошибка на этапе производства? Забыл что сделал и сделал повторно?

2) Не ясно ради чего использовать LinkedHashMap в данном случае

Ради чего ИИ запихнул сюда ЛИНКЕД мапу? Нигде не требуется, чтобы элементы были в чётком порядке...
Видимо ИИшке просто захотелось абстрактной безопасности, уж слишком сильно ей это вдолбили в голову, а вот логику базовую ей увы не вдолбили
(Отмазываться от того, что ВЕСЬ код в данном классе сделан ИИшкой бессмысленно, поскольку импорты всё ещё существуют )

3) Само существование класса
Мне не понять...

Зачем делать Class.forName, если можно сразу взять placeholderAPIAvailable = Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null; обойдясь без лишнего кода?..

4) Мелкая придирка, но формирование паттерна в рантайме дико неэффективно (как и сами паттерны... но программисты обленились, а после этого обленились и ИИшки, которые на них обучались)

Так что делаем выводы господа
 
Ай как нехорошо писать плагины ИИшкой от начала и до конца без перепроверки

Так могла сделать только иишка:

Почему?
Она всегда считает, что всё, что содержит в себе какой бы то ни было асинхрон требует конкурентных мап, даже когда они неуместны, как при чат ивенте. Чат ивент происходит всегда в ОДНОМ потоке для конкретного игрока (либо каждый раз в новом для leaf по умолчанию, но это не суть)
Важно тут то, что использование в данном случае конкурентной мапы излишне.
При чтении мапы и отсутствии иных действий с ней никаких ошибок не будет, следовательно тратить ресурсы на излишнюю синхронизацию смысла не имеет.

Аналогичный ИИ слоп:

Почему?
ИИ не знает, как работает майнкрафт на низком уровне, а человек бы банально не сделал подобного. Игрок чисто физически не может отправить пакет чата, который имел бы в себе пустую строку, а ивент не может вернуть null в message , оно не зря отмечено как NotNull.
(Аналогично с PlayerCommandPreprocessEvent, логика схожа)

И самый ОЧЕВИДНЫЙ след ИИшки:

Так могла сделать ИСКЛЮЧИТЕЛЬНО ии модель, поскольку ни один человек не станет указывать класс с пакетами вместо импорта, если на то нет очевидной причины (дубликата импорта с идентичным именем класса, заметно при работе с NMS), но даже в такой ситуации в данном конкретном случае любой человек предпочёл бы данному некрасивому импорту использование var

Помимо того можно прикопаться к данным моментам:
1)
А именно !word.trim().isEmpty()

Такое необходимо отсекать на моменте в ConfigManager, чтобы пустые элементы не записывались в лист или сет в принципе, точно сказать ИИ это или нет нельзя, но всё же момент занятный.

2)

Я не вижу причин, чтобы делать так. ИИ любят создавать копии листов без причин, просто для абстрактной "безопасности", игнорируя логику. Но всё же это конечно не факт, что ИИ.

3) Следим за руками
3 места, где используется plugin.getServer()

Но вот тут:

Используется просто Bukkit.
plugin.getServer().yourStuff по сути идентичен Bukkit.yourStuff, а потому не ясно непостоянство.

getServer я могу предпочесть в JavaPlugin, где использовать геттер для сервера вместо статик методов бакита просто, но в ином случае это как будто не имеет никакого смысла...


Кроме того:
1) Не ясно в чём отличия bad-words от blocked-words?
Конфиги идентичны за исключением разве что опции detect-english-lookalikes:
Ошибка на этапе производства? Забыл что сделал и сделал повторно?

2) Не ясно ради чего использовать LinkedHashMap в данном случае

Ради чего ИИ запихнул сюда ЛИНКЕД мапу? Нигде не требуется, чтобы элементы были в чётком порядке...
Видимо ИИшке просто захотелось абстрактной безопасности, уж слишком сильно ей это вдолбили в голову, а вот логику базовую ей увы не вдолбили
(Отмазываться от того, что ВЕСЬ код в данном классе сделан ИИшкой бессмысленно, поскольку импорты всё ещё существуют )

3) Само существование класса
Мне не понять...

Зачем делать Class.forName, если можно сразу взять placeholderAPIAvailable = Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null; обойдясь без лишнего кода?..

4) Мелкая придирка, но формирование паттерна в рантайме дико неэффективно (как и сами паттерны... но программисты обленились, а после этого обленились и ИИшки, которые на них обучались)

Так что делаем выводы господа
хорошо, овер, спасибо за помощь, там за то что изучи код )
попробую исправить всё, что ты сказал в ближайшее время

и да, со всем что ты сказал согласен, не отрицаю, это мои косяки (хавпхвапхп нууу почти чуточку мои косяки)
 
Назад
Сверху Снизу