Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # All system paths and filenames are case sensitive (uppercase and lowercase letters)
- # Все системные пути и названия файлов чувствительны к регистру (заглавные и строчные буквы)
- # *** Server app options / Параметры приложения-сервера ***
- # Execution type: screen or tmux
- # Тип выполнения: screen или tmux
- execution_type="screen"
- # To create a screen/tmux session and identify the process in top, htop, etc.
- # Для создания сессии screen/tmux и идентификации процесса в top, htop и т.д.
- server_name="grief"
- # Display the server console after starting the script
- # Отображать ли консоль сервера сразу после запуска скрипта
- auto_console_join=false
- # Server app file name. If not specified, it will automatically find the jar file. Example: paper.jar
- # Название файла ядра. Если не указано - найдёт jar-файл автоматически. Пример: paper.jar
- jar_file="server.jar"
- # Minimum amount of memory. Example: 2048M or 2G
- # Минимальное количество памяти. Пример: 2048M или 2G
- min_memory="5632M"
- # Maximum amount of memory
- # Максимальное количество памяти
- max_memory="5632M"
- # Server port. If not specified, the value from server.properties is used
- # Порт сервера. Если не указан - используется значение из server.properties
- server_port=""
- # Whether to use a forced update of all chunks to the format of the current Minecraft-server version at startup
- # Использовать ли при запуске принудительное обновление всех чанков до формата текущей версии Майнкрафт-сервера
- force_chunks_upgrade=false
- # *** Java options / Параметры Java ***
- # Java directory (for JDK add "/bin" at the end). If not specified, the system path is used. Example: $HOME/jre-16.0.1 или $PWD/jdk-17.0.2/bin
- # Директория Java (для JDK добавьте в конце "/bin"). Если не указана - используется системный путь. Пример: $HOME/jre-16.0.1 или $PWD/jdk-17.0.2/bin
- java_dir=""
- # Whether to enable profiling (requires more system resources). Only works with JDK
- # Включить ли профилирование (требуется больше системных ресурсов). Работает только с JDK
- profiling=false
- # Whether to prevent errors like <<module java.base does not "opens java.lang" to unnamed module>>
- # Предотвращать ли ошибки вида <<module java.base does not "opens java.lang" to unnamed module>>
- fix_java_12_issues=true
- # The host and port of the debug agent. If not specified, debugging is disabled. Example: 0.0.0.0:22222
- # Хост и порт агента отладки. Если не указано - отладка отключена. Пример: 0.0.0.0:22222
- debug_agent_address=""
- # Log4j options file with .xml extension. If not specified, default settings are used. Example: log4j2.xml
- # Файл параметров log4j с расширением .xml. Если не указано - используются настройки по-умолчанию. Пример: log4j2.xml
- log4j_config=""
- # *** Anything below is not recommended to be modified ***
- # *** Всё, что ниже, менять не рекомендуется ***
- # Source / Источник: https://mcflags.emc.gs
- aikar_jvm_flags="-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+DisableExplicitGC -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -XX:+UseAES -XX:+UseAESIntrinsics -XX:+UseFMA -XX:AllocatePrefetchStyle=1 -XX:+UseLoopPredicate -XX:+RangeCheckElimination -XX:+EliminateLocks -XX:+DoEscapeAnalysis -XX:+UseCodeCacheFlushing -XX:+SegmentedCodeCache -XX:+UseFastJNIAccessors -XX:+OptimizeStringConcat -XX:+UseCompressedOops -XX:+TrustFinalNonStaticFields -XX:+UseInlineCaches -XX:+RewriteBytecodes -XX:+RewriteFrequentPairs -XX:+UseNUMA -XX:+UseFPUForSpilling -XX:+UseNewLongLShift -XX:+UseVectorCmov -XX:+ScavengeBeforeFullGC -XX:+OptimizeFill -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -XX:+UseNUMA -XX:+UseFastUnorderedTimeStamps"
- jvm_flags="-Dfile.encoding=UTF-8 -Dlog4j2.formatMsgNoLookups=true -DPaper.IgnoreJavaVersion=true -DPurpur.IReallyDontWantSpark=true"
- app_flags="--nogui"
- display_start_command=false
- process_hint="${server_name}"
- script_name=$(basename "$0")
- if [ "$jar_file" = "" ]; then
- for file in *.jar; do
- [ -f "$file" ] || break
- if [ "$jar_file" != "" ]; then
- echo "Multiple jar-files found: $jar_file and $file. Please specify jar_file option in $script_name"
- exit
- fi
- jar_file=$file
- done
- if [ "$jar_file" = "" ]; then
- echo "Jar-file not found. Please specify jar_file option in $script_name"
- exit
- fi
- echo "Using jar-file $jar_file"
- fi
- if [ "$1" != "deep" ]; then
- if [ "$execution_type" = "screen" ]; then
- screen -A -m -d -S ${server_name} bash "${script_name}" deep
- [ "$auto_console_join" = true ] && sleep 0.2 && screen -x ${server_name}
- elif [ "$execution_type" = "tmux" ]; then
- tmux new -d -s ${server_name}
- sleep 0.2
- tmux send-keys -t ${server_name} "bash \"${script_name}\" deep" Enter
- [ "$auto_console_join" = true ] && sleep 0.2 && tmux attach -t ${server_name}
- else
- echo "Wrong execution_type: $execution_type"
- fi
- exit
- fi
- #!/bin/bash
- [ "$java_dir" != "" ] && java_dir="${java_dir}/"
- java_binary="${java_dir}java21"
- jvm_flags+=" ${aikar_jvm_flags}"
- if [ "$profiling" = true ]; then
- process_hint+="-profiling"
- jvm_flags="${jvm_flags// -XX:+PerfDisableSharedMem/}"
- jvm_flags+=" -Xshare:off"
- fi
- process_hint="$USER.${process_hint}"
- add_opens_packages=()
- add_modules_list=(
- "jdk.incubator.vector"
- )
- if [ "$fix_java_12_issues" = true ]; then
- add_opens_packages+=(
- "java.base/java.lang"
- "java.base/java.lang.reflect"
- "java.base/java.lang.invoke"
- "java.base/java.security"
- )
- fi
- for package in "${add_opens_packages[@]}"; do
- jvm_flags+=" --add-opens ${package}=ALL-UNNAMED"
- done
- for module_index in "${!add_modules_list[@]}"; do
- if [ "$module_index" = 0 ]; then
- jvm_flags+=" --add-modules="
- else
- jvm_flags+=","
- fi
- jvm_flags+="${add_modules_list[$module_index]}"
- done
- [ "$debug_agent_address" != "" ] && jvm_flags+=" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${debug_agent_address}"
- [ "$log4j_config" != "" ] && jvm_flags+=" -Dlog4j.configurationFile=${log4j_config}"
- [ "$server_port" != "" ] && app_flags+=" -port ${server_port}"
- [ "$force_chunks_upgrade" = true ] && app_flags+=" --forceUpgrade"
- start_command="${java_binary} -D_server=${process_hint} -Xms${min_memory} -Xmx${max_memory} ${jvm_flags} -jar ${jar_file} ${app_flags}"
- if [ "$display_start_command" = true ]; then
- echo "Start command: $start_command"
- fi
- while true
- do
- eval "${start_command}"
- echo "Server $server_name stopped. Rebooting in:"
- for seconds_left in {3..1}
- do
- echo "$seconds_left..."
- sleep 1
- done
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement