7 Commits

Author SHA1 Message Date
2a9648c014 v0.17.0 2025-04-10 21:16:06 -07:00
f91316fef3 it works! 2025-04-10 21:11:27 -07:00
d228685b59 fix and update github workflows 2025-04-10 20:36:14 -07:00
610ba483ca Start work on v0.17.0-SNAPSHOT 2025-04-10 20:29:44 -07:00
61b1abd335 v0.16.0 2025-04-10 20:29:37 -07:00
1a968a6489 Cleanup smart downloader utility. 2023-03-18 14:55:19 -07:00
aa2750bdc0 Start work on v0.16.0-SNAPSHOT 2023-03-16 17:44:48 -07:00
35 changed files with 199 additions and 176 deletions

View File

@ -5,13 +5,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v3 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Set up JDK 17 - name: Set up JDK 21
uses: actions/setup-java@v3 uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4
with: with:
java-version: '17' java-version: '21'
distribution: 'temurin' distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4
- name: Build with Gradle - name: Build with Gradle
uses: gradle/gradle-build-action@v2 run: ./gradlew build
with:
arguments: build

View File

@ -8,13 +8,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v3 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Set up JDK 17 - name: Set up JDK 21
uses: actions/setup-java@v3 uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4
with: with:
java-version: '17' java-version: '21'
distribution: 'temurin' distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4
- name: Publish with Gradle - name: Publish with Gradle
uses: gradle/gradle-build-action@v2 run: "./gradlew publishPlugins -Pgradle.publish.key=${{ secrets.GRADLE_PLUGIN_PUBLISHING_KEY }} -Pgradle.publish.secret=${{ secrets.GRADLE_PLUGIN_PUBLISHING_SECRET }}"
with:
arguments: "publishPlugins -Pgradle.publish.key=${{ secrets.GRADLE_PLUGIN_PUBLISHING_KEY }} -Pgradle.publish.secret=${{ secrets.GRADLE_PLUGIN_PUBLISHING_SECRET }}"

View File

@ -8,16 +8,16 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v3 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Set up JDK 17 - name: Set up JDK 21
uses: actions/setup-java@v3 uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4
with: with:
java-version: '17' java-version: '21'
distribution: 'temurin' distribution: 'temurin'
- name: Publish with Gradle - name: Setup Gradle
uses: gradle/gradle-build-action@v2 uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4
with: - name: Build with Gradle
arguments: publishAllPublicationsToGitHubPackagesRepository publishAllPublicationsToGitLabRepository run: ./gradlew publishAllPublicationsToGitHubPackagesRepository publishAllPublicationsToGitLabRepository
env: env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
GITLAB_TOKEN: "${{ secrets.GITLAB_TOKEN }}" GITLAB_TOKEN: "${{ secrets.GITLAB_TOKEN }}"

View File

@ -1,16 +0,0 @@
name: Qodona
on: [push]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Qodana Scan
uses: JetBrains/qodana-action@main
env:
QODANA_TOKEN: "${{ secrets.QODANA_TOKEN }}"
- name: Upload CodeQL SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: "${{ runner.temp }}/qodana/results/qodana.sarif.json"

View File

@ -5,21 +5,17 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v3 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Set up JDK 17 - name: Set up JDK 21
uses: actions/setup-java@v3 uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4
with: with:
java-version: '17' java-version: '21'
distribution: 'temurin' distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4
- name: Build mixed sample with Gradle - name: Build mixed sample with Gradle
uses: gradle/gradle-build-action@v2 run: ./gradlew -p samples/mixed build
with:
arguments: -p samples/mixed build
- name: Build shared sample with Gradle - name: Build shared sample with Gradle
uses: gradle/gradle-build-action@v2 run: ./gradlew -p samples/shared build
with:
arguments: -p samples/shared build
- name: Build simple sample with Gradle - name: Build simple sample with Gradle
uses: gradle/gradle-build-action@v2 run: ./gradlew -p samples/simple build
with:
arguments: -p samples/simple build

View File

@ -1,15 +1,16 @@
@file:Suppress("UnstableApiUsage") import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins { plugins {
`kotlin-dsl` `kotlin-dsl`
`maven-publish` `maven-publish`
`java-gradle-plugin` `java-gradle-plugin`
id("com.gradle.plugin-publish") version "1.1.0" id("com.gradle.plugin-publish") version "1.3.1"
} }
group = "gay.pizza.foundation" group = "gay.pizza.foundation"
version = "0.15.0" version = "0.17.0"
repositories { repositories {
mavenCentral() mavenCentral()
@ -17,13 +18,13 @@ repositories {
} }
dependencies { dependencies {
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10") implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.20")
implementation("org.jetbrains.kotlin:kotlin-serialization:1.8.10") implementation("org.jetbrains.kotlin:kotlin-serialization:2.1.20")
implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.2") implementation("com.gradleup.shadow:com.gradleup.shadow.gradle.plugin:8.3.6")
implementation("com.google.code.gson:gson:2.10.1") implementation("com.google.code.gson:gson:2.12.1")
// Implementation of crypto used in smart downloader. // Implementation of crypto used in smart downloader.
implementation("org.bouncycastle:bcprov-jdk15on:1.70") implementation("org.bouncycastle:bcprov-jdk18on:1.80")
} }
gradlePlugin { gradlePlugin {
@ -78,14 +79,14 @@ if (gradlePublishingKey != null && gradlePublishingSecret != null) {
} }
java { java {
val version = JavaVersion.toVersion("17") val version = JavaVersion.toVersion("21")
sourceCompatibility = version sourceCompatibility = version
targetCompatibility = version targetCompatibility = version
} }
tasks.compileKotlin { tasks.compileKotlin {
kotlinOptions { compilerOptions {
jvmTarget = "17" jvmTarget.value(JvmTarget.JVM_21)
} }
} }
@ -128,7 +129,7 @@ publishing {
} }
tasks.withType<Wrapper> { tasks.withType<Wrapper> {
gradleVersion = "8.0" gradleVersion = "8.13"
} }
java { java {

Binary file not shown.

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000 networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

7
gradlew vendored
View File

@ -85,9 +85,6 @@ done
APP_BASE_NAME=${0##*/} APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD=maximum
@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then
done done
fi fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command; # Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in # shell script including quotes and variable substitutions, so put them in

View File

@ -4,8 +4,8 @@ plugins {
concreteRoot { concreteRoot {
minecraftServerPath.set("server") minecraftServerPath.set("server")
paperServerVersionGroup.set("1.19") paperServerVersionGroup.set("1.21")
paperApiVersion.set("1.19.3-R0.1-SNAPSHOT") paperApiVersion.set("1.21.4-R0.1-SNAPSHOT")
acceptServerEula.set(true) acceptServerEula.set(true)
expansiveItemInclusion.set(true) expansiveItemInclusion.set(true)
} }

Binary file not shown.

View File

@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

33
samples/mixed/gradlew vendored
View File

@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# SPDX-License-Identifier: Apache-2.0
#
############################################################################## ##############################################################################
# #
@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.
@ -83,10 +85,8 @@ done
# This is normally unused # This is normally unused
# shellcheck disable=SC2034 # shellcheck disable=SC2034
APP_BASE_NAME=${0##*/} APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD=maximum
@ -133,18 +133,21 @@ location of your Java installation."
fi fi
else else
JAVACMD=java JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #( case $MAX_FD in #(
max*) max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) || MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit" warn "Could not query maximum file descriptor limit"
esac esac
@ -152,7 +155,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #( '' | soft) :;; #(
*) *)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" || ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD" warn "Could not set maximum file descriptor limit to $MAX_FD"
esac esac
@ -197,11 +200,15 @@ if "$cygwin" || "$msys" ; then
done done
fi fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
# shell script including quotes and variable substitutions, so put them in DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded. # Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \

View File

@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and @rem See the License for the specific language governing permissions and
@rem limitations under the License. @rem limitations under the License.
@rem @rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off @if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if %ERRORLEVEL% equ 0 goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute if exist "%JAVA_EXE%" goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail

View File

@ -5,7 +5,7 @@ plugins {
concreteRoot { concreteRoot {
minecraftServerPath.set("server") minecraftServerPath.set("server")
paperServerVersionGroup.set("1.19") paperServerVersionGroup.set("1.21")
paperApiVersion.set("1.19.3-R0.1-SNAPSHOT") paperApiVersion.set("1.21.4-R0.1-SNAPSHOT")
acceptServerEula.set(true) acceptServerEula.set(true)
} }

Binary file not shown.

View File

@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# SPDX-License-Identifier: Apache-2.0
#
############################################################################## ##############################################################################
# #
@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.
@ -83,10 +85,8 @@ done
# This is normally unused # This is normally unused
# shellcheck disable=SC2034 # shellcheck disable=SC2034
APP_BASE_NAME=${0##*/} APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD=maximum
@ -133,18 +133,21 @@ location of your Java installation."
fi fi
else else
JAVACMD=java JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #( case $MAX_FD in #(
max*) max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) || MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit" warn "Could not query maximum file descriptor limit"
esac esac
@ -152,7 +155,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #( '' | soft) :;; #(
*) *)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" || ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD" warn "Could not set maximum file descriptor limit to $MAX_FD"
esac esac
@ -197,11 +200,15 @@ if "$cygwin" || "$msys" ; then
done done
fi fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
# shell script including quotes and variable substitutions, so put them in DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded. # Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \

View File

@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and @rem See the License for the specific language governing permissions and
@rem limitations under the License. @rem limitations under the License.
@rem @rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off @if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if %ERRORLEVEL% equ 0 goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute if exist "%JAVA_EXE%" goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail

View File

@ -4,7 +4,7 @@ plugins {
concreteRoot { concreteRoot {
minecraftServerPath.set("server") minecraftServerPath.set("server")
paperServerVersionGroup.set("1.19") paperServerVersionGroup.set("1.21")
paperApiVersion.set("1.19.3-R0.1-SNAPSHOT") paperApiVersion.set("1.21.4-R0.1-SNAPSHOT")
acceptServerEula.set(true) acceptServerEula.set(true)
} }

Binary file not shown.

View File

@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# SPDX-License-Identifier: Apache-2.0
#
############################################################################## ##############################################################################
# #
@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.
@ -83,10 +85,8 @@ done
# This is normally unused # This is normally unused
# shellcheck disable=SC2034 # shellcheck disable=SC2034
APP_BASE_NAME=${0##*/} APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD=maximum
@ -133,18 +133,21 @@ location of your Java installation."
fi fi
else else
JAVACMD=java JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #( case $MAX_FD in #(
max*) max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) || MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit" warn "Could not query maximum file descriptor limit"
esac esac
@ -152,7 +155,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #( '' | soft) :;; #(
*) *)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045 # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" || ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD" warn "Could not set maximum file descriptor limit to $MAX_FD"
esac esac
@ -197,11 +200,15 @@ if "$cygwin" || "$msys" ; then
done done
fi fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
# shell script including quotes and variable substitutions, so put them in DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded. # Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \

View File

@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and @rem See the License for the specific language governing permissions and
@rem limitations under the License. @rem limitations under the License.
@rem @rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off @if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if %ERRORLEVEL% equ 0 goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute if exist "%JAVA_EXE%" goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail

View File

@ -11,7 +11,7 @@ open class ConcreteBaseBukkitPlugin : ConcreteBasePlugin() {
project.repositories { project.repositories {
maven { maven {
name = "papermc" name = "papermc"
url = URI.create("https://papermc.io/repo/repository/maven-public/") url = URI.create("https://repo.papermc.io/repository/maven-public/")
} }
} }

View File

@ -7,6 +7,7 @@ import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.withType import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
open class ConcreteBasePlugin : Plugin<Project> { open class ConcreteBasePlugin : Plugin<Project> {
@ -29,15 +30,15 @@ open class ConcreteBasePlugin : Plugin<Project> {
project.plugins.apply("org.jetbrains.kotlin.plugin.serialization") project.plugins.apply("org.jetbrains.kotlin.plugin.serialization")
project.extensions.getByType<JavaPluginExtension>().apply { project.extensions.getByType<JavaPluginExtension>().apply {
val javaVersion = JavaVersion.toVersion(17) val javaVersion = JavaVersion.toVersion(21)
sourceCompatibility = javaVersion sourceCompatibility = javaVersion
targetCompatibility = javaVersion targetCompatibility = javaVersion
} }
project.tasks.withType<KotlinCompile>().forEach { project.tasks.withType<KotlinCompile>().forEach {
it.apply { it.apply {
kotlinOptions.apply { compilerOptions {
jvmTarget = "17" jvmTarget.value(JvmTarget.JVM_21)
} }
} }
} }

View File

@ -1,16 +1,14 @@
package gay.pizza.foundation.concrete package gay.pizza.foundation.concrete
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.get
import org.gradle.language.jvm.tasks.ProcessResources import org.gradle.language.jvm.tasks.ProcessResources
@Suppress("UnstableApiUsage")
class ConcretePluginPlugin : ConcreteBaseBukkitPlugin() { class ConcretePluginPlugin : ConcreteBaseBukkitPlugin() {
override fun apply(project: Project) { override fun apply(project: Project) {
super.apply(project) super.apply(project)
project.plugins.apply("com.github.johnrengelman.shadow") project.plugins.apply("com.gradleup.shadow")
// During IDEA project import, if this code is active, it will print warnings. // During IDEA project import, if this code is active, it will print warnings.
// This will make the VERSION field unexpanded if you run using the IntelliJ build system. // This will make the VERSION field unexpanded if you run using the IntelliJ build system.

View File

@ -4,14 +4,15 @@ import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.register
import java.nio.file.Paths import java.nio.file.Paths
class ConcreteRootPlugin : Plugin<Project> { class ConcreteRootPlugin : Plugin<Project> {
override fun apply(project: Project) { override fun apply(project: Project) {
project.apply(plugin = "base") project.apply(plugin = "base")
project.extensions.create<ConcreteRootExtension>("concreteRoot") project.extensions.create<ConcreteRootExtension>("concreteRoot")
val setupPaperServer = project.tasks.create<SetupPaperServer>("setupPaperServer") val setupPaperServer = project.tasks.register<SetupPaperServer>("setupPaperServer").get()
val runPaperServer = project.tasks.create<RunPaperServer>("runPaperServer") val runPaperServer = project.tasks.register<RunPaperServer>("runPaperServer").get()
runPaperServer.dependsOn(setupPaperServer) runPaperServer.dependsOn(setupPaperServer)
val maybeLocalServerPathString = project.properties["localMinecraftServerPath"]?.toString() val maybeLocalServerPathString = project.properties["localMinecraftServerPath"]?.toString()
@ -20,8 +21,8 @@ class ConcreteRootPlugin : Plugin<Project> {
val localServerJarFileName = project.properties["localMinecraftServerJarFileName"]?.toString() ?: "server.jar" val localServerJarFileName = project.properties["localMinecraftServerJarFileName"]?.toString() ?: "server.jar"
val currentWorkingDirectory = System.getProperty("user.dir") val currentWorkingDirectory = System.getProperty("user.dir")
val localServerDirectory = Paths.get(currentWorkingDirectory).resolve(maybeLocalServerPathString).toFile() val localServerDirectory = Paths.get(currentWorkingDirectory).resolve(maybeLocalServerPathString).toFile()
val setupLocalMinecraftServer = project.tasks.create<SetupLocalMinecraftServer>("setupLocalMinecraftServer") val setupLocalMinecraftServer = project.tasks.register<SetupLocalMinecraftServer>("setupLocalMinecraftServer").get()
val runLocalMinecraftServer = project.tasks.create<RunLocalMinecraftServer>("runLocalMinecraftServer") val runLocalMinecraftServer = project.tasks.register<RunLocalMinecraftServer>("runLocalMinecraftServer").get()
runLocalMinecraftServer.dependsOn(setupLocalMinecraftServer) runLocalMinecraftServer.dependsOn(setupLocalMinecraftServer)
setupLocalMinecraftServer.minecraftServerDirectory = localServerDirectory setupLocalMinecraftServer.minecraftServerDirectory = localServerDirectory
@ -29,7 +30,7 @@ class ConcreteRootPlugin : Plugin<Project> {
runLocalMinecraftServer.serverJarFileName = localServerJarFileName runLocalMinecraftServer.serverJarFileName = localServerJarFileName
} }
val updateManifests = project.tasks.create<UpdateManifestTask>("updateManifests") val updateManifests = project.tasks.register<UpdateManifestTask>("updateManifests")
project.tasks.getByName("assemble").dependsOn(updateManifests) project.tasks.getByName("assemble").dependsOn(updateManifests)
} }
} }

View File

@ -10,7 +10,7 @@ class PaperVersionClient(
private val client: HttpClient = HttpClient.newHttpClient(), private val client: HttpClient = HttpClient.newHttpClient(),
private val gson: Gson = Globals.gson private val gson: Gson = Globals.gson
) { ) {
private val apiBaseUrl = URI.create("https://papermc.io/api/v2/") private val apiBaseUrl = URI.create("https://api.papermc.io/v2/")
fun getVersionBuilds(group: String): List<PaperBuild> { fun getVersionBuilds(group: String): List<PaperBuild> {
val response = client.send( val response = client.send(

View File

@ -1,9 +1,11 @@
package gay.pizza.foundation.concrete package gay.pizza.foundation.concrete
import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Internal
import org.gradle.process.ExecOperations
import java.io.File import java.io.File
import javax.inject.Inject
open class RunLocalMinecraftServer : RunMinecraftServer() { open class RunLocalMinecraftServer @Inject constructor(execOperations: ExecOperations) : RunMinecraftServer(execOperations) {
@Internal @Internal
lateinit var minecraftServerDirectory: File lateinit var minecraftServerDirectory: File

View File

@ -4,10 +4,12 @@ import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
import org.gradle.process.ExecOperations
import java.io.File import java.io.File
import java.util.jar.JarFile import java.util.jar.JarFile
import javax.inject.Inject
abstract class RunMinecraftServer : DefaultTask() { abstract class RunMinecraftServer @Inject constructor(private var execOperations: ExecOperations) : DefaultTask() {
init { init {
outputs.upToDateWhen { false } outputs.upToDateWhen { false }
} }
@ -24,7 +26,7 @@ abstract class RunMinecraftServer : DefaultTask() {
val serverJarFile = minecraftServerDirectory.resolve(getServerJarName()) val serverJarFile = minecraftServerDirectory.resolve(getServerJarName())
val mainClassName = readMainClass(serverJarFile) val mainClassName = readMainClass(serverJarFile)
project.javaexec { execOperations.javaexec {
classpath(serverJarFile.absolutePath) classpath(serverJarFile.absolutePath)
workingDir(minecraftServerDirectory) workingDir(minecraftServerDirectory)

View File

@ -2,9 +2,11 @@ package gay.pizza.foundation.concrete
import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Internal
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.getByType
import org.gradle.process.ExecOperations
import java.io.File import java.io.File
import javax.inject.Inject
open class RunPaperServer : RunMinecraftServer() { open class RunPaperServer @Inject constructor(execOperations: ExecOperations) : RunMinecraftServer(execOperations) {
init { init {
outputs.upToDateWhen { false } outputs.upToDateWhen { false }
} }

View File

@ -20,6 +20,7 @@ open class SetupPaperServer : SetupMinecraftServer() {
fun setupPaperServer() { fun setupPaperServer() {
val concrete = project.extensions.getByType<ConcreteRootExtension>() val concrete = project.extensions.getByType<ConcreteRootExtension>()
val minecraftServerDirectory = getServerDirectory() val minecraftServerDirectory = getServerDirectory()
minecraftServerDirectory.mkdirs()
val paperJarFile = project.file("${minecraftServerDirectory}/paper.jar") val paperJarFile = project.file("${minecraftServerDirectory}/paper.jar")
if (!paperJarFile.exists() || shouldUpdatePaperServer) { if (!paperJarFile.exists() || shouldUpdatePaperServer) {
downloadLatestBuild(concrete.paperServerVersionGroup.get(), paperJarFile) downloadLatestBuild(concrete.paperServerVersionGroup.get(), paperJarFile)

View File

@ -1,9 +1,13 @@
package gay.pizza.foundation.concrete package gay.pizza.foundation.concrete
import java.net.URI import java.net.URI
import java.nio.file.Files import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse.BodyHandlers
import java.nio.file.Path import java.nio.file.Path
import java.security.MessageDigest import java.security.MessageDigest
import kotlin.io.path.exists
import kotlin.io.path.inputStream
class SmartDownloader( class SmartDownloader(
private val localFilePath: Path, private val localFilePath: Path,
@ -20,23 +24,25 @@ class SmartDownloader(
} }
private fun downloadRemoteFile() { private fun downloadRemoteFile() {
val url = remoteDownloadUrl.toURL() val httpClient = HttpClient.newHttpClient()
val remoteFileStream = url.openStream() val request = HttpRequest.newBuilder()
val localFileStream = Files.newOutputStream(localFilePath) .GET()
remoteFileStream.transferTo(localFileStream) .uri(remoteDownloadUrl)
.build()
httpClient.send(request, BodyHandlers.ofFile(localFilePath))
val hashResult = checkLocalFileHash() val hashResult = checkLocalFileHash()
if (hashResult != HashResult.ValidHash) { if (hashResult != HashResult.ValidHash) {
throw RuntimeException("Download of $remoteDownloadUrl did not result in valid hash.") throw RuntimeException("Download of $remoteDownloadUrl did not result in a valid hash.")
} }
} }
private fun checkLocalFileHash(): HashResult { private fun checkLocalFileHash(): HashResult {
if (!Files.exists(localFilePath)) { if (!localFilePath.exists()) {
return HashResult.DoesNotExist return HashResult.DoesNotExist
} }
val digest = MessageDigest.getInstance("SHA-256") val digest = MessageDigest.getInstance("SHA-256")
val localFileStream = Files.newInputStream(localFilePath) val localFileStream = localFilePath.inputStream()
val buffer = ByteArray(16 * 1024) val buffer = ByteArray(16 * 1024)
while (true) { while (true) {

View File

@ -2,10 +2,9 @@ package gay.pizza.foundation.concrete
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
import java.nio.file.Files
import java.nio.file.Path import java.nio.file.Path
import kotlin.io.path.name
import kotlin.io.path.relativeTo import kotlin.io.path.relativeTo
import kotlin.io.path.writeText
open class UpdateManifestTask : DefaultTask() { open class UpdateManifestTask : DefaultTask() {
@TaskAction @TaskAction
@ -29,7 +28,7 @@ open class UpdateManifestTask : DefaultTask() {
}.toMap() }.toMap()
val legacyUpdateFile = manifestsDir.resolve("update.json") val legacyUpdateFile = manifestsDir.resolve("update.json")
Files.writeString(legacyUpdateFile, Globals.gson.toJson(legacyUpdateManifest)) legacyUpdateFile.writeText(Globals.gson.toJson(legacyUpdateManifest))
val extensibleUpdateManifestItems = project.findItemProjects().map { project -> val extensibleUpdateManifestItems = project.findItemProjects().map { project ->
val concreteItemExtension = project.concreteItemExtension!! val concreteItemExtension = project.concreteItemExtension!!
@ -60,12 +59,11 @@ open class UpdateManifestTask : DefaultTask() {
) )
val extensibleUpdateManifestFile = manifestsDir.resolve("manifest.json") val extensibleUpdateManifestFile = manifestsDir.resolve("manifest.json")
Files.writeString( extensibleUpdateManifestFile.writeText(Globals.gson.toJson(extensibleUpdateManifest) + "\n")
extensibleUpdateManifestFile, Globals.gsonPretty.toJson(extensibleUpdateManifest) + "\n")
} }
private fun ensureManifestsDirectory(): Path { private fun ensureManifestsDirectory(): Path {
val manifestsDir = project.buildDir.resolve("manifests") val manifestsDir = project.layout.buildDirectory.asFile.get().resolve("manifests")
manifestsDir.mkdirs() manifestsDir.mkdirs()
return manifestsDir.toPath() return manifestsDir.toPath()
} }