From ca909df184cdcb4d149a251aa4b4273702cca8f2 Mon Sep 17 00:00:00 2001 From: Rollczi Date: Sun, 26 Oct 2025 21:06:36 +0100 Subject: [PATCH] Litegration --- .gitignore | 1 + buildSrc/build.gradle.kts | 2 + buildSrc/src/main/kotlin/Versions.kt | 1 + .../eternalcore-repositories.gradle.kts | 1 + eternalcore-api-example/build.gradle.kts | 2 +- .../core/test/MockAudienceProvider.java | 5 +-- eternalcore-plugin/build.gradle.kts | 22 ++++++++++- .../eternalcode/core/IntegrationBaseTest.java | 35 +++++++++++++++++ .../catboy/CatboyServiceIntegrationTest.java | 38 +++++++++++++++++++ gradle.properties | 5 ++- settings.gradle.kts | 9 ++++- 11 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 eternalcore-plugin/src/testPaper/java/com/eternalcode/core/IntegrationBaseTest.java create mode 100644 eternalcore-plugin/src/testPaper/java/com/eternalcode/core/catboy/CatboyServiceIntegrationTest.java diff --git a/.gitignore b/.gitignore index 3ce0dc4c7..be9362d58 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ out/ .gradle/ .kotlin/ run/ +runTestPaper/ build/ .DS_Store diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 391d3c465..999b772b2 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -4,12 +4,14 @@ plugins { repositories { gradlePluginPortal() + mavenLocal() } dependencies { implementation("com.gradleup.shadow:shadow-gradle-plugin:9.2.2") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.21") implementation("net.minecrell:plugin-yml:0.6.0") + implementation("xyz.jpenilla.run-paper:xyz.jpenilla.run-paper.gradle.plugin:3.0.2") // We need to declare it in buildSrc BUG: https://github.com/gradle/gradle/issues/17559 } sourceSets { diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 427ba5328..dd02e87c0 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -49,5 +49,6 @@ object Versions { // tests const val JUNIT_BOM = "6.0.0" const val MOCKITO_CORE = "5.20.0" + const val LITEGRATION = "0.2.0" } diff --git a/buildSrc/src/main/kotlin/eternalcore-repositories.gradle.kts b/buildSrc/src/main/kotlin/eternalcore-repositories.gradle.kts index d70f44731..473011eca 100644 --- a/buildSrc/src/main/kotlin/eternalcore-repositories.gradle.kts +++ b/buildSrc/src/main/kotlin/eternalcore-repositories.gradle.kts @@ -12,4 +12,5 @@ repositories { maven("https://repo.stellardrift.ca/repository/snapshots/") maven("https://storehouse.okaeri.eu/repository/maven-public/") maven("https://repo.mikeprimm.com/") + maven("https://repo.opencollab.dev/maven-releases") } diff --git a/eternalcore-api-example/build.gradle.kts b/eternalcore-api-example/build.gradle.kts index f89eab24a..fdd47e9a0 100644 --- a/eternalcore-api-example/build.gradle.kts +++ b/eternalcore-api-example/build.gradle.kts @@ -3,7 +3,7 @@ plugins { id("com.gradleup.shadow") id("net.minecrell.plugin-yml.bukkit") - id("xyz.jpenilla.run-paper") version "3.0.2" + id("xyz.jpenilla.run-paper") } group = "com.eternalcode" diff --git a/eternalcore-core/src/test/java/com/eternalcode/core/test/MockAudienceProvider.java b/eternalcore-core/src/test/java/com/eternalcode/core/test/MockAudienceProvider.java index 506021af3..8780954fd 100644 --- a/eternalcore-core/src/test/java/com/eternalcode/core/test/MockAudienceProvider.java +++ b/eternalcore-core/src/test/java/com/eternalcode/core/test/MockAudienceProvider.java @@ -18,12 +18,11 @@ import net.kyori.adventure.translation.GlobalTranslator; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import panda.std.Blank; public class MockAudienceProvider extends FacetAudienceProvider { - private static final Collection> TRANSLATORS = Facet.of(); - private static final ComponentFlattener FLATTENER = FacetComponentFlattener.get(Blank.BLANK, TRANSLATORS); + private static final Collection> TRANSLATORS = Facet.of(); + private static final ComponentFlattener FLATTENER = FacetComponentFlattener.get(null, TRANSLATORS); public MockAudienceProvider() { super(GlobalTranslator.renderer().mapContext(ptr -> ptr.getOrDefault(Identity.LOCALE, Locale.US))); diff --git a/eternalcore-plugin/build.gradle.kts b/eternalcore-plugin/build.gradle.kts index 0bf93dae7..7581bc26c 100644 --- a/eternalcore-plugin/build.gradle.kts +++ b/eternalcore-plugin/build.gradle.kts @@ -2,7 +2,12 @@ plugins { `eternalcode-java` `eternalcore-repositories` `eternalcore-shadow-compiler` - id("xyz.jpenilla.run-paper") version "3.0.2" + id("dev.rollczi.litegration.paper") version Versions.LITEGRATION + id("xyz.jpenilla.run-paper") +} + +repositories { + maven("https://repo.eternalcode.pl/releases/") } eternalShadowCompiler { @@ -30,8 +35,23 @@ eternalShadowCompiler { } } +tasks.testPaper { + eula = true + serverVersion = "1.21.7" +} + dependencies { implementation("com.spotify:completable-futures:${Versions.SPOTIFY_COMPLETABLE_FUTURES}") + + testPaperImplementation(project(":eternalcore-core")) + testPaperImplementation(project(":eternalcore-api")) + + testPaperImplementation("dev.rollczi:litegration-client-mcprotocollib:${Versions.LITEGRATION}") + + testPaperImplementation(platform("org.junit:junit-bom:6.0.0")) + testPaperImplementation("org.spigotmc:spigot-api:${Versions.SPIGOT_API}") + + testPaperImplementation("org.assertj:assertj-core:3.27.6") } tasks { diff --git a/eternalcore-plugin/src/testPaper/java/com/eternalcode/core/IntegrationBaseTest.java b/eternalcore-plugin/src/testPaper/java/com/eternalcode/core/IntegrationBaseTest.java new file mode 100644 index 000000000..80c60ae6f --- /dev/null +++ b/eternalcore-plugin/src/testPaper/java/com/eternalcode/core/IntegrationBaseTest.java @@ -0,0 +1,35 @@ +package com.eternalcode.core; + +import dev.rollczi.litegration.Litegration; +import dev.rollczi.litegration.client.Client; +import dev.rollczi.litegration.client.McProtocolLibClient; +import java.util.Objects; +import java.util.function.Consumer; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitScheduler; + +public class IntegrationBaseTest { + + private final static Plugin plugin = JavaPlugin.getProvidingPlugin(EternalCoreApi.class); + private final static BukkitScheduler scheduler = Bukkit.getScheduler(); + + + protected static void joinPlayer(String name, Consumer action) { + Litegration litegration = Litegration.getCurrent(); + scheduler.runTaskAsynchronously(plugin, () -> joinPlayer(name, litegration, action)); + + } + + private static void joinPlayer(String name, Litegration litegration, Consumer action) { + Client client = McProtocolLibClient.connected(name, litegration.getAddress(), litegration.getPort()); + Player rollczi = Objects.requireNonNull(Bukkit.getPlayer(client.getName())); + scheduler.runTask(plugin, () -> { + action.accept(rollczi); + client.quit(); + }); + } + +} diff --git a/eternalcore-plugin/src/testPaper/java/com/eternalcode/core/catboy/CatboyServiceIntegrationTest.java b/eternalcore-plugin/src/testPaper/java/com/eternalcode/core/catboy/CatboyServiceIntegrationTest.java new file mode 100644 index 000000000..ced980145 --- /dev/null +++ b/eternalcore-plugin/src/testPaper/java/com/eternalcode/core/catboy/CatboyServiceIntegrationTest.java @@ -0,0 +1,38 @@ +package com.eternalcode.core.catboy; + +import com.eternalcode.core.EternalCoreApi; +import com.eternalcode.core.EternalCoreApiProvider; +import com.eternalcode.core.IntegrationBaseTest; +import com.eternalcode.core.feature.catboy.CatboyService; +import dev.rollczi.litegration.junit.LitegrationTest; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +import org.bukkit.entity.Cat; +import org.junit.jupiter.api.Test; + +class CatboyServiceIntegrationTest extends IntegrationBaseTest { + + @LitegrationTest + void shouldMarkAndUnmarkPlayerAsCatboy() { + EternalCoreApi api = EternalCoreApiProvider.provide(); + CatboyService catboyService = api.getCatboyService(); + + joinPlayer("Rollczi", rollczi -> { + catboyService.markAsCatboy(rollczi, Cat.Type.WHITE); + assertThat(catboyService.isCatboy(rollczi.getUniqueId())).isTrue(); + assertThat(rollczi.getWalkSpeed()).isEqualTo(0.4F); + assertThat(rollczi.getPassengers()).hasSize(1) + .allMatch(entity -> entity instanceof Cat cat && cat.getCatType() == Cat.Type.WHITE); + + catboyService.changeCatboyType(rollczi, Cat.Type.BLACK); + assertThat(rollczi.getPassengers()).hasSize(1) + .allMatch(entity -> entity instanceof Cat cat && cat.getCatType() == Cat.Type.BLACK); + + catboyService.unmarkAsCatboy(rollczi); + assertThat(rollczi.getWalkSpeed()).isEqualTo(0.2F); + assertThat(rollczi.getPassengers()).isEmpty(); + + assertThat(catboyService.isCatboy(rollczi.getUniqueId())).isFalse(); + }); + } + +} diff --git a/gradle.properties b/gradle.properties index 7cc7cd415..ac2591a92 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,7 @@ # https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties -org.gradle.parallel=true +org.gradle.parallel=false org.gradle.caching=true org.gradle.configuration-cache=true -org.gradle.configuration-cache.parallel=true +org.gradle.configuration-cache.parallel=false +#org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 diff --git a/settings.gradle.kts b/settings.gradle.kts index 9969928a8..2004a043b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,4 +6,11 @@ include(":eternalcore-paper") include(":eternalcore-plugin") include(":eternalcore-docs-api") include(":eternalcore-docs-generate") -include(":eternalcore-api-example") \ No newline at end of file +include(":eternalcore-api-example") + +pluginManagement { + repositories { + gradlePluginPortal() + maven("https://repo.eternalcode.pl/releases/") + } +} \ No newline at end of file