From 19df9ed066cb296f478cb7358aa109cfd7dfb5bd Mon Sep 17 00:00:00 2001 From: kento2 Date: Wed, 29 Apr 2026 17:38:23 +0200 Subject: [PATCH] . --- core-bukkit-api/build.gradle.kts | 5 ++++- .../java/de/kentoj/scrow/bukkit/ScrowAPI.java | 16 ++++++++++++++++ .../bukkit/message/NatsDocumentRepository.java | 16 ++++++++++++++++ .../de/kentoj/scrow/bukkit/CoreImplPlugin.java | 13 +++++++++++++ .../de/kentoj/scrow/bukkit/ScrowAPISurface.java | 9 +++++++++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/message/NatsDocumentRepository.java diff --git a/core-bukkit-api/build.gradle.kts b/core-bukkit-api/build.gradle.kts index a99140d..56d3d67 100644 --- a/core-bukkit-api/build.gradle.kts +++ b/core-bukkit-api/build.gradle.kts @@ -34,7 +34,10 @@ dependencies { testRuntimeOnly("org.junit.platform:junit-platform-launcher") api("org.spigotmc:spigot-api:1.21.11-R0.1-SNAPSHOT") - api("net.kyori:adventure-platform-bukkit:4.4.1") + + // Source: https://mvnrepository.com/artifact/io.nats/jnats + implementation("io.nats:jnats:2.25.2") + api("io.nats:jnats:2.25.2") api("de.kentoj.scrow:kencommandapi-core:0.2") implementation("de.kentoj.scrow:kencommandapi-bukkit:0.2") diff --git a/core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/ScrowAPI.java b/core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/ScrowAPI.java index 12c8622..53d6522 100644 --- a/core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/ScrowAPI.java +++ b/core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/ScrowAPI.java @@ -4,6 +4,8 @@ import com.mongodb.reactivestreams.client.MongoDatabase; import de.kentoj.kencommandapi.BukkitKenCommandApi; import de.kentoj.scrow.bukkit.friends.FriendRequestService; import de.kentoj.scrow.bukkit.friends.FriendshipService; +import de.kentoj.scrow.bukkit.message.NatsDocumentRepository; +import io.nats.client.Connection; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -26,6 +28,10 @@ public class ScrowAPI { private static FriendshipService friendshipService; @Getter private static FriendRequestService friendRequestService; + @Getter + private static Connection nats; + @Getter + private static NatsDocumentRepository natsRepository; @ApiStatus.Internal public static void setDatabase(@Nullable MongoDatabase database) { @@ -56,5 +62,15 @@ public class ScrowAPI { public static void setFriendRequestService(FriendRequestService friendRequestService) { ScrowAPI.friendRequestService = friendRequestService; } + + @ApiStatus.Internal + public static void setNats(Connection nats) { + ScrowAPI.nats = nats; + } + + @ApiStatus.Internal + public static void setNatsRepository(NatsDocumentRepository natsRepository) { + ScrowAPI.natsRepository = natsRepository; + } } diff --git a/core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/message/NatsDocumentRepository.java b/core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/message/NatsDocumentRepository.java new file mode 100644 index 0000000..2450e5d --- /dev/null +++ b/core-bukkit-api/src/main/java/de/kentoj/scrow/bukkit/message/NatsDocumentRepository.java @@ -0,0 +1,16 @@ +package de.kentoj.scrow.bukkit.message; + +import io.nats.client.Message; +import io.nats.client.Subscription; +import org.bson.Document; + +import java.util.function.Consumer; + +public interface NatsDocumentRepository { + + void publish(String topic, Document document); + + Subscription subscribe(String topic, Consumer document); + + Message request(String topic, Document document); +} diff --git a/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/CoreImplPlugin.java b/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/CoreImplPlugin.java index 8efc40e..234ae00 100644 --- a/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/CoreImplPlugin.java +++ b/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/CoreImplPlugin.java @@ -2,6 +2,9 @@ package de.kentoj.scrow.bukkit; import de.kentoj.scrow.bukkit.economy.CoinsCommand; import de.kentoj.scrow.bukkit.friends.command.FriendCommand; +import io.nats.client.Message; +import io.nats.client.Nats; +import org.bson.Document; import org.bukkit.plugin.java.JavaPlugin; import reactor.core.publisher.Mono; @@ -37,6 +40,16 @@ public class CoreImplPlugin extends JavaPlugin { } } + private void registerServer() { + ScrowAPI.getNatsRepository().publish("crown.status", new Document() + .append("state", "up")); + ScrowAPI.getNatsRepository().subscribe("crown.status", doc -> { + doc. + }); + ScrowAPI.getNats().reqpublish("crown.status", new Document() + .append("state", "up").toJson()); + } + @Override public void onDisable() { ScrowAPISurface.destroyScrowAPI(); diff --git a/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/ScrowAPISurface.java b/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/ScrowAPISurface.java index 5264afb..6049268 100644 --- a/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/ScrowAPISurface.java +++ b/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/ScrowAPISurface.java @@ -11,6 +11,7 @@ import de.kentoj.scrow.bukkit.friends.friendship.InMemoryFriendshipService; import de.kentoj.scrow.bukkit.friends.friendship.MongoFriendshipService; import de.kentoj.scrow.bukkit.friends.request.InMemoryFriendRequestService; import de.kentoj.scrow.bukkit.friends.request.MongoFriendRequestService; +import io.nats.client.Nats; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.bson.UuidRepresentation; @@ -21,6 +22,8 @@ import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.Nullable; import reactor.core.scheduler.Schedulers; +import java.io.IOException; + @NoArgsConstructor(access = AccessLevel.PRIVATE) public class ScrowAPISurface { @@ -31,6 +34,12 @@ public class ScrowAPISurface { Bukkit.getScheduler().runTask(plugin, cmd); })); + try { + ScrowAPI.setMessageBroker(Nats.connect()); + } catch (IOException | InterruptedException e) { + throw new RuntimeException(e); + } + if (enableDatabase) { var pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build(); var codecRegistry = CodecRegistries.fromRegistries(