.
This commit is contained in:
parent
d3e20606d9
commit
5a255aeac0
16 changed files with 128 additions and 74 deletions
|
|
@ -22,6 +22,8 @@ dependencies {
|
|||
implementation(project(":core-bukkit-api"))
|
||||
|
||||
implementation("org.spigotmc:spigot-api:1.21.11-R0.1-SNAPSHOT")
|
||||
implementation("de.kentoj.scrow:kencommandapi-bukkit:0.4")
|
||||
implementation(project(":core-lib"))
|
||||
}
|
||||
|
||||
tasks {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
package de.kentoj.scrow.bukkit;
|
||||
|
||||
import de.kentoj.scrow.bukkit.crown.command.CrownCommand;
|
||||
import de.kentoj.scrow.bukkit.crown.CrownCommand;
|
||||
import de.kentoj.scrow.bukkit.economy.CoinsCommand;
|
||||
import de.kentoj.scrow.bukkit.friends.command.FriendCommand;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class CoreImplPlugin extends JavaPlugin {
|
||||
|
||||
|
|
@ -27,7 +24,7 @@ public class CoreImplPlugin extends JavaPlugin {
|
|||
}
|
||||
|
||||
private void registerServer() {
|
||||
ScrowAPI.getServerManager().updateState(System.getenv("SERVER_HANDLE"), "UP")
|
||||
ScrowAPI.getServerManager().setState(System.getenv("SERVER_HANDLE"), "UP")
|
||||
.subscribe(__ -> Bukkit.getLogger().info("registered self"));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ import com.mongodb.MongoClientSettings;
|
|||
import com.mongodb.reactivestreams.client.MongoClient;
|
||||
import com.mongodb.reactivestreams.client.MongoClients;
|
||||
import de.kentoj.kencommandapi.BukkitKenCommandApi;
|
||||
import de.kentoj.scrow.bukkit.crown.CrownServerManager;
|
||||
import de.kentoj.scrow.bukkit.economy.InMemoryEconomyService;
|
||||
import de.kentoj.scrow.bukkit.economy.MongoEconomyService;
|
||||
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 de.kentoj.scrowlib.servermanager.CrownServerManager;
|
||||
import io.nats.client.Nats;
|
||||
import io.nats.client.Options;
|
||||
import lombok.AccessLevel;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package de.kentoj.scrow.bukkit.crown.command;
|
||||
package de.kentoj.scrow.bukkit.crown;
|
||||
|
||||
import de.kentoj.kencommandapi.BukkitCommandContext;
|
||||
import de.kentoj.kencommandapi.api.structure.node.CommandNode;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package de.kentoj.scrow.bukkit.crown.command;
|
||||
package de.kentoj.scrow.bukkit.crown;
|
||||
|
||||
import de.kentoj.kencommandapi.BukkitCommandContext;
|
||||
import de.kentoj.kencommandapi.api.processing.CommandExecutor;
|
||||
|
|
@ -28,8 +28,8 @@ public class CrownDeployServerLiteral implements CommandExecutor<CommandSender,
|
|||
public void execute(BukkitCommandContext ctx) {
|
||||
var template = ctx.getArg(templateArg);
|
||||
ScrowAPI.getServerManager().deployServer(template)
|
||||
.subscribe(handle -> {
|
||||
ctx.getSender().sendMessage("Deployed instance of " + template + " with handle " + handle);
|
||||
.subscribe(server -> {
|
||||
ctx.getSender().sendMessage("Deployed instance of " + template + " with handle " + server.getHandle());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package de.kentoj.scrow.bukkit.crown.command;
|
||||
package de.kentoj.scrow.bukkit.crown;
|
||||
|
||||
import de.kentoj.kencommandapi.BukkitCommandContext;
|
||||
import de.kentoj.kencommandapi.api.processing.CommandExecutor;
|
||||
|
|
@ -6,6 +6,7 @@ import de.kentoj.kencommandapi.api.structure.argument.CommandArgument;
|
|||
import de.kentoj.kencommandapi.api.structure.argument.types.StringArgumentType;
|
||||
import de.kentoj.kencommandapi.api.structure.node.CommandNode;
|
||||
import de.kentoj.scrow.bukkit.ScrowAPI;
|
||||
import de.kentoj.scrowlib.servermanager.ServerInstance;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
|
|
@ -24,7 +25,10 @@ public class CrownDestroyServerLiteral implements CommandExecutor<CommandSender,
|
|||
this.handleArg = ScrowAPI.getCommandManager().createArgument("template", new StringArgumentType<>());
|
||||
this.handleArg.setSuggestionProvider(ctx -> {
|
||||
//noinspection CodeBlock2Expr
|
||||
return ScrowAPI.getServerManager().getRunningServers().collect(Collectors.toSet()).toFuture();
|
||||
return ScrowAPI.getServerManager().getRunningServers()
|
||||
.map(ServerInstance::getHandle)
|
||||
.collect(Collectors.toSet())
|
||||
.toFuture();
|
||||
});
|
||||
this.node.addArgument(handleArg);
|
||||
}
|
||||
|
|
@ -35,7 +39,7 @@ public class CrownDestroyServerLiteral implements CommandExecutor<CommandSender,
|
|||
var handle = ctx.getArg(handleArg);
|
||||
ScrowAPI.getServerManager().destroyServer(handle)
|
||||
.subscribe(__ -> {
|
||||
ctx.getSender().sendMessage("Destroyed server with handle " + handle);
|
||||
ctx.getSender().sendMessage("Destroyed server with handle " + handle);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package de.kentoj.scrow.bukkit.crown.command;
|
||||
package de.kentoj.scrow.bukkit.crown;
|
||||
|
||||
import de.kentoj.kencommandapi.BukkitCommandContext;
|
||||
import de.kentoj.kencommandapi.api.processing.CommandExecutor;
|
||||
|
|
@ -20,11 +20,15 @@ public class CrownListServersLiteral implements CommandExecutor<CommandSender, B
|
|||
@Override
|
||||
public void execute(BukkitCommandContext ctx) {
|
||||
ScrowAPI.getServerManager().getRunningServers()
|
||||
.collectList()
|
||||
.subscribe(uids -> {
|
||||
var msg = new StringBuilder().append('\n');
|
||||
uids.forEach(uid -> msg.append(" > ").append(uid));
|
||||
msg.append('\n');
|
||||
.reduce(new StringBuilder("\n"), (acc, cur) -> acc.append("> ")
|
||||
.append(cur.getHandle())
|
||||
.append(" on port ")
|
||||
.append(cur.getPort())
|
||||
.append(": ")
|
||||
.append(cur.getState())
|
||||
.append('\n')
|
||||
)
|
||||
.subscribe(msg -> {
|
||||
ctx.getPlayerSender().sendMessage(msg.toString());
|
||||
});
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
package de.kentoj.scrow.bukkit.crown;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import de.kentoj.scrow.bukkit.ScrowAPI;
|
||||
import de.kentoj.scrow.bukkit.ServerManager;
|
||||
import io.nats.client.Connection;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bson.Document;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class CrownServerManager implements ServerManager {
|
||||
|
||||
private final
|
||||
|
||||
@Override
|
||||
public Mono<@NotNull String> deployServer(String template) {
|
||||
return Mono.fromFuture(nats.request("crown.deploy-server", new Document()
|
||||
.append("template", template))
|
||||
.map(msg -> new String(msg.getData()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flux<@NotNull String> getRunningServers() {
|
||||
return Mono.fromFuture(nats.request("crown.deploy-server", new byte[0]))
|
||||
.flatMapMany(msg -> {
|
||||
var ids = new String(msg.getData()).split("\u001F");
|
||||
return Flux.fromStream(Arrays.stream(ids));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<@NotNull Void> destroyServer(String handle) {
|
||||
return Mono.fromFuture(nats.request("crown.destroy-server",handle.getBytes()))
|
||||
.then();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<@NotNull Void> updateState(String handle, String state) {
|
||||
Preconditions.checkArgument(!state.contains(" "), "state may not contain spaces");
|
||||
var payload = (handle + " " + state).getBytes();
|
||||
return Mono.fromFuture(nats.request("crown.update-state", payload))
|
||||
.then();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue