33on :
44 push :
55 branches :
6- - main
6+ - testing
77 workflow_dispatch :
88 schedule :
99 - cron : ' 0 4 * * *' # Runs daily at 04:00 UTC
@@ -15,6 +15,7 @@ permissions:
1515env :
1616 STUBGEN_BUILD_NUM : 15
1717 MINECRAFT_VERSION : 1.21.5
18+ OPENJDK_REPO : https://github.com/openjdk/jdk21u-dev
1819 ADDITIONAL_DEFINITION_URLS : |
1920 https://raw.githubusercontent.com/LuaLink/LuaLinkV2/master/src/main/resources/lua/script.lua
2021 https://raw.githubusercontent.com/LuaLink/LuaLinkV2/master/src/main/resources/lua/scheduler.lua
@@ -38,37 +39,27 @@ jobs:
3839 java-version : 21
3940 distribution : ' adopt'
4041
42+ - name : Install xmllint
43+ run : sudo apt-get update && sudo apt-get install -y libxml2-utils zip
44+
4145 - name : Download LuaLink/LuaStubGen JAR
4246 run : |
4347 mkdir -p $RUNNER_TEMP/stubgen
4448 curl -L -o $RUNNER_TEMP/stubgen/LuaStubGen.jar https://github.com/LuaLink/LuaStubGen/releases/download/$STUBGEN_BUILD_NUM/LuaStubGen-1.0-SNAPSHOT-all.jar
45-
46- - name : Install xmllint
47- run : sudo apt-get update && sudo apt-get install -y libxml2-utils
4849
4950 - name : Resolve Paper API Snapshot Sources JAR
5051 id : resolve-paper
5152 run : |
5253 METADATA_URL="https://repo.papermc.io/repository/maven-public/io/papermc/paper/paper-api/${MINECRAFT_VERSION}-R0.1-SNAPSHOT/maven-metadata.xml"
53- echo "Fetching metadata from $METADATA_URL"
5454 curl -s "$METADATA_URL" -o metadata.xml
55-
5655 VERSION=$(xmllint --xpath "string(//snapshotVersion[classifier='sources']/value)" metadata.xml)
57- echo "Resolved version: $VERSION"
58-
5956 JAR_URL="https://repo.papermc.io/repository/maven-public/io/papermc/paper/paper-api/${MINECRAFT_VERSION}-R0.1-SNAPSHOT/paper-api-${VERSION}-sources.jar"
60- echo "Resolved JAR URL: $JAR_URL"
61-
6257 echo "PAPER_API_SOURCES_URL=$JAR_URL" >> $GITHUB_ENV
6358
6459 - name : Download Source JARs
6560 run : |
6661 mkdir -p $RUNNER_TEMP/sources
67-
68- # Download Paper API sources
6962 curl -L -o $RUNNER_TEMP/sources/paper-api-sources.jar "$PAPER_API_SOURCES_URL"
70-
71- # Download other JARs
7263 IFS=$'\n'
7364 for url in $SOURCES_JAR_URLS; do
7465 filename=$(basename "$url")
7869 - name : Clean previous Paper definitions
7970 run : rm -rf library/paper
8071
81- - name : Generate Lua definitions
72+ - name : Generate Lua definitions for Paper
8273 run : |
8374 mkdir -p library/paper
8475 jar_files=$(ls $RUNNER_TEMP/sources/*.jar | tr '\n' ' ')
@@ -93,11 +84,69 @@ jobs:
9384 curl -L -o library/lualink/"$filename" "$url"
9485 done
9586
87+ - name : Clone OpenJDK sources and generate Java stubs
88+ run : |
89+ git clone --depth 1 $OPENJDK_REPO $RUNNER_TEMP/openjdk
90+ mkdir -p $RUNNER_TEMP/java-jar
91+ cd $RUNNER_TEMP/openjdk
92+ zip -r $RUNNER_TEMP/java-jar/openjdk-src.jar ./src
93+
94+ mkdir -p library/java
95+ java -jar $RUNNER_TEMP/stubgen/LuaStubGen.jar --output-dir=library/java $RUNNER_TEMP/java-jar/openjdk-src.jar
96+
97+ - name : Clean Java stubs to keep only allowed classes
98+ run : |
99+ ALLOWED_CLASSES=(
100+ java.util.Map
101+ java.util.HashMap
102+ java.util.Collection
103+ java.util.List
104+ java.util.ArrayList
105+ java.util.Set
106+ java.util.HashSet
107+ java.util.Collections
108+ java.util.stream.Stream
109+ java.lang.Character
110+ java.util.Arrays
111+ java.util.UUID
112+ java.util.concurrent.CompletableFuture
113+ java.util.function.Function
114+ java.util.function.BiFunction
115+ java.util.function.Consumer
116+ java.util.function.BiConsumer
117+ java.util.function.Predicate
118+ java.lang.Object
119+ java.util.Objects
120+ java.net.URI
121+ java.net.URL
122+ java.io.File
123+ java.nio.file.Path
124+ java.util.regex.Pattern
125+ java.util.regex.Matcher
126+ java.text.SimpleDateFormat
127+ java.util.Locale
128+ java.util.Iterator
129+ java.util.ListIterator
130+ java.text.DecimalFormat
131+ java.util.function.Supplier
132+ java.util.Optional
133+ java.util.logging.Logger
134+ )
135+
136+ cd library/java || exit 1
137+ for file in *.lua; do
138+ base="${file%.lua}"
139+ if [[ ! " ${ALLOWED_CLASSES[@]} " =~ " ${base} " ]]; then
140+ rm -v "$file"
141+ fi
142+ done
143+
96144 - name : Commit and push changes
97145 run : |
98146 git config --local user.name "GitHub Action"
99147 git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
100148 git add library/paper
101149 git add library/lualink
150+ git add library/java
102151 git commit -m "Update Lua definitions" || echo "No changes to commit"
103- git push origin HEAD:main
152+ git push origin HEAD:testing
0 commit comments