currently refactoring a lot

This commit is contained in:
kento2 2026-07-05 00:36:22 +02:00
parent 31eb8a92eb
commit ea6ae529cc
32 changed files with 205 additions and 185 deletions

View file

@ -18,10 +18,17 @@ repositories {
}
dependencies {
compileOnly("io.papermc.paper:paper-api:1.21.11-rc3-R0.1-SNAPSHOT")
implementation(project(":core-bukkit-api"))
// https://mvnrepository.com/artifact/org.mongodb/bson
implementation("org.mongodb:bson:5.8.0")
// https://mvnrepository.com/artifact/io.nats/jnats
implementation("io.nats:jnats:2.25.2")
// http://forge.kentoj.de/scrow/-/packages/maven/de.kentoj.scrow:kencommandapi-core
implementation("de.kentoj.scrow:kencommandapi-core:0.23")
implementation("de.kentoj.scrow:kencommandapi-core:0.28")
// http://forge.kentoj.de/scrow/-/packages/maven/de.kentoj.scrow:kencommandapi-bukkit
implementation("de.kentoj.scrow:kencommandapi-bukkit:0.28")
}
tasks {
@ -37,9 +44,7 @@ tasks {
tasks.processResources {
filesMatching("plugin.yml") {
expand(
mapOf(
"version" to project.version.toString()
)
mapOf("version" to project.version.toString())
)
}
}

View file

@ -9,6 +9,7 @@ import de.kentoj.scrow.bukkit.server.LobbyCommand;
import de.kentoj.scrow.bukkit.server.PlayCommand;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.FileDescriptor;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
@ -34,12 +35,12 @@ public class CoreImplPlugin extends JavaPlugin {
new RegionTask(new RegionPlayerTracker()).runTaskTimer(this, 10, 10);
registerServer();
// TODO/FIXME
//registerServer();
}
private void registerServer() {
var opts = new OpenOption[]{StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE, StandardOpenOption.WRITE};
try (var file = FileChannel.open(Path.of("/proc/self/fd/3"), opts)) {
try (var file = FileChannel.open(Path.of("/proc/self/fd/4"), StandardOpenOption.WRITE)) {
//noinspection ResultOfMethodCallIgnored
file.write(ByteBuffer.wrap(new byte[]{'\n'}));
} catch (IOException e) {

View file

@ -7,8 +7,10 @@ import de.kentoj.scrow.bukkit.friends.friendship.InMemoryFriendshipService;
import de.kentoj.scrow.bukkit.friends.friendship.PostgresFriendshipService;
import de.kentoj.scrow.bukkit.friends.request.InMemoryFriendRequestService;
import de.kentoj.scrow.bukkit.friends.request.PostgresFriendRequestService;
import de.kentoj.scrow.bukkit.playermanager.PlayerManagerImpl;
import de.kentoj.scrow.bukkit.region.RegionManagerImpl;
import de.kentoj.scrowlib.instancemanager.InstanceManagerImpl;
import de.kentoj.scrowlib.messaging.MessageBroker;
import de.kentoj.scrowlib.utils.EnvUtils;
import io.nats.client.Nats;
import io.nats.client.Options;
@ -31,7 +33,7 @@ public class ScrowAPISurface {
.server(natsHost)
.pedantic()
.build();
ScrowAPI.setNats(Nats.connect(options));
ScrowAPI.setMessageBroker(new MessageBroker(Nats.connect(options)));
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}
@ -40,9 +42,10 @@ public class ScrowAPISurface {
ScrowAPI.setJdbi(Jdbi.create(EnvUtils.envOrThrow("HOST_POSTGRES")));
}
ScrowAPI.setPlayerManager(new PlayerManagerImpl());
ScrowAPI.setRegionManager(new RegionManagerImpl());
ScrowAPI.setCommandApi(new CommandAPI(plugin));
ScrowAPI.setInstanceManager(new InstanceManagerImpl(ScrowAPI.getNats()));
ScrowAPI.setInstanceManager(new InstanceManagerImpl(ScrowAPI.getMessageBroker()));
ScrowAPI.setEconomyService(ScrowAPI.getJdbi() != null ?
new PostgresEconomyService() : new InMemoryEconomyService());
ScrowAPI.setFriendRequestService(ScrowAPI.getJdbi() != null ?

View file

@ -13,7 +13,6 @@ import de.kentoj.scrowlib.convention.ScrowMessageStyle;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -29,6 +28,7 @@ public class CoinsCommand implements CommandExecutor<CommandSender> {
style = ScrowMessageStyle.GENERIC;
rootNode = CommandNode.rootNode(style, "coins", "bal", "balance");
rootNode.setPermission("command.coins.get.self");
rootNode.setExecutor(this);
var setLiteral = new CoinsSetLiteral(style).getLiteral();
setLiteral.setPermission("command.coins.set");

View file

@ -30,7 +30,7 @@ public class CoinsGetLiteral implements CommandExecutor<CommandSender> {
playerArg = CommandArgument.arg("player", OfflinePlayerArgumentType.getInstance());
playerArg.setDefaultValueProvider(sender -> (OfflinePlayer) sender);
literal = CommandNode.node("set");
literal = CommandNode.node("get");
literal.addArgument(playerArg);
literal.setExecutor(this);
}

View file

@ -74,9 +74,9 @@ public class FriendAddLiteral implements CommandExecutor<CommandSender> {
.saveFriendship(new FriendshipImpl(self.getUniqueId(), other.getUniqueId(), Instant.now()))
)))
.runSync(() -> {
self.sendMessage(style.ok("You are now friends with " + other.getName()));
self.sendMessage(style.ok("You are now friends with " + other.getName() + "."));
if (other.getPlayer() != null)
other.getPlayer().sendMessage(style.ok("You are now friends with " + self.getName()));
other.getPlayer().sendMessage(style.ok("You are now friends with " + self.getName() + "."));
});
}

View file

@ -39,8 +39,8 @@ public class FriendRemoveLiteral implements CommandExecutor<CommandSender> {
ScrowAPI.getFriendshipService().deleteFriendship(friend.getUniqueId(), player.getUniqueId()))
.<Result<Object, String>>mapSync(deleted -> {
if (!deleted)
return Results.failure("You are not friends with " + friend.getName());
ctx.getSender().sendMessage(style.ok("You have ended the friendship with " + friend.getName()));
return Results.failure("You are not friends with " + friend.getName() + ".");
ctx.getSender().sendMessage(style.ok("You have ended the friendship with " + friend.getName() + "."));
return Results.success(new Object());
}).toFuture();
}

View file

@ -30,7 +30,7 @@ public class FriendRequestsLiteral implements CommandExecutor<CommandSender> {
public FriendRequestsLiteral(ScrowMessageStyle style) {
this.style = style;
literal = CommandNode.node("requests", "list-requests");
literal = CommandNode.node("requests");
literal.setExecutor(this);
}
@ -40,7 +40,7 @@ public class FriendRequestsLiteral implements CommandExecutor<CommandSender> {
return Tasks.supplyAsync(() ->
ScrowAPI.getFriendRequestService().getFriendRequestsTo(sender.getUniqueId()))
.<Result<Object, String>>mapAsync(list -> {
if (list.isEmpty()) return Results.failure("You have no friend requests");
if (list.isEmpty()) return Results.failure("You have no friend requests.");
var requesters = list.stream().sorted(this::compareByAge).map(fr -> Bukkit.getOfflinePlayer(fr.getFrom()).getName());
sender.sendMessage(formatList(requesters.toList()));

View file

@ -35,11 +35,11 @@ public class InstanceDeployLiteral implements CommandExecutor<CommandSender> {
@Override
public CompletableFuture<Result<Object, String>> execute(CommandContext<CommandSender> ctx) {
var template = ctx.getArg(templateArg);
ctx.getSender().sendMessage(style.ok("Deploying instance... this may take a while"));
ctx.getSender().sendMessage(style.ok("Deploying instance... this may take a while."));
return Tasks.supplyAsync(() ->
ScrowAPI.getInstanceManager().deployInstance(template))
.<Result<Object, String>>mapSync(instance -> {
ctx.getSender().sendMessage(style.ok("Deployed instance of " + template + " with handle " + instance.getHandle()));
ctx.getSender().sendMessage(style.ok("Deployed instance of " + template + " with handle " + instance.getHandle() + "."));
// FIXME handle unknown server
return Results.success(new Object());
}).toFuture();

View file

@ -44,8 +44,8 @@ public class InstanceDestroyLiteral implements CommandExecutor<CommandSender> {
return Tasks.supplyAsync(() -> ScrowAPI.getInstanceManager().destroyInstance(handle))
.<Result<Object, String>>mapSync(found -> {
if (!found)
return Results.failure("No instance with that handle found");
ctx.getSender().sendMessage(style.ok("Destroyed server with handle " + handle));
return Results.failure("No instance with that handle found.");
ctx.getSender().sendMessage(style.ok("Destroyed server with handle " + handle + "."));
return Results.success(new Object());
}).toFuture();
}

View file

@ -1,5 +1,6 @@
package de.kentoj.scrow.bukkit.playermanager;
import de.kentoj.scrow.bukkit.ScrowAPI;
import de.kentoj.scrow.bukkit.misc.PlayerManager;
import de.kentoj.scrowlib.messaging.MessageBroker;
import de.kentoj.scrowlib.utils.ResultUtils;
@ -11,7 +12,7 @@ import java.util.UUID;
@RequiredArgsConstructor
public class PlayerManagerImpl implements PlayerManager {
private final MessageBroker messageBroker;
private final MessageBroker messageBroker = ScrowAPI.getMessageBroker();
@Override
public void sendPlayer(UUID playerId, String instanceHandle) {

View file

@ -44,7 +44,7 @@ public class PlayCommand implements CommandExecutor<CommandSender> {
.findFirst()
.orElse(null);
if (instance == null)
return Results.failure("No instance for " + gamemode + " found");
return Results.failure("No instance for " + gamemode + " found.");
return Results.ofCallable(() -> {
ScrowAPI.getPlayerManager().sendPlayer(player.getUniqueId(), instance.getHandle());