Advertisement
Overwtime

Untitled

Oct 15th, 2023
789
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.61 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. # All system paths and filenames are case sensitive (uppercase and lowercase letters)
  4. # Все системные пути и названия файлов чувствительны к регистру (заглавные и строчные буквы)
  5.  
  6. # *** Server app options / Параметры приложения-сервера ***
  7.  
  8. # Execution type: screen or tmux
  9. # Тип выполнения: screen или tmux
  10. execution_type="screen"
  11.  
  12. # To create a screen/tmux session and identify the process in top, htop, etc.
  13. # Для создания сессии screen/tmux и идентификации процесса в top, htop и т.д.
  14. server_name="grief"
  15.  
  16. # Display the server console after starting the script
  17. # Отображать ли консоль сервера сразу после запуска скрипта
  18. auto_console_join=false
  19.  
  20. # Server app file name. If not specified, it will automatically find the jar file. Example: paper.jar
  21. # Название файла ядра. Если не указано - найдёт jar-файл автоматически. Пример: paper.jar
  22. jar_file="server.jar"
  23.  
  24. # Minimum amount of memory. Example: 2048M or 2G
  25. # Минимальное количество памяти. Пример: 2048M или 2G
  26. min_memory="5632M"
  27.  
  28. # Maximum amount of memory
  29. # Максимальное количество памяти
  30. max_memory="5632M"
  31.  
  32. # Server port. If not specified, the value from server.properties is used
  33. # Порт сервера. Если не указан - используется значение из server.properties
  34. server_port=""
  35.  
  36. # Whether to use a forced update of all chunks to the format of the current Minecraft-server version at startup
  37. # Использовать ли при запуске принудительное обновление всех чанков до формата текущей версии Майнкрафт-сервера
  38. force_chunks_upgrade=false
  39.  
  40. # *** Java options / Параметры Java ***
  41.  
  42. # 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
  43. # Директория Java (для JDK добавьте в конце "/bin"). Если не указана - используется системный путь. Пример: $HOME/jre-16.0.1 или $PWD/jdk-17.0.2/bin
  44. java_dir=""
  45.  
  46. # Whether to enable profiling (requires more system resources). Only works with JDK
  47. # Включить ли профилирование (требуется больше системных ресурсов). Работает только с JDK
  48. profiling=false
  49.  
  50. # Whether to prevent errors like <<module java.base does not "opens java.lang" to unnamed module>>
  51. # Предотвращать ли ошибки вида <<module java.base does not "opens java.lang" to unnamed module>>
  52. fix_java_12_issues=true
  53.  
  54. # The host and port of the debug agent. If not specified, debugging is disabled. Example: 0.0.0.0:22222
  55. # Хост и порт агента отладки. Если не указано - отладка отключена. Пример: 0.0.0.0:22222
  56. debug_agent_address=""
  57.  
  58. # Log4j options file with .xml extension. If not specified, default settings are used. Example: log4j2.xml
  59. # Файл параметров log4j с расширением .xml. Если не указано - используются настройки по-умолчанию. Пример: log4j2.xml
  60. log4j_config=""
  61.  
  62.  
  63.  
  64. # *** Anything below is not recommended to be modified ***
  65. # *** Всё, что ниже, менять не рекомендуется ***
  66.  
  67. # Source / Источник: https://mcflags.emc.gs
  68. 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"
  69. jvm_flags="-Dfile.encoding=UTF-8 -Dlog4j2.formatMsgNoLookups=true -DPaper.IgnoreJavaVersion=true -DPurpur.IReallyDontWantSpark=true"
  70. app_flags="--nogui"
  71. display_start_command=false
  72. process_hint="${server_name}"
  73. script_name=$(basename "$0")
  74.  
  75. if [ "$jar_file" = "" ]; then
  76.     for file in *.jar; do
  77.         [ -f "$file" ] || break
  78.         if [ "$jar_file" != "" ]; then
  79.             echo "Multiple jar-files found: $jar_file and $file. Please specify jar_file option in $script_name"
  80.             exit
  81.         fi
  82.         jar_file=$file
  83.     done
  84.     if [ "$jar_file" = "" ]; then
  85.         echo "Jar-file not found. Please specify jar_file option in $script_name"
  86.         exit
  87.     fi
  88.     echo "Using jar-file $jar_file"
  89. fi
  90.  
  91. if [ "$1" != "deep" ]; then
  92.     if [ "$execution_type" = "screen" ]; then
  93.         screen -A -m -d -S ${server_name} bash "${script_name}" deep
  94.         [ "$auto_console_join" = true ] && sleep 0.2 && screen -x ${server_name}
  95.     elif [ "$execution_type" = "tmux" ]; then
  96.         tmux new -d -s ${server_name}
  97.         sleep 0.2
  98.         tmux send-keys -t ${server_name} "bash \"${script_name}\" deep" Enter
  99.         [ "$auto_console_join" = true ] && sleep 0.2 && tmux attach -t ${server_name}
  100.     else
  101.         echo "Wrong execution_type: $execution_type"
  102.     fi
  103.     exit
  104. fi
  105.  
  106. #!/bin/bash
  107.  
  108. [ "$java_dir" != "" ] && java_dir="${java_dir}/"
  109. java_binary="${java_dir}java21"
  110.  
  111. jvm_flags+=" ${aikar_jvm_flags}"
  112. if [ "$profiling" = true ]; then
  113.     process_hint+="-profiling"
  114.     jvm_flags="${jvm_flags// -XX:+PerfDisableSharedMem/}"
  115.     jvm_flags+=" -Xshare:off"
  116. fi
  117. process_hint="$USER.${process_hint}"
  118.  
  119. add_opens_packages=()
  120. add_modules_list=(
  121.     "jdk.incubator.vector"
  122. )
  123.  
  124. if [ "$fix_java_12_issues" = true ]; then
  125.     add_opens_packages+=(
  126.         "java.base/java.lang"
  127.         "java.base/java.lang.reflect"
  128.         "java.base/java.lang.invoke"
  129.         "java.base/java.security"
  130.     )
  131. fi
  132.  
  133. for package in "${add_opens_packages[@]}"; do
  134.     jvm_flags+=" --add-opens ${package}=ALL-UNNAMED"
  135. done
  136.  
  137. for module_index in "${!add_modules_list[@]}"; do
  138.     if [ "$module_index" = 0 ]; then
  139.         jvm_flags+=" --add-modules="
  140.     else
  141.         jvm_flags+=","
  142.     fi
  143.     jvm_flags+="${add_modules_list[$module_index]}"
  144. done
  145.  
  146. [ "$debug_agent_address" != "" ] && jvm_flags+=" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${debug_agent_address}"
  147. [ "$log4j_config" != "" ] && jvm_flags+=" -Dlog4j.configurationFile=${log4j_config}"
  148.  
  149. [ "$server_port" != "" ] && app_flags+=" -port ${server_port}"
  150. [ "$force_chunks_upgrade" = true ] && app_flags+=" --forceUpgrade"
  151.  
  152. start_command="${java_binary} -D_server=${process_hint} -Xms${min_memory} -Xmx${max_memory} ${jvm_flags} -jar ${jar_file} ${app_flags}"
  153.  
  154. if [ "$display_start_command" = true ]; then
  155.     echo "Start command: $start_command"
  156. fi
  157.  
  158. while true
  159. do
  160.     eval "${start_command}"
  161.     echo "Server $server_name stopped. Rebooting in:"
  162.     for seconds_left in {3..1}
  163.     do
  164.         echo "$seconds_left..."
  165.         sleep 1
  166.     done
  167. done
  168.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement