Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: Add CompositeEvent #2495

Merged
merged 6 commits into from
Jan 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .checkstyle/checkstyle-suppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@
<suppress checks="MethodTypeParameterName"/>
<suppress checks="CommentsIndentation"/>
<suppress checks="InterfaceTypeParameterName"/>
<suppress files="[\\/]generated[\\/]" checks="[a-zA-Z0-9]*"/>
</suppressions>
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ MANIFEST.MF
dependency-reduced-pom.xml
.checkstyle
!.checkstyle/
# We exclude the generated events from git to avoid
# temptation to edit said generated files.
src/generated/
src/main/generated/

# Compiled #
############
Expand Down
80 changes: 49 additions & 31 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
import net.ltgt.gradle.errorprone.errorprone
import org.jetbrains.gradle.ext.delegateActions
import org.jetbrains.gradle.ext.settings
import org.jetbrains.gradle.ext.taskTriggers

buildscript {
dependencies {
classpath(libs.spoon) // bump for EIG
}
}

plugins {
eclipse
Expand All @@ -16,12 +10,14 @@ plugins {
alias(libs.plugins.indra.crossdoc)
alias(libs.plugins.indra.publishing)
alias(libs.plugins.indra.publishing.sonatype)
alias(libs.plugins.eventImplGen)
alias(libs.plugins.ideaExt)
alias(libs.plugins.errorprone)
alias(libs.plugins.nexusPublish)
}

// Enable event generation to be considered part of
// the main source set
val generatedEventSourcesDir = project.file("src/main/generated")
val javaTarget: String by project
val ap by sourceSets.registering {
compileClasspath += sourceSets.main.get().compileClasspath + sourceSets.main.get().output
Expand All @@ -34,12 +30,32 @@ configurations {
}
}
}
tasks {
register("printSourceDirs") {
doLast {
sourceSets.forEach { set ->
println("SourceSet: ${set.name}")
println("Java Source Dirs: ${set.java.srcDirs}" )
}
}
}
}

sourceSets {
main {
java {
srcDirs(generatedEventSourcesDir)
}
}
}

// Project dependencies
dependencies {
// Directly tied to what's available from Minecraft
api(libs.log4j.api)
api(libs.gson)
api(libs.eventImplGen.annotations)
annotationProcessor(libs.eventImplGen.processor)

// Adventure
api(platform(libs.adventure.bom))
Expand Down Expand Up @@ -130,27 +146,23 @@ dependencies {
testImplementation(libs.mockito)
}

spotless {
java {
target("src/main/java/**/*.java")
targetExclude("src/main/generated/**/*.java")
}
}

tasks {
genEventImpl {
sourceCompatibility = "17" // TODO use javaTarget here
destinationDirectory = project.layout.buildDirectory.dir("generated/event-factory")

outputFactory = "org.spongepowered.api.event.SpongeEventFactory"
include("org/spongepowered/api/event/*/**/*")
exclude("org/spongepowered/api/event/action/InteractEvent.java")
exclude("org/spongepowered/api/event/cause/")
exclude("org/spongepowered/api/event/entity/AffectEntityEvent.java")
exclude("org/spongepowered/api/event/filter/")
exclude("org/spongepowered/api/event/impl/")
exclude("org/spongepowered/api/event/lifecycle/ProvideServiceEvent.java")
exclude("org/spongepowered/api/event/lifecycle/RegisterBuilderEvent.java")
exclude("org/spongepowered/api/event/lifecycle/RegisterRegistryEvent.java")
exclude("org/spongepowered/api/event/lifecycle/RegisterRegistryValueEvent.java")
exclude("org/spongepowered/api/event/lifecycle/RegisterCommandEvent.java")
exclude("org/spongepowered/api/event/lifecycle/RegisterFactoryEvent.java")
exclude("org/spongepowered/api/event/lifecycle/RegisterWorldEvent.java")
inclusiveAnnotations = setOf("org.spongepowered.api.util.annotation.eventgen.GenerateFactoryMethod")
exclusiveAnnotations = setOf("org.spongepowered.api.util.annotation.eventgen.NoFactoryMethod")

compileJava {
options.generatedSourceOutputDirectory = generatedEventSourcesDir
options.compilerArgs.addAll(listOf(
"-AeventGenInclusiveFolders=org/spongepowered/api/event",
"-AeventGenExclusiveFolders=org/spongepowered/api/event/cause,org/spongepowered/api/event/filter,org/spongepowered/api/event/impl,org/spongepowered/api/event/lifecycle",
"-AeventGenFactory=org.spongepowered.api.event.SpongeEventFactory",
"-AeventGenDebug=true",
))
}

jar {
Expand All @@ -166,6 +178,15 @@ tasks {
indraGit.applyVcsInformationToManifest(this)
}
}
checkstyleMain {
dependsOn(compileJava)
}
spotlessJava {
dependsOn(compileJava)
}
sourcesJar {
dependsOn(compileJava)
}

withType(JavaCompile::class).configureEach {
options.apply {
Expand Down Expand Up @@ -215,15 +236,12 @@ idea {
delegateBuildRunToGradle = false
testRunner = org.jetbrains.gradle.ext.ActionDelegationConfig.TestRunner.PLATFORM
}
taskTriggers {
beforeBuild(tasks.genEventImpl)
}
}
}
}

eclipse {
synchronizationTasks(tasks.genEventImpl)
// synchronizationTasks(tasks.genEventImpl)
}

val organization: String by project
Expand Down
3 changes: 2 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,14 @@ guice = { module = "com.google.inject:guice", version.ref = "guice" }
log4j-api = { module = "org.apache.logging.log4j:log4j-api", version.ref = "log4j" }
math = { module = "org.spongepowered:math", version.ref = "math" }
pluginSpi = { module = "org.spongepowered:plugin-spi", version.ref = "pluginSpi" }
eventImplGen-processor = {module = "org.spongepowered:event-impl-gen", version = "8.0.0"}
eventImplGen-annotations = { module = "org.spongepowered:event-impl-gen-annotations", version = "8.0.0"}

# build-time/annotations

checkerQual = { module = "org.checkerframework:checker-qual", version.ref = "checker" }
errorprone = { module = "com.google.errorprone:error_prone_core", version.ref = "errorprone" }
errorprone-annotations = { module = "com.google.errorprone:error_prone_annotations", version.ref = "errorprone" }
spoon = { module = "fr.inria.gforge.spoon:spoon-core", version = "10.4.2" } # bump for EIG

# testing

Expand Down
94 changes: 94 additions & 0 deletions gradle/verification-metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,30 @@
<sha256 value="893d56afcea1b22f83220fd7e49a6668c5b8901e39bd59dc57b42f55673721ce" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.dagger" name="dagger" version="2.42">
<artifact name="dagger-2.42.jar">
<sha256 value="7ad8147fdb5dfb481b7cde8c70da73afbaa21430ce757fcd96709fcfb6a4d56b" origin="Generated by Gradle"/>
</artifact>
<artifact name="dagger-2.42.pom">
<sha256 value="ca6529bd6d79090f0ab6f5da452eb4fbb29377b48e6a806e7612396dcb2998e0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.dagger" name="dagger" version="2.52">
<artifact name="dagger-2.52.jar">
<sha256 value="dfb8e83020786daefbd64335ce0e0ebf01646a1b407fb77a27e052baf42df458" origin="Generated by Gradle"/>
</artifact>
<artifact name="dagger-2.52.pom">
<sha256 value="5cb60843f46bbccf97bd832d5490d26ab192af2e663fad7e5971969bf20fb94e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.dagger" name="dagger" version="2.54">
<artifact name="dagger-2.54.jar">
<sha256 value="7ab0d8278a532888de19025dc6ee70a80ecd4567778a6a7e7ec256a2073e40a3" origin="Generated by Gradle"/>
</artifact>
<artifact name="dagger-2.54.pom">
<sha256 value="af43413fd91fc49532884ca32191ab31bec609c344d4939aece9d3efef699f81" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.errorprone" name="error_prone_annotation" version="2.24.1">
<artifact name="error_prone_annotation-2.24.1.jar">
<sha256 value="dc202da451680aa8cdda7c68d959f27c112dca8f8fdeaf7c597de73cb2b1a0a6" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -549,6 +573,14 @@
<sha256 value="9acf56a8579c05bedd819d99232363e2bf327e8f73c67598dbd9885a845a3c69" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.palantir.javapoet" name="javapoet" version="0.6.0">
<artifact name="javapoet-0.6.0.jar">
<sha256 value="1c8dd1cc4404b9eeb5c54fef8a1cf2be7a138a42783b9460fbae9caf85ed5b2f" origin="Generated by Gradle"/>
</artifact>
<artifact name="javapoet-0.6.0.pom">
<sha256 value="f6e34a26ac09a3a68a91cc9235cb1f8c7736b07fe89db59a324acd8d57d9e797" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.puppycrawl.tools" name="checkstyle" version="10.12.7">
<artifact name="checkstyle-10.12.7.jar">
<sha256 value="767cc2393169f0abe4292e59c3b62317149f900a472cd6b01f74346f6bdae581" origin="Generated by Gradle"/>
Expand All @@ -557,6 +589,14 @@
<sha256 value="f6ac2b6de9ed3823c8d68977df6352f3936af5db7baeb12303cdc9d3c4f46590" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup" name="javapoet" version="1.13.0">
<artifact name="javapoet-1.13.0.jar">
<sha256 value="4c7517e848a71b36d069d12bb3bf46a70fd4cda3105d822b0ed2e19c00b69291" origin="Generated by Gradle"/>
</artifact>
<artifact name="javapoet-1.13.0.pom">
<sha256 value="54a34fa8502a46bc90efdb49262600591fa80bf9a34f5a4c798311aec16ca977" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okhttp3" name="okhttp" version="4.10.0">
<artifact name="okhttp-4.10.0.jar">
<sha256 value="7580f14fa1691206e37081ad3f92063b1603b328da0bb316f2fef02e0562e7ec" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -728,6 +768,22 @@
<sha256 value="5a65e06a159d20d3b4800624a570c646dbee710b2b539b3449a268558c289e9c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="io.soabase.java-composer" name="java-composer" version="1.0">
<artifact name="java-composer-1.0.jar">
<sha256 value="d914e52079c41509cde32d8fa03b5a865d8a227867ed6fd5d8121639518d28a1" origin="Generated by Gradle"/>
</artifact>
<artifact name="java-composer-1.0.pom">
<sha256 value="741a35966a3055c80c10631736c6cfec82d7b5e4212b3f72ded29f98935bbb5e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="jakarta.inject" name="jakarta.inject-api" version="2.0.1">
<artifact name="jakarta.inject-api-2.0.1.jar">
<sha256 value="f7dc98062fccf14126abb751b64fab12c312566e8cbdc8483598bffcea93af7c" origin="Generated by Gradle"/>
</artifact>
<artifact name="jakarta.inject-api-2.0.1.pom">
<sha256 value="e7fd7232e96307a575b2494c9367d68cf43ec98244aace3ccc23e1773ffa6fda" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="jakarta.platform" name="jakarta.jakartaee-bom" version="9.1.0">
<artifact name="jakarta.jakartaee-bom-9.1.0.pom">
<sha256 value="df98e0266219fdbb82562826d79a3a20776a8ba02aa787f0f0765a538654c8a4" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1492,6 +1548,9 @@
<artifact name="apiguardian-api-1.1.2.module">
<sha256 value="e08028131375b357d1d28734e9a4fb4216da84b240641cb3ef7e7c7d628223fc" origin="Generated by Gradle"/>
</artifact>
<artifact name="apiguardian-api-1.1.2.pom">
<sha256 value="32355081d109095c3d5d374d5a43b4f4c1b75d549e983ef50723e2772e5302a0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.checkerframework" name="checker-qual" version="2.10.0">
<artifact name="checker-qual-2.10.0.jar">
Expand All @@ -1505,6 +1564,9 @@
<artifact name="checker-qual-3.19.0.module">
<sha256 value="53e1899dde3c513ca1efd376abffac0e6907e8e84abd5f966242634c95e4d157" origin="Generated by Gradle"/>
</artifact>
<artifact name="checker-qual-3.19.0.pom">
<sha256 value="29ba9c5ce1a94b700bd823c4ed612f5827b590f19a49775fd7eb8f997f8aa371" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.checkerframework" name="checker-qual" version="3.33.0">
<artifact name="checker-qual-3.33.0.jar">
Expand Down Expand Up @@ -1601,6 +1663,11 @@
<sha256 value="5e583878df905b5f33a230ef690a52b8f19dab9cc892bedee069f3d8af4e960a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.eclipse.ee4j" name="project" version="1.0.6">
<artifact name="project-1.0.6.pom">
<sha256 value="4e7d8329d8da7dcf30779d824241be145f27108932f5a5a24eb907677bc8d72d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.eclipse.ee4j" name="project" version="1.0.7">
<artifact name="project-1.0.7.pom">
<sha256 value="205c039a42cbae3556efbeb04a483eb3a3cf9550bd75bf84260dc8f28218f105" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -1758,6 +1825,14 @@
<sha256 value="33b8c22f2424c2903241a7fea258fc41ab0c4d6889776576c519047562ee43a5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jspecify" name="jspecify" version="1.0.0">
<artifact name="jspecify-1.0.0.jar">
<sha256 value="1fad6e6be7557781e4d33729d49ae1cdc8fdda6fe477bb0cc68ce351eafdfbab" origin="Generated by Gradle"/>
</artifact>
<artifact name="jspecify-1.0.0.module">
<sha256 value="d307ca77a54e18ac1ef1aaed4e5bbe014bd2f49f29e1d2f813e47c278283195b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.junit" name="junit-bom" version="5.10.0">
<artifact name="junit-bom-5.10.0.module">
<sha256 value="eb3ee6127608010694a898056e7407d117296003aba5f5db801df430b9887fcf" origin="Generated by Gradle"/>
Expand Down Expand Up @@ -2082,6 +2157,25 @@
<sha256 value="b68149d290f328b6b54d0f7f7d304adab5148cedd6ae18dc3baae8bf9f1757c6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.spongepowered" name="event-impl-gen" version="8.0.0">
<artifact name="event-impl-gen-8.0.0.jar">
<sha256 value="6e26ff9a8d9f5a9fe39fe3e64781061bf068405c04095d78c044719ac2918992" origin="Generated by Gradle"/>
</artifact>
<artifact name="event-impl-gen-8.0.0.module">
<sha256 value="5b919469a6bead6b6107212e4bf441c7576fc52f0b590db4bc13f742ebbfd983" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.spongepowered" name="event-impl-gen-annotations" version="8.0.0">
<artifact name="event-impl-gen-annotations-8.0.0-javadoc.jar">
<sha256 value="6f4b8d62436da73bedb9baf543180f5068e99b77d38f15fbd463d4df7251d4d9" origin="Generated by Gradle"/>
</artifact>
<artifact name="event-impl-gen-annotations-8.0.0.jar">
<sha256 value="278e01efedb92a95be74714ea2bec08d29326b4893f6e957aa3bd39a15840776" origin="Generated by Gradle"/>
</artifact>
<artifact name="event-impl-gen-annotations-8.0.0.module">
<sha256 value="b0fddddd441038c0889450e8c0ebac970f0d606b246db99fd59c23c73e7ba534" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.spongepowered" name="math" version="2.0.1">
<artifact name="math-2.0.1-javadoc.jar">
<sha256 value="eef4d1e6421cd975ebdb7ae6be8632c0e89c0e8b671ee0fb542d8e6ddad2df12" origin="Generated by Gradle"/>
Expand Down
3 changes: 3 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ plugins {
}

dependencyResolutionManagement {
repositories {
mavenLocal()
}
repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
pluginManagement.repositories.forEach(repositories::add)
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
import org.spongepowered.api.data.value.Value;
import org.spongepowered.api.data.value.ValueContainer;
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.util.annotation.eventgen.TransformWith;
import org.spongepowered.api.world.World;
import org.spongepowered.eventgen.annotations.TransformWith;

import java.util.Arrays;
import java.util.Objects;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/spongepowered/api/event/Cancellable.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
*/
package org.spongepowered.api.event;

import org.spongepowered.api.util.annotation.eventgen.PropertySettings;
import org.spongepowered.eventgen.annotations.PropertySettings;

/**
* Represents an event that can be cancelled.
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/org/spongepowered/api/event/Cause.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.checkerframework.checker.nullness.qual.Nullable;
import org.spongepowered.api.util.CopyableBuilder;
import org.spongepowered.api.util.annotation.DoNotStore;
import org.spongepowered.eventgen.annotations.NoFactoryMethod;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -54,6 +55,7 @@
*/
@DoNotStore
@SuppressWarnings("unchecked")
@NoFactoryMethod
public final class Cause implements Iterable<Object> {

/**
Expand Down
Loading
Loading