4141 ]
4242
4343 assetsVer = ' 29'
44+ serverMain = ' net.minecraft.server.Main'
45+ clientMain = ' net.minecraft.client.main.Main'
4446}
4547
4648task download {
@@ -143,9 +145,7 @@ task modPackServer {
143145 doLast { Mod . pack(rootDir, ' server' ) }
144146}
145147
146- task setupServer { group = ' setup' ; dependsOn snapServer }
147- task setupClient { group = ' setup' ; dependsOn snapClient }
148- task setup { group = ' setup' ; dependsOn setupServer, setupClient }
148+ task setup { group = ' setup' ; dependsOn snapServer, snapClient }
149149
150150task genPatchServer {
151151 group = ' patches'
@@ -169,7 +169,7 @@ configure([project(':server'), project(':client')]) {
169169 from(zipTree(" ${ rootDir} /jars/${ project.name} .jar" )) { include ' **/package-info.class' }
170170
171171 manifest {
172- def main = project. name == ' server' ? ' net.minecraft.server.Main ' : ' net.minecraft.client.main.Main '
172+ def main = project. name == ' server' ? serverMain : clientMain
173173 attributes ' Main-Class' : main
174174 }
175175
@@ -192,9 +192,7 @@ configure([project(':server'), project(':client')]) {
192192 rename { " ${ project.name} -${ version} _unobfuscated.jar" }
193193 }
194194 }
195- }
196195
197- subprojects {
198196 dependencies {
199197 implementation ' com.mojang:authlib:7.0.61'
200198 implementation ' com.mojang:brigadier:1.3.10'
@@ -219,7 +217,7 @@ task runServer(type: JavaExec) {
219217 group = ' run'
220218 doFirst { mkdir ' run_server' }
221219
222- mainClass = ' net.minecraft.server.Main '
220+ mainClass = serverMain
223221 classpath = project(' :server' ). sourceSets. main. runtimeClasspath
224222 workingDir = file(' run_server' )
225223
@@ -231,7 +229,7 @@ task runClient(type: JavaExec) {
231229 dependsOn ' assets'
232230 doFirst { mkdir ' run' }
233231
234- mainClass = ' net.minecraft.client.main.Main '
232+ mainClass = clientMain
235233 classpath = project(' :client' ). sourceSets. main. runtimeClasspath
236234 workingDir = file(' run' )
237235
@@ -241,10 +239,89 @@ task runClient(type: JavaExec) {
241239 ' --assetIndex' , assetsVer, ' --gameDir' , ' run' ]
242240}
243241
242+ task runNativeServer (type : Exec ) {
243+ group = ' run'
244+ doFirst { mkdir ' run_server' }
245+
246+ commandLine = Native . runCommand(rootDir, ' server' , ' --nogui' )
247+ workingDir = file(' run_server' )
248+ }
249+
250+ task runNativeClient (type : Exec ) {
251+ group = ' run'
252+ dependsOn ' assets'
253+ doFirst { mkdir ' run' }
254+
255+ commandLine = Native . runCommand(rootDir, ' client' ,
256+ ' --version' , version, ' --accessToken' , ' 0' , ' --assetsDir' , ' assets' ,
257+ ' --assetIndex' , assetsVer, ' --gameDir' , ' run' )
258+ workingDir = file(' run' )
259+ environment ' __GL_THREADED_OPTIMIZATIONS' , ' 0'
260+ }
261+
262+ task nativeServerAgent (type : JavaExec ) {
263+ group = ' native'
264+ dependsOn ' :server:jar'
265+ doFirst { Native . requireGraalVM(); mkdir ' run_server' }
266+
267+ mainClass = serverMain
268+ classpath = project(' :server' ). sourceSets. main. runtimeClasspath
269+ workingDir = file(' run_server' )
270+ jvmArgs = [Native . agentArg(rootDir, ' server' )]
271+
272+ args = [' --nogui' ]
273+ }
274+
275+ task nativeClientAgent (type : JavaExec ) {
276+ group = ' native'
277+ dependsOn ' :client:jar' , ' assets'
278+ doFirst { Native . requireGraalVM(); mkdir ' run' }
279+
280+ mainClass = clientMain
281+ classpath = project(' :client' ). sourceSets. main. runtimeClasspath
282+ workingDir = file(' run' )
283+ jvmArgs = [Native . agentArg(rootDir, ' client' )]
284+ environment ' __GL_THREADED_OPTIMIZATIONS' , ' 0'
285+
286+ args = [' --version' , version, ' --accessToken' , ' 0' , ' --assetsDir' , ' assets' ,
287+ ' --assetIndex' , assetsVer, ' --gameDir' , ' run' ]
288+ }
289+
290+ project(' :server' ). tasks. compileJava. mustRunAfter snapServer
291+ project(' :client' ). tasks. compileJava. mustRunAfter snapClient
292+
293+ task nativeServer (type : Exec ) {
294+ group = ' native'
295+ dependsOn snapServer, ' :server:jar' , ' :native:jar'
296+ doFirst {
297+ Native . requireGraalVM(); mkdir ' native/build'
298+ def cp = Native . classpath(
299+ project(' :server' ). tasks. jar. archiveFile. get(). asFile,
300+ project(' :server' ). sourceSets. main. runtimeClasspath. asPath,
301+ project(' :native' ). tasks. jar. archiveFile. get(). asFile)
302+ commandLine = Native . buildCommand(cp, rootDir, ' server' , serverMain)
303+ }
304+ workingDir = file(' native/build' )
305+ }
306+
307+ task nativeClient (type : Exec ) {
308+ group = ' native'
309+ dependsOn snapServer, snapClient, ' :client:jar' , ' :native:jar'
310+ doFirst {
311+ Native . requireGraalVM(); mkdir ' native/build'
312+ def cp = Native . classpath(
313+ project(' :client' ). tasks. jar. archiveFile. get(). asFile,
314+ project(' :client' ). sourceSets. main. runtimeClasspath. asPath,
315+ project(' :native' ). tasks. jar. archiveFile. get(). asFile)
316+ commandLine = Native . buildCommand(cp, rootDir, ' client' , clientMain)
317+ }
318+ workingDir = file(' native/build' )
319+ }
320+
244321idea. project. settings {
245322 runConfigurations {
246323 ' Minecraft Client' (org.jetbrains.gradle.ext.Application ) {
247- mainClass = ' net.minecraft.client.main.Main '
324+ mainClass = clientMain
248325 moduleName = " ${ rootProject.name} .client.main"
249326 workingDirectory = " ${ rootDir} /run"
250327 programParameters = " --version ${ version} --accessToken 0 " +
@@ -254,7 +331,7 @@ idea.project.settings {
254331 }
255332
256333 ' Minecraft Server' (org.jetbrains.gradle.ext.Application ) {
257- mainClass = ' net.minecraft.server.Main '
334+ mainClass = serverMain
258335 moduleName = " ${ rootProject.name} .server.main"
259336 workingDirectory = " ${ rootDir} /run_server"
260337 programParameters = ' nogui'
@@ -267,7 +344,7 @@ jar.enabled = false
267344
268345clean {
269346 delete ' run' , ' run_server' , ' decompSrc/client' , ' patchSrc'
270- delete ' client/src' , ' server/src' , ' client/bin' , ' server/bin'
347+ delete ' client/src' , ' server/src' , ' client/bin' , ' server/bin' , ' native/build '
271348 delete ' jars' , ' libs' , ' vineflower.jar'
272349}
273350
0 commit comments