diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 0a28245..2c51e67 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -9,7 +9,7 @@ name: TesseractAPI Nightly on: push: branches: - - 'dev**' + - '*' pull_request: branches: - 'dev**' @@ -31,17 +31,17 @@ jobs: server-id: github # Value of the distributionManagement/repository/id field of the pom.xml settings-path: ${{ github.workspace }} # location for the settings.xml file - name: Setup Gradle Dependencies Cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.gradle/caches ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle','**/gradle/wrapper/gradle-wrapper.properties','**/*.properties') }} + key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.properties') }} - name: Build with Gradle run: ./gradlew build --stacktrace # The USERNAME and TOKEN need to correspond to the credential environment variables used in # the publishing section of your build.gradle - name: Upload Forge Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: TesseractAPI Forge JAR path: forge/build/libs @@ -49,7 +49,7 @@ jobs: USERNAME: ${{ github.actor }} TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload Fabric Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: TesseractAPI Fabric JAR path: fabric/build/libs diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4f1ca62..72483df 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -31,7 +31,7 @@ jobs: MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} GITHUB_RELEASE: true - name: Upload Forge Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Antimatter-forge-nightly-${{ steps.vars.outputs.sha_short }} path: forge/build/libs @@ -39,7 +39,7 @@ jobs: USERNAME: ${{ github.actor }} TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload Fabric Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: Antimatter-fabric-nightly-${{ steps.vars.outputs.sha_short }} path: fabric/build/libs diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..8e3e82f --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,33 @@ +pipeline { + agent any + tools { + jdk "jdk-21" // valid options are: "jdk-8", "jdk-16", "jdk-17" or "jdk-21", choose which one you need + } + stages { + stage('Clean') { + steps { + echo 'Cleaning Project' + sh 'chmod +x gradlew' + sh './gradlew clean' + } + } + stage('Build & Publish') { + steps { + echo 'Building & Publishing' + sh './gradlew build publish' + } + } + } + post { + always { + discordSend( + webhookURL: "https://discord.com/api/webhooks/1313642177083216073/H8EnQ65JusCjpqGTqLXDZI1BYBe4ArLJn3xSjEOWthg4Nwa7ZFSHu1SYag8fU4v4DB8k", + thumbnail: "https://raw.githubusercontent.com/GT-Reimagined/gt-reimagined.github.io/refs/heads/main/icon.png", + title: "Tesseract API ${TAG_NAME} #${BUILD_NUMBER}", + link: env.BUILD_URL, + result: currentBuild.currentResult, + description: "Build: [${BUILD_NUMBER}](${env.BUILD_URL})\nStatus: ${currentBuild.currentResult}" + ) + } + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index ab5fc4b..c46adb9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,11 @@ plugins { id "maven-publish" - id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.3-SNAPSHOT" apply(false) - id "com.github.johnrengelman.shadow" version "7.0.0" apply(false) + id "idea" + id "fabric-loom" version "1.7-SNAPSHOT" apply false + id "net.neoforged.moddev.legacyforge" version "2.0.58-beta" apply false } -architectury { - minecraft = rootProject.minecraft_version -} - -def isCI = System.getenv("GITHUB_ACTION") -def isRELEASE = System.getenv("GITHUB_RELEASE") +def isGITHU_ACTION = System.getenv("GITHUB_ACTION") def gitHash() { String hash = System.getenv("GITHUB_SHA") if (hash != null) return hash.substring(0,8) @@ -18,37 +13,12 @@ def gitHash() { } subprojects { - apply plugin: "dev.architectury.loom" - java.toolchain.languageVersion = JavaLanguageVersion.of(17) - - loom { - silentMojangMappingsLicense() - } - - dependencies { - minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" - // The following line declares the mojmap mappings, you may use other mappings as well - mappings loom.layered() { - officialMojangMappings() - parchment("org.parchmentmc.data:parchment-${rootProject.minecraft_version}:${rootProject.mappings_version}@zip") - } - - // The following line declares the yarn mappings you may select this one as well. - // mappings "net.fabricmc:yarn:1.17.1+build.32:v2" - } - - -} - -allprojects { apply plugin: "maven-publish" apply plugin: "java" - apply plugin: "architectury-plugin" - - - + apply plugin: "idea" group = rootProject.maven_group - + version = "${project.mod_version}-${rootProject.minecraft_version}" + java.toolchain.languageVersion = JavaLanguageVersion.of(17) apply from: 'https://raw.githubusercontent.com/GregTech-Intergalactical/GradleSripts/main/repositories.gradle' java { @@ -59,46 +29,8 @@ allprojects { it.options.encoding = 'UTF-8' } - if (isCI) { + if (isGITHU_ACTION) { version = version + "-" + gitHash() + println("In CI mode") } -} - -subprojects{ - if (!project.path.contains("common")){ - apply plugin: "com.github.johnrengelman.shadow" - - configurations { - common - shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - if (project.path.contains("forge")){ - developmentForge.extendsFrom common - } else{ - developmentFabric.extendsFrom common - } - } - - shadowJar { - configurations = [project.configurations.shadowCommon] - archiveClassifier.set "dev-shadow" - } - - remapJar { - input.set shadowJar.archiveFile - dependsOn shadowJar - archiveClassifier.set null - } - - jar { - archiveClassifier.set "dev" - } - - components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } - } - } -} +} \ No newline at end of file diff --git a/common/build.gradle b/common/build.gradle index 4012d61..034604e 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -1,70 +1,35 @@ -archivesBaseName = rootProject.tesseract_archive_base_name -version = "${project.mod_version}-${rootProject.minecraft_version}" - -sourceSets { - test { - compileClasspath += main.compileClasspath - runtimeClasspath += main.runtimeClasspath - } -} - -loom { - runs { - testClient { - client() - ideConfigGenerated project.rootProject == project - name = "Testmod Client" - source sourceSets.test - } - testServer { - server() - ideConfigGenerated project.rootProject == project - name = "Testmod Server" - source sourceSets.test - } - } +plugins { + id "fabric-loom" } +archivesBaseName = "${project.tesseract_archive_base_name}-common" dependencies{ - modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - compileOnly("com.electronwill.night-config:toml:${rootProject.nightconfig_version}") - compileOnly("com.electronwill.night-config:core:${rootProject.nightconfig_version}") - modImplementation("earth.terrarium:botarium-common-${project.minecraft_version}:${project.botarium_version}") - modImplementation "maven.modrinth:carbon-config:${project.carbon_config_fabric_version}" - testImplementation('junit:junit:4.11') - testImplementation(sourceSets.main.output) -} - -architectury { - common("forge", "fabric") + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${project.minecraft_version}:${project.mappings_version}@zip") + } + //compileOnly("com.electronwill.night-config:toml:${rootProject.nightconfig_version}") + //compileOnly("com.electronwill.night-config:core:${rootProject.nightconfig_version}") + modImplementation("earth.terrarium:botarium-fabric-${project.minecraft_version}:${project.botarium_version}") + implementation 'com.github.Carbon-Config-Project:CarbonConfigLib:1.3.0' } publishing { publications { mavenJava(org.gradle.api.publish.maven.MavenPublication) { - artifact(sourcesJar) { - builtBy remapSourcesJar - } - - afterEvaluate { - artifact remapJar - } + from components.java } } repositories { - def isCI = System.getenv("GITHUB_ACTION") - def isRELEASE = System.getenv("GITHUB_RELEASE") - if (isCI && isRELEASE) { + def isCI = System.getenv("CI") + if (isCI) { maven { - url = "https://repo.repsy.io/mvn/trinsdar/gregtech-intergalactical/" - credentials { - username = System.getenv("MAVEN_USERNAME") - password = System.getenv("MAVEN_PASSWORD") - } + url System.getenv("local_maven_url") } } else { - maven { url "file:///${project.projectDir}/mcmodsrepo"} + mavenLocal() } } } diff --git a/common/gradle.properties b/common/gradle.properties index 80bf104..aa15cf1 100644 --- a/common/gradle.properties +++ b/common/gradle.properties @@ -1 +1,2 @@ -mod_version=0.2.3 \ No newline at end of file +mod_version=0.2.4.1 +fabric.loom.dontRemap=true \ No newline at end of file diff --git a/common/src/main/java/tesseract/FluidPlatformUtils.java b/common/src/main/java/tesseract/FluidPlatformUtils.java index 611ac77..b3950bd 100644 --- a/common/src/main/java/tesseract/FluidPlatformUtils.java +++ b/common/src/main/java/tesseract/FluidPlatformUtils.java @@ -1,8 +1,5 @@ package tesseract; -import dev.architectury.injectables.annotations.ExpectPlatform; - - import earth.terrarium.botarium.common.fluid.base.FluidHolder; import earth.terrarium.botarium.common.fluid.base.PlatformFluidHandler; import earth.terrarium.botarium.common.fluid.base.PlatformFluidItemHandler; diff --git a/common/src/main/java/tesseract/Tesseract.java b/common/src/main/java/tesseract/Tesseract.java index 66b99eb..ada33cb 100644 --- a/common/src/main/java/tesseract/Tesseract.java +++ b/common/src/main/java/tesseract/Tesseract.java @@ -1,16 +1,9 @@ package tesseract; -import carbonconfiglib.config.Config; -import carbonconfiglib.config.ConfigHandler; -import dev.architectury.injectables.annotations.ExpectPlatform; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.minecraft.world.level.LevelAccessor; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import tesseract.api.GraphWrapper; -import tesseract.api.gt.GTTransaction; -import tesseract.api.gt.IGTCable; -import tesseract.api.gt.IGTNode; import java.util.Set; diff --git a/common/src/main/java/tesseract/TesseractCapUtils.java b/common/src/main/java/tesseract/TesseractCapUtils.java index d33b3b5..73b9bc1 100644 --- a/common/src/main/java/tesseract/TesseractCapUtils.java +++ b/common/src/main/java/tesseract/TesseractCapUtils.java @@ -1,6 +1,5 @@ package tesseract; -import dev.architectury.injectables.annotations.ExpectPlatform; import earth.terrarium.botarium.common.fluid.base.PlatformFluidHandler; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/common/src/main/java/tesseract/TesseractPlatformUtils.java b/common/src/main/java/tesseract/TesseractPlatformUtils.java index bc15e31..acc6eef 100644 --- a/common/src/main/java/tesseract/TesseractPlatformUtils.java +++ b/common/src/main/java/tesseract/TesseractPlatformUtils.java @@ -2,7 +2,6 @@ import carbonconfiglib.config.Config; import carbonconfiglib.config.ConfigHandler; -import dev.architectury.injectables.annotations.ExpectPlatform; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; diff --git a/common/src/main/java/tesseract/util/ItemHandlerUtils.java b/common/src/main/java/tesseract/util/ItemHandlerUtils.java index 383ead9..6fc7c1d 100644 --- a/common/src/main/java/tesseract/util/ItemHandlerUtils.java +++ b/common/src/main/java/tesseract/util/ItemHandlerUtils.java @@ -1,6 +1,5 @@ package tesseract.util; -import dev.architectury.injectables.annotations.ExpectPlatform; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; import tesseract.TesseractPlatformUtils; diff --git a/fabric/build.gradle b/fabric/build.gradle index 7397288..3932c82 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,10 +1,8 @@ -architectury { - platformSetupLoomIde() - fabric() +plugins { + id "fabric-loom" } -archivesBaseName = "${rootProject.tesseract_archive_base_name}-fabric" -version = "${project.mod_version}-${rootProject.minecraft_version}" +archivesBaseName = "${project.tesseract_archive_base_name}-fabric" sourceSets { test { @@ -38,15 +36,16 @@ repositories { } dependencies { - modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${project.minecraft_version}:${project.mappings_version}@zip") + } + modImplementation "net.fabricmc:fabric-loader:${project.fabric_loader_version}" + modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" + compileOnly(project(":tesseract-common")) - common(project(path: ":tesseract-common", configuration: "namedElements")) { transitive false } - shadowCommon(project(path: ":tesseract-common", configuration: "transformProductionFabric")) { transitive false } - //todo figure this out - //testcommon(project(path: ":tesseract-common", configuration: "namedElements").sourceSets.test.output) { transitive false } - //testshadowCommon(project(path: ":tesseract-common", configuration: "transformProductionFabric").sourceSets.test.output) { transitive false } - modApi(include("teamreborn:energy:${rootProject.energy_version}")) { + modApi(include("teamreborn:energy:${project.energy_version}")) { transitive = false } modImplementation(include("earth.terrarium:botarium-fabric-${project.minecraft_version}:${project.botarium_version}")) @@ -54,6 +53,7 @@ dependencies { } processResources { + from project(":tesseract-common").sourceSets.main.resources inputs.property "version", project.mod_version filesMatching("fabric.mod.json") { @@ -61,38 +61,28 @@ processResources { } } +tasks.named('compileJava', JavaCompile) { + source(project(":tesseract-common").sourceSets.main.allSource) +} + sourcesJar { - def commonSources = project(":tesseract-common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } + from(project(':tesseract-common').sourceSets.main.allSource) } publishing { publications { mavenJava(org.gradle.api.publish.maven.MavenPublication) { - artifact(sourcesJar) { - builtBy remapSourcesJar - } - - afterEvaluate { - artifact remapJar - } + from components.java } } repositories { - def isCI = System.getenv("GITHUB_ACTION") - def isRELEASE = System.getenv("GITHUB_RELEASE") - if (isCI && isRELEASE) { + def isCI = System.getenv("CI") + if (isCI) { maven { - url = "https://repo.repsy.io/mvn/trinsdar/gregtech-intergalactical/" - credentials { - username = System.getenv("MAVEN_USERNAME") - password = System.getenv("MAVEN_PASSWORD") - } + url System.getenv("local_maven_url") } } else { - maven { url "file:///${project.projectDir}/mcmodsrepo" } + mavenLocal() } } -} \ No newline at end of file diff --git a/fabric/gradle.properties b/fabric/gradle.properties index 37775b0..670716a 100644 --- a/fabric/gradle.properties +++ b/fabric/gradle.properties @@ -1,3 +1,4 @@ energy_version=2.2.0 -mod_version=0.2.3 \ No newline at end of file +mod_version=0.2.4.1 +modern_industrialization_file=3866891 \ No newline at end of file diff --git a/fabric/src/main/java/tesseract/mixin/fabric/FabricBlockFluidContainerAccessor.java b/fabric/src/main/java/tesseract/mixin/fabric/FabricBlockFluidContainerAccessor.java index ac7723e..5be8b1d 100644 --- a/fabric/src/main/java/tesseract/mixin/fabric/FabricBlockFluidContainerAccessor.java +++ b/fabric/src/main/java/tesseract/mixin/fabric/FabricBlockFluidContainerAccessor.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(FabricBlockFluidContainer.class) +@Mixin(value = FabricBlockFluidContainer.class, remap = false) public interface FabricBlockFluidContainerAccessor { @Accessor diff --git a/forge/build.gradle b/forge/build.gradle index 1a750d2..8bfad75 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -1,52 +1,58 @@ -archivesBaseName = "${rootProject.tesseract_archive_base_name}-forge" -version = "${project.mod_version}-${rootProject.minecraft_version}" - -architectury { - platformSetupLoomIde() - forge() +plugins { + id "net.neoforged.moddev.legacyforge" } +archivesBaseName = "${project.tesseract_archive_base_name}-forge" -sourceSets { - test { - compileClasspath += main.compileClasspath - runtimeClasspath += main.runtimeClasspath +neoForge { + version = "${project.minecraft_version}-${project.forge_version}" + def at = project(':tesseract-common').file('src/main/resources/META-INF/accesstransformer.cfg') + if (at.exists()) { + accessTransformers.add(at.absolutePath) } -} - -loom { - forge{ - mixinConfigs = [ - "tesseract-forge.mixins.json" - ] + parchment { + minecraftVersion = project.minecraft_version + mappingsVersion = project.mappings_version } runs { - testClient { + client { client() - ideConfigGenerated project.rootProject == project - name = "Testmod Client" - source sourceSets.test } - testServer { + data { + data() + } + server { server() - ideConfigGenerated project.rootProject == project - name = "Testmod Server" - source sourceSets.test } } + mods { + "${project.mod_id}" { + sourceSet sourceSets.main + } + } +} + +mixin { + add sourceSets.main, "tesseract.refmap.json" + config "tesseract-forge.mixins.json" } dependencies { - forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}" - common(project(path: ":tesseract-common", configuration: "namedElements")) { transitive false } - shadowCommon(project(path: ":tesseract-common", configuration: "transformProductionForge")) { transitive = false } - modImplementation(include("earth.terrarium:botarium-forge-${project.minecraft_version}:${project.botarium_version}")){ - exclude(group: "curse.maven") - } - testImplementation('junit:junit:4.11') - modImplementation(include("maven.modrinth:carbon-config:${project.carbon_config_forge_version}")) + annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + implementation("org.jetbrains:annotations:26.0.1") + modImplementation("earth.terrarium:botarium-forge-${project.minecraft_version}:${project.botarium_version}") + compileOnly(project(":tesseract-common")) + testImplementation('junit:junit:4.13.1') + modImplementation("maven.modrinth:carbon-config:${project.carbon_config_forge_version}") + jarJar("earth.terrarium:botarium-forge-${project.minecraft_version}:${project.botarium_version}") + jarJar("maven.modrinth:carbon-config:${project.carbon_config_forge_version}") +} + +tasks.named('compileJava', JavaCompile) { + source(project(":tesseract-common").sourceSets.main.allSource) } processResources { + from project(":tesseract-common").sourceSets.main.resources inputs.property "version", project.mod_version filesMatching("META-INF/mods.toml") { @@ -55,37 +61,39 @@ processResources { } sourcesJar { - def commonSources = project(":tesseract-common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } + from(project(':tesseract-common').sourceSets.main.allSource) +} + +tasks.named('jar', Jar).configure { + manifest { + attributes([ + 'Specification-Title' : mod_id, + 'Specification-Vendor' : "GregTech-Intergalactical", + 'Specification-Version' : '1', // We are version 1 of ourselves + 'Implementation-Title' : project.name, + 'Implementation-Version' : project.version, + 'Implementation-Vendor' : "GregTech-Intergalactical", + 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + "MixinConfigs" : "tesseract-forge.mixins.json" + ]) + } } publishing { publications { mavenJava(org.gradle.api.publish.maven.MavenPublication) { - artifact(sourcesJar) { - builtBy remapSourcesJar - } - - afterEvaluate { - artifact remapJar - } + from components.java } } repositories { - def isCI = System.getenv("GITHUB_ACTION") - def isRELEASE = System.getenv("GITHUB_RELEASE") - if (isCI && isRELEASE) { + def isCI = System.getenv("CI") + if (isCI) { maven { - url = "https://repo.repsy.io/mvn/trinsdar/gregtech-intergalactical/" - credentials { - username = System.getenv("MAVEN_USERNAME") - password = System.getenv("MAVEN_PASSWORD") - } + url System.getenv("local_maven_url") } } else { - maven { url "file:///${project.projectDir}/mcmodsrepo"} + mavenLocal() } } } diff --git a/forge/gradle.properties b/forge/gradle.properties index 7788d9e..ad5cdfd 100644 --- a/forge/gradle.properties +++ b/forge/gradle.properties @@ -1,3 +1,4 @@ loom.platform=forge -mod_version=0.2.3 \ No newline at end of file +mod_version=0.2.4.1 +mod_id=tesseractapi \ No newline at end of file diff --git a/forge/src/main/resources/tesseract-forge.mixins.json b/forge/src/main/resources/tesseract-forge.mixins.json index eb4edf5..be005c1 100644 --- a/forge/src/main/resources/tesseract-forge.mixins.json +++ b/forge/src/main/resources/tesseract-forge.mixins.json @@ -5,5 +5,6 @@ "mixins": [ "IEnergyHandlerMixin" ], - "minVersion": "0.8" + "minVersion": "0.8", + "refmap" : "tesseract.refmap.json" } \ No newline at end of file diff --git a/forge/src/test/java/tests/EnergyTest.java b/forge/src/test/java/tests/EnergyTest.java deleted file mode 100644 index 40c7b76..0000000 --- a/forge/src/test/java/tests/EnergyTest.java +++ /dev/null @@ -1,206 +0,0 @@ -package tests; - - -import it.unimi.dsi.fastutil.longs.Long2BooleanMap; -import it.unimi.dsi.fastutil.longs.Long2BooleanOpenHashMap; -import it.unimi.dsi.fastutil.longs.Long2ObjectMap; -import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; -import net.minecraft.core.Direction; -import org.junit.Test; -import tesseract.Tesseract; -import tesseract.api.GraphWrapper; -import tesseract.api.GraphWrapper.ICapabilityGetter; -import tesseract.api.gt.GTConsumer.State; -import tesseract.api.gt.GTHolder; -import tesseract.api.gt.GTTransaction; -import tesseract.api.gt.GTTransaction.TransferData; -import tesseract.api.gt.IGTCable; -import tesseract.api.gt.IGTNode; -import tesseract.controller.Energy; -import tesseract.util.Pos; -import tests.GraphTest.TestGraph; - -import java.util.function.Function; - -import static org.junit.Assert.assertEquals; - -public class EnergyTest { - - private Function> GETTER = a -> (lev, pos, side, cb) -> { - /*if (a.get(pos)) - return new TestEnergyNode(32, 1);*/ - return null; - }; - - private TestEnergyConnctor defaultConnector() { - return new TestEnergyConnctor(1, 1, 32); - } - - private void setup() { - Tesseract.TEST = true; - } - - @Test - public void testAddAndRemoveEnergyNode() { - /*setup(); - Long2BooleanMap map = new Long2BooleanOpenHashMap(); - map.put(1, true); - GraphWrapper GT_ENERGY = new GraphWrapper<>(Energy::new, GETTER.apply(map)); - GT_ENERGY.registerConnector(null, 0, defaultConnector(), true); - assertEquals(GT_ENERGY.getGraph(null).size(), 2); - map.remove(1); - GT_ENERGY.remove(null, 0); - GT_ENERGY.registerConnector(null, 0, defaultConnector(), true); - assertEquals(GT_ENERGY.getGraph(null).size(), 1);*/ - } - - @Test - public void testSendEnergy() { - /*setup(); - Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - map.put(Pos.packAll(-1, 0, 0), new TestEnergyNode(32, 1)); - map.put(Pos.packAll(1, 0, 0), new TestEnergyNode(32, 1, 32)); - GraphWrapper GT_ENERGY = new GraphWrapper<>(Energy::new, (a,b,c,d) -> map.get(b)); - GT_ENERGY.registerConnector(null, 0, defaultConnector(), true); - assertEquals(GT_ENERGY.getGraph(null).size(), 3); - var transaction = map.get(Pos.packAll(1, 0, 0)).extract(GTTransaction.Mode.TRANSMIT); - GT_ENERGY.getController(null, 0).insert(0, Pos.subToDir(0, Pos.packAll(1, 0, 0)), transaction, null); - transaction.commit(); - assertEquals(map.get(Pos.packAll(-1, 0, 0)).getEnergy(), 0); - assertEquals(map.get(Pos.packAll(1, 0, 0)).getEnergy(), 31);*/ - } - - public class TestEnergyConnctor extends TestGraph.TestConnector implements IGTCable { - - public final int loss; - public final int amps; - public final int voltage; - - private long holder; - - public TestEnergyConnctor(int loss, int amps, int voltage) { - this.loss = loss; - this.amps = amps; - this.voltage = voltage; - this.holder = GTHolder.create(this, amps); - } - - @Override - public double getLoss() { - return loss; - } - - @Override - public int getAmps() { - return amps; - } - - @Override - public long getVoltage() { - return voltage; - } - - @Override - public boolean insulated() { - return false; - } - - @Override - public long getHolder() { - return holder; - } - - @Override - public void setHolder(long holder) { - this.holder = holder; - } - } - - /*public class TestEnergyNode implements IGTNode { - - public final long voltage; - public final long amps; - - public long energy; - - public final State state = new State(this); - - public TestEnergyNode(long voltage, long amps) { - this.voltage = voltage; - this.amps = amps; - } - - public TestEnergyNode(long voltage, long amps, long energy) { - this(voltage, amps); - this.energy = energy; - } - - @Override - public boolean extractEnergy(TransferData data) { - this.energy -= data.extractForNode(this); - return true; - } - - @Override - public boolean addEnergy(TransferData data) { - this.energy += data.consumeForNode(this); - return true; - } - - @Override - public long getEnergy() { - return this.energy; - } - - @Override - public long getCapacity() { - return Long.MAX_VALUE; - } - - @Override - public long getOutputAmperage() { - return amps; - } - - @Override - public long getOutputVoltage() { - return voltage; - } - - @Override - public long getInputAmperage() { - return amps; - } - - @Override - public long getInputVoltage() { - return voltage; - } - - @Override - public boolean canOutput() { - return true; - } - - @Override - public boolean canInput() { - return true; - } - - @Override - public boolean canInput(Direction direction) { - return true; - } - - @Override - public boolean canOutput(Direction direction) { - return true; - } - - @Override - public State getState() { - return state; - } - - }*/ -} diff --git a/forge/src/test/java/tests/GraphTest.java b/forge/src/test/java/tests/GraphTest.java deleted file mode 100644 index 56d36f6..0000000 --- a/forge/src/test/java/tests/GraphTest.java +++ /dev/null @@ -1,371 +0,0 @@ -package tests; - -import net.minecraft.core.Direction; -import net.minecraft.world.level.Level; -import org.jetbrains.annotations.NotNull; -import org.junit.Test; -import tesseract.api.Controller; -import tesseract.api.IConnectable; -import tesseract.api.ITickingController; -import tesseract.api.capability.ITransactionModifier; -import tesseract.graph.Cache; -import tesseract.graph.Connectivity; -import tesseract.graph.Graph; -import tesseract.graph.Graph.INodeGetter; -import tesseract.graph.INode; -import tesseract.graph.NodeCache; -import tesseract.util.Pos; - -import java.util.List; -import java.util.function.Supplier; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class GraphTest { - - private TestGraph defaultGraph() { - TestGraph graph = new TestGraph(() -> new TestController(null, null)); - return graph; - } - - private TestGraph.TestConnector defaultConnector() { - return new TestGraph.TestConnector(); - } - - @Test - public void addConnector() { - var graph = defaultGraph(); - graph.addConnector(0, Cache.of(defaultConnector())); - assertEquals(graph.size(), 1); - assertTrue(graph.contains(0)); - } - - @Test - public void addNodes() { - var graph = defaultGraph(); - long posOne = Pos.packAll(1, 0, 0); - long posTwo = Pos.packAll(0, 1, 0); - graph.addConnector(0, Cache.of(defaultConnector())); - graph.addNode(NodeCache.of(posOne, new TestGraph.TestNode())); - assertTrue(graph.contains(posOne)); - assertEquals(graph.size(), 2); - graph.addNode(NodeCache.of(posTwo, new TestGraph.TestNode())); - assertTrue(graph.contains(posTwo)); - assertEquals(graph.size(), 3); - assertEquals(graph.getGroupAt(0).getGrids().size(), 1); - } - - @Test - public void twoGroupsAddNearby() { - var graph = defaultGraph(); - long posOne = Pos.packAll(1, 0, 0); - long posTwo = Pos.packAll(0, 1, 0); - graph.addConnector(posOne, Cache.of(defaultConnector())); - graph.addConnector(posTwo, Cache.of(defaultConnector())); - assertEquals(graph.countGroups(), 2); - assertEquals(graph.size(), 2); - graph.addNode(NodeCache.of(0, new TestGraph.TestNode())); - assertEquals(graph.countGroups(), 1); - assertEquals(graph.size(), 3); - } - - @Test - public void splitGrids() { - var graph = defaultGraph(); - long posOne = Pos.packAll(1, 0, 0); - long posTwo = Pos.packAll(2, 0, 0); - long posThree = Pos.packAll(3, 0, 0); - graph.addConnector(posOne, Cache.of(defaultConnector())); - graph.addConnector(posTwo, Cache.of(defaultConnector())); - graph.addNode(NodeCache.of(0, new TestGraph.TestNode())); - graph.addNode(NodeCache.of(posThree, new TestGraph.TestNode())); - - assertEquals(graph.size(), 4); - assertEquals(graph.getGroupAt(0).getGrids().size(), 1); - graph.removeAt(posOne); - var conn = defaultConnector(); - conn.clearSide(Direction.EAST); - graph.addConnector(posOne, Cache.of(conn)); - - assertEquals(graph.size(), 4); - assertEquals(graph.getGroupAt(0).getGrids().size(), 2); - } - - public class TestGraph extends Graph { - - public TestGraph(Supplier> controller) { - super(controller); - } - - public static class TestNode { - - } - - public static class TestConnector implements IConnectable { - - - byte connections = Byte.MAX_VALUE; - - public void setSide(Direction dir) { - } - - public void clearSide(Direction dir) { - connections = Connectivity.clear(connections, dir.get3DDataValue()); - } - - @Override - public boolean connects(Direction direction) { - return Connectivity.has(connections, direction.get3DDataValue()); - } - - @Override - public boolean validate(Direction dir) { - return true; - } - - } - } - - public class TestController extends Controller { - - protected TestController(Level supplier, INodeGetter getter) { - super(supplier, getter); - } - - @Override - public void change() { - - } - - @Override - public ITickingController clone(INode group) { - return new TestController(this.dim, this.getter); - } - - @Override - public void getInfo(long pos, @NotNull List list) { - - } - - @Override - public void insert(long producerPos, Direction side, Integer transaction, ITransactionModifier modifier) { - - } - - @Override - protected void onFrame() { - - } - - } - /* - * @Test - * public void system() { - * Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - * INodeGetter tester = getter(map); - * Graph graph = new Graph<>(); - * graph.addConnector(packAll(1, 0, 0), new Cache<>(new TestConnector(packAll(1, - * 0, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 1, 0), new Cache<>(new TestConnector(packAll(0, - * 1, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 2, 0), new Cache<>(new TestConnector(packAll(0, - * 2, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 3, 0), new Cache<>(new TestConnector(packAll(0, - * 3, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 4, 0), new Cache<>(new TestConnector(packAll(0, - * 4, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 5, 0), new Cache<>(new TestConnector(packAll(0, - * 5, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 6, 0), new Cache<>(new TestConnector(packAll(0, - * 6, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 0, 1), new Cache<>(new TestConnector(packAll(0, - * 0, 1), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 0, -1), new Cache<>(new - * TestConnector(packAll(0, 0, -1), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, -1, 0), new Cache<>(new - * TestConnector(packAll(0, -1, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(-1, 0, 0), new Cache<>(new - * TestConnector(packAll(-1, 0, 0), map)), () -> null, tester, true); - * assertEquals(6, graph.countGroups()); - * graph.addConnector(packAll(0, 0, 0), new Cache<>(new TestConnector(packAll(0, - * 0, 0), map)), () -> null, tester, true); - * assertEquals(1, graph.countGroups()); - * //graph.removeAt(packAll(0, 0, 0)); - * assertEquals(6, graph.countGroups()); - * //graph.removeAt(packAll(0, 4, 0)); - * assertEquals(7, graph.countGroups()); - * graph.addConnector(packAll(0, 0, 0), new Cache<>(new TestConnector(packAll(0, - * 0, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(0, 4, 0), new Cache<>(new TestConnector(packAll(0, - * 4, 0), map)), () -> null, tester, true); - * - * assertEquals(1, graph.countGroups()); - * Deque set1 = new ArrayDeque<>(); - * for (Group group : - * graph.getGroups().values()) { - * for (Grid grid : group.getGrids().values()) { - * set1 = grid.getPath(packAll(0, -1, 0), packAll(0, 6, 0)); - * } - * } - * List set2 = new ObjectArrayList<>(); - * set2.add(new Pos(0, -1, 0)); - * set2.add(new Pos(0, 0, 0)); - * set2.add(new Pos(0, 1, 0)); - * set2.add(new Pos(0, 2, 0)); - * set2.add(new Pos(0, 3, 0)); - * set2.add(new Pos(0, 4, 0)); - * set2.add(new Pos(0, 5, 0)); - * set2.add(new Pos(0, 6, 0)); - * Iterator it = set1.descendingIterator(); - * for (Pos pos : set2) { - * assertEquals(pos, it.next()); - * } - * } - * - * @Test - * public void contains() { - * Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - * INodeGetter tester = getter(map); - * Graph graph = new Graph<>(); - * long pos = packAll(1, 1, 1); - * long posC = packAll(0, 1, 1); - * assertFalse(graph.contains(pos)); - * assertFalse(graph.contains(posC)); - * graph.addConnector(pos, new Cache<>(new TestConnector(pos, map)), () -> null, - * tester, true); - * graph.addConnector(posC, new Cache<>(new TestConnector(posC, map)), () -> - * null, tester, true); - * - * assertTrue(graph.contains(posC)); - * //graph.addNode(pos, (a,p) -> new TestNode(), Pos.subToDir(posC, pos), () -> - * null, true); - * assertTrue(graph.contains(pos)); - * } - * - * @Test - * public void linked() { - * Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - * INodeGetter tester = getter(map); - * Graph graph = new Graph<>(); - * long pos = packAll(0,0,0); - * long posC = packAll(0, 1, 0); - * map.put(posC, new TestNode()); - * - * graph.addConnector(pos, new Cache<>(new TestConnector(pos, map)), () -> null, - * tester, true); - * - * assertTrue(graph.linked(pos, null, posC)); - * } - * - * @Test - * public void connects() { - * Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - * INodeGetter tester = getter(map); - * Graph graph = new Graph<>(); - * long pos = packAll(0,0,0); - * long posC = packAll(0, 1, 0); - * map.put(posC, new TestNode()); - * // graph.addNode(pos, new Cache<>(new TestNode()), null); - * graph.addConnector(pos, new Cache<>(new TestConnector(pos, map)), () -> null, - * tester, true); - * assertTrue(graph.connects(pos, null)); - * } - * - * @Test - * public void visit() { - * Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - * INodeGetter tester = getter(map); - * Graph graph = new Graph<>(); - * graph.addConnector(packAll(0,0,0), new Cache<>(new - * TestConnector(packAll(0,0,0), map)), () -> null, tester, true); - * for (Group group : - * graph.getGroups().values()) { - * assertEquals(1, group.countBlocks()); - * } - * } - * - * @Test - * public void countGroups() { - * Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - * INodeGetter tester = getter(map); - * Graph graph = new Graph<>(); - * graph.addConnector(packAll(0, 0, 0), new Cache<>(new TestConnector(packAll(0, - * 0, 0), map)), () -> null, tester, true); - * graph.addConnector(packAll(1, 1, 1), new Cache<>(new TestConnector(packAll(1, - * 1, 1), map)), () -> null, tester, true); - * graph.addConnector(packAll(2, 2, 2), new Cache<>(new TestConnector(packAll(2, - * 2, 2), map)), () -> null, tester, true); - * - * assertEquals(3, graph.countGroups()); - * } - * - * // @Test - * // public void addConnector() { - * // Graph graph = new Graph<>(); - * // long pos = packAll(2, 2, 2); - * // graph.addConnector(pos, new Cache<>(new TestConnector()), null); - * // for (Group group : graph.getGroups().values()) { - * // for (Grid grid : group.getGrids().values()) { - * // for (long position : grid.getConnectors().keySet()) { - * // assertEquals(position, pos); - * // } - * // } - * // } - * // } - * - * @Test - * public void remove() { - * Long2ObjectMap map = new Long2ObjectOpenHashMap<>(); - * INodeGetter tester = getter(map); - * Graph graph = new Graph<>(); - * long pos = packAll(0, 0, 0); - * graph.addConnector(packAll(0, 0, 0), new Cache<>(new TestConnector(packAll(0, - * 0, 0), map)), () -> null, tester, true); - * - * assertEquals(1, graph.countGroups()); - * //graph.removeAt(pos); - * assertEquals(0, graph.countGroups()); - * } - * - * protected static INodeGetter getter(Long2ObjectMap map) { - * return (a,b,c) -> { - * return map.get(a); - * }; - * } - * - * public static class TestConnector implements IConnectable { - * - * private final Long2ObjectMap nodes; - * private final long pos; - * - * public TestConnector(long pos, Long2ObjectMap nodes) { - * this.nodes = nodes; - * this.pos = pos; - * } - * - * @Override - * public String toString() { - * return "TestCable"; - * } - * - * @Override - * public boolean connects(Direction direction) { - * return true; - * } - * - * @Override - * public boolean validate(Direction dir) { - * return nodes.containsKey(Pos.offset(this.pos, dir)); - * } - * } - * - * private static class TestNode { - * - * @Override - * public String toString() { - * return "TestNode"; - * } - * } - */ -} diff --git a/gradle.properties b/gradle.properties index a7b0bb9..dd48a87 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,6 +5,7 @@ org.gradle.daemon=false org.gradle.parallel=true mod_version=0.1 +mod_id=tesseractapi mappings_version=2022.11.27 minecraft_version=1.19.2 @@ -22,7 +23,7 @@ botarium_version=2.0.5 carbon_config_fabric_version=h86rA6tH carbon_config_forge_version=92RIAvni -maven_group=io.github.gregtechintergalactical +maven_group=org.gt-reimagined tesseract_archive_base_name=TesseractAPI diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0ad737d..28f5fcf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index 4185d28..51d9c1f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,8 +1,6 @@ pluginManagement { repositories { maven { url "https://maven.fabricmc.net/" } - maven { url "https://maven.architectury.dev/" } - maven { url "https://maven.minecraftforge.net/" } maven { name = 'parchment' url = 'https://maven.parchmentmc.org' @@ -11,6 +9,14 @@ pluginManagement { name = 'Sponge Snapshots' url = 'https://repo.spongepowered.org/repository/maven-public/' } + maven { url('https://maven.minecraftforge.net')} + maven { url "https://maven.neoforged.net/" } + maven { + url = "https://maven.wagyourtail.xyz/releases" + } + maven { + url = "https://maven.wagyourtail.xyz/snapshots" + } gradlePluginPortal() } }