Плагин [CHAT] rpChat2 2.0.7w - Глобальный чат, локальный чат, счётчик получателей, рации [1.6.2+]

  • Автор темы Автор темы dark32
  • Дата начала Дата начала

Плагин вообще нужен?


  • Всего проголосовало
    253
Вопрос по конфигу:
Код:
PM:
<...>
formatFrom: "[$pf$p$sf->$pf$r$sf]: $msg"
Будет ли в этом случае отображаться префикс и суффикс игрока $r? Смущает то что одни и те же же $pf и $sf.
 
Последнее редактирование:
Нет, не будет работать. Я уже не уверен что и первый случай будет работать. Нужно добавить в список задач.

Мне так не хватает времени, чтобы провести отладку и проверку... блин... мне жаль.
 
По-моему, в личных сообщениях в любом плагине указываются только ники. Во всяком случае, в "популярных" плагинах.
Возникает проблема с полным мутом, если существует канал с префиксом "a". Надо бы глобальный мут сделать ключевым словом "all" что ли.
 
Дня доброго. Нашел этот плагин и вознамерился активно использовать его активно в своем проекте, так как реализовывает практически всё, что нужно.
Хочу сообщить о подтвержденном баге при пересылке личных сообщений — о ней ещё сообщал Meowt в посте №37 этой темы. Вкратце: если использовать «!» как префикс канала личных сообщений, выводится фигня. Если просто использовать канал личных сообщений, тоже выводится фигня:
Код:
[SEVERE] Could not pass event AsyncPlayerChatEvent to RPChat v1.0.5
Что характерно — всё работает, сообщения доставляются, но в консоль вот такие ошибки лезут, тысячи их.
Сервер — MCPC+ 1.5.2
В общем, протестировал этот баг на воспроизводимость, открыл issue с техподробностями.
Возможно, это связано с тем, что плагин собран на версию CB 1.6.4

Есть тестовый сервер с тем же окружением, что и на продакшене, так что согласен тестировать новые сборки (кстати, так и не нашел ссылку на Jenkins) — поломать не жалко.

P.S. Просмотрел код мимоходом… написано вроде бы нормально. Вот бы ещё логгирование в простые текстовые файлы по имени канала прикрутить — было бы здорово. (открыл issue)
 
Последнее редактирование:
Код плагина ужасен... поэтому я и не давал публично ссылку на исходники.
Jenkins отсутствует, т.к. я слишком нуб, чтобы понять как его настроить и как с ним работать.
Честно плагин не тестировался под 1.5.2, он должен работать под этой версии чисто на вере.

По поводу 37 сообщения - там была ошибка в ином.

Ох.. .так и придётся сегодня заняться плагином. Так.... где можно найти ссылку на MCPC 1.5.2?

Полчаса ломаю голову почему пишет "101 секунду" вместо "101 секунда".По пути исправил баг с выводом нескольких окончаний, баг со временем и ещё какой-то баг, а всё равно "секунду"... а потом я глянул в конфиг...

Прогнал базовые тесты.
 
Последнее редактирование:
Полчаса ломаю голову почему пишет "101 секунду" вместо "101 секунда".По пути исправил баг с выводом нескольких окончаний, баг со временем и ещё какой-то баг, а всё равно "секунду"... а потом я глянул в конфиг...
Не помню писал об этом раньше или нет, но нужно изменить вывод остатка времени. Если больше 59 секунд, то писать в минутах, больше 59 минут в часах, больше 23 часов в днях. Функция не сложная >_>
 
Автор не будет против, если попытаюсь структурировать документацию по плагину в GitHub Wiki pages?
Просто придется использовать плагин по-максимуму, и раз взялся разбирать по косточкам его, то почему бы и не облегчить другим работу?
 
Не помню писал об этом раньше или нет, но нужно изменить вывод остатка времени. Если больше 59 секунд, то писать в минутах, больше 59 минут в часах, больше 23 часов в днях. Функция не сложная >_>
А если 61 секунда, тогда как? 1 минута 1 секунда?
Автор не будет против, если попытаюсь структурировать документацию по плагину в GitHub Wiki pages?
Просто придется использовать плагин по-максимуму, и раз взялся разбирать по косточкам его, то почему бы и не облегчить другим работу?
Документация написана для меня, чтобы я сам не забывал, что реализовал. Против не буду, но и за тоже, т.к. времени мало на плагин. А код ещё чистить и чистить, тестеть и тестеть (чего стоит пимк, экономика и симпклан)
 
А если 61 секунда, тогда как? 1 минута 1 секунда?
Можно и так, но проще как это чаще делают округлять в меньшую сторону или большую. То есть при 61 секунде писать либо 1 минута, либо 2 минуты и все.
 
Можно и так, но проще как это чаще делают округлять в меньшую сторону или большую. То есть при 61 секунде писать либо 1 минута, либо 2 минуты и все.
Слишком сложно параметризовать. Не представляю как хранить в конфигах все эти настройки.

1 минута 30 секунд - середина и можно округлить в обе стороны, зависит от того как вас учили.
 
Слишком сложно параметризовать. Не представляю как хранить в конфигах все эти настройки.

1 минута 30 секунд - середина и можно округлить в обе стороны, зависит от того как вас учили.
Да кого волнует как это будет округляться? Главное показать "2 минуты" или "1 минута", а не "91 секунда". ( или, что чаще случается, "81 532 секунды", к примеру ).
На самом деле лучше округлять в большую сторону всегда. То есть 61 секунда - 2 минуты, 23 часа и 1 секунда -> 24 часа -> 1 день. Так просто проще, а разницы никакой особо нет.
 
На данном этапе можно вывести сообщение такого формата %i дней %i часов %i минут %i секунд где %i - соответствующие число. Округление довольно интересная идея, но я думая как её сделать красиво, а это может занять много времени, особенно если забуду об этом.

Надо наконец выложить и протестить текущую сборку. Вроде базовые тесты пройдены, но некоторые рющки и плющки (экономика, простокланы, каналы по имени, переключение по одному префиксу и ещё какая-то фигня) не тестировались как следует. Возьмёте такой плагин?
 
На данном этапе можно вывести сообщение такого формата %i дней %i часов %i минут %i секунд где %i - соответствующие число. Округление довольно интересная идея, но я думая как её сделать красиво, а это может занять много времени, особенно если забуду об этом.

Надо наконец выложить и протестить текущую сборку. Вроде базовые тесты пройдены, но некоторые рющки и плющки (экономика, простокланы, каналы по имени, переключение по одному префиксу и ещё какая-то фигня) не тестировались как следует. Возьмёте такой плагин?
Сами протестируем, отпишемся >_>
На данном этапе можно вывести сообщение такого формата %i дней %i часов %i минут %i секунд где %i - соответствующие число. Округление довольно интересная идея, но я думая как её сделать красиво, а это может занять много времени, особенно если забуду об этом.
Что там думать?
Если меньше либо равно 60 => выводить в секундах
Если больше 60 секунд, но меньше либо равно 3600 => выводить в минутах
Если больше 3600 секунд, но меньше либо равно 86400 => выводить в часах
Если больше 86400 секунд, но меньше либо равно 604800 => выводить в днях
Дальше можно не писать. Хотя если очень захотеть ничего не мешает по той же логике до года довести (или даже века и тысячелетия >_> ). А, последнее условие не нужно, если дальше не писать.
 
Версия 2.2.1h
RPChat.zip
Скачать RPChat.
  • Если сообщение о числе слушателей или о том что вас не услышали не заполнено - оно не будет выводится (проверенно)
  • Добавлена поддержка тегов из SimpleClans, работоспособность не гарантирую. (не проверено)
    $SC.clan - тег клана
    $SC.rank - тег ранка
    $SC.kdr - тег КДР
  • Время мута можно задать в виде 1d1h1m1s. Длина числа ограничена 5 знаками. используйте inf для очень длинного мута (1000 дней). (проверено)
    1d1d1d - корректное время
    1h600s - корректное время
    20s1d- корректное время, но не гарантированно
    1p- не корректное время, не известная величина времени, вернёт 0
    20s1p - вроде как 20 секунд
  • mcnw.<chat_inner_name>.color.<color tag> - право на использование цвета <color tag> в канале <chat_inner_name> (не помню)
  • Добавлены окончания для разных числительных: $(один|два|много|$var) - будет заменено в зависимости от значения $var. Работает для строк:
    • mute.message
    • mute.muteMessage
    • mutte.muteSee
    • cooldown.text
  • message: "&o&7Вы приглушены. Возобновить общение вы сможете через $time $(секунду|секунды|секунд|$time) или $data.day $(день|дня|дней|$data.day) $data.hour $(час|часа|часов|$data.hour) $data.minute $(минута|минуты|минут|$data.minute) $data.second $(секунду|секунды|секунд|$data.second)."
  • Добавлены задержки/кулдовн <chat_inner_name>.cooldown(проверено)
  • Поддержка групповых значений задержек/кулдован (не проверено)
    Код:
    <chat_inner_name>
        groups:
             admin:
                 cooldown: 1
             moderator:
                 cooldown: 2
             VIP:
                 cooldown: 5
  • Поддержка групповых значений для канала по умолчанию (не подтверждено)
    Код:
    <chat_inner_name>
       groups:
             admin:
                  default:true
              moderator:
                  default:true
              VIP:
                   default:true
  • Перехват сообщений на вход/выход (не проверено)
  • Добавлена подержка экономики. Требует Vault
    Код:
    <chat_inner_name>
       cost:
    # базовая цена
            base: 10.0 
    # цена за каждый символ
            per: 1.0
            needmoremoney: "&cНе достаточно средств, нужно $total. Цена сообщения $base и по $per за каждый символ."
  • Добавлены команды для отправки и переключения каналов (не проверено, потенциально крашит)
    Код:
    <chat_inner_name>
        switchcmd: "/global "
        sendcmd: "/g "
  • mcnw.<chat_inner_name>.economy.bypass - право для обхода платы за сообщения (должно работать)
  • Опция в настройках для публичного оповещения о муте. (не проверено)
  • Если префикс не указан - канал не доступен по префиксу. (не проверено)
  • Нельзя переключится в канал, если у тебя нет на это прав. (не проверено)
  • Опция для переключения канала по одиночному префиксу. (не проверено) (нафига?)
  • $rsuffix/$rprefix для суффикса/префикса получателя ЛС
  • Исправлена ошибка с ЛС от Orhideous
Вроде не упутсил ничего.
 

Вложения

  • RPChat.zip
    RPChat.zip
    90,3 КБ · Просмотры: 338
Последнее редактирование:
  • Время мута можно задать в виде 1d1h1m1s. Длина числа ограничена 5 знаками. используйте inf для очень длинного мута (1000 дней). (проверено)
    1d1d1d - корректное время
    1h600s - корректное время
    20s1d- корректное время, но не гарантированно
    1p- не корректное время, не известная величина времени, вернёт 0
    20s1p - вроде как 20 секунд
Перемудрили, по-моему. Проще считать время по префиксу/суффиксу (в принципе как и сейчас) для одной величины времени. Кому на практике надо замутить игрока именно на 3 дня и 44 секунды? Никому, я думаю.
Так же имеет смысл добавить месяцы и годы.
 
Я просто написал /rpchat и тут понеслось:
2014-03-13 00:18:23 [INFO] 222 issued server command: /rpchat
2014-03-13 00:18:23 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing 'rpchat' in org.bukkit.command.PluginCommand(rpchat, rpChat v2.2.0)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196)
at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:548)
at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1351)
at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1217)
at org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer.chat(CraftPlayer.java:242)
at ru.dark32.chat.CommandPreprocessListener.tabComplete(CommandPreprocessListener.java:32)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:452)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1332)
at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1217)
at org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer.chat(CraftPlayer.java:242)
at ru.dark32.chat.CommandPreprocessListener.tabComplete(CommandPreprocessListener.java:32)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:452)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1332)
at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1217)
at org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer.chat(CraftPlayer.java:242)
at ru.dark32.chat.CommandPreprocessListener.tabComplete(CommandPreprocessListener.java:32)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:452)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1332)
at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1217)
at org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer.chat(CraftPlayer.java:242)
at ru.dark32.chat.CommandPreprocessListener.tabComplete(CommandPreprocessListener.java:32)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
...
И т.д.
Ввёл /s и тут:
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:29 [INFO] 222 issued server command: /s
2014-03-13 00:18:38 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
2014-03-13 00:18:43 [INFO] Unknown command. Type "help" for help.
/help:
2014-03-13 00:24:27 [INFO] 222 issued server command: /help
2014-03-13 00:24:27 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing 'help' in org.bukkit.command.defaults.HelpCommand(help)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196)
at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:548)
at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1351)
at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1217)
at org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer.chat(CraftPlayer.java:242)
at ru.dark32.chat.CommandPreprocessListener.tabComplete(CommandPreprocessListener.java:32)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
...
Думаю, что суть флуда понятна
Что-либо проверить в таких условиях, увы, не вышло.
Тестировалось на MCPC+ 1.6.2 last build
 
Так всётаки всё сломал. Завтре посмотрю где ошибка, но похоже связанна с перехватом команд. ПохОже не коро будут касто нЫе команды для каналов
Перемудрили, по-моему. Проще считать время по префиксу/суффиксу (в принципе как и сейчас) для одной величины времени. Кому на практике надо замутить игрока именно на 3 дня и 44 секунды? Никому, я думаю.
Так же имеет смысл добавить месяцы и годы.
Может и перемудрил, но реализация уже есть и работает. Мало кто будет банить на 3 дня и 44 секунды, не спорю, но реализация готова и работает (код могу выложить, если нужно). Делал по примеру Орлиного Глаза (HawkEye), там откат был реализован подобно. Да и вроде в LB и BB подобно было сделано.

Java:
at ru.dark32.chat.CommandPreprocessListener.tabComplete(CommandPreprocessListener.java:32)
Ааа... 32 вторая строка... число хорошее - строка плохая, как так?
Пойду постигать дзен.

Для особо зрительных - https://github.com/Dark32/RPchat2/issues?state=open - для ошибок. Нет больше тайны в исходниках, но они страшны.

Вроде исправил, отключив функцию.
 
Последнее редактирование:
Да, теперь без ошибок, но все же жду команды для отправки и переключения каналов.
Теперь по поводу тестов:
  • Поддержка групповых значений задержек/кулдован
Работает, только при указании "cooldown: 20" настройки для групп игнорятся. Лучше было бы если данная настройка отвечала за кулдаун по-умолчанию, либо вообще убрать, т.к. без надобности - внес в
Код:
    groups:
        default:
            default: true
            cooldown: 20
и всё.
  • Перехват сообщений на вход/выход
50 на 50%. Работает только сообщение входа (join) у групп, а выход (left) стандартный у всех как ни крути.
  • Опция в настройках для публичного оповещения о муте.
Опять же 50 на 50%. Работает оповещение выдачи мута только для всех, сообщение о снятии мута не выводится как для всех, так и для того, кто был в муте.
  • mcnw.<chat_inner_name>.color.<color tag> - право на использование цвета <color tag> в канале <chat_inner_name>
Не работает как ни старался.

Ошибки:
При вводе /sw - список каналов пуст, в связи с этим не стал тщательно тестировать всё, что связано с префиксами и сигнами.
Если в настройках канала указать
Код:
needPerm: true
то при попытке входа в него выводится сообщение "Канал не найден!" абсолютно у всех.

Не проверено:
  • Добавлена подержка экономики. Требует Vault
  • Поддержка групповых значений для канала по умолчанию
  • mcnw.<chat_inner_name>.economy.bypass - право для обхода платы за сообщения
  • Добавлена поддержка тегов из SimpleClans, работоспособность не гарантирую.
 
  • Перехват сообщений на вход/выход
50 на 50%. Работает только сообщение входа (join) у групп, а выход (left) стандартный у всех как ни крути.
Подтверждаю, не понимаю почему не хочет работать. Буду копать
  • Опция в настройках для публичного оповещения о муте.
Опять же 50 на 50%. Работает оповещение выдачи мута только для всех, сообщение о снятии мута не выводится как для всех, так и для того, кто был в муте.
Сообщение о снятие мута не выводилось никогда.
  • mcnw.<chat_inner_name>.color.<color tag> - право на использование цвета <color tag> в канале <chat_inner_name>
Не работает как ни старался.
Не проверял.
При вводе /sw - список каналов пуст, в связи с этим не стал тщательно тестировать всё, что связано с префиксами и сигнами.
Список каналов вводится в ручную в конфиге. Могу назад вернуть... опять...
Если в настройках канала указать
Код:
needPerm: true
то при попытке входа в него выводится сообщение "Канал не найден!" абсолютно у всех.
Эм... нужно проверить.

Эх... надо тестить и тестить... в выходные займусь.
 
Назад
Верх