diff --git a/buildSrc/src/main/kotlin/dev/engine_room/gradle/jarset/JarTaskSet.kt b/buildSrc/src/main/kotlin/dev/engine_room/gradle/jarset/JarTaskSet.kt index da7fa4e1b..c2a079da1 100644 --- a/buildSrc/src/main/kotlin/dev/engine_room/gradle/jarset/JarTaskSet.kt +++ b/buildSrc/src/main/kotlin/dev/engine_room/gradle/jarset/JarTaskSet.kt @@ -4,6 +4,7 @@ import net.fabricmc.loom.task.AbstractRemapJarTask import net.fabricmc.loom.task.RemapJarTask import net.fabricmc.loom.task.RemapSourcesJarTask import org.gradle.api.Action +import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project import org.gradle.api.file.DuplicatesStrategy import org.gradle.api.publish.PublishingExtension @@ -30,14 +31,23 @@ class JarTaskSet( val remapSources: TaskProvider ) { - fun publish(artifactId: String) { - project.the().publications { - register("${name}RemapMaven") { - artifact(remapJar) - artifact(remapSources) - artifact(javadocJar) - this.artifactId = artifactId - } + fun publishWithRawSources(action: Action): NamedDomainObjectProvider { + return publish(sources, action) + } + + fun publishWithRemappedSources(action: Action): NamedDomainObjectProvider { + return publish(remapSources, action) + } + + private fun publish( + sourceJar: TaskProvider, + action: Action + ): NamedDomainObjectProvider { + return project.the().publications.register("${name}RemapMaven") { + artifact(remapJar) + artifact(sourceJar) + artifact(javadocJar) + action.execute(this) } } diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 4411630bf..78012a56b 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -58,7 +58,9 @@ jarSets { // For publishing. create("api", api, lib).apply { addToAssemble() - publish("flywheel-common-intermediary-api-${property("artifact_minecraft_version")}") + publishWithRemappedSources { + artifactId = "flywheel-common-intermediary-api-${property("artifact_minecraft_version")}" + } configureJar { manifest { @@ -75,7 +77,38 @@ jarSets { targetNamespace = "named" } - publish("flywheel-common-mojmap-api-${property("artifact_minecraft_version")}") + publishWithRawSources { + artifactId = "flywheel-common-mojmap-api-${property("artifact_minecraft_version")}" + } + } + } + + create("vanillin", vanillin).apply { + addToAssemble() + publishWithRemappedSources { + artifactId = "vanillin-common-intermediary-${property("artifact_minecraft_version")}" + groupId = property("vanillin_group") as String + } + + configureJar { + manifest { + attributes("Fabric-Loom-Remap" to "true") + } + } + + // Don't publish the un-remapped jars because they don't have the correct manifest populated by Loom. + forkRemap("vanillinMojmap").apply { + addToAssemble() + configureRemap { + // "named" == mojmap + // We're probably remapping from named to named so Loom should noop this. + targetNamespace = "named" + } + + publishWithRawSources { + artifactId = "vanillin-common-mojmap-${property("artifact_minecraft_version")}" + groupId = property("vanillin_group") as String + } } } } diff --git a/common/src/lib/java/dev/engine_room/flywheel/lib/instance/TransformedInstance.java b/common/src/lib/java/dev/engine_room/flywheel/lib/instance/TransformedInstance.java index 8bab28975..ffab518eb 100644 --- a/common/src/lib/java/dev/engine_room/flywheel/lib/instance/TransformedInstance.java +++ b/common/src/lib/java/dev/engine_room/flywheel/lib/instance/TransformedInstance.java @@ -1,5 +1,6 @@ package dev.engine_room.flywheel.lib.instance; +import org.joml.AxisAngle4f; import org.joml.Matrix4f; import org.joml.Matrix4fc; import org.joml.Quaternionfc; @@ -9,6 +10,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import dev.engine_room.flywheel.api.instance.InstanceHandle; import dev.engine_room.flywheel.api.instance.InstanceType; import dev.engine_room.flywheel.lib.transform.Affine; +import net.minecraft.core.Direction; public class TransformedInstance extends ColoredLitInstance implements Affine { public final Matrix4f pose = new Matrix4f(); @@ -17,12 +19,6 @@ public class TransformedInstance extends ColoredLitInstance implements Affine> extends Translate, Rotate, Scale { default Self rotateAround(Quaternionfc quaternion, float x, float y, float z) { @@ -15,19 +16,18 @@ public interface Affine> extends Translate, Rota } default Self rotateAround(Quaternionfc quaternion, Vector3fc vec) { - return translate(vec.x(), vec.y(), vec.z()).rotate(quaternion) - .translateBack(vec.x(), vec.y(), vec.z()); + return rotateAround(quaternion, vec.x(), vec.y(), vec.z()); } default Self rotateCentered(Quaternionfc q) { return rotateAround(q, CENTER, CENTER, CENTER); } - default Self rotateCentered(float radians, Vector3fc axis) { + default Self rotateCentered(float radians, float axisX, float axisY, float axisZ) { if (radians == 0) { return self(); } - return rotateCentered(new Quaternionf().setAngleAxis(radians, axis.x(), axis.y(), axis.z())); + return rotateCentered(new Quaternionf().setAngleAxis(radians, axisX, axisY, axisZ)); } default Self rotateCentered(float radians, Axis axis) { @@ -37,10 +37,59 @@ public interface Affine> extends Translate, Rota return rotateCentered(axis.rotation(radians)); } + default Self rotateCentered(float radians, Vector3fc axis) { + return rotateCentered(radians, axis.x(), axis.y(), axis.z()); + } + + default Self rotateCentered(float radians, Direction.Axis axis) { + return rotateCentered(radians, Direction.fromAxisAndDirection(axis, Direction.AxisDirection.POSITIVE)); + } + default Self rotateCentered(float radians, Direction axis) { - if (radians == 0) { - return self(); - } - return rotateCentered(radians, axis.step()); + return rotateCentered(radians, axis.getStepX(), axis.getStepY(), axis.getStepZ()); + } + + default Self rotateCenteredDegrees(float degrees, float axisX, float axisY, float axisZ) { + return rotateCentered(Mth.DEG_TO_RAD * degrees, axisX, axisY, axisZ); + } + + default Self rotateCenteredDegrees(float degrees, Axis axis) { + return rotateCentered(Mth.DEG_TO_RAD * degrees, axis); + } + + default Self rotateCenteredDegrees(float degrees, Vector3fc axis) { + return rotateCentered(Mth.DEG_TO_RAD * degrees, axis); + } + + default Self rotateCenteredDegrees(float degrees, Direction axis) { + return rotateCentered(Mth.DEG_TO_RAD * degrees, axis); + } + + default Self rotateCenteredDegrees(float degrees, Direction.Axis axis) { + return rotateCentered(Mth.DEG_TO_RAD * degrees, axis); + } + + default Self rotateXCentered(float radians) { + return rotateCentered(radians, Axis.XP); + } + + default Self rotateYCentered(float radians) { + return rotateCentered(radians, Axis.YP); + } + + default Self rotateZCentered(float radians) { + return rotateCentered(radians, Axis.ZP); + } + + default Self rotateXCenteredDegrees(float degrees) { + return rotateXCentered(Mth.DEG_TO_RAD * degrees); + } + + default Self rotateYCenteredDegrees(float degrees) { + return rotateYCentered(Mth.DEG_TO_RAD * degrees); + } + + default Self rotateZCenteredDegrees(float degrees) { + return rotateZCentered(Mth.DEG_TO_RAD * degrees); } } diff --git a/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java b/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java index 8684abd46..56b8b7f6e 100644 --- a/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java +++ b/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java @@ -8,6 +8,7 @@ import org.joml.Vector3fc; import com.mojang.math.Axis; import net.minecraft.core.Direction; +import net.minecraft.util.Mth; public interface Rotate> { Self rotate(Quaternionfc quaternion); @@ -16,11 +17,12 @@ public interface Rotate> { return rotate(new Quaternionf(axisAngle)); } - default Self rotate(float radians, Vector3fc axis) { + default Self rotate(float radians, float axisX, float axisY, float axisZ) { if (radians == 0) { return self(); } - return rotate(new Quaternionf().setAngleAxis(radians, axis.x(), axis.y(), axis.z())); + return rotate(new Quaternionf().setAngleAxis(radians, axisX, axisY, axisZ)); + } default Self rotate(float radians, Axis axis) { @@ -30,47 +32,36 @@ public interface Rotate> { return rotate(axis.rotation(radians)); } + default Self rotate(float radians, Vector3fc axis) { + return rotate(radians, axis.x(), axis.y(), axis.z()); + } + default Self rotate(float radians, Direction axis) { - if (radians == 0) { - return self(); - } - return rotate(radians, axis.step()); + return rotate(radians, axis.getStepX(), axis.getStepY(), axis.getStepZ()); } default Self rotate(float radians, Direction.Axis axis) { - return switch (axis) { - case X -> rotateX(radians); - case Y -> rotateY(radians); - case Z -> rotateZ(radians); - }; + return rotate(radians, Direction.fromAxisAndDirection(axis, Direction.AxisDirection.POSITIVE)); } - default Self rotateDegrees(float degrees, Vector3fc axis) { - if (degrees == 0) { - return self(); - } - return rotate((float) Math.toRadians(degrees), axis); + default Self rotateDegrees(float degrees, float axisX, float axisY, float axisZ) { + return rotate(Mth.DEG_TO_RAD * degrees, axisX, axisY, axisZ); } default Self rotateDegrees(float degrees, Axis axis) { - if (degrees == 0) { - return self(); - } - return rotate(axis.rotationDegrees(degrees)); + return rotate(Mth.DEG_TO_RAD * degrees, axis); + } + + default Self rotateDegrees(float degrees, Vector3fc axis) { + return rotate(Mth.DEG_TO_RAD * degrees, axis); } default Self rotateDegrees(float degrees, Direction axis) { - if (degrees == 0) { - return self(); - } - return rotate((float) Math.toRadians(degrees), axis); + return rotate(Mth.DEG_TO_RAD * degrees, axis); } default Self rotateDegrees(float degrees, Direction.Axis axis) { - if (degrees == 0) { - return self(); - } - return rotate((float) Math.toRadians(degrees), axis); + return rotate(Mth.DEG_TO_RAD * degrees, axis); } default Self rotateX(float radians) { @@ -86,15 +77,15 @@ public interface Rotate> { } default Self rotateXDegrees(float degrees) { - return rotateDegrees(degrees, Axis.XP); + return rotateX(Mth.DEG_TO_RAD * degrees); } default Self rotateYDegrees(float degrees) { - return rotateDegrees(degrees, Axis.YP); + return rotateY(Mth.DEG_TO_RAD * degrees); } default Self rotateZDegrees(float degrees) { - return rotateDegrees(degrees, Axis.ZP); + return rotateZ(Mth.DEG_TO_RAD * degrees); } default Self rotateToFace(Direction facing) { @@ -108,6 +99,10 @@ public interface Rotate> { }; } + default Self rotateTo(Vector3fc from, Vector3fc to) { + return rotate(new Quaternionf().rotateTo(from, to)); + } + @SuppressWarnings("unchecked") default Self self() { return (Self) this; diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 89c206471..eac1d6bdc 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -67,12 +67,16 @@ platform { } jarSets { - mainSet.publish("flywheel-fabric-${project.property("artifact_minecraft_version")}") + mainSet.publishWithRemappedSources { + artifactId = "flywheel-fabric-${project.property("artifact_minecraft_version")}" + } mainSet.outgoing("flywheel") create("api", api, lib).apply { addToAssemble() - publish("flywheel-fabric-api-${project.property("artifact_minecraft_version")}") + publishWithRemappedSources { + artifactId = "flywheel-fabric-api-${project.property("artifact_minecraft_version")}" + } configureJar { manifest { diff --git a/neoforge/build.gradle.kts b/neoforge/build.gradle.kts index 04bb51466..ac0b0846e 100644 --- a/neoforge/build.gradle.kts +++ b/neoforge/build.gradle.kts @@ -65,12 +65,16 @@ platform { } jarSets { - mainSet.publish("flywheel-neoforge-${project.property("artifact_minecraft_version")}") + mainSet.publishWithRawSources { + artifactId = "flywheel-neoforge-${project.property("artifact_minecraft_version")}" + } mainSet.outgoing("flywheel") create("api", api, lib).apply { addToAssemble() - publish("flywheel-neoforge-api-${project.property("artifact_minecraft_version")}") + publishWithRawSources { + artifactId = "flywheel-neoforge-api-${project.property("artifact_minecraft_version")}" + } configureJar { manifest { diff --git a/settings.gradle.kts b/settings.gradle.kts index cf387858e..7e3b2f05f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,6 +13,10 @@ pluginManagement { } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version("0.9.0") +} + rootProject.name = "Flywheel" include("common") diff --git a/vanillinFabric/build.gradle.kts b/vanillinFabric/build.gradle.kts index f7a2ec85e..e79f6d43f 100644 --- a/vanillinFabric/build.gradle.kts +++ b/vanillinFabric/build.gradle.kts @@ -27,7 +27,9 @@ transitiveSourceSets { } jarSets { - mainSet.publish("vanillin-fabric-${project.property("artifact_minecraft_version")}") + mainSet.publishWithRemappedSources { + artifactId = "vanillin-fabric-${project.property("artifact_minecraft_version")}" + } } defaultPackageInfos { diff --git a/vanillinNeoForge/build.gradle.kts b/vanillinNeoForge/build.gradle.kts index 41a09c59e..8ce89883c 100644 --- a/vanillinNeoForge/build.gradle.kts +++ b/vanillinNeoForge/build.gradle.kts @@ -27,7 +27,9 @@ transitiveSourceSets { } jarSets { - mainSet.publish("vanillin-neoforge-${project.property("artifact_minecraft_version")}") + mainSet.publishWithRawSources { + artifactId = "vanillin-neoforge-${project.property("artifact_minecraft_version")}" + } } defaultPackageInfos {