#!/bin/sh
# Все системные пути и названия файлов чувствительны к регистру (заглавные и строчные буквы)
# Параметры приложения-сервера
server_name="lobby" # Для создания скрина и идентификации процесса в top, htop и т.д.
join_screen=true # Входить ли в скрин автоматически после запуска скрипта
jar_file="paper.jar" # Название файла ядра
min_memory="1G" # Минимальное количество памяти
max_memory="5G" # Максимальное количество памяти
server_port="" # Порт. Если не указан - используется значение из server.properties
force_chunks_upgrade=false # Использовать ли при запуске принудительное обновление всех чанков до формата текущей версии ядра
# Параметры Java
java_dir="~/jdk-16.0.1/bin" # Директория Java (для JDK добавьте в конце "/bin"). Если не указана - используется системный путь
profiling=false # Включить ли профилирование (требуется больше системных ресурсов). Работает только с JDK
fix_java_12_issues=false # Предотвращать ли ошибки, связанные с использованием Java 12+
debugging_port="" # Порт агента отладки. Если не указан - отладка отключена
log4j_config="" # Файл параметров log4j с расширением .xml. Если не указано - используются настройки по-умолчанию
# Всё, что ниже, менять не рекомендуется
# Источник: https://mcflags.emc.gs
aikar_jvm_flags="-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -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:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true"
jvm_flags="-server -Dfile.encoding=UTF-8"
app_flags="nogui"
screen_name="${server_name}"
htop_name="${server_name}"
script_name=`basename "$0"`
if [ "$1" != "screen" ]; then
screen -A -m -d -S ${screen_name} bash ${script_name} screen
[ "$join_screen" = true ] && screen -x ${screen_name}
exit
fi
#!/bin/bash
[ "$java_dir" != "" ] && java_dir="${java_dir}/"
jvm_flags="${jvm_flags} ${aikar_jvm_flags}"
if [ "$profiling" = true ]; then
htop_name="${htop_name}-profiling"
jvm_flags="${jvm_flags// -XX:+PerfDisableSharedMem/}"
jvm_flags="${jvm_flags} -Xshare:off"
fi
htop_name="$USER.${htop_name}"
[ "$fix_java_12_issues" = true ] && jvm_flags="${jvm_flags} --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.security=ALL-UNNAMED"
[ "$debugging_port" != "" ] && jvm_flags="${jvm_flags} -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:${debugging_port}"
[ "$log4j_config" != "" ] && jvm_flags="${jvm_flags} -Dlog4j.configurationFile=${log4j_config}"
[ "$server_port" != "" ] && app_flags="${app_flags} -port ${server_port}"
[ "$force_chunks_upgrade" = true ] && app_flags="${app_flags} --forceUpgrade"
jvm_flags="-D_server=${htop_name} -Xms${min_memory} -Xmx${max_memory} ${jvm_flags}"
while true
do
eval ${java_dir}java ${jvm_flags} -jar ${jar_file} ${app_flags}
echo "Server $screen_name stopped. Rebooting in:"
for i in {3..1}
do
echo "$i..."
sleep 1
done
done
# Автор скрипта: dymeth.ru