plugins { id 'maven-publish' id("io.freefair.lombok") version "9.5.0" id("com.gradleup.shadow") version "9.3.1" id 'net.fabricmc.fabric-loom' version '1.18.1' } version = project.mod_version group = project.maven_group base { archivesName = project.archives_base_name } repositories { mavenCentral() maven { name "kalculosSnapshots" url "https://repo.sfclub.cc/snapshots" } maven { url 'https://maven.nucleoid.xyz' } // You should have it } dependencies { // To change the versions see the gradle.properties file1 minecraft "com.mojang:minecraft:${project.minecraft_version}" implementation "net.fabricmc:fabric-loader:${project.loader_version}" implementation 'me.lucko:fabric-permissions-api:0.7.0' // Fabric API. This is technically optional, but you probably want it anyway. // modImplementation so Loom loads it as a mod in the dev runtime; plain // implementation only adds it to the classpath, so Loader can't find the `fabric` mod. implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" shadow('com.maxmind.geoip2:geoip2:5.2.0') shadow("io.javalin:javalin:7.2.2") { exclude group: "org.eclipse.jetty.ee10", module: "jetty-ee10-annotations" } shadow("org.apache.commons:commons-compress:1.28.0") shadow("io.ib67.kiwi:lang:1.2.3-SNAPSHOT") shadow('com.github.houbb:pinyin:0.4.0') def polymerVersion = "0.18.0+26.3-rc-1" implementation include("eu.pb4:polymer-core:$polymerVersion") implementation include("eu.pb4:polymer-virtual-entity:$polymerVersion") implementation include("eu.pb4:polymer-resource-pack:$polymerVersion") implementation include("eu.pb4:polymer-blocks:$polymerVersion") shadow('com.google.inject:guice:7.0.0') { exclude group: 'com.google.guava', module: 'guava' exclude group: 'com.google.guava', module: 'listenablefuture' exclude group: 'com.google.guava', module: 'failureaccess' } testImplementation platform("org.junit:junit-bom:5.10.2") testImplementation "org.junit.jupiter:junit-jupiter" testRuntimeOnly "org.junit.platform:junit-platform-launcher" } configurations.implementation.extendsFrom(configurations.shadow) tasks.named('test', Test) { useJUnitPlatform() testLogging { events "passed", "skipped", "failed" exceptionFormat "full" } } shadowJar { configurations = [project.configurations.shadow] exclude("META-INF") relocate 'kotlin', 'sfcraft-kotlin' relocate 'org.apache.commons.compress', 'sfcraft.apache.commons.compress' } processResources { inputs.property "version", project.version inputs.property "minecraft_version", project.minecraft_version inputs.property "loader_version", project.loader_version filteringCharset "UTF-8" filesMatching("fabric.mod.json") { expand "version": project.version, "minecraft_version": project.minecraft_version, "loader_version": project.loader_version } } def targetJavaVersion = 25 tasks.withType(JavaCompile).configureEach { // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html // If Javadoc is generated, this must be specified in that task too. it.options.encoding = "UTF-8" if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { it.options.release.set(targetJavaVersion) } } java { def javaVersion = JavaVersion.toVersion(targetJavaVersion) if (JavaVersion.current() < javaVersion) { toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) } // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task // if it is present. // If you remove this line, sources will not be generated. withSourcesJar() } tasks.register("packageTestResources", Zip) { archiveFileName = "resources.zip" destinationDirectory = layout.projectDirectory.dir("run/world") from("src/main/resources/assets/sfcraft") { into("assets/sfcraft") } } runServer { dependsOn packageTestResources } loom { accessWidenerPath = file("src/main/resources/sfcraft.accesswidener") } // configure the maven publication publishing { publications { create("mavenJava", MavenPublication) { artifactId = project.archives_base_name from components.java } } // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { // Add repositories to publish to here. // Notice: This block does NOT have the same function as the block in the top level. // The repositories here will be used for publishing your artifact, not for // retrieving dependencies. } }