gradle time

This commit is contained in:
kento2 2026-07-05 17:44:01 +02:00
parent 7040a6ce1e
commit 9421ef511e
47 changed files with 482 additions and 226 deletions

View file

@ -23,9 +23,6 @@ dependencies {
// https://docs.papermc.io/velocity/dev/creating-your-first-plugin/
annotationProcessor("com.velocitypowered:velocity-api:3.5.0-SNAPSHOT")
// https://mvnrepository.com/artifact/com.github.ben-manes.caffeine/caffeine
implementation("com.github.ben-manes.caffeine:caffeine:3.2.4")
// https://mvnrepository.com/artifact/org.postgresql/postgresql
implementation("org.postgresql:postgresql:42.7.12")
}

View file

@ -4,12 +4,13 @@ import com.google.inject.Inject;
import com.velocitypowered.api.plugin.Plugin;
import com.velocitypowered.api.proxy.ProxyServer;
import de.kentoj.scrow.corevelocity.command.OnlineCommand;
import de.kentoj.scrow.corevelocity.network.FriendNotifications;
import de.kentoj.scrow.corevelocity.privmsg.LastTargetCache;
import de.kentoj.scrow.corevelocity.privmsg.MsgCommand;
import de.kentoj.scrow.corevelocity.privmsg.PrivMsgHandler;
import de.kentoj.scrow.corevelocity.privmsg.ReplyCommand;
import de.kentoj.scrow.corevelocity.server.SendPlayerWatchdog;
import de.kentoj.scrow.corevelocity.server.ServerRegisterWatchdog;
import de.kentoj.scrow.corevelocity.network.SendPlayerWatchdog;
import de.kentoj.scrow.corevelocity.network.ServerRegisterWatchdog;
import de.kentoj.scrow.generated.BuildInfo;
import de.kentoj.scrow.velocity.ScrowAPI;
import de.kentoj.scrowlib.convention.ScrowMessageStyle;
@ -37,9 +38,10 @@ public class CoreVelocityPlugin {
cmds.register(new OnlineCommand(server).getRootNode());
}
var registerWatchdog = new ServerRegisterWatchdog(ScrowAPI.getMessageBroker(), server);
var sendPlayerWatchdog = new SendPlayerWatchdog(ScrowAPI.getMessageBroker(), server);
var registerWatchdog = new ServerRegisterWatchdog(server);
var sendPlayerWatchdog = new SendPlayerWatchdog(server);
registerWatchdog.listen();
sendPlayerWatchdog.listen();
server.getEventManager().register(this, new FriendNotifications());
}
}

View file

@ -5,6 +5,7 @@ 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.player.NetworkPlayerImpl;
import de.kentoj.scrowlib.utils.EnvUtils;
import io.nats.client.Nats;
import io.nats.client.Options;
@ -42,8 +43,8 @@ public class ScrowAPISurface {
}
ScrowAPI.setInstanceManager(new InstanceManagerImpl(ScrowAPI.getMessageBroker()));
ScrowAPI.setCommandApi(new CommandAPI(server));
ScrowAPI.setPlayerFactory(playerId -> new NetworkPlayerImpl(ScrowAPI.getMessageBroker(), playerId));
}
public static void destroyScrowAPI() {

View file

@ -0,0 +1,23 @@
package de.kentoj.scrow.corevelocity.network;
import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.connection.DisconnectEvent;
import com.velocitypowered.api.event.connection.PostLoginEvent;
import de.kentoj.scrow.velocity.ScrowAPI;
import de.kentoj.scrowlib.messaging.MessageBroker;
import org.bson.Document;
public class FriendNotifications {
private final MessageBroker messageBroker = ScrowAPI.getMessageBroker();
@Subscribe
private void onConnect(PostLoginEvent ev) {
messageBroker.publish("event.player.connect", new Document("playerId", ev.getPlayer().getUniqueId()));
}
@Subscribe
private void onDisconnect(DisconnectEvent ev) {
messageBroker.publish("event.player.disconnect", new Document("playerId", ev.getPlayer().getUniqueId()));
}
}

View file

@ -1,10 +1,10 @@
package de.kentoj.scrow.corevelocity.server;
package de.kentoj.scrow.corevelocity.network;
import com.leakyabstractions.result.api.Result;
import com.leakyabstractions.result.core.Results;
import com.velocitypowered.api.proxy.ProxyServer;
import de.kentoj.scrow.velocity.ScrowAPI;
import de.kentoj.scrowlib.messaging.MessageBroker;
import io.nats.client.Connection;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
@ -18,11 +18,11 @@ import java.util.concurrent.ExecutionException;
@RequiredArgsConstructor
public class SendPlayerWatchdog {
private final MessageBroker natsRepo;
private final MessageBroker messageBroker = ScrowAPI.getMessageBroker();
private final ProxyServer server;
public void listen() {
natsRepo.handle("players.send", doc -> sendPlayer(
messageBroker.handle("player.send", doc -> sendPlayer(
doc.get("playerId", UUID.class),
doc.getString("handle")
));

View file

@ -1,9 +1,9 @@
package de.kentoj.scrow.corevelocity.server;
package de.kentoj.scrow.corevelocity.network;
import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.server.ServerInfo;
import de.kentoj.scrow.velocity.ScrowAPI;
import de.kentoj.scrowlib.messaging.MessageBroker;
import io.nats.client.Connection;
import lombok.RequiredArgsConstructor;
import lombok.extern.java.Log;
@ -13,18 +13,18 @@ import java.net.InetSocketAddress;
@RequiredArgsConstructor
public class ServerRegisterWatchdog {
private final MessageBroker natsRepo;
private final MessageBroker messageBroker = ScrowAPI.getMessageBroker();
private final ProxyServer server;
public void listen() {
natsRepo.subscribe("event.instance.up", doc -> {
messageBroker.subscribe("event.instance.up", doc -> {
var handle = doc.getString("handle");
var port = doc.getInteger("port");
server.unregisterServer(new ServerInfo(handle, new InetSocketAddress(port)));
log.info("registered server " + handle);
});
natsRepo.subscribe("event.instance.down", doc -> {
messageBroker.subscribe("event.instance.down", doc -> {
var handle = doc.getString("handle");
var port = doc.getInteger("port");
server.unregisterServer(new ServerInfo(handle, new InetSocketAddress(port)));

View file

@ -1,7 +1,7 @@
package de.kentoj.scrow.corevelocity.privmsg;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -10,8 +10,8 @@ import java.util.concurrent.TimeUnit;
public class LastTargetCache {
private final Cache<@NotNull UUID, UUID> cache = Caffeine.newBuilder()
.expireAfterWrite(20, TimeUnit.MINUTES)
private final Cache<@NotNull UUID, @NotNull UUID> cache = CacheBuilder.newBuilder()
.expireAfterAccess(20, TimeUnit.MINUTES)
.build();
public @Nullable UUID getLastTarget(UUID uuid) {

View file

@ -46,7 +46,6 @@ public class ReplyCommand implements SyncCommandExecutor<CommandSource> {
if (target == null)
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());
}