.
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")
|
||||
|
||||
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")
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.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();
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue