Часть 1. Выбираем и устанавливаем сервер
Часть 2. Устанавливаем карту для лобби сервера
Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.
И так, лобби у нас готово, теперь нам нужно запустить сервера с мини-играми и прокси сервер.
Для этого нам понадобится такие плагины:
- BungeeCord — прокси, который объединяет сервера в одну сеть и делает незаметным переход между ними для игрока
- SuperLobbyDeluxe — отличный плагин, который позволяет настраивать лобби, ограничивать права игроков на создании и разрушение блоков, отключать смену погоды и времени и многое другое.
- Citizens — плагин для создания npc
- Citizens Server Selector — плагин для создания npc с командами перехода между серверами
- ItemJoin — плагин, позволяющий выдать игроку определенные предметы при подключении к серверу
- Chest Commands — прекрасный плагин для создания графического пользовательского интерфейса
- Murder Mystery — популярная мини-игра
- Holographic Displays — плагин, позволяющий создавать голографические надписи, требуется, как зависимость, для Murder Mystery
- BSkyBlock — еще одна популярная мини-игра
- LuckPerms — очень удобный плагин для управления правами пользователей
И так, скачиваем все плагины.
Так же создаем три новых папки в корневой папке сервера:
~/BungeeCord
~/MurderMystery
~/SkyBlock
В папку BungeeCord копируем скачаный файл BungeeCord.jar, в MurderMystery и SkyBlock копируем paper-1.15.2.jar. Так же во все новые папки копируем файл start.sh из PirateBay.
Файл start.sh редактируем таким образом, что для каждого сервера у нас было своё название процесса для программы screen. Так же для BungeeCord будет другой jar файл, который мы скачали ранее. Я сделал это следующим образом.
BungeeCord:
#!/bin/sh
screen -S BungeeCord java -Xms512M -Xmx512M -jar BungeeCord.jar
MurderMystery:
#!/bin/sh
screen -S MurderMystery java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
SkyBlock:
#!/bin/sh
screen -S SkyBlock java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
Обратите внимание, суммарно теперь 4 сервера будут потреблять 3.5Gb ОЗУ, поэтому мне пришлось увеличить конфигурацию дроплета на хостинге до 4Gb.
По уже пройденному сценарию запускаем 3 новых сервера, не забывая редактировать файл eula.txt.
После первого запуска сервера BungeeCord, нам нужно в его конфигурации прописать 3 будущих сервера: PirateBay, MurderMystery, SkyBlock. Для этого в файле ~/BungeeCord/config.yml добавляем следующие сервера, удалив тот, что был создан по умолчанию:
servers:
lobby:
motd: '&1JWelcome to Lobby'
address: localhost:25565
restricted: false
murdermystery:
motd: '&1JWelcome to Murder Mystery'
address: localhost:25566
restricted: false
skyblock:
motd: '&1Welcome to Sky Block'
address: localhost:25567
restricted: false
так же ставим ip_forward: true и не забываем поменять online_mode: true на false, если у вас не лицензионный Minecraft.
После первого запуска серверов MurderMystery и SkyBlock, а также для PirateBay правим их server.properties, выставив соответствующие порты из bungeecord. Так же нужно установить online-mode=false, что бы bungeecord мог проксировать наши сервера:
для PirateBay:
server-port=25565
query.port=25565
online-mode=false
для MurderMystery:
server-port=25566
query.port=25566
online-mode=false
для SkyBlock:
server-port=25567
query.port=25567
online-mode=false
Так же для того, что бы заработал Citizens Server Selector, нам нужно в файле spigot.yml для сервера PirateBay проставить параметр bungeecord: true
Перезапускаем все сервера.
Обратите внимание, что теперь у нас изменился порт для подключения в игровом клиенте, согласно конфигурации bungeecord теперь он 25577.
Теперь время настроить наш лобби-сервер. Для этого копируем скачанные плагины SuperLobbyDeluxe, Citizens, Citizens Server Selector, LuckPerms, ItemJoin и Chest Commands в папку плагинов нашего PirateBay сервера ~/PirateBay/plugins. Перезапускаем сервер и подключаемся к нему из игры.
Первым делом выберем место на карте, где у нас должны появляться игроки и выполним команду:
/superlobby setspawn @a
Теперь выбираем место для npc, который будет перенаправлять нас на сервер мини-игры и выполняем команды:
/css create &a&lMurderMystery
/css setCmd css join murdermystery
/css setDesc &eOnline: &1{players}
Наш npc создался и если мы нажмем на него правой кнопкой мыши, нас перенаправит на сервер MurderMystery. Для перехода между серверами вы так же можете использовать команду /server:
/server murdermystery
/server skyblock
/server lobby
Тоже самое проделываем и для SkyBlock:
/css create &5&lSkyBlock
/css setCmd css join skyblock
/css setDesc &eOnline: &1{players}
У нас должно получиться следующее:
Теперь настроим меню игрока. Для этого нам нужно подправить конфигурацию плагина ItemJoin.
Открываем ~/PirateBay/plugins/ItemJoin/items.yml и заменяем содержимое нашим:
items.yml
# --{ =-=-=-=-=-=-=-=-=-= ItemJoin's Custom Item Configurations, by RockinChaos =-=-=-=-=-=-=-=-=-= }--
# See the tutorial page for a more in-depth explaination; https://github.com/RockinChaos/ItemJoin/wiki
items-Version: 6
items-Delay: 2
items-Overwrite: false
items-Spamming: false
items-RestrictCount: false
items:
compass:
id: COMPASS
slot: 0
name: '&1Lobby menu'
commands:
- 'menu'
triggers: join, respawn, world-change
permission-node: itemjoin.compass
enabled-worlds: Void
itemflags: death-drops, self-drops, inventory-modify
Также поступаем и с ~/PirateBay/plugins/ChestCommands/menu/example.yml:
example.yml
######################
#+ +#
# MENU SETTINGS #
#+ +#
######################
menu-settings:
# REQUIRED
# Appears as the title of the menu.
name: '&1Menu'
# REQUIRED
# The number of rows in the menu.
rows: 3
# OPTIONAL (you can remove this or set it to '')
# Bind multiple commands using ; (command: 'menu; m; me')
command: 'menu'
# OPTIONAL
# How frequently the menu will be refreshed, in seconds.
# Useful if you have variables in items' descriptions.
auto-refresh: 5
# OPTIONAL
# This command command will be executed when the menu is opened.
# Supports all the icon command types.
open-action: 'tell: &eYou opened the example menu.'
# OPTIONAL
# The menu will open only when right-clicking with a compass.
open-with-item:
id: compass
left-click: false
right-click: true
######################
#+ +#
# ITEMS #
#+ +#
######################
lobbycmd:
COMMAND: 'server lobby'
NAME: '&eReturn to the Main Lobby'
LORE:
- 'Returns to the Main Lobby'
ID: enderpearl
POSITION-X: 1
POSITION-Y: 1
spawn:
COMMAND: 'spawn'
NAME: '&eBack to Spawn'
LORE:
- 'Left click to move to Spawn Point'
ID: turtleegg
POSITION-X: 1
POSITION-Y: 2
skyblock:
COMMAND: 'server skyblock'
NAME: '&ePlay SkyBlock'
LORE:
- 'Left click to play SkyBlock'
ID: grassblock
POSITION-X: 4
POSITION-Y: 1
murdermystery:
COMMAND: 'server murdermystery'
NAME: '&ePlay Murder Mystery'
LORE:
- 'Left click to play Murder Mystery'
ID: bow
POSITION-X: 5
POSITION-Y: 1
Перезапускаем сервер PirateBay. У нас должно появиться меню в виде компаса:
И при нажатии правой кнопки мыши вот такое игровое меню:
Но если мы заберем у нашего игрока роль оператора, выполнив команду
/deop Dinikin
то при попытке открыть меню компаса, мы получим сообщение, что у нас нет прав на открытие файла example.yml. И тут нам на помощь приходит плагин LuckPerms. Он позволяет настроить права на выполнение определенных команд для определенных групп пользователей или даже конкретных игроков.
Возвращаем нашему пользователю роль оператора в консоли сервера:
op Dinikin
и там же вводим:
lp user Dinikin permission set luckperms.*
предоставим нам права админа на все команды плагина LuckPerms.
Переходим в игру и выполняем команду:
/lp editor
которая сгенерирует ссылку на сайт плагина, по которой нам нужно перейти для дальнейшего редактировани прав:
Переходим по ссылке и на открывшейся странице добавляем дефолтной группе пользователей права chestcommands.open.example.yml:
Жмем Save в правом верхнем углу, копируем сгенерированную команду и выполняем ее в игре. Результатом будет следующее сообщение:
Снова забираем у себя права оператора и пробуем открыть игровое меню. Теперь это должно получиться и у простого пользователя:
Теперь можете перенести плагины ItemJoin и Command Chest c содержимым их папок на сервера мини-игр SkyBlock и MurderMystery, что бы не проделывать эти же действия повторно.
Так же копируем соответствующие плагины мини-игр. Для Murder Mystery так же копируем плагин Holographic Displays и SuperLobbyDelux. Перезапускаем сервера мини-игр.
Для LuckPerms плагина на обоих серверах повторяем действия, что бы предоставить игрокам доступ к меню.
И так, игра SkyBlock у нас готова, вы можете перейти на нее через npc либо меню. Что бы начать выживание, просто наберите команду /is или /island и выберите тип острова.
Если вы хотите, что бы для всех новых игроков остров создавался автоматически, поставьте в файле ~/SkyBlock/plugins/BentoBox/addons/BSkyBlock/config.yml для параметра create-island-on-first-login свойство enable: true и перезапустите сервер.
Осталось за малым: подобрать и импортировать карту для мини-игры Murder Mystery, а так же настроить её.
Я скачал эту карту, распаковал архив и залил на сервер в папку ~/MurderMystery. Незабудьте в файле ~/MurderMystery/server.properties изменить значение свойства level-name=world на имя вашей папки с картами. Перегружаем сервер и переходим на карту MurderMystery:
Как настроить игру Murder Mystery, вы можете в этом видео
Поздравляю, мы закончили с установкой игрового сервера. Нам все еще осталось сделать некоторые косметические настройки, такие как приветственные и информационные надписи. Однако эти изменения уже выходят за рамки этого туториала, но я думаю, вы без проблем сможете разобраться в конфигурационных файлах плагина SuperLobbyDelux.