Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Плагин [INFO/MISC] PlayerTrafficSource v1.2 - Откуда игроки узнают о Вашем сервере? [1.8 - 1.12.2]

MrMagaChannel

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
mrmagachannel
PlayerTrafficSource
upload_2018-1-22_17-40-49.png
​
Версия плагина: 1.2
Для серверов: [1.8 - 1.12.2]
Работает на Spigot и PaperSpigot. CraftBukkit НЕ ПОДДЕРЖИВАЕТСЯ!


Описание:

Рад представить вам свой первый плагин.
Этот плагин позволит вам выяснить источник трафика игроков. При входе игрокам будет предложено ответить, откуда они узнали о сервере. Вы можете настраивать варианты ответа, как угодно, смотреть общие результаты опроса, а также отдельно для игрока.

Скриншоты:
Опрос при входе
upload_2018-1-22_15-46-29.png


/pts

upload_2018-1-22_15-46-17.png

/pts results
upload_2018-1-21_19-45-7.png

/pts list monitoring 2
upload_2018-1-22_15-47-46.png

Команды:
/playertrafficsource - основная команда плагина (короткие варианты: /playerts, /pts). Выводит помощь по тем командам плагина, на которые у игрока есть права.

  • /pts results - посмотреть общие результаты опроса.
  • /pts list <вариант> [страница] - посмотреть список игроков, которые выбрали этот вариант.
  • /pts seen <игрок> - посмотреть откуда указанный игрок узнал о сервере.
  • /pts remove <игрок> - очистить ответ игрока.
  • /pts reload - обновить конфигурацию и сообщения плагина.

Также есть 2 системные команды.
  • /pts answer <вариант> - указать, откуда узнал о сервере. (Игроки будут тыкать на кликабельный текст в чате, вводить команду им не придётся).
  • /pts sendquestion <игрок> - если игрок еще не ответил, откуда узнал о сервере, то ему предложат ответить. (Плагин автоматически отправляет опрос при входе игрока на сервер, если он еще не ответил, поэтому эта команда пригодится только тогда, когда вы отключите в конфиге автоматическую отправку опроса и захотите отправить, например, после входа в аккаунт AuthMe через AuthMe/commands.yml. Подробнее об этом читайте в комментариях конфига).

Perimssions:
  • playertrafficsource.results - право на команду /pts results
  • playertrafficsource.list - право на команду /pts list
  • playertrafficsource.seen - право на команду /pts seen
  • playertrafficsource.remove - право на команду /pts remove
  • playertrafficsource.reload - право на команду /pts reload
  • playertrafficsource.admin - права сразу на все команды плагина.

Конфиг и сообщения:
Код:
# Если эта опция включена, то через 5 секунд после входа игрокам автоматически
# будет отправлен опрос, чтобы они отметили, откуда пришли.
# После того, как игрок ответит, опрос ему больше не будет отправляться.
# Если Вы хотите, чтобы опрос отправлялся игроку только после входа
# в аккаунт (AuthMe), то отключите эту опцию и в файле /plugins/Authme/commands.yml
# В событые onJoin запускайте команду /pts sendquestion %p от коноли.
# Это должно выглядет так:
#onLogin:
#    question:
#        command: 'pts sendquestion %p'
#        executor: 'CONSOLE'
EnableAutoQuestionSending: true

# Здесь можно указать количество выводимых игроков в одной странице
# для команды /pts list <вариант> <страница>
PlayerOnOnePage: 50

# Здесь нужно указывать варианты ответов, чтобы игроки отметили, откуда пришли.
# Изначально только 5 вариантов: monitoring, youtube, poiskovik, friends, other
# Это ключи, они будут отображаться вам при просмотре результатов.
# Игроки эти слова не будут видеть, ставьте их такими, чтобы было понятно Вам.
# Обязательно ставьте ключи в нижнем регистре! monitoring - можно, Monitoring - нельзя
# Игроки же при выборе будут видеть значения, которые вы впишете для каждого варианта.
# Просто смотрите пример ниже и всё станет понятно.
AnswerVariants:
  monitoring: 'Нашел в мониторинге'
  youtube: 'Нашел на YouTube'
  poiskovik: 'Нашел в поисковике (Google/Yandex и т. д.)'
  friends: 'Узнал от друзей'
  other: 'Другое'
Код:
Messages:
  PlayerOnly: '&cЭта команда только для игроков!'
  Reload: '&f[&6PlayerTrafficSource&f] &aперезагружен!'
  NoPermission: '&cЭта команда недоступна для вас!'
  NoResults: '&cНикто еще не ответил, откуда узнал о сервере!'
  NoVariantResults: '&cНикто еще не %multiargs%'
  PlayerHasNotAnsweredYet: '&cИгрок &e%player% &cеще не ответил, откуда пришел!'
  SuccessfulRemoveAnswer: '&aОтвет игрока &e%player% &aуспешно очищен!'
  IncorrectVariant: '&cТакого варианта ответа не существует!'
  UnknownPage: '&cТакой страницы не существует!'
  IncorrectPageFormat: '&cСтраница должна быть целым числом, а вы ввели &f%arg%'
  CurrentPage: '&eСтраница &c%page% &eиз &c%maxpage%&e.'
  NextPage: '&eДля просмотра следующей страницы введите &b/pts list %type% %next%'
  SuccessfulAnswer: '&aСпасибо за ваш ответ! Вы помогли нам!'
  AlreadyAnswered: '&cВы уже ответили!'
  Results: '&eРезультаты опроса'
  Total: '&bВсего'
  Answered: 'ответил'
 
  # Эти строки будут отправлены игроку до вариантов ответа.
  MessagesBeforeAnswerVariants:
    - '&fПривет, расскажи, откуда ты узнал о сервере)!'
    - '&fПросто нажми &c&lT &fи кликни мышкой на соответствующий вариант!'
 
  # Это помощь при введении команды /pts без аргументов или с несуществующими аргументами.
  # Выводится будут только те команды, к которым у вводившего есть права.
  CommandsHelp:
    reload: '&b/pts reload &e- обновить конфигурацию плагина'
    results: '&b/pts results &e- посмотреть результаты опроса'
    list: '&b/pts list <вариант> [страница] &e- игроки, узнавшие о сервере из этого варианта'
    seen: '&b/pts seen <игрок> &e- посмотреть, откуда игрок узнал о сервере'
    remove: '&b/pts remove <игрок> &e- очистить ответ игрока'

Лог изменений:
1.0 - релиз плагина
1.1 - оптимизация кода, исправление мелких багов, новые функции
1.2 - улучшение подсказок команд + TabComplete для аргументов и /pts list

TODO:
Ваши идеи.

Скачать последнюю версию:
https://yadi.sk/d/W5HjBKbG3ReTFi Или
https://goo.gl/4NtysF

Исходники на GitHub
 
Последнее редактирование:
Код почти красивый, ничего ужасного и опасного не увидел(более углублённо не изучал).
hWrh3uD74v0.jpg

Замени этот импорт на "import org.bukkit.ChatColor;". Хз зачем.
 
Код почти красивый, ничего ужасного и опасного не увидел(более углублённо не изучал).
hWrh3uD74v0.jpg

Замени этот импорт на "import org.bukkit.ChatColor;". Хз зачем.
Все равно для TextComponent нужен Spigot, на CraftBukkit не будет работать.
 
Добавил исходники на GitHub
P.S. Так как это мой первый плагин, возможно, и скорее всего, я где-то наговнокодил. Если да, то расскажите, где можно было бы оптимизировать код.
 
Последнее редактирование:
Добавил исходники на GitHub
P.S. Так как это мой первый плагин, возможно, и скорее всего, я где-то наговнокодил. Если да, то расскажите, где можно было бы оптимизировать код.
Первый плагин ты сделал явно лучше, если сравнивать его с другими такими первыми плагинами(твой первый плагин не превзошёл мой первый))00)0).
 
Добавил исходники на GitHub
P.S. Так как это мой первый плагин, возможно, и скорее всего, я где-то наговнокодил. Если да, то расскажите, где можно было бы оптимизировать код.
Ты прав, говно процедурное
 
Ты прав, говно процедурное
Сегодня некоторые места буду оптимизировать и добавлю новую фичу. Даже в текущем виде плагин нисколько не нагружает, в таймингах меньше 0.01%.
 
Ну ява это оопшный язык, а у него все в статиках, статики - процедурки
Статики только в классе Methods.class. Там методы для прямого и удобного обращения через Methods.methodname
Естественно, что мне не нужно для таких методов через экземпляры запускать, потому там методы статичные.
 
Последнее редактирование:
Плагин обновлен до v1.1 удалите файлы messages.yml и config.yml, они пересоздадутся!
  • Оптимизация кода
  • Новые функции:
/pts remove <игрок> - очистить ответ игрока.
/pts list <вариант> [страница] - показывает список игроков, которые ответили этот вариант. Страницу можно не писать, тогда откроется первая страница. Всего на одной странице 50 игроков (можно регулировать в конфиге). Выводимый список отсортирован по алфавитному порядку.
Например, /pts list monitoring - покажет список игроков, которые пришли на сервер из мониторинга.
Также обновлены и дополнены скриншоты в шапке.
 
Последнее редактирование:
В данном случае, как раз было бы глупо не делать подобные методы статичными. Вероятно @hyndorik просто подробно не вникал в код.
Ну и хрень несешь, я тебе сказал как улучшить код, а ты свое говно несешь
 
Что плохого в статиках?
Статики только в классе Methods.class. Там методы для прямого и удобного обращения через Methods.methodname
Естественно, что мне не нужно для таких методов через экземпляры запускать, потому там методы статичные.
Ну для тебя если ООП ничего не значит, то окей пиши статики. А то там довны какие то солид принципы придумали
 
Ну для тебя если ООП ничего не значит, то окей пиши статики. А то там довны какие то солид принципы придумали
У плагина специальный, отдельный класс для статических методов. Ты сейчас подмениваешь понятия, статические методы именно нужны для подобных методов. В остальных местах нет статических методов, по тем же самым основам ООП.
P. S. Во многих известных плагинах подобные статические методы также собирают в отдельный класс.
 
У плагина специальный, отдельный класс для статических методов. Ты сейчас подмениваешь понятия, статические методы именно нужны для подобных методов. В остальных местах нет статических методов, по тем же самым основам ООП.
P. S. Во многих известных плагинах подобные статические методы также собирают в отдельный класс.
Та я понял что у тебя диагноз. Я ща открыл твой этот класс, лютая хрень, хотя бы название класса лютейшая хрень)
 
Та я понял что у тебя диагноз. Я ща открыл твой этот класс, лютая хрень, хотя бы название класса лютейшая хрень)
На самом деле это вопрос вкуса. Мне лично удобней в таком виде статические методы хранить и быстро использовать.
Спасибо за оценку.
 
На самом деле это вопрос вкуса. Мне лично удобней в таком виде статические методы хранить и быстро использовать.
Спасибо за оценку.
Использовать статик для быстрого доступа. Ну эт конечно дикий фейспалм) Хрень еще какую то про вопрос вкуса сморозил.
Итог: Какая-та дикая процедурная хрень
 

Поделиться этой страницей

Назад
Верх