.
This commit is contained in:
parent
7e5bd1bb6d
commit
5073d933d2
24 changed files with 168 additions and 111 deletions
|
|
@ -14,8 +14,12 @@ dependencies {
|
|||
|
||||
implementation(libs.bson)
|
||||
implementation(libs.nats)
|
||||
implementation(libs.scrow.commandapi.bukkit)
|
||||
implementation(libs.scrow.commandapi.bukkit) {
|
||||
isChanging = true
|
||||
}
|
||||
implementation(libs.postgres)
|
||||
|
||||
compileOnly(libs.luckperms)
|
||||
}
|
||||
|
||||
tasks {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
package de.kentoj.scrow.bukkit;
|
||||
|
||||
import de.kentoj.scrow.bukkit.chatstyle.ChatStyleListener;
|
||||
import de.kentoj.scrow.bukkit.chatstyle.NoPrefixPrefixCache;
|
||||
import de.kentoj.scrow.bukkit.command.economy.CoinsCommand;
|
||||
import de.kentoj.scrow.bukkit.command.friends.FriendCommand;
|
||||
import de.kentoj.scrow.bukkit.command.instance.InstanceCache;
|
||||
import de.kentoj.scrow.bukkit.command.instance.InstanceCommand;
|
||||
import de.kentoj.scrow.bukkit.command.instance.LobbyCommand;
|
||||
import de.kentoj.scrow.bukkit.command.instance.PlayCommand;
|
||||
import de.kentoj.scrow.bukkit.listener.ChatStyleListener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -15,7 +16,7 @@ import java.nio.channels.FileChannel;
|
|||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
|
||||
public class CoreImplPlugin extends JavaPlugin {
|
||||
public final class CoreImplPlugin extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
|
@ -29,7 +30,7 @@ public class CoreImplPlugin extends JavaPlugin {
|
|||
ScrowAPI.getCommandApi().register(new LobbyCommand().getRootLiteral());
|
||||
}
|
||||
|
||||
getServer().getPluginManager().registerEvents(new ChatStyleListener(), this);
|
||||
getServer().getPluginManager().registerEvents(new ChatStyleListener(new NoPrefixPrefixCache()), this);
|
||||
|
||||
// TODO/FIXME
|
||||
//registerServer();
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import de.kentoj.scrowlib.instancemanager.InstanceManagerImpl;
|
|||
import de.kentoj.scrowlib.messaging.InMemoyMessageBroker;
|
||||
import de.kentoj.scrowlib.messaging.NatsMessageBroker;
|
||||
import de.kentoj.scrowlib.player.NetworkPlayerImpl;
|
||||
import de.kentoj.scrowlib.utils.EnvUtils;
|
||||
import io.nats.client.Nats;
|
||||
import io.nats.client.Options;
|
||||
import lombok.AccessLevel;
|
||||
|
|
@ -35,7 +34,7 @@ public class ScrowAPISurface {
|
|||
ScrowAPI.setCorePlugin(plugin);
|
||||
|
||||
var natsHost = System.getenv("HOST_NATS");
|
||||
if (natsHost!= null) {
|
||||
if (natsHost != null) {
|
||||
try {
|
||||
var options = Options.builder()
|
||||
.server(natsHost)
|
||||
|
|
@ -56,7 +55,7 @@ public class ScrowAPISurface {
|
|||
Class.forName("org.postgresql.Driver", true, ScrowAPISurface.class.getClassLoader());
|
||||
var props = new Properties();
|
||||
props.setProperty("user", "postgres");
|
||||
ScrowAPI.setJdbi(Jdbi.create(hostPostgres));
|
||||
ScrowAPI.setJdbi(Jdbi.create(hostPostgres, props));
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
package de.kentoj.scrow.bukkit.chatstyle;
|
||||
|
||||
import de.kentoj.scrowlib.utils.ComponentUtils;
|
||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class ChatStyleListener implements Listener {
|
||||
|
||||
private final PrefixCache prefixCache;
|
||||
|
||||
@EventHandler
|
||||
public void onChat(AsyncChatEvent ev) {
|
||||
Component formattedMessage = formatMessage(ev.getPlayer(), ev.message());
|
||||
|
||||
ev.renderer((source, sourceDisplayName, message, viewer) -> formattedMessage);
|
||||
}
|
||||
|
||||
private Component formatMessage(Player player, Component message) {
|
||||
var prefix = prefixCache.getPrefix(player.getUniqueId());
|
||||
Component msg = prefix != null
|
||||
? prefix.append(Component.text("│").color(NamedTextColor.DARK_GRAY))
|
||||
: Component.empty();
|
||||
return msg.append(Component.text(player.getName() + ": ").color(NamedTextColor.GRAY))
|
||||
.append(ComponentUtils.resolveURLS(message).colorIfAbsent(NamedTextColor.GRAY));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package de.kentoj.scrow.bukkit.chatstyle;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import net.luckperms.api.LuckPerms;
|
||||
import net.luckperms.api.event.user.UserDataRecalculateEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class LuckPermsPrefixCache implements PrefixCache {
|
||||
private final Map<UUID, Component> cache = new HashMap<>();
|
||||
|
||||
// TODO load on join, unload on quit
|
||||
public LuckPermsPrefixCache(LuckPerms luckPerms) {
|
||||
//noinspection resource
|
||||
luckPerms.getEventBus().subscribe(UserDataRecalculateEvent.class, this::onDataChange);
|
||||
}
|
||||
|
||||
private void onDataChange(UserDataRecalculateEvent ev) {
|
||||
var playerId = ev.getUser().getUniqueId();
|
||||
if (Bukkit.getPlayer(playerId) == null) return;
|
||||
|
||||
var prefix = ev.getUser().getCachedData().getMetaData().getPrefix();
|
||||
var prefixComponent = PlainTextComponentSerializer.plainText().deserialize(prefix);
|
||||
cache.put(playerId, prefixComponent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Component getPrefix(UUID playerId) {
|
||||
return cache.get(playerId);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package de.kentoj.scrow.bukkit.chatstyle;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class NoPrefixPrefixCache implements PrefixCache {
|
||||
@Override
|
||||
public @Nullable Component getPrefix(UUID playerId) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package de.kentoj.scrow.bukkit.chatstyle;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public interface PrefixCache {
|
||||
|
||||
@Nullable Component getPrefix(UUID playerId);
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
package de.kentoj.scrow.bukkit.listener;
|
||||
|
||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class ChatStyleListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onChat(AsyncChatEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
Component formattedMessage = formatMessage(player, event.message());
|
||||
|
||||
event.renderer((source, sourceDisplayName, message, viewer) -> formattedMessage);
|
||||
}
|
||||
|
||||
private Component formatMessage(Player player, Component message) {
|
||||
return Component.text()
|
||||
.append(player.displayName()
|
||||
.append(Component.text(": "))
|
||||
.color(NamedTextColor.GRAY))
|
||||
.append(message.color(NamedTextColor.WHITE))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue