.
This commit is contained in:
parent
8eb15179db
commit
19df9ed066
5 changed files with 58 additions and 1 deletions
|
|
@ -34,7 +34,10 @@ dependencies {
|
||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||||
|
|
||||||
api("org.spigotmc:spigot-api:1.21.11-R0.1-SNAPSHOT")
|
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")
|
api("de.kentoj.scrow:kencommandapi-core:0.2")
|
||||||
implementation("de.kentoj.scrow:kencommandapi-bukkit:0.2")
|
implementation("de.kentoj.scrow:kencommandapi-bukkit:0.2")
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import com.mongodb.reactivestreams.client.MongoDatabase;
|
||||||
import de.kentoj.kencommandapi.BukkitKenCommandApi;
|
import de.kentoj.kencommandapi.BukkitKenCommandApi;
|
||||||
import de.kentoj.scrow.bukkit.friends.FriendRequestService;
|
import de.kentoj.scrow.bukkit.friends.FriendRequestService;
|
||||||
import de.kentoj.scrow.bukkit.friends.FriendshipService;
|
import de.kentoj.scrow.bukkit.friends.FriendshipService;
|
||||||
|
import de.kentoj.scrow.bukkit.message.NatsDocumentRepository;
|
||||||
|
import io.nats.client.Connection;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
@ -26,6 +28,10 @@ public class ScrowAPI {
|
||||||
private static FriendshipService friendshipService;
|
private static FriendshipService friendshipService;
|
||||||
@Getter
|
@Getter
|
||||||
private static FriendRequestService friendRequestService;
|
private static FriendRequestService friendRequestService;
|
||||||
|
@Getter
|
||||||
|
private static Connection nats;
|
||||||
|
@Getter
|
||||||
|
private static NatsDocumentRepository natsRepository;
|
||||||
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
public static void setDatabase(@Nullable MongoDatabase database) {
|
public static void setDatabase(@Nullable MongoDatabase database) {
|
||||||
|
|
@ -56,5 +62,15 @@ public class ScrowAPI {
|
||||||
public static void setFriendRequestService(FriendRequestService friendRequestService) {
|
public static void setFriendRequestService(FriendRequestService friendRequestService) {
|
||||||
ScrowAPI.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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> document);
|
||||||
|
|
||||||
|
Message request(String topic, Document document);
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,9 @@ package de.kentoj.scrow.bukkit;
|
||||||
|
|
||||||
import de.kentoj.scrow.bukkit.economy.CoinsCommand;
|
import de.kentoj.scrow.bukkit.economy.CoinsCommand;
|
||||||
import de.kentoj.scrow.bukkit.friends.command.FriendCommand;
|
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 org.bukkit.plugin.java.JavaPlugin;
|
||||||
import reactor.core.publisher.Mono;
|
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
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
ScrowAPISurface.destroyScrowAPI();
|
ScrowAPISurface.destroyScrowAPI();
|
||||||
|
|
|
||||||
|
|
@ -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.friendship.MongoFriendshipService;
|
||||||
import de.kentoj.scrow.bukkit.friends.request.InMemoryFriendRequestService;
|
import de.kentoj.scrow.bukkit.friends.request.InMemoryFriendRequestService;
|
||||||
import de.kentoj.scrow.bukkit.friends.request.MongoFriendRequestService;
|
import de.kentoj.scrow.bukkit.friends.request.MongoFriendRequestService;
|
||||||
|
import io.nats.client.Nats;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.bson.UuidRepresentation;
|
import org.bson.UuidRepresentation;
|
||||||
|
|
@ -21,6 +22,8 @@ import org.bukkit.plugin.Plugin;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import reactor.core.scheduler.Schedulers;
|
import reactor.core.scheduler.Schedulers;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class ScrowAPISurface {
|
public class ScrowAPISurface {
|
||||||
|
|
||||||
|
|
@ -31,6 +34,12 @@ public class ScrowAPISurface {
|
||||||
Bukkit.getScheduler().runTask(plugin, cmd);
|
Bukkit.getScheduler().runTask(plugin, cmd);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
try {
|
||||||
|
ScrowAPI.setMessageBroker(Nats.connect());
|
||||||
|
} catch (IOException | InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
if (enableDatabase) {
|
if (enableDatabase) {
|
||||||
var pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
|
var pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
|
||||||
var codecRegistry = CodecRegistries.fromRegistries(
|
var codecRegistry = CodecRegistries.fromRegistries(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue