Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 3. Устанавливаем мини-игры

от автора

Часть 1. Выбираем и устанавливаем сервер

Часть 2. Устанавливаем карту для лобби сервера

Часть 3. Устанавливаем мини-игры

И так, лобби у нас готово, теперь нам нужно запустить сервера с мини-играми и прокси сервер.
Для этого нам понадобится такие плагины:

  • BungeeCord — прокси, который объединяет сервера в одну сеть и делает незаметным переход между ними для игрока
  • SuperLobbyDeluxe — отличный плагин, который позволяет настраивать лобби, ограничивать права игроков на создании и разрушение блоков, отключать смену погоды и времени и многое другое.
  • Citizens — плагин для создания npc
  • Citizens Server Selector — плагин для создания npc с командами перехода между серверами
  • ItemJoin — плагин, позволяющий выдать игроку определенные предметы при подключении к серверу
  • Chest Commands — прекрасный плагин для создания графического пользовательского интерфейса
  • Murder Mystery — популярная мини-игра
  • Holographic Displays — плагин, позволяющий создавать голографические надписи, требуется, как зависимость, для Murder Mystery
  • BSkyBlock — еще одна популярная мини-игра


И так, скачиваем все плагины.

Так же создаем три новых папки в корневой папке сервера:
~/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 join murdermystery /css setDesc &eOnline: &1{players} 

Наш npc создался и если мы нажмем на него правой кнопкой мыши, нас перенаправит на сервер MurderMystery. Для перехода между серверами вы так же можете использовать команду /server:

/server murdermystery /server skyblock /server lobby

Тоже самое проделываем и для SkyBlock:

/css create &5&lSkyBlock /css setCmd 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.

ссылка на оригинал статьи https://habr.com/ru/post/496774/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *