1- import org.teavm.gradle.api.OptimizationLevel
2-
3- buildscript {
4- dependencies {
5- classpath files(" src/teavmc-classpath/resources" )
6- }
7- }
8-
9- plugins {
10- id " java"
11- id " eclipse"
12- id " org.teavm" version " 0.9.2"
13- }
14-
15- sourceSets {
16- main {
17- java {
18- srcDirs(
19- " src/main/java" ,
20- " src/game/java" ,
21- " src/protocol-game/java" ,
22- " src/protocol-relay/java" ,
23- " src/teavm/java" ,
24- " src/teavm-boot-menu/java"
25- )
26- }
27- }
28-
29- }
30-
31- repositories {
32- mavenCentral()
33- }
34-
35- dependencies {
36- teavm(teavm. libs. jso)
37- teavm(teavm. libs. jsoApis)
38- compileOnly " org.teavm:teavm-core:0.9.2" // workaround for a few hacks
39- }
40-
41- def folder = " javascript"
42- def name = " classes.js"
43-
44- teavm. js {
45- compileJava. options. encoding = " UTF-8"
46- obfuscated = true
47- sourceMap = true
48- targetFileName = " ../" + name
49- optimization = OptimizationLevel . BALANCED // Change to "AGGRESSIVE" for release
50- outOfProcess = false
51- fastGlobalAnalysis = false
52- processMemory = 512
53- entryPointName = " main"
54- mainClass = " net.lax1dude.eaglercraft.v1_8.internal.teavm.MainClass"
55- outputDir = file(folder)
56- properties = [ " java.util.TimeZone.autodetect" : " true" ]
57- debugInformation = false
58- }
59-
60- tasks. named(" generateJavaScript" ) {
61- doLast {
62-
63- // NOTE: This step may break at any time, and is not required for 99% of browsers
64-
65- def phile = file(folder + " /" + name)
66- def dest = phile. getText(" UTF-8" )
67- def i = dest. substring(0 , dest. indexOf(" =\$ rt_globals.Symbol('jsoClass');" )). lastIndexOf(" let " )
68- dest = dest. substring(0 , i) + " var" + dest. substring(i + 3 )
69- def j = dest. indexOf(" function(\$ rt_globals,\$ rt_exports){" )
70- dest = dest. substring(0 , j + 34 ) + " \n " + file(folder + " /ES6ShimScript.txt" ). getText(" UTF-8" ) + " \n " + dest. substring(j + 34 )
71- phile. write(dest, " UTF-8" )
72- }
1+ import org.teavm.gradle.api.OptimizationLevel
2+
3+ buildscript {
4+ repositories {
5+ mavenLocal()
6+ maven { url = ' https://maven.minecraftforge.net' }
7+ mavenCentral()
8+ gradlePluginPortal()
9+ }
10+ dependencies {
11+ classpath files(" src/teavmc-classpath/resources" )
12+ classpath ' net.minecraftforge.gradle:ForgeGradle:6+'
13+ classpath " gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:1.1.3"
14+ }
15+ }
16+
17+ import net.minecraftforge.gradle.common.util.Utils
18+ import net.minecraftforge.gradle.common.util.VersionJson
19+
20+ plugins {
21+ id " java"
22+ id " eclipse"
23+ id " org.teavm" version " 0.9.2"
24+ }
25+
26+ sourceSets {
27+ main {
28+ java {
29+ srcDirs(
30+ " src/main/java" ,
31+ " src/game/java" ,
32+ " src/protocol-game/java" ,
33+ " src/protocol-relay/java" ,
34+ " src/teavm/java" ,
35+ " src/teavm-boot-menu/java"
36+ )
37+ }
38+ }
39+
40+ }
41+
42+ repositories {
43+ mavenCentral()
44+ maven { url = ' https://libraries.minecraft.net/' }
45+ maven { url = ' https://maven.minecraftforge.net' }
46+ }
47+
48+ dependencies {
49+ teavm(teavm. libs. jso)
50+ teavm(teavm. libs. jsoApis)
51+ compileOnly " org.teavm:teavm-core:0.9.2" // workaround for a few hacks
52+
53+ // Minecraft 1.21.5 relevante Dependencies
54+ implementation ' org.apache.logging.log4j:log4j-api:2.24.1'
55+ implementation ' org.apache.logging.log4j:log4j-slf4j2-impl:2.24.1'
56+ implementation ' org.apache.logging.log4j:log4j-core:2.24.1'
57+ implementation ' org.apache.httpcomponents:httpcore:4.4.16'
58+ implementation ' org.apache.httpcomponents:httpclient:4.5.14'
59+ implementation ' org.apache.commons:commons-lang3:3.17.0'
60+ implementation ' org.apache.commons:commons-compress:1.27.1'
61+ implementation ' org.lwjgl:lwjgl-glfw:3.3.3'
62+ implementation ' org.lwjgl:lwjgl:3.3.3'
63+ implementation ' org.lwjgl:lwjgl-jemalloc:3.3.3'
64+ implementation ' org.lwjgl:lwjgl-opengl:3.3.3'
65+ implementation ' org.lwjgl:lwjgl-freetype:3.3.3'
66+ implementation ' org.lwjgl:lwjgl-stb:3.3.3'
67+ implementation ' org.lwjgl:lwjgl-tinyfd:3.3.3'
68+ implementation ' org.lwjgl:lwjgl-openal:3.3.3'
69+ implementation ' org.joml:joml:1.10.8'
70+ implementation ' org.lz4:lz4-java:1.8.0'
71+ implementation ' org.ow2.asm:asm:9.6'
72+ implementation ' org.slf4j:slf4j-api:2.0.16'
73+ implementation ' org.jcraft:jorbis:0.0.17'
74+ implementation ' org.jetbrains:annotations:24.1.0'
75+ implementation ' it.unimi.dsi:fastutil:8.5.15'
76+ implementation ' commons-io:commons-io:2.17.0'
77+ implementation ' com.fasterxml.jackson.core:jackson-databind:2.13.4.2'
78+ implementation ' com.fasterxml.jackson.core:jackson-annotations:2.13.4'
79+ implementation ' com.fasterxml.jackson.core:jackson-core:2.13.4'
80+ implementation ' com.ibm.icu:icu4j:76.1'
81+ implementation ' com.microsoft.azure:msal4j:1.17.2'
82+ implementation ' com.mojang:brigadier:1.3.10'
83+ implementation ' com.mojang:datafixerupper:8.0.16'
84+ implementation ' com.mojang:authlib:6.0.58'
85+ implementation ' com.mojang:text2speech:1.18.11'
86+ implementation ' com.mojang:blocklist:1.0.10'
87+ implementation ' com.google.guava:guava:33.3.1-jre'
88+ implementation ' com.google.code.gson:gson:2.11.0'
89+ implementation ' com.github.oshi:oshi-core:6.6.5'
90+ implementation ' com.github.stephenc.jcip:jcip-annotations:1.0-1'
91+ implementation ' com.nimbusds:content-type:2.3'
92+ implementation ' com.nimbusds:nimbus-jose-jwt:9.40'
93+ implementation ' com.nimbusds:lang-tag:1.7'
94+ implementation ' com.nimbusds:oauth2-oidc-sdk:11.18'
95+ implementation ' commons-codec:commons-codec:1.17.1'
96+ implementation ' io.netty:netty-transport:4.1.118.Final'
97+ implementation ' io.netty:netty-transport-classes-epoll:4.1.118.Final'
98+ implementation ' io.netty:netty-handler:4.1.118.Final'
99+ implementation ' io.netty:netty-buffer:4.1.118.Final'
100+ implementation ' io.netty:netty-resolver:4.1.118.Final'
101+ implementation ' io.netty:netty-transport-native-unix-common:4.1.118.Final'
102+ implementation ' io.netty:netty-common:4.1.118.Final'
103+ implementation ' io.netty:netty-codec:4.1.118.Final'
104+ implementation ' net.sf.jopt-simple:jopt-simple:5.0.4'
105+ implementation ' net.java.dev.jna:jna-platform:5.15.0'
106+ implementation ' net.java.dev.jna:jna:5.15.0'
107+ implementation ' net.minecraftforge:forge:1.20.4-49.0.50'
108+ implementation ' net.minecraftforge:forgespi:7.0.0'
109+ implementation ' net.minidev:json-smart:2.5.1'
110+ implementation ' net.minidev:accessors-smart:2.5.1'
111+ implementation ' commons-logging:commons-logging:1.3.4'
112+ implementation ' ca.weblite:java-objc-bridge:1.1'
113+ implementation ' org.json:json:20240303'
114+ // implementation files('com/mojang/logging/1.5.10/logging-1.5.10.jar')
115+ // implementation files('com/mojang/jtracy/1.0.29/jtracy-1.0.29.jar')
116+ // implementation files('com/mojang/jtracy/1.0.29/jtracy-1.0.29-natives-windows.jar')
117+ // implementation files('com/mojang/patchy/2.2.10/patchy-2.2.10.jar')
118+ // Lokale JARs (nur falls online nicht verfügbar)
119+ implementation files(
120+ ' src/jars/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows-x86.jar' ,
121+ ' src/jars/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows.jar' ,
122+ ' src/jars/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows-arm64.jar' ,
123+ ' src/jars/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows-x86.jar' ,
124+ ' src/jars/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows-arm64.jar' ,
125+ ' src/jars/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows.jar' ,
126+ ' src/jars/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows-x86.jar' ,
127+ ' src/jars/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows-arm64.jar' ,
128+ ' src/jars/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows.jar' ,
129+ ' src/jars/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows.jar' ,
130+ ' src/jars/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows-x86.jar' ,
131+ ' src/jars/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows-arm64.jar' ,
132+ ' src/jars/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows-arm64.jar' ,
133+ ' src/jars/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows.jar' ,
134+ ' src/jars/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows-x86.jar' ,
135+ ' src/jars/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows.jar' ,
136+ ' src/jars/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows-x86.jar' ,
137+ ' src/jars/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows-arm64.jar' ,
138+ ' src/jars/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows.jar' ,
139+ ' src/jars/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows-arm64.jar' ,
140+ ' src/jars/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows-x86.jar' ,
141+ ' src/jars/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows-arm64.jar' ,
142+ ' src/jars/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows-x86.jar' ,
143+ ' src/jars/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows.jar' ,
144+ // Die folgenden JARs sind NICHT öffentlich verfügbar:
145+ ' src/jars/com/mojang/jtracy/1.0.29/jtracy-1.0.29.jar' ,
146+ ' src/jars/com/mojang/jtracy/1.0.29/jtracy-1.0.29-natives-windows.jar' ,
147+ ' src/jars/com/mojang/patchy/2.2.10/patchy-2.2.10.jar' ,
148+ ' src/jars/com/mojang/logging/1.5.10/logging-1.5.10.jar'
149+ )
150+ }
151+
152+ def folder = " javascript"
153+ def name = " classes.js"
154+
155+ teavm. js {
156+ compileJava. options. encoding = " UTF-8"
157+ obfuscated = true
158+ sourceMap = true
159+ targetFileName = " ../" + name
160+ optimization = OptimizationLevel . BALANCED // Change to "AGGRESSIVE" for release
161+ outOfProcess = false
162+ fastGlobalAnalysis = false
163+ processMemory = 512
164+ entryPointName = " main"
165+ mainClass = " net.lax1dude.eaglercraft.v1_8.internal.teavm.MainClass"
166+ outputDir = file(folder)
167+ properties = [ " java.util.TimeZone.autodetect" : " true" ]
168+ debugInformation = false
169+ }
170+
171+ tasks. named(" generateJavaScript" ) {
172+ doLast {
173+
174+ // NOTE: This step may break at any time, and is not required for 99% of browsers
175+
176+ def phile = file(folder + " /" + name)
177+ def dest = phile. getText(" UTF-8" )
178+ def i = dest. substring(0 , dest. indexOf(" =\$ rt_globals.Symbol('jsoClass');" )). lastIndexOf(" let " )
179+ dest = dest. substring(0 , i) + " var" + dest. substring(i + 3 )
180+ def j = dest. indexOf(" function(\$ rt_globals,\$ rt_exports){" )
181+ dest = dest. substring(0 , j + 34 ) + " \n " + file(folder + " /ES6ShimScript.txt" ). getText(" UTF-8" ) + " \n " + dest. substring(j + 34 )
182+ phile. write(dest, " UTF-8" )
183+ }
73184}
0 commit comments