1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Обсудим Не используйте Spigot, CraftBukkit и Bukkit!

Тема в разделе "Помощь", создана пользователем Dymeth, 6 янв 2024.

  1. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Всем привет.

    Если вам скинули ссылку на эту тему - скорее всего, у вас возникла какая-то проблема с вашим сервером. И первым делом для её решения вам необходимо ознакомиться с данной темой - вполне вероятно, что это решит вашу проблему.

    Весь форум задолбался объяснять людям, в чём проблема CraftBukkit и Spigot. Некоторые называют CraftBukkit просто ядром Bukkit - для таких товарищей тема тоже будет полезна.
    Поэтому настало время для второго акта ненависти в сторону ядер серверов Minecraft. Первый для любителей модов тут.

    Я конкретно по пунктам и с доказательствами объясню вам, почему использовать CraftBukkit (Bukkit) и Spigot в 2024 году просто недопустимо. Удивительно, что кому-то приходится до сих пор это объяснять.

    Про CraftBukkit и Bukkit.
    Начнём с того, что CraftBukkit (он же Bukkit) - это ядро, разработка которого заброшена на версии 1.8, то есть уже 10 лет назад. Команда, разрабатывавшая это ядро, переключилась на Spigot из-за DMCA в 2014 году. Почитать об этом подробней можно тут и тут. Зачем некоторые сервисы предлагают скачивать CraftBukkit - для меня загадка. Использовать это ядро просто бессмысленно. Даже обсуждать этот вопрос смысла нет. Ни один человек в здравом уме не порекомендует вам данное ядро. Многие плагины просто не смогут работать на CraftBukkit.
    Ближайший родственник этого ядра - Spigot. О нём и поговорим.

    Окей, а что не так со Spigot?
    Приготовьтесь, многобукав. Погнали!

    Первое. Отсутствие исправлений некоторых дюпов.
    Разработчики ядра Spigot отказываются исправлять некоторые дюпы, поскольку считают их геймплейными особенностями игры. Это, конечно, хорошо, но если вы хотите добиться честной игры - Spigot вам не помощник. Запретить некоторые дюпы в конфиге просто-напросто нельзя, поэтому выбора у вас нет. Если вы используете Spigot - вам придётся смириться с дюпом динамита, ковров, ниток и прочими.
    На других, более современных ядрах этой проблемы нет - можно разрешить большинство дюпов, которые не влияют на стабильность работы сервера.
    Тут пригодились бы ссылки на отказы команды Spigot фиксить дюпы, а также больше упоминаний конкретных дюпов. Если вы знаете, как это найти - закиньте в комменты, пожалуйста.

    Второе. Медленное исправление проблем.
    Достаточно просто зайти багтрекер Спигота, чтобы взглянуть, насколько долго исправляются некоторые проблемы.

    Приведу личный пример. Я разработчик плагина PhysicsControl. И однажды один из пользователей плагина сообщил мне, что на Spigot не работает часть функционала. Выяснилось, что в очередном обновлении Spigot сломали то, что раньше прекрасно работало. Я написал обращение на багтрекер. Знаете, сколько тот человек ждёт исправления проблемы? Уже полтора года.
    Тем времени пользователи альтернативных ядер ждали всего 11 дней.

    Но это ещё цветочки. Всё становится куда веселее, когда речь заходит о критических уязвимостях. Так, например, на сегодняшний день в Spigot до сих пор присутствует уязвимость, позволяющая крайне сильно нагружать Spigot-сервера при помощи чита Nocom. В лучшем случае вы будете испытывать просадки TPS, в худшем ваш сервер и вовсе станет недоступен. Для понимания - чит стал известен широкой общественности в 2021 году. То есть на текущий момент критическая проблема не исправлена даже спустя 3 года. Пользователям Spigot остаётся лишь полагаться на лимитеры пакетов в античитах и ViaVersion...

    Третье. Оптимизации.
    По текущим меркам Spigot довольно плохо оптимизирован.

    Для примера - на Spigot крайне неоптимально работает обработка редстоуна. Самое смешное, что главный разработчик Spigot под ником md_5 даже выпустил платный плагин, который исправляет эту проблему. Плагин назывался PandaWire. Что мешало внедрить функционал этого плагина прямо в Спигот? Полагаю, желание заработать на продажах "оптимизитора". Сейчас плагин скрыт по тем или иным причинам, но вы можете проверить мои слова вбив в гугл "md_5 PandaWire" или открыв это.

    Речь в этом пункте идёт не только про оптимизиации самого ядра, но и про косвенные проблемы с производительностью. Например, для борьбы с X-Ray Spigot вынуждает использовать плагин Orebfuscator, который потребляет достаточно большое количество ресурсов. На альтернативных ядрах защита от X-Ray вшита в эти самые ядра и работает столь же хорошо, но затрачивает существенно меньше ресурсов сервера - в первую очередь процессора.

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

    В более современный Paper вшиты тайминги более новой версии, более информативные.
    В ещё более современный Purpur и вовсе вшит плагин Spark. Просто зайдя на страницу этого плагина вы уже погрузитесь в совершенно новый мир. Вам повезло, что вы можете поставить этот плагин на Spigot. Но есть вероятность, что после прочтения данной темы это вам уже не понадобится.

    Четвёртое. Настройка.
    По современным меркам настройка Spigot оставляет желать лучшего. Например, вы не можете по-человечески перевести сообщение о нехватке прав у пользователя. Или ограничить количество принимаемых от игроков пакетов.
    Современные ядра имеют гораздо больше полезных и важных настроек.

    Пятое. Возможности для разработчиков/программистов плагинов.
    Spigot практически остановился в развитии, поэтому есть множество проблем с функционалом.
    - Как задать предмету RGB-название?
    - Как заставить моба идти в определённую точку?
    - Как скрыть конкретного моба некоторым игрокам?
    - Как получать информацию о скинах игроков?
    - Как получить название/иконку той или иной ачивки?
    - Как отслеживать появление любых сущностей в мире, включая вагонетки, сферы опыта, картины и т.д.?
    - Как отследить попадание молнии в сущность?
    - Как отследить прыжок игрока?
    - И ещё много и много действий на сервере...
    На ядре Spigot либо никак, либо с большим количеством кода , либо с привлечением второстепенных плагинов, либо с использованием нестабильных NMS и пакетов.
    NMS и пакеты меняются от версии к версии. В итоге плагин будет работать на одной лишь версии сервера, пока разработчик явно не добавит поддержку других нужных версий. Если вы решите обновиться на другую версию игры - это станет для вас проблемой.

    Из-за всех этих ограничений многие (в т.ч. популярные) плагины предупреждают о том, что Spigot не позволяет использовать весь функционал этих плагинов.

    Например Essentials: "You are running a server with limited API functionality. EssentialsX will still work, but certain features may be disabled."
    Или вот: "WorldEdit works better if you use Paper as your server software."
    Ещё пример: "[AdvancedPortals] Paper config not detected, ignoring paper settings"

    У более современных ядер гораздо больше функционала.

    Шестое. Прочие мелочи.
    На Spigot без дополнительных манипуляций у вас в логах на месте цветовых кодов будет мусор, мешающий чтению:
    upload_2024-1-6_3-14-30.png
    Или же другой пример - плагины в /plugins отображаются в случайном порядке, а не в алфавитном:
    [​IMG]
    И это далеко не все моменты. Опять же, на более современных ядрах всех этих проблем нет.

    Почему так получилось?
    Команда разработчиков Spigot ушла в команды разработки более перспективных ядер, о которых я расскажу ниже. Главный разработчик - md_5, похоже, не особо замотивирован в развитии Spigot.

    Но есть ли преимущества у Spigot?
    Есть буквально пара незначительных:

    1) Вы можете позволить игрокам использовать баги/дюпы, которые влияют на стабильность сервера. Например, сапрессор. Он вызывает серьёзную ошибку внутри ядра, поэтому альтернативные ядра были вынуждены её исправить без возможности включить этот функционал обратно.

    2) Редстоун на Спиготе работает практически идентично с ванильным майнкрафтом (одиночной игрой). Современные альтернативы немного влияют на механику редстоуна, поэтому технически сложные редстоун-схемы работать будут только на Спигот. Пример - фермы нулевого тика.
    Но важно понимать, что даже Spigot не даёт полностью ванильного геймплея - подробнее, например, тут.
    И ещё кое-что по теме.

    Стоят ли эти моменты ваших мучений со Spigot? Вряд ли.

    Окей, что делать?
    Переходить на более современные ядра.

    Если у вас 1.12.2 - вам стоит перейти как минимум на Paper.
    На версиях 1.13-1.18.1 безопасны лишь Paper и Patina из-за Log4Shell.
    На версии 1.18.2+ есть адекватные форки Paper - например Pufferfish и Purpur.

    Подробнее о разнообразии современных ядер можно почитать тут: https://rubukkit.org/threads/176425
    Крайне рекомендую вам ознакомиться с этой темой, если вы хотите хоть что-то понимать в серверах Minecraft Java Edition. Это прям самые основы.

    Как перейти на Paper, Purpur, Patina, Pufferfish или другие форки?
    Вы не поверите, насколько это просто. Всего три простых шага.

    1) Сделайте бекап/копию вашего сервера. Вероятнее всего, он вам не понадобится. Но на всякий случай не помешает

    2) Замените Spigot.jar или CraftBukkit.jar на джарник нового ядра - Paper.jar/Purpur.jar или другой.

    3) Запустите сервер, вновь остановите его и настройте новые появившиеся конфиги в папке сервера - paper.yml/pufferfish.yml/purpur.yml/папка config и прочие. Ориентируйтесь по названию своего нового ядра. Как конкретно настраивать - читайте официальную документацию, ссылки на документацию наиболее распространённых ядер я предоставил, остальное ищите самостоятельно.

    А что делать с плагинами?
    Ничего. 99.9% плагинов, которые у вас работали на Spigot, будут прекрасно работать на Paper или его форках. Если ВДРУГ случится, то плагин не поддерживает современные ядра - это явный признак, что плагин нужно либо обновить, либо заменить его на более современный аналог.
    В моей десятилетней практике я лишь 2 раза сталкивался с тем, что плагины корректно работали на Spigot, но некорректно работали на Paper или его форках.
    Короче говоря, просто заменяйте ядро и не парьтесь - всё будет в порядке.

    А если меня не убедили доводы?
    Окей, вы можете:

    1) Ещё раз перечитать всё, что я написал и подумать о том, какие преимущества вы упускаете, используя Spigot или, боже упаси, CraftBukkit

    2) Взглянуть на статистику по большому количеству серверов Minecraft: https://bstats.org/global/bukkit
    Спойлер: Paper и его форками пользуются в 3 (!!!) раза чаще, чем Spigot. Про CraftBukkit молчу вовсе.
    upload_2024-1-6_4-59-32.png

    3) Прочитать обсуждения конкретных особенностей и мнения других людей: раз и два

    4) Задать вопрос или обсудить свои опасения в этой теме

    Либо вы можете просто остаться на Spigot со всеми его недостатками и смириться с тем, что каждый второй на этом форуме первым делом будет просить вас поменять ядро на более современное при каждом удобном случае.

    На этом всё. Надеюсь, я помог вам сделать правильный выбор.
     
    Последнее редактирование: 20 авг 2024
  2. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Послесловие для шарящих
    Пожалуйста, накидайте больше примеров, ссылок и пруфов, делитесь личным мнением. Под конец написания поста я уже конкретно задолбался рассказывать обо всём в подробностях.
    Самые интересные замечания из комментариев буду докидывать сюда.

    А пока пускай тут будет мем:
    upload_2024-1-6_5-9-23.png

    Призываю в тему главного фаната Spigot
     
    Последнее редактирование: 6 янв 2024
  3. MrJarousek

    MrJarousek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    RitaSister
    ого, Overwrite фанат spigot? :D
     
  4. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Да, даже в свои плагины защиту от идиотов вставляю, чтобы либо мои плагины + paper, либо spigot и без моих плагинов.
     
  5. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Важный момент о котором не было сказано выше - NoCom.

    Всем эта штука известна как "координатный эксплоит с 2b2t", однако что за ним стоит не знает объективно никто, кроме тех, кто этой штукой пользовался.
    Итак, изначальный принцип работы таков:
    Если игрок кликает на блок в определенном чанке - данный чанк должен быть загружен. Если же чанк выгружен - он загружается, т.к. по другому майнкрафт работать не умеет.
    Чудо света же заключается в том, что до того, как Paper пофиксили это (Команда paper исправила эту проблему так, чтобы клик работал только в те чанки, которые есть вокруг игрока, в следствии чего координатный эксплоит и был возможен.) - сервер можно было без труда крашнуть при помощи такого бесконтрольного перегруза чанками.

    Spigot же, как можно понять, в себе фикса данной проблемы не имеет до сих пор, спустя чуть ли не 6 лет после обнаружения, в следствии чего достаточно просто запустить nocom и смотреть за тем как спигот сыпется от перегруза. И работает это в 100% случаев.
     
  6. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    А также - никогда не советуйте пользователям PurPur на версии 1.16.5, 1.17.1 и до 1.18.2

    Всё это было актуально до момента прихода log4shell, который команда purpur отказывается исправлять в ядре. Вместо этого они просто оставили заметку о "небезопасности старых билдов", которые все игнорируют так же как и пользовательское соглашение, просто нажимая галочку.

    Если человек - новый юзер, он явно не узнает о log4shell до момента, пока к нему не придут и не напишут в телеграм с пустого аккаунта, где покажут скрины с выкачанной сборкой (риаллайф ситуация, без шуток)

    На данный момент НА ВЕРСИЯХ ОТ 1.8 ДО 1.18.1 безопасны только Paper и Patina
     
    Последнее редактирование: 6 янв 2024
  7. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Полезное замечание, спасибо. А Patina для каких версий нормально подходит?
     
  8. Кaктуc

    Кaктуc Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    SniperAndTrapper
    разве версия 1.18.2 в пурпуре не зафикшена? а на более старых там у них какой-то файл конфигурации есть с этим log2j, он что делает?
     
  9. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Это конфиг логгера, он не имеет никакого отношения к уязвимости. Уязвимость назвали схожим образом, потому что проблема была как раз в библиотеке логгирования
     
    Последнее редактирование: 10 янв 2024
  10. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    1.18.2 - зафикшена, потому и до, хотя видимо смутили рамки, исправлю
     
  11. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    1.16.5, на 1.17.1 вроде тоже должен бы быть фикс, однако - не тестировали
     
  12. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Чуток переименовал тему, добавил информацию про Patina, упомянул про Nocnom. Спасибо Overwrite
     
  13. DragonX

    DragonX Старожил Пользователь

    Баллы:
    173
    Уже наверное целую вечность (9 лет, ого) собираю Spigot тут на форуме, и тут натыкаюсь на данную статью.
    Есть ли смысл дальше этим заниматься?
    upload_2024-1-12_11-14-39.png
    А Paper и так собирают, вовсе нет смысла самому это делать.
     
  14. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну, я бы сказал, что нет. Как минимум использование Spigot небезопасно для администраторов серверов. Тем более есть более современные альтернативы.
    upload_2024-1-12_13-9-46.png

    Там немного другой процесс - Paper распространяет не само ядро, а небольшое приложение, которое качает ванильное ядро с серверов Mojang и применяет к нему патчи. Сделано это, чтобы не иметь юридических проблем. Но да, в конечном итоге для пользователя это максимально удобно, поскольку самостоятельно собирать ничего не нужно
     
  15. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    А зачем было это делать, когда есть https://getbukkit.org/download/spigot :rolleyes:
    Что там что тут распространение вопреки лицензионному соглашению
     
  16. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Осталось проверить, что в собранные ядра ничего не вшивается :good:
     
  17. Кaктуc

    Кaктуc Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    SniperAndTrapper
    это не официальный сайт?
     
  18. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Да нет конечно
    МД5 распространяет у себя на спиготе билд тулс, иных способов получения спигота не долно существовать. А вот этот сайт уже сам там билдит и выкладывает
     
  19. SlenderMix

    SlenderMix Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    HIDDEN
    Spigot лучшее ядро в мире ничего не знаю, насчет безопасности это шутка что-ли? Да и на спайготе редстоун нормальный в отличии от ваших новоделок.
     
  20. DragonX

    DragonX Старожил Пользователь

    Баллы:
    173
    :lol:
    Да я и чаще собираю. Можно было бы, конечно, доавтоматизировать скрипт на ежедневную сборку, но тогда в тему запушить изменения не получится, только на сайт...
    Надо подумать.
     

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