Files
AstraDeploy/lib/java.sh

78 lines
2.0 KiB
Bash

#!/usr/bin/env bash
is_java_core() {
local core="$1"
case "$core" in
paper|purpur|velocity|powernukkitx) return 0 ;;
*) return 1 ;;
esac
}
install_java_21() {
if command -v java >/dev/null 2>&1; then
local version
version="$(java -version 2>&1 | sed -n 's/.*version "\(.*\)".*/\1/p' | head -n1 | sed 's/"//g' | sed 's/^\([0-9][0-9]*\).*/\1/')"
if [[ "$version" =~ ^[0-9]+$ ]] && (( version >= 21 )); then
info "$(t java_already_available "$version")"
return 0
fi
fi
info "$(t installing_java_21)"
case "$PKG_MANAGER" in
apt)
emit_step "java_install" "apt"
run_cmd apt-get install -y openjdk-21-jre-headless
;;
dnf|yum)
emit_step "java_install" "$PKG_MANAGER"
run_cmd "$PKG_MANAGER" install -y java-21-openjdk-headless
;;
pacman)
emit_step "java_install" "pacman"
run_cmd pacman -Sy --noconfirm jre-openjdk-headless
;;
esac
}
create_java_start_script() {
local dir="$1"
local jar_file="$2"
local ram="$3"
local extra_opts="${4:-}"
local script="$dir/start.sh"
emit_step "render_start_script" "$jar_file"
run_cmd bash -c "cat > '$script' <<EOF
#!/usr/bin/env bash
set -e
cd \"\$(dirname \"\$0\")\"
exec java -Xms${ram} -Xmx${ram} ${extra_opts} -jar ${jar_file} nogui
EOF"
run_cmd chmod +x "$script"
emit_step "chmod_start_script" "$script"
}
create_powernukkit_start_script() {
local dir="$1"
local ram="$2"
local script="$dir/start.sh"
emit_step "render_start_script" "powernukkitx.jar"
run_cmd bash -c "cat > '$script' <<EOF
#!/usr/bin/env bash
set -e
cd \"\$(dirname \"\$0\")\"
exec java -Xms${ram} -Xmx${ram} \\
-Dfile.encoding=UTF-8 \\
-Djansi.passthrough=true \\
-Dterminal.ansi=true \\
--add-opens java.base/java.lang=ALL-UNNAMED \\
--add-opens java.base/java.io=ALL-UNNAMED \\
--add-opens java.base/java.net=ALL-UNNAMED \\
-jar powernukkitx.jar
EOF"
run_cmd chmod +x "$script"
emit_step "chmod_start_script" "$script"
}