This commit is contained in:
kento2 2026-06-01 21:12:24 +02:00
parent f9ceea47d6
commit e87ccbb7cb
16 changed files with 288 additions and 33 deletions

View file

@ -3,6 +3,7 @@ package de.kentoj.scrow.bukkit;
import de.kentoj.scrow.bukkit.crown.CrownCommand;
import de.kentoj.scrow.bukkit.economy.CoinsCommand;
import de.kentoj.scrow.bukkit.friends.command.FriendCommand;
import de.kentoj.scrow.bukkit.server.PlayCommand;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
@ -18,6 +19,7 @@ public class CoreImplPlugin extends JavaPlugin {
ScrowAPI.getCommandManager().register(new FriendCommand().getRootNode());
ScrowAPI.getCommandManager().register(new CoinsCommand().getRootNode());
ScrowAPI.getCommandManager().register(new CrownCommand().getRootNode());
ScrowAPI.getCommandManager().register(new PlayCommand().getRootNode());
}
registerServer();

View file

@ -11,7 +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 de.kentoj.scrowlib.servermanager.CrownServerManager;
import de.kentoj.scrowlib.servermanager.ServerManagerImpl;
import io.nats.client.Nats;
import io.nats.client.Options;
import lombok.AccessLevel;
@ -64,7 +64,7 @@ public class ScrowAPISurface {
ScrowAPI.setDatabase(mongoClient.getDatabase("scrow"));
}
ScrowAPI.setServerManager(new CrownServerManager(ScrowAPI.getNats()));
ScrowAPI.setServerManager(new ServerManagerImpl(ScrowAPI.getNats()));
ScrowAPI.setEconomyService(ScrowAPI.getDatabase() != null ?
new MongoEconomyService(ScrowAPI.getDatabase()) : new InMemoryEconomyService());

View file

@ -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(server -> {
ctx.getSender().sendMessage("Deployed instance of " + template + " with handle " + server.getHandle());
});
.subscribe(server ->
ctx.getSender().sendMessage("Deployed instance of " + template + " with handle " + server.getHandle())
);
}
}

View file

@ -38,8 +38,8 @@ public class CrownDestroyServerLiteral implements CommandExecutor<CommandSender,
public void execute(BukkitCommandContext ctx) {
var handle = ctx.getArg(handleArg);
ScrowAPI.getServerManager().destroyServer(handle)
.subscribe(__ -> {
ctx.getSender().sendMessage("Destroyed server with handle " + handle);
});
.subscribe(__ ->
ctx.getSender().sendMessage("Destroyed server with handle " + handle)
);
}
}

View file

@ -28,8 +28,8 @@ public class CrownListServersLiteral implements CommandExecutor<CommandSender, B
.append(cur.getState())
.append('\n')
)
.subscribe(msg -> {
ctx.getPlayerSender().sendMessage(msg.toString());
});
.subscribe(msg ->
ctx.getPlayerSender().sendMessage(msg.toString())
);
}
}

View file

@ -0,0 +1,41 @@
package de.kentoj.scrow.bukkit.server;
import de.kentoj.kencommandapi.BukkitCommandContext;
import de.kentoj.kencommandapi.api.processing.CommandExecutor;
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;
public class PlayCommand implements CommandExecutor<CommandSender, BukkitCommandContext> {
@Getter
private final CommandNode<CommandSender, BukkitCommandContext> rootNode;
private final CommandArgument<CommandSender, BukkitCommandContext, String> gamemodeArg;
public PlayCommand() {
this.rootNode = ScrowAPI.getCommandManager().createNode("play", "queue");
this.gamemodeArg = ScrowAPI.getCommandManager().createArgument("gamemode", new StringArgumentType<>());
this.rootNode.addArgument(this.gamemodeArg);
this.rootNode.setExecutor(this);
}
@Override
public void execute(BukkitCommandContext ctx) {
var gamemode = ctx.getArg(gamemodeArg);
ScrowAPI.getServerManager().getRunningServers().filter(
inst -> inst.getTemplateName().equals(gamemode) && inst.getState().equals("UP")
)
.single()
.map(ServerInstance::getHandle)
.flatMap(handle ->
ScrowAPI.getServerManager().sendPlayer(ctx.getPlayerSender().getUniqueId(), handle)
)
.subscribe(null, ex -> {
ctx.getPlayerSender().sendMessage("failed sending you to " + gamemode + ": " + ex.getMessage());
});
}
}