asvdvl / jvm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| Source: https://cwelth.com/manuals.php?mid=2 |
| Руководство по аргументам запуска Java |
| Руководство, которое поможет вам попробовать оптимизировать мои (и не только мои) сборки для запуска на слабых компьютерах путем использования аргументов запуска java для minecraft. Однако, владельцы мощных компьютеров тоже смогут почерпнуть для себя что-нибудь полезное. Например, некоторые флаги потенциально помогут избавиться от мелких неприятных пролагиваний. |
| Отказ от ответственности: |
| Это руководство является переводом алгоритма оптимизации Java «Paul’s Reborn Neonate» и поможет оптимизировать работу майнкрафта как для ваниллы, так и для модпаков. |
| Все потенциальные ухудшения в производительности остаются на совести автора оригинального алгоритма. Я не несу ответственность за корректную работоспособность перечисленных ниже параметров запуска. Все флаги, описанные в данном руководстве, читатель использует на свой страх и риск. |
| Оригинальная статья: https://www.minecraftforum.net/forums/minecraf. -minecraft-jvm-arguments-guide |
| После выполнения рекомендаций из этого руководства, вы заметите следующее: |
| — Замедление операций по работе с памятью (из-за необходимости частого высвобождения) |
| — Ускорение обработки операций процессором и использование быстрых математических алгоритмов (Процессор будет использоваться более эффективно) |
| — Максимизировано использование Garbage Collector’а (сборка будет использовать минимальное количество памяти) |
| — Замедление загрузки модпака (из-за более эффективной работы с памятью) |
| — Более отзывчивый мир, более стабильный TPS (Из-за эффективной работы с ресурсами процессора) |
| — Большее количество параллельных вычислений (Больше параллельных потоков) |
| Начните тест со следующим набором аргументов (изменяйте их значения по необходимости): |
| -mx1G -XX:InitiatingHeapOccupancyPercent=10 -XX:AllocatePrefetchStyle=1 -XX:+UseSuperWord -XX:+OptimizeFill -XX:LoopUnrollMin=4 -XX:LoopMaxUnroll=16 -XX:+UseLoopPredicate -XX:+RangeCheckElimination -XX:+CMSCleanOnEnter -XX:+EliminateLocks -XX:+DoEscapeAnalysis -XX:+TieredCompilation -XX:+UseCodeCacheFlushing -XX:+UseFastJNIAccessors |
| -XX:+CMSScavengeBeforeRemark -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:+ScavengeBeforeFullGC -XX:+AlwaysPreTouch -XX:+UseFastAccessorMethods -XX:+UnlockExperimentalVMOptions -XX:G1HeapWastePercent=10 -XX:G1MaxNewSizePercent=10 -XX:G1HeapRegionSize=32M -XX:G1NewSizePercent=10 -XX:MaxGCPauseMillis=100 -XX:+OptimizeStringConcat -XX:+UseParNewGC -XX:+UseNUMA -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=2 -XX:+DisableExplicitGC |
| Аргументы, которые нужно изменять в первую очередь: |
| -mx1G |
| Динамическое выделение памяти. Этот флаг заставляет java выделять память динамически по мере необходимости, а не весь объем сразу. |
| Установите в значение максимально допустимого объема памяти. |
| -Xss2048k |
| Параметр изменяет размер стэка для потоков процессора (128, 512, 1024, 2048, 4096) |
| Установлено оптимальное значение, однако, можно поиграться с параметром, чтобы добиться большей стабильности (Может вызывать зависания!) |
| -XX:+UseLargePages |
| Установите этот флаг, если выделяете для сборки большое количество памяти. |
| -XX:ParallelGCThreads=8 |
| Количество потоков Garbage Collector’а (1 физическое ядро = 1 поток, если у вас включен Hyperthreading, то 1 физическое ядро = 2 потока) |
| Установите согласно количеству ядер вашего процессора. |
| -XX:SurvivorRatio=1 |
| Определяет «EDEN Space», каждая единица равна 0,5GB памяти для объектов, которые создаются при загрузке. |
| Определите, какую часть памяти вы готовы выделить на стартовые объекты. |
| -XX:MaxGCPauseMillis=250 |
| Минимальная пауза между запуском Garbage Collector’а в миллисекундах. |
| Попробуйте выставлять разные значения, чтобы избежать небольшого периодического лага. |
| -XX:MaxMetaspaceSize=320m |
| Выделяет постоянную память. Алгоритм подразумевает использование 300 мебагайт на каждые 200 модов (в среднем). |
| Внимание! Этот флаг может вызывать ошибки «Out of memory»! |
| Аргументы, которые крайне рекомендуется включить в список запуска: |
| -mx1G |
| Динамическое выделение памяти. Этот флаг заставляет java выделять память динамически по мере необходимости, а не весь объем сразу. |
| Установите в значение максимально допустимого объема памяти. |
| -XX:+UseConcMarkSweepGC |
| Удаляет старые объекты из буфера Garbage Collector’а. Оптимизирует использование памяти. |
| -XX:+CMSClassUnloadingEnabled |
| Высвобождает выделенную, но давно не используемую память. |
| -XX:+DisableExplicitGC |
| Заставляет Garbage Collector игнорировать принудительные вызовы, которые могут отрицательно сказаться на производительности. |
| -XX:+UseCompressedOops |
| Позволяет использовать 32-битные ссылки в 64-битном окружении. |
| Сохраняет приличное количество памяти в некоторых случаях. |
| -XX:+UseNUMA |
| Включает использование архитектуры NUMA. |
| Оптимизирует алгоритмы работы с памятью и потоками процессора. |
| -XX:+UseParNewGC |
| Включает распараллеливание вызовов Garbage Collector’а. |
| Снижает задержки при вызовах GC, и заставляет игру выполняться более плавно. |
| -XX:G1NewSizePercent=10 |
| Устанавливает процент памяти, которая будет выделяться на новые объекты при их создании. |
| Снижает используемый объем памяти. |
| -XX:G1ReservePercent=10 |
| Резервирует процент памяти, используемый на G1. |
| Не только снижает используемый объем памяти, но и предотвращает ее глобальный рост. |
| -XX:G1HeapRegionSize=32M |
| Устанавливает размер области памяти для G1. |
| Помимо процентного указания, целесообразно указать и реальное значение памяти. |
| -XX:G1MaxNewSizePercent=10 |
| Устанавливает максимальный процент памяти, которая будет выделяться на новые объекты при их создании. |
| Заставим наш GC запускаться чаще, но не слишком часто. |
| -XX:G1HeapWastePercent=10 |
| Устанавливает процент «мусора» в GC, который считается допустимым. |
| Не будем засорять память всякой ненужной фигней. |
| -XX:+UnlockExperimentalVMOptions |
| Разрешает использование всех перечисляемых здесь аргументов. |
| Обязательно установите этот флаг, если играетесь с аргументами. |
| -XX:+OptimizeStringConcat |
| Произвольные недокументированные алгоритмы оптимизации работы со строками. |
| Видимо, что-то улучшает, но, главное, не делает хуже. |
| -XX:+UseFastAccessorMethods |
| Использовать оптимизированные методы доступа. |
| Исключает различные проверки при обращении к объектам. Увеличивает скорость работы, но может вызывать нестабильность, если автор мода — лентяй. |
| -XX:+AlwaysPreTouch |
| Очищает выделяемую область памяти перед использованием. |
| Замедляет загрузку, однако увеличивает общую производительность при работе с большими объемами памяти. |
| -XX:+ScavengeBeforeFullGC |
| Сначала очищает новые объекты в GC, а затем уже проводит полный цикл. |
| Снижает затраты памяти на GC. |
| -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses |
| Отключает часовые перерывы в работе GC из RMI, и выгружает классы. |
| Разгружает память и снижает количество задержек при работе GC. |
| -XX:+CMSScavengeBeforeRemark |
| Пытается очистить мелкие объекты перед запуском полного цикла GC. |
| Снижает лаг, оптимизирует работу с памятью. |
| -XX:+AlwaysTenure |
| Использует старый алгоритм GC для оставшихся объектов. |
| Флаг нужно использовать при включении новых алгоритмов GC, однако, он нам ломает всю оптимизацию. |
| -XX:+UseFastJNIAccessors |
| Использовать быстрые алгоритмы доступа к сторонним библиотекам, написанным на других языках. |
| -XX:+UseCodeCacheFlushing |
| Сброс страниц кеша для снижения объема используемой памяти. |
| -XX:+TieredCompilation |
| Выключает компиляцию 1, 2 и 3 уровней для увеличения скорости компиляции. |
| Сильно оптимизирует работу процессора и памяти. |
| -XX:+AggressiveOpts |
| Использование этого флага совместно с «AutoBoxCacheMax» (который оптимизирует работу процессора) позволит поднять производительность за счет увеличения объема используемой памяти. |
| Включите этот флаг, если готовы пожертвовать дополнительными 10-50MB памяти. |
| -XX:+UseBiasedLocking |
| Используется на многоядерных процессорах для увеличения производительности параллельных вычислений. |
| Включите флаг, если у вас больше двух физических ядер. |
| -XX:+DoEscapeAnalysis |
| Оптимизирует задержки при параллельных вычислениях. |
| Включите флаг, если у вас больше двух физических ядер. |
| -XX:+EliminateLocks |
| Оптимизирует задержки при параллельных вычислениях. |
| Включите флаг, если у вас больше двух физических ядер. |
| -XX:+CompileThreshold |
| Использовать быстрый алгоритм профайлинга. |
| Может помочь со скоростью загрузки, однако не всегда работает. |
| -XX:+CMSCleanOnEnter |
| Улучшает производительность снижая допустимое количество «грязных карт». |
| Сам не понимаю, как это работает. |
| -XX:AllocatePrefetchStyle=1 |
| Включает предзагружку бОльшего количества скомпилированного кода. |
| Флаг используется по-умолчанию в Java версий 9+ |
| -XX:+UseSuperWord -XX:+OptimizeFill -XX:LoopUnrollMin=4 -XX:LoopMaxUnroll=16 -XX:+UseLoopPredicate -XX:+RangeCheckElimination |
| Увеличивает производительность циклов и использует оптимизированные вычислительные методы, для ускорения обработки. |
| Спасибо Ивану Мамонтову |
| -XX:InitiatingHeapOccupancyPercent=10 |
| Определяет процент памяти, когда следует запустить Garbage Collector |
| Let’s force the GC to collect at 10% of it’s limit |
| Более часто — меньше производительность, менее часто — меньше использованной памяти. |
| Аргументы, которые не следует использовать: |
| -XX:+ReduceSignalUsage |
| Снижает количество сигнализации между VM и процессором. |
| Снижение производительности на 1-4% |
| -XX:+UseMembar |
| Включает алгоритм «true memory» для совместимости со старым кодом. |
| Снижение производительности на 10% |
Майнкрафт и джава для него
Java 16 прекрасно подходит для запуска Minecraft 1.16. И не только 1.16, поддержка версий Java выше 8 издания появилась ещё в Minecraft 1.13. Вследствие повышенной производительности новых версий Java по сравнению со старыми, для новых версий игры рекомендуется использовать и новые версии Java.

Однако иногда запуск Minecraft с актуальными версиями Java требует дополнительных настроек. Так, помимо обычного указания пути исполняемого файла Java для запуска JVM рекомендуется указывать пользовательские аргументы:
-Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
Надеюсь, не слишком запутанно. О том, как установить и настроить запуск игры с Java 16 я рассказывал здесь.
Лучше всего подходит java 16
Похожие вопросы
Запуска Minecraft 1.12.2 Forge через bat
Пишу лаунчер для сервера с модами, встал вопрос о запуске Майнкрафта через этот лаунчер. Как оказалось, Minecraft не имеет .exe файла и запускается через Java или как-то так, с этим я вообще не знаком. Вопрос: как запустить Minecraft через .bat файл? Думал никогда не скажу такого
Отслеживать
4,118 2 2 золотых знака 12 12 серебряных знаков 40 40 бронзовых знаков
задан 27 фев 2021 в 11:53
Mr.AntonDer Mr.AntonDer
1,283 3 3 серебряных знака 19 19 бронзовых знаков
Никогда бы не подумал, что на StackOverflow есть метка minecraft!
27 фев 2021 в 11:58
ага, и вопросы про minecraft часто встречаются
27 фев 2021 в 18:44
А на каком языке Лаунчер пишете?
27 фев 2021 в 18:49
Вопрос уже решён, пишу на c#
27 фев 2021 в 18:50
@Mr.AntonDer Если вопрос решен, его лучше не оставлять пустым. Если вам кажется, что он может быть в дальнейшем полезен — дайте на него ответ самостоятельно и примите его, иначе — удалите вопрос.
1 мар 2021 в 20:48
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Такой текст батника у меня получился:
SET APPDATA=%CD% "C:/Program Files/Java/jdk121deeak/bin/java.exe" -Xmn128M -Xmx1000M -Djava.library.path="%CD%/versions/ForgeOptiFine 1.12.2/natives" -cp "%CD%/libraries/net/minecraftforge/forge/1.12.2-14.23.5.2854/forge-1.12.2-14.23.5.2854.jar";"%CD%/libraries/org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.jar";"%CD%/libraries/net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar";"%CD%/libraries/org/jline/jline/3.5.1/jline-3.5.1.jar";"%CD%/libraries/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar";"%CD%/libraries/com/typesafe/config/1.2.1/config-1.2.1.jar";"%CD%/libraries/org/scala-lang/scala-actors-migration_2.11/1.1.0/scala-actors-migration_2.11-1.1.0.jar";"%CD%/libraries/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar";"%CD%/libraries/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2_mc/scala-continuations-library_2.11-1.0.2_mc.jar";"%CD%/libraries/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2_mc/scala-continuations-plugin_2.11.1-1.0.2_mc.jar";"%CD%/libraries/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar";"%CD%/libraries/org/scala-lang/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar";"%CD%/libraries/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar";"%CD%/libraries/org/scala-lang/scala-swing_2.11/1.0.1/scala-swing_2.11-1.0.1.jar";"%CD%/libraries/org/scala-lang/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar";"%CD%/libraries/lzma/lzma/0.0.1/lzma-0.0.1.jar";"%CD%/libraries/java3d/vecmath/1.5.2/vecmath-1.5.2.jar";"%CD%/libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar";"%CD%/libraries/org/apache/maven/maven-artifact/3.5.3/maven-artifact-3.5.3.jar";"%CD%/libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar";"%CD%/libraries/org/tlauncher/patchy/1.1/patchy-1.1.jar";"%CD%/libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar";"%CD%/libraries/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar";"%CD%/libraries/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar";"%CD%/libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar";"%CD%/libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar";"%CD%/libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar";"%CD%/libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar";"%CD%/libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar";"%CD%/libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar";"%CD%/libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar";"%CD%/libraries/io/netty/netty-all/4.1.9.Final/netty-all-4.1.9.Final.jar";"%CD%/libraries/com/google/guava/guava/21.0/guava-21.0.jar";"%CD%/libraries/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar";"%CD%/libraries/commons-io/commons-io/2.5/commons-io-2.5.jar";"%CD%/libraries/commons-codec/commons-codec/1.10/commons-codec-1.10.jar";"%CD%/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar";"%CD%/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar";"%CD%/libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar";"%CD%/libraries/com/mojang/authlib/1.5.25/authlib-1.5.25.jar";"%CD%/libraries/com/mojang/realms/1.10.22/realms-1.10.22.jar";"%CD%/libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar";"%CD%/libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar";"%CD%/libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar";"%CD%/libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar";"%CD%/libraries/it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.jar";"%CD%/libraries/org/apache/logging/log4j/log4j-api/2.8.1/log4j-api-2.8.1.jar";"%CD%/libraries/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1.jar";"%CD%/libraries/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar";"%CD%/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar";"%CD%/libraries/com/mojang/text2speech/1.10.3/text2speech-1.10.3.jar";"%CD%/versions/ForgeOptiFine 1.12.2/ForgeOptiFine1.12.2.jar" -Dminecraft.applet.TargetDirectory="%CD%" -XX:+UseConcMarkSweepGC -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true net.minecraft.launchwrapper.Launch --username Sawich --version 1.12.2 --gameDir "%CD%" --assetsDir "%CD%/assets" --assetIndex 1.12 --uuid 00000000-0000-0000-0000-000000000000 --accessToken null --userProperties [] --userType legacy --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker --versionType Forge --width 800 --height 600
ВНИМАНИЕ
Для того, что бы батник заработал, вам нужно:
- Вместо пути C:/Program Files/Java/jdk121deeak/bin/java.exe , указать свой путь до файла java.exe (Моментов, где используется этот путь, довольно много)
- Убедиться, что в папке versions , у вас есть такие пути: ForgeOptiFine 1.12.2\ForgeOptiFine1.12.2.jar , ForgeOptiFine 1.12.2\ForgeOptiFine 1.12.2.json , а так-же папка natives . Если путь называется как-то иначе, то обязательно переменуйте его.
Создание сервера Minecraft в Ubuntu 18.04

Minecraft — это популярная видеоигра в жанре Sandbox (песочница). Вышедшая в 2009 году игра позволяет игрокам создавать, изучать, мастерить и выживать в мире из 3D кирпичиков. На конец 2019 года она была второй по популярности видеоигрой всех времен. В этом руководстве вы создадите собственный сервер Minecraft, чтобы вы и ваши друзья могли играть вместе. В частности, вы установите необходимые программные пакеты для запуска Minecraft, настроите сервер для запуска, а затем развернете игру.
В качестве альтернативы вы можете изучить статью Minecraft в один клик на DigitalOcean: версия для сервера Java, которая описывает другой путь установки.
В данном руководстве мы используем Java-версию Minecraft. Если вы купили версию Minecraft в Microsoft App Store, вы не сможете подключиться к этому серверу. Большинство версий Minecraft, приобретенных в игровых консолях, например, PlayStation 4, Xbox One или Nintendo Switch, также являются версиями Minecraft под Microsoft. Эти консоли также не смогут подключиться к серверу, который вы создадите с помощью этого руководства. Вы можете получить Java-версию Minecraft здесь.
Предварительные требования
Для выполнения этого обучающего руководства вам потребуется следующее:
- Сервер со свежеустановленной ОС Ubuntu 18.04, пользователь без прав root с привилегиями sudo и поддержка SSH. Вы можете воспользоваться этим руководством для инициализации вашего сервера и выполнения этих шагов. Minecraft может потреблять множество ресурсов, поэтому мы рекомендуем учитывать это при выборе размера вашего сервера. Если вы используете DigitalOcean и вам требуются дополнительные ресурсы, вы в любой момент можете изменить размер дроплета, добавив процессоры и оперативную память.
- Копия Java-версии Minecraft, установленная на локальном компьютере Mac, Windows или Linux.
Шаг 1 — Установка необходимых пакетов программного обеспечения и настройка брандмауэра
После инициализации сервера вашим первым действием будет установка Java, которая потребуется вам для запуска Minecraft.
Обновите индекс пакетов для менеджера пакетов APT:
Затем установите 8 версию OpenJDK для Java, в частности, headless JRE. Это минимальная версия Java, которая не имеет поддержки графического интерфейса приложений. Это делает ее идеальным решением для запуска приложений Java на сервере:
Также вам потребуется программное обеспечение под названием screen для создания отделяемых сеансов сервера. screen позволяет вам создать терминальный сеанс и отделиться от него, оставляя процесс, который крутится в новом сеансе, запущенным. Это важно, поскольку если бы вы запустили сервер и закрыли терминальный сеанс, это приводило бы к прекращению сеанса и остановке сервера. Установите screen :
Теперь, когда вы установили все пакеты, необходимо активировать брандмауэр для подключения трафика на наш сервер Minecraft. Когда вы производили начальную настройку сервера, вы установили разрешение только на трафик от SSH. Теперь вам нужно разрешить трафик от порта 25565 , который Minecraft использует по умолчанию для подключений. Добавьте необходимое правило брандмауэра, запустив следующую команду:
Теперь, когда вы установили Java и корректно настроили ваш брандмауэр, вы можете загрузить сервер Minecraft с веб-сайта Minecraft.
Шаг 2 — Загрузка последней версии Minecraft
Теперь вам нужно загрузить актуальную версию сервера Minecraft. Вы можете сделать это, открыв сайт Minecraft и скопировав ссылку с названием Download minecraft_server. X.X.X .jar, где X — последняя версия сервера.
Теперь вы можете воспользоваться wget и скопированной ссылкой для загрузки сервера:
-
wgethttps://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar
Если вы хотите обновить ваш сервер Minecraft или запускать разные версии Minecraft, переименуйте загруженный server.jar в minecraft_server_ 1.15.2 .jar , сопоставив выделенные номера версий для версии, которую вы только что загрузили:
Если вы хотите загрузить более старую версию, воспользуйтесь архивом на сайте mcversions.net. В этом руководстве вы будем рассматривать самую последнюю версию. Теперь, когда вы загрузили нужные файлы, давайте приступим к настройке вашего сервера Minecraft.
Шаг 3 — Настройка и запуск сервера Minecraft
Теперь, когда вы загрузили jar-файл Minecraft, вы можете запустить его.
Сначала запустите сеанс screen, выполнив команду screen :
После изучения содержания появившегося на экране баннера, нажмите кнопку ПРОБЕЛ . screen отобразит для вас терминальный сеанс как обычный. Теперь этот сеанс является отделяемым, что означает, что вы сможете запустить здесь команду и оставить ее в работающем состоянии.
Теперь вы можете выполнить начальную конфигурацию. Не обращайте внимания, когда следующая команда выдаст ошибку. Minecraft разработал установку таким образом, чтобы пользователи сначала согласились с лицензионным соглашением компании. Вы можете сделать это с помощью следующей команды:
Прежде чем приступать к изучению вывода команды, давайте рассмотрим все эти аргументы командной строки, которые выполняют настройку вашего сервера:
- Xms1024M — этот аргумент выполняет настройку запуска сервера с 1024 Мб или 1 Гб ОЗУ. Вы можете увеличить этот лимит, если хотите, чтобы ваш сервер запускался с большим объемом оперативной памяти. Аргумент поддерживает как М для мегабайт, так и G для гигабайт. Например, аргумент Xms2G будет запускать сервер с 2 гигабайтами оперативной памяти.
- Xmx1024M — этот аргумент позволяет серверу использовать не более 1024 Мб оперативной памяти. Вы можете увеличить этот лимит, если хотите, чтобы ваш сервер имел больший размер и принимал больше игроков, либо если ваш сервер работает медленно.
- jar — этот аргумент указывает, какой jar-файл сервера должен быть запущен.
- nogui — этот аргумент указывает серверу не запускать графический пользовательский интерфейс, так как это сервер, где вам не требуется графический пользовательский интерфейс.
При первом запуске этой команды, которая обычно запускает ваш сервер, будет сгенерирована следующая ошибка:
Output[22:05:31] [environment second] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties [22:05:31] [main/WARN]: Failed to load eula.txt [22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
Эти ошибки были получены, поскольку сервер не смог найти два необходимых для выполнения файла: EULA (Лицензионное соглашение конечного пользователя) в eula.txt и файл конфигурации server.properties . К счастью, поскольку сервер не смог найти эти файлы, он создал их в текущем рабочем каталоге.
Сначала откройте eula.txt в nano или предпочитаемом текстовом редакторе:
Внутри этого файла вы найдете ссылку на EULA Minecraft. Скопируйте URL:
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula). #Tue Mar 24 22:05:31 UTC 2020 eula=false
Откройте URL в браузере и прочитайте соглашение. Затем вернитесь в текстовый редактор и перейдите к последней строке файла eula.txt . Измените eula=false на eula= true . Сохраните и закройте файл.
Теперь, когда вы приняли пользовательское соглашение, пришло время настроить сервер согласно вашим требованиям.
В текущем рабочем каталоге вы также найдете созданный файл server.properties . Этот файл содержит все варианты конфигурации вашего сервера Minecraft. Вы можете найти подробный список всех свойств сервера на официальной вики-странице Minecraft. Вы измените этот файл, добавив предпочитаемые настройки, прежде чем запускать сервер. В этом руководстве вы найдете описание основных свойств:
Ваш файл будет выглядеть следующим образом:
~/server.properties
#Minecraft server properties #Thu Apr 30 23:42:29 UTC 2020 spawn-protection=16 max-tick-time=60000 query.port=25565 generator-settings= force-gamemode=false allow-nether=true enforce-whitelist=false gamemode=survival broadcast-console-to-ops=true enable-query=false player-idle-timeout=0 difficulty=easy spawn-monsters=true broadcast-rcon-to-ops=true op-permission-level=4 pvp=true snooper-enabled=true level-type=default hardcore=false enable-command-block=false max-players=20 network-compression-threshold=256 resource-pack-sha1= max-world-size=29999984 function-permission-level=2 rcon.port=25575 server-port=25565 server-ip= spawn-npcs=true allow-flight=false level-name=world view-distance=10 resource-pack= spawn-animals=true white-list=false rcon.password= generate-structures=true online-mode=true max-build-height=256 level-seed= prevent-proxy-connections=false use-native-transport=true motd=A Minecraft Server enable-rcon=false
Давайте более внимательно рассмотрим некоторые наиболее важные свойства из этого списка:
- difficulty (по умолчанию easy — Это свойство задает уровень сложности игры, например, уровень наносимого урона и то, как элементы влияют на вашего игрока. Возможные варианты: peaceful , easy , normal и hard .
- gamemode (по умолчанию survival ) — Это свойство определяет режим игры. Возможные варианты: survival , creative , adventure и spectator .
- level-name (по умолчанию world ) — Это свойство задает имя вашего сервера, которое будет отображаться в клиенте. Такие символы, как апостроф, возможно, потребуется экранировать с помощью обратной косой черты.
- motd (по умолчанию A Minecraft Server ) — Сообщение, отображаемое в списке серверов клиента Minecraft.
- pvp (по умолчанию true ) — Данное свойство активирует pvp режим. Если установлено значение true , игроки смогут вступать в бой и наносить друг другу урон.
После настройки нужных опций сохраните и закройте файл.
Теперь, когда вы установили значение true в EULA и настроили параметры, вы можете успешно запустить сервер.
Как и в прошлый раз, давайте запустим ваш сервер с 1024 Мб оперативной памяти. Однако в этот раз мы также предоставим Minecraft возможность использовать до 4 Гб оперативной памяти при необходимости. Помните, что вы можете изменить это число согласно ограничениям вашего сервера или потребностям пользователя:
Подождите несколько секунд, пока выполняется процесс инициализации. Через короткое время ваш новый сервер Minecraft начнет производить примерно следующий вывод:
Output[21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2 [21:08:14] [Server thread/INFO]: Loading properties [21:08:14] [Server thread/INFO]: Default game type: SURVIVAL [21:08:14] [Server thread/INFO]: Generating keypair [21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565
После того как сервер будет запущен, вы увидите следующий вывод:
Output[21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"
Ваш сервер запущен, а вы попали в панель управления администратора сервера. Теперь введите команду help :
Вывод будет выглядеть следующим образом:
Output[21:15:37] [Server thread/INFO]: /advancement (grant|revoke) [21:15:37] [Server thread/INFO]: /ban [] [21:15:37] [Server thread/INFO]: /ban-ip [] [21:15:37] [Server thread/INFO]: /banlist [ips|players] .
Из этого терминала вы можете выполнять команды администратора и управлять вашим сервером Minecraft. Давайте воспользуемся screen , чтобы сервер продолжил работу даже после вашего выхода. После этого вы можете подключиться к вашему клиенту Minecraft и запустить новую игру.
Шаг 4 — Поддержание работы сервера
Теперь, когда у вас есть работающий сервер, вы можете захотеть, чтобы он продолжал работать даже после вашего отключения от SSH сеанса. Поскольку вы уже использовали screen ранее, вы можете отсоединиться от этого сеанса, нажав Ctrl + A + D . После этого вы вернетесь в первоначальную оболочку:
Запустите эту команду, чтобы посмотреть все ваши сеансы screen:
Вы получите вывод с идентификатором вашего сеанса, который вам потребуется для возобновления этого сеанса:
OutputThere is a screen on: 26653.pts-0.minecraft (03/25/20 21:18:31) (Detached) 1 Socket in /run/screen/S-root.
Для возобновления сеанса передайте флаг -r в команду screen , а затем введите идентификатор вашего сеанса:
Когда вы будете готовы выйти из вашего сервера, обязательно выполните отсоединение от сеанса, нажав Ctrl + A + D , а затем выполните выход.
Шаг 5 — Подключение к вашему серверу из клиента Minecraft
Теперь, когда ваш сервер запущен и работает, давайте подключимся к нему из клиента Minecraft. А затем вы сможете начать играть!
Запустите вашу копию Java-версии Minecraft и выберите Multiplayer в меню.

Затем вам потребуется добавить сервер для подключения, поэтому нажмите кнопку Add Server (Добавить сервер).

На экране Edit Server Info (Изменить информацию сервера) укажите имя вашего сервера и введите его IP-адрес. Это тот же IP-адрес, который вы использовали для подключения через SSH.

После ввода имени и IP-адреса сервера вы вернетесь на экран Multiplayer, где теперь будет указан ваш сервер.

С этого момента ваш сервер всегда будет отображаться в этом списке. Выберите его и нажмите Join Server (Войти на сервер).

Вы находитесь на сервере и готовы к игре!
Заключение
Теперь у вас есть сервер Minecraft, работающий на Ubuntu 18.04, для вас и всех ваших друзей! Наслаждайтесь исследованиями, оттачивайте мастерство и выживайте в грубом 3D мире. И следите за гриферами.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.