diff --git a/adapters/forge/build.gradle b/adapters/forge/build.gradle new file mode 100644 index 000000000..e05bd3b55 --- /dev/null +++ b/adapters/forge/build.gradle @@ -0,0 +1,17 @@ +group = 'art.arcane' +version = rootProject.version + +dependencies { + implementation(project(':spi')) +} + +processResources { + inputs.property('version', project.version) + filesMatching('META-INF/mods.toml') { + expand('version': project.version) + } +} + +tasks.named('jar', Jar).configure { + archiveFileName.set("Iris-${project.version}-forge-skeleton.jar") +} diff --git a/adapters/forge/src/main/java/art/arcane/iris/forge/IrisForgeBootstrap.java b/adapters/forge/src/main/java/art/arcane/iris/forge/IrisForgeBootstrap.java new file mode 100644 index 000000000..b1b49ab3a --- /dev/null +++ b/adapters/forge/src/main/java/art/arcane/iris/forge/IrisForgeBootstrap.java @@ -0,0 +1,25 @@ +/* + * Iris is a World Generator for Minecraft Servers + * Copyright (c) 2026 Arcane Arts (Volmit Software) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package art.arcane.iris.forge; + +public final class IrisForgeBootstrap { + public IrisForgeBootstrap() { + throw new UnsupportedOperationException("The Iris Forge adapter is a build skeleton; worldgen is not wired yet (see CROSSPLATFORM_PLAN.md Phase 5)."); + } +} diff --git a/adapters/forge/src/main/resources/META-INF/mods.toml b/adapters/forge/src/main/resources/META-INF/mods.toml new file mode 100644 index 000000000..1761e5dd5 --- /dev/null +++ b/adapters/forge/src/main/resources/META-INF/mods.toml @@ -0,0 +1,10 @@ +modLoader = "javafml" +loaderVersion = "[1,)" +license = "GPL-3.0" + +[[mods]] +modId = "irisworldgen" +version = "${version}" +displayName = "Iris" +description = "Iris World Generation Engine (Forge adapter - SKELETON, worldgen not yet wired)" +authors = "Arcane Arts (Volmit Software)" diff --git a/build.gradle b/build.gradle index 75a3dd807..ec028f5fd 100644 --- a/build.gradle +++ b/build.gradle @@ -136,6 +136,14 @@ tasks.register('buildFabric', Copy) { into(layout.projectDirectory.dir('dist')) } +tasks.register('buildForge', Copy) { + group = 'iris' + dependsOn(':adapters:forge:jar') + from(project(':adapters:forge').layout.buildDirectory.file("libs/Iris-${project.version}-forge-skeleton.jar")) + rename { "Iris-${project.version}+mc${minecraftVersion}-forge-skeleton.jar" } + into(layout.projectDirectory.dir('dist')) +} + tasks.register('buildNeoforge', Copy) { group = 'iris' dependsOn(':adapters:neoforge:jar') @@ -146,7 +154,7 @@ tasks.register('buildNeoforge', Copy) { tasks.register('buildAll') { group = 'iris' - dependsOn('buildBukkit', 'buildFabric', 'buildNeoforge', ':spi:jar') + dependsOn('buildBukkit', 'buildFabric', 'buildForge', 'buildNeoforge', ':spi:jar') doLast { File dist = layout.projectDirectory.dir('dist').asFile File[] jars = dist.listFiles((java.io.FileFilter) { File f -> f.name.endsWith('.jar') }) diff --git a/settings.gradle b/settings.gradle index 7a7993a25..a35d058af 100644 --- a/settings.gradle +++ b/settings.gradle @@ -74,4 +74,5 @@ include(':adapters:bukkit:plugin') include(':adapters:bukkit:nms:v1_21_R7') include(':adapters:bukkit:nms:v26_1_R1') include(':adapters:fabric') +include(':adapters:forge') include(':adapters:neoforge')