currently refactoring a lot
This commit is contained in:
parent
31eb8a92eb
commit
ea6ae529cc
32 changed files with 205 additions and 185 deletions
|
|
@ -17,7 +17,9 @@ repositories {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":core-velocity-api"))
|
||||
implementation(project(":core-velocity-api")) {
|
||||
isTransitive = true
|
||||
}
|
||||
// https://docs.papermc.io/velocity/dev/creating-your-first-plugin/
|
||||
annotationProcessor("com.velocitypowered:velocity-api:3.5.0-SNAPSHOT")
|
||||
|
||||
|
|
@ -25,6 +27,10 @@ dependencies {
|
|||
implementation("com.github.ben-manes.caffeine:caffeine:3.2.4")
|
||||
}
|
||||
|
||||
tasks.build {
|
||||
dependsOn("shadowJar")
|
||||
}
|
||||
|
||||
val generateBuildInfo by tasks.registering {
|
||||
val outputDir = layout.buildDirectory.dir("generated/sources/buildInfo")
|
||||
outputs.dir(outputDir)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import net.kyori.adventure.text.format.NamedTextColor;
|
|||
)
|
||||
@Log
|
||||
public class CoreVelocityPlugin {
|
||||
|
||||
@Inject
|
||||
public CoreVelocityPlugin(ProxyServer server) {
|
||||
ScrowAPISurface.initScrowAPI(server, true);
|
||||
|
|
@ -38,8 +37,8 @@ public class CoreVelocityPlugin {
|
|||
cmds.register(new OnlineCommand(server).getRootNode());
|
||||
}
|
||||
|
||||
var registerWatchdog = new ServerRegisterWatchdog(ScrowAPI.getNats(), server);
|
||||
var sendPlayerWatchdog = new SendPlayerWatchdog(ScrowAPI.getNats(), server);
|
||||
var registerWatchdog = new ServerRegisterWatchdog(ScrowAPI.getMessageBroker(), server);
|
||||
var sendPlayerWatchdog = new SendPlayerWatchdog(ScrowAPI.getMessageBroker(), server);
|
||||
registerWatchdog.listen();
|
||||
sendPlayerWatchdog.listen();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.velocitypowered.api.proxy.ProxyServer;
|
|||
import de.kentoj.kencommandapi.CommandAPI;
|
||||
import de.kentoj.scrow.velocity.ScrowAPI;
|
||||
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;
|
||||
|
|
@ -23,7 +24,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);
|
||||
}
|
||||
|
|
@ -32,7 +33,7 @@ public class ScrowAPISurface {
|
|||
ScrowAPI.setJdbi(Jdbi.create(EnvUtils.envOrThrow("HOST_POSTGRES")));
|
||||
}
|
||||
|
||||
ScrowAPI.setInstanceManager(new InstanceManagerImpl(ScrowAPI.getNats()));
|
||||
ScrowAPI.setInstanceManager(new InstanceManagerImpl(ScrowAPI.getMessageBroker()));
|
||||
|
||||
ScrowAPI.setCommandApi(new CommandAPI(server));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,18 +8,16 @@ import de.kentoj.kencommandapi.api.invocation.CommandContext;
|
|||
import de.kentoj.kencommandapi.api.invocation.SyncCommandExecutor;
|
||||
import de.kentoj.kencommandapi.api.node.CommandNode;
|
||||
import de.kentoj.kencommandapi.api.node.RootCommandNode;
|
||||
import de.kentoj.kencommandapi.api.platform.MessageStyle;
|
||||
import de.kentoj.scrowlib.convention.ScrowMessageStyle;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.kyori.adventure.text.Component;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class OnlineCommand implements SyncCommandExecutor<CommandSource> {
|
||||
|
||||
@Getter
|
||||
private final RootCommandNode<CommandSource> rootNode;
|
||||
|
||||
private final ScrowMessageStyle style = ScrowMessageStyle.GENERIC;
|
||||
private final ProxyServer server;
|
||||
|
||||
public OnlineCommand(ProxyServer server) {
|
||||
|
|
@ -32,9 +30,9 @@ public class OnlineCommand implements SyncCommandExecutor<CommandSource> {
|
|||
public Result<Object, String> executeSync(CommandContext<CommandSource> ctx) {
|
||||
int cnt = server.getPlayerCount();
|
||||
var msg = cnt != 1
|
||||
? "There are currently " + cnt + " players online"
|
||||
: "There is currently 1 player online";
|
||||
ctx.getSender().sendMessage(Component.text(msg));
|
||||
? "There are currently " + cnt + " players online."
|
||||
: "There is currently 1 player online.";
|
||||
ctx.getSender().sendMessage(style.ok(msg));
|
||||
return Results.success(new Object());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public class MsgCommand implements SyncCommandExecutor<CommandSource> {
|
|||
var sender = (Player) ctx.getSender();
|
||||
|
||||
var isMessagingSelf = target.getUniqueId().equals(sender.getUniqueId());
|
||||
if (isMessagingSelf) return Results.failure("You can't message yourself");
|
||||
if (isMessagingSelf) return Results.failure("You can't message yourself.");
|
||||
|
||||
cache.setLastTarget(sender.getUniqueId(), target.getUniqueId());
|
||||
privMsgHandler.handle(sender, target, msg);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public class PrivMsgHandler {
|
|||
private final ScrowMessageStyle style;
|
||||
|
||||
public void handle(Player player, Player target, String msg) {
|
||||
target.sendMessage(style.ok(text(player.getUsername() + " -> You:").append(Component.text(msg))));
|
||||
player.sendMessage(style.ok(text("You -> " + player.getUsername()).append(Component.text(msg))));
|
||||
target.sendMessage(style.ok(text(player.getUsername() + " -> You: ").append(Component.text(msg))));
|
||||
player.sendMessage(style.ok(text("You -> " + player.getUsername() + ": ").append(Component.text(msg))));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,11 +39,13 @@ public class ReplyCommand implements SyncCommandExecutor<CommandSource> {
|
|||
public Result<Object, String> executeSync(CommandContext<CommandSource> ctx) {
|
||||
var sender = (Player) ctx.getSender();
|
||||
var targetId = cache.getLastTarget(sender.getUniqueId());
|
||||
if (targetId == null)
|
||||
return Results.failure("You didn't messaged anyone recently. Use /msg first");
|
||||
var target = server.getPlayer(targetId).orElse(null);
|
||||
var msg = ctx.getArg(msgArg);
|
||||
|
||||
if (target == null)
|
||||
return Results.failure("The player you last messaged is no longer online");
|
||||
return Results.failure("The player you last messaged is no longer online.");
|
||||
cache.setLastTarget(sender.getUniqueId(), target.getUniqueId());
|
||||
privMsgHandler.handle(sender, target, msg);
|
||||
return Results.success(new Object());
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.leakyabstractions.result.core.Results;
|
|||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import de.kentoj.scrowlib.messaging.MessageBroker;
|
||||
import io.nats.client.Connection;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.bson.Document;
|
||||
|
||||
|
|
@ -14,16 +15,12 @@ import java.util.concurrent.CompletionStage;
|
|||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class SendPlayerWatchdog {
|
||||
|
||||
private final MessageBroker natsRepo;
|
||||
private final ProxyServer server;
|
||||
|
||||
public SendPlayerWatchdog(Connection nats, ProxyServer server) {
|
||||
this.natsRepo = new MessageBroker(nats);
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
public void listen() {
|
||||
natsRepo.handle("players.send", doc -> sendPlayer(
|
||||
doc.get("playerId", UUID.class),
|
||||
|
|
|
|||
|
|
@ -1,44 +1,34 @@
|
|||
package de.kentoj.scrow.corevelocity.server;
|
||||
|
||||
import com.leakyabstractions.result.core.Results;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.server.ServerInfo;
|
||||
import de.kentoj.scrowlib.messaging.MessageBroker;
|
||||
import de.kentoj.scrowlib.messaging.SyncRequestHandler;
|
||||
import io.nats.client.Connection;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.java.Log;
|
||||
import org.bson.Document;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
|
||||
@Log
|
||||
@RequiredArgsConstructor
|
||||
public class ServerRegisterWatchdog {
|
||||
|
||||
private final MessageBroker natsRepo;
|
||||
private final ProxyServer server;
|
||||
|
||||
public ServerRegisterWatchdog(Connection nats, ProxyServer server) {
|
||||
this.natsRepo = new MessageBroker(nats);
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
public void listen() {
|
||||
natsRepo.handle("event.instance.up", (SyncRequestHandler) doc -> {
|
||||
natsRepo.subscribe("event.instance.up", doc -> {
|
||||
var handle = doc.getString("handle");
|
||||
var port = doc.getInteger("port");
|
||||
return Results.ofCallable(() -> {
|
||||
server.registerServer(new ServerInfo(handle, new InetSocketAddress(port)));
|
||||
return new Document();
|
||||
}).mapFailure(Throwable::getMessage);
|
||||
server.unregisterServer(new ServerInfo(handle, new InetSocketAddress(port)));
|
||||
log.info("registered server " + handle);
|
||||
});
|
||||
|
||||
natsRepo.handle("event.instance.down", (SyncRequestHandler) doc -> {
|
||||
natsRepo.subscribe("event.instance.down", doc -> {
|
||||
var handle = doc.getString("handle");
|
||||
var port = doc.getInteger("port");
|
||||
return Results.ofCallable(() -> {
|
||||
server.unregisterServer(new ServerInfo(handle, new InetSocketAddress(port)));
|
||||
return new Document();
|
||||
}).mapFailure(Throwable::getMessage);
|
||||
server.unregisterServer(new ServerInfo(handle, new InetSocketAddress(port)));
|
||||
log.info("unregistered server " + handle);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue