Добро пожаловать! FantasticCraft - Лицензионный minecraft сервер 1.20 для приятной игры без гриферов

Зарегистрируйся и получай приятное общение и бонусы на сервере!
  • Здравствуйте, друзья! Хотите чего-то нового? Ведь все эти надоевшие сервера с безграничным донатом, кучи неадекватных детишек уже порядком надоели! Это похоже на бездонную пропасть, полную мерзости и печали! но у всего есть конец! Вот и этой пропасти пришел конец! Вы встретили этот сервер! Вот вы спросите, чего такого в этом сервере?

    А я Вам отвечу:
    - Вы можете начать играть сразу без регистрации.
    - Наш сервер без гриферов. Любое гриферство и воровство запрещено.
    - Вы можете играть с любого клиента с лицензией (или запросить доступ без лицензии).
    - Наш сервер майнкрафт без дюпа и без 1000 лвла. Можно сказать ванильный майнкрафт сервер с минимальным количеством плагинов для приятной игры
    - На нашем сервере средний возраст игроков 18+, у нас самые адекватные взрослые майнкрафтеры.
    - У нас есть уникальные работы. Все работы строились без плагинов, вручную.
    - Есть разделение на гражданский и игровой миры.
    - Можно играть даже с мобильного устройства!
    Подробнее как начать играть...

    Однако перед началом игры... Прочтите краткую информацию о сервере, раздел на сайте чаво, а также наши правила.

    Но если вам надоел школьный ор, ругань, читерство и гриферство - тогда вам к нам! ;) У нас преимущественно аудитория 18+.

    Подходит? Тогда залетай к нам по ip: play.fantasticcraft.ru

Как сделать свой сервер Minecraft (TL;DR)

Началось всё с того, что мы с дочкой играли в выживание на Java Realms, и приглашали друзей поиграть вместе.

Некоторые друзья оказались не совсем друзья, и у нас постоянно пропадали вещи в сундуках, ломались строения, в общем, происходили странные вещи. И у меня возникла идея - сделать свой сервер, похожий на FantasticCraft. Похожий хотя бы по составу плагинов. Конечно, сервер - это не только набор плагинов, но ещё и их тонкая настройка. А ещё сообщество игроков, красивые строения, и многое другое, что скопировать к себе невозможно.

Я на работе имел много опыта с эксплуатацией Java-приложений, и решил, что тут я тоже вполне справлюсь. Заодно решил попробовать понять, что может быть не так с производительностью, отчего просаживается TPS. С этой задачей я пока не справился, хотя углубился изрядно. :)
Для начала мне нужны были плагины для привата регионов, и для журнала действий игроков. И питомцы. И чтобы на сервере была своя валюта. И всего один мир для выживания.

Чтобы посмотреть, на каком сервере работает FantasticCraft, нажимаем F3, и видим, что ядро сервера - PaperMC. Скачиваем его с сайта PaperMC – The High Performance Fork и запускаем. Предположим, что у нас уже есть Java 8 или 11 (лучше 11), вполне подойдёт OpenJDK или даже JRE. Не думаю, что сейчас стоит без нужды притрагиваться к Oracle Java. Компания Oracle своей токсичной политикой в плане лицензирования и обновлений уже доставила немало "приятных" моментов многим людям, а мне - ещё и на работе. Так что берём опенсорсный аналог, для Windows это может быть AdoptOpenJDK.

Запустить сервер Paper в самом простом случае можно так:
java -Xms2G -Xmx2G -jar paper-###.jar nogui

Если убрать опцию nogui, то у вас будет окно с графиком использования Java Heap, и что-то ещё.
А если подробнее, то - читаем документацию. Где-то отсюда: Getting Started — PaperDocs 1.16.5 documentation

Теперь как посмотреть, какие плагины использует FantasticCraft? Тут я снова не стал беспокоить лишний раз админа, и просто набрал в поиске Google "FantasticCraft plugins". Один из первых 5-10 результатов поиска показывает, какие плагины были установлены на сервере, пользователей онлайн и т.д.

Из полученного обширного списка плагинов сразу отпали платные плагины. И я стал пытаться понять, что для чего нужно. Для экономики нужен Vault и ещё что-то. Поиском я нашёл плагин EssentialsX, который добавляет экономику, а также ещё кучу каких-то дополнительных возможностей и команд, например телепортацию на спавн.

Наиболее возмутительной особенностью EssentialsX является то, что он добавляет к командам алиасы с лингвистически шокирующими названиями, начинающимися на /eb. Происходят они, очевидно, от сокращения - например essentials ban, essentials balance. Из песни слов не выкинешь, но к счастью, эти алиасы команд можно отключить через файл commands.yml.

Кроме того, понадобилось выдать пользователям разрешения на ограниченный список команд, чтобы они не могли делать всё подряд. Хотя, когда на сервере играют двое детей, это не так страшно. Вместо платного плагина PermissionsEx я использовал LuckPerms. Вроде работает. Вместо платного CMI - вероятно EssentialsX.

Плагины ищем поиском в Google - например "minecraft essentialsx plugin", и открываем ссылки на сайты https://spigotmc.org, Bukkit Forums, или репозиторий с исходным кодом на GitHub. В общем, из надёжных источников.

Ещё один плагин, который я не мог понять, как называется - чтобы можно было заходить из мобильной версии Minecraft на сервер. Я обратил внимание, что когда я подключаюсь к серверу через мобильный Minecraft, то в информации о сервере написано, что это Geyser. Загуглил - оказалось, плагин Geyser - прокси-сервер для клиентов Bedrock Edition. К нему также ещё есть Floodgate, который позволяет не логиниться повторно с учётной записью Minecraft Java в форме с паролем, который при этом видно на экране, а просто преобразует имена пользователей Bedrock в имена Mojang. У таких пользователей не отображаются скины, но протестировать это я толком не смог, так как не освоил управление в Minecraft на смартфоне или планшете. Я хотел затащить туда каких-нибудь друзей Любы из её класса, но пока так и не смог, потому что у одних какой-то странный Minecraft, а так в основном они играют в Roblox, и им это не очень нужно.

Ещё один плагин, который я нашёл, когда искал экономику - Coins: он делает так, что из мобов выпадают монетки, и их можно собирать. Это очень далеко от реалистичной и сбалансированной экономики на сервере FantasticCraft, но хоть что-то. По умолчанию, валютой сервера была монетка (значок подсолнуха), но я её по просьбе дочки поменял на звёздочку (из Нижнего мира), и подумал, что потом, когда научусь, мы нарисуем свою модель предмета. А потом я решил заменить её на печенье, зачарованное на прочность 1. Так наш сервер получил рабочее название ПеченькиКрафт.

И для того, чтобы валюту сервера можно было скрафтить, есть много вариантов плагинов, например CustomCrafting, но я их пока толком не освоил. Сделал несколько смешных рецептов типа "собери из г и палок незеритовую броню" и на этом остановился. :)
Да, и конечно же я поставил Dynmap, чтобы видеть карту мира.

Все плагины работают так: нужно добавить файл jar в папку plugins, рестартовать сервер, и потом править конфиг плагина, который создаётся в папке внутри plugins, и потом снова рестартовать. И рестартовать ещё бесчисленное количество раз.

В итоге список плагинов пока такой:
ActionHealth.jar - для отображения здоровья мобов
BlocksHub-3.1.1.jar - не помню, возможно зависимость для какого-то из плагинов
Citizens-2.0.27-b2203.jar - для создания NPC
Coins.jar - для выпадания денег из мобов
CoreProtect-19.4.jar - для записи журнала действий игроков и восстановления поломанного
DeathMessagesPrime.jar - для необычных сообщений о гибели игроков (например, milovidoff стал ёжиком)
Dynmap-3.1-beta7-spigot.jar - карта сервера
EssentialsX-2.18.2.0.jar - для экономики и кучи всего другого, полезного и не очень
EssentialsXChat-2.18.2.0.jar - что-то для чата, не успел его изучить
EssentialsXSpawn-2.18.2.0.jar - тоже надо вспомнить
Geyser-Spigot.jar - прокси для клиентов Bedrock Edition
LuckPerms-Bukkit-5.2.65.jar - для управления разрешениями
MyPet-3.11-SNAPSHOT-B1590.jar - для питомцев
PvPManager.jar - для включения/выключения PvP
ServerRestorer.jar - для резервного копирования сервера
ShopChest-1.13-SNAPSHOT.jar - магазины-сундуки
Vault.jar - просто Vault, он просто нужен :)
craftbook-3.10.3.jar - набор разных мелких дополнений, например из мобов выпадают головы, можно сидеть на ступеньках, кастомный крафт предметов, и т.д.
customcrafting-1.6.5.1-hotfix.jar - кастомный крафт предметов
floodgate-bukkit.jar - дополнение к прокси Geyser для маппинга учёток игроков Bedrock Edition в обычные
minecraft-prometheus-exporter-2.3.0.jar - сбор метрик сервера в Prometheus
tabtps-spigot-1.3.3.jar - отображает TPS, milliseconds per tick, ping, использование памяти и прочее в Tab, bossbar или actionbar
wolfyutilities-1.6.3.12.jar - зависимость для customcrafting
ProtocolLib.jar - зависимость для чего-то ещё
worldedit-bukkit-7.2.3.jar - редактор мира
worldguard-bukkit-7.0.4.jar - для привата регионов

Что я не нашёл, из того, что есть на FC:
- режим PvE с отображением HP врага (вместо этого я поставил ActionHealth)
- как делать порталы
- и что-то ещё, что уже не помню. Вспомню - напишу.

Плагины, которые есть на FC, но я не знаю для чего они, или я их не хочу - не стал ставить.

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

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

Что ещё пошло не так: дети играли в мире для выживания, периодически переключаясь в креатив, и могли получать предметы, которых у них не было. Потом я хотел выдать себе консольной командой предмет "Читерский меч", зачарованный на остроту 1000, и по ошибке выдал всем. В общем, честной игрой здесь и не пахло :) Зато весело. По крайней мере, дети в креативе быстро и непринуждённо строят кучу всего, что потом не жалко сносить.

Сначала я хотел запустить сервер на виртуалке в яндекс-облаке, но потом решил, что там будет слишком дорого, и разместил сервер на одном дешёвом хостинге с 1 Гб памяти за 250р, где он кое-как работал и периодически падал. Потом я нашёл другой хостинг, почти за те же 300-500р, но с 4 Гб памяти. Этот хостинг интересен тем, что в поддержке клиента могут послать, впрочем и клиенты у них тоже очень интересные - школьники с амбициями. Я отнёсся снисходительно к этой их особенности, и решил пока остаться у них. Там сервер с 1-3 игроками работает нормально.

Потом к нам пришла Yasna_ и попросила для своей подруги сделать так, чтобы на сервер могли заходить не только лицензионные клиенты. Я стал с этим разбираться - и мне не понравилось. Поскольку у меня теперь было два сервера на двух хостингах - на старом сервере, я стал ставить эксперименты на нём. Оказалось, что есть плагины, которые позволяют прикрутить дополнительную аутентификацию с паролем. Но после того, как я отключил на сервере online mode, оказалось, что идентификаторы пользователей поменялись, и у них соответственно всё с нуля - инвентарь, содержимое эндер-сундука и т.д. Как сделать, чтобы пользователи и с лицензиями, и без них могли играть вместе, при этом для пользователей без лицензий был белый список, и пользователи с лицензией не были ущемлены в правах или удобстве игры - надо разбираться. Делать аутентификацию для всех - не хочу.

И я собрал на ноутбуке небольшой стенд из двух Bungeecord и двух серверов. Один из Bungeecord работает в online mode, другой без него, нормальные пользователи через первый попадают прямо на сервер, а через второй пользователи, которым не хватило денег на лицензию, попадают сначала на сервер аутентификации, и только потом - на основной сервер. Иногда это работало, закономерности толком понять не удалось. Да, и чтобы держать все эти сервера, понадобятся дополнительные ресурсы. В общем, мне пока не нравится эта идея, но потребности клиентов - важная вещь, надо подумать над этим.

В дальнейших планах: сделать отдельный мир для спавна, отдельный для креатива, и отдельный для выживания, чтобы там всё было по-честному, и нельзя было таскать вещи из креатива в выживание. Нужно ещё немного оптимизировать сервер по производительности. Когда всё будет готово и оттестировано, я перенесу туда наш мир выживания из Java Realms, уж очень мы к нему привыкли. А может быть, к тому времени у меня дочь вырастет, и мы перестанем играть в Minecraft... ведь я всегда всё делаю так долго. Посмотрим :)


Тем, кто дочитал до этого места - картинка для отдыха глаз :)

2021-03-25 19_51_05-Clipboard.jpg
 
Последнее редактирование:
Однако!
Пару месяцев назад пытался осилить, но сломался на кривом хостинге, который был безумно дешевым для опытов, но соответственно с весьма урезанным набором возможностей по кастому.
Может быть в отпуск соберусь и еще раз поиграюсь, опираясь на твой гайд.
Вообще мне интересно где бы по хостится на случай, если прям реально сервер делать.
Ну и как посчитать необходимые ресурсы сервера на предполагаемое количество игроков.
 
Насчёт хостинга напишу в личку.
У меня пока 4 Гб памяти, два ядра процессра. На хостинге на одной железке могут жить несколько серверов, которые влияют на производительность друг друга.

Пишут, что в основном сервер Minecraft использует одно ядро, т.е. с распараллеливанием процессов там не очень. Поэтому говорят, что лучше использовать более мощный процессор с небольшим количеством ядер, десктопного типа, чем серверные платформы с кучей ядер. Думаю, ресурсы сервера можно подбирать только на практике. Есть наверное какие-то общие рекомендации по sizing (надо поискать).
 
Статья хорошая, но как мне кажется, проще заказать сервер на хостинге, например на хостинге Zorotex
Это намного проще в плане экономии времени и нервов.
 
Да, хостинг упрощает многие вещи. Я так и сделал - у меня теперь на хостинге один bungeecord, и за ним два-три сервера. Один из них для экспериментов, другой для скайблока, третий - всё остальное.
По деньгам получается примерно одинаково, или чуть дешевле одного сервера в яндекс-облаке.
 
shape1
shape2
shape3
shape4
shape7
shape8
Сверху