mirror of
https://github.com/DiscordSRV/Ascension.git
synced 2024-11-25 12:25:15 +01:00
Interfaces for nickname, punishment sync. Change chat integration handling. EssentialsX integration.
This commit is contained in:
parent
d4c54a21d1
commit
2d05620462
@ -24,8 +24,11 @@
|
||||
package com.discordsrv.api.channel;
|
||||
|
||||
import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* An in-game channel for sending Minecraft messages to.
|
||||
*/
|
||||
@ -54,8 +57,27 @@ public interface GameChannel {
|
||||
boolean isChat();
|
||||
|
||||
/**
|
||||
* Send a message to this {@link GameChannel}'s participants.
|
||||
* @param component the message
|
||||
* Players that will receive messages for this channel, these players must not be included in {@link #sendMessage(MinecraftComponent)}.
|
||||
* @return the recipients for this channel
|
||||
* @see #sendMessage(MinecraftComponent)
|
||||
*/
|
||||
void sendMessage(@NotNull MinecraftComponent component);
|
||||
@NotNull
|
||||
Collection<? extends DiscordSRVPlayer> getRecipients();
|
||||
|
||||
/**
|
||||
* Send a message to this {@link GameChannel}'s participants which are not included in {@link #getRecipients()}.
|
||||
* @param component the message
|
||||
* @see #getRecipients()
|
||||
*/
|
||||
default void sendMessage(@NotNull MinecraftComponent component) {}
|
||||
|
||||
/**
|
||||
* Sends the given message to the given player, used with {@link #getRecipients()}. May be used to apply personalized filters.
|
||||
* @param player the player
|
||||
* @param component the message
|
||||
* @see #getRecipients()
|
||||
*/
|
||||
default void sendMessageToPlayer(@NotNull DiscordSRVPlayer player, @NotNull MinecraftComponent component) {
|
||||
player.sendMessage(component);
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package com.discordsrv.api.module.type;
|
||||
package com.discordsrv.api.module;
|
||||
|
||||
import com.discordsrv.api.DiscordSRVApi;
|
||||
import com.discordsrv.api.discord.connection.details.DiscordCacheFlag;
|
@ -0,0 +1,10 @@
|
||||
package com.discordsrv.api.module.type;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public interface NicknameModule {
|
||||
|
||||
String getNickname(UUID playerUUID);
|
||||
void setNickname(UUID playerUUID, String nickname);
|
||||
|
||||
}
|
@ -23,6 +23,7 @@
|
||||
|
||||
package com.discordsrv.api.module.type;
|
||||
|
||||
import com.discordsrv.api.module.Module;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -31,30 +32,30 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface PermissionDataProvider extends Module {
|
||||
public interface PermissionModule extends Module {
|
||||
|
||||
boolean supportsOffline();
|
||||
|
||||
interface Basic extends Groups, Permissions, PrefixAndSuffix {}
|
||||
interface All extends Basic, Meta, GroupsContext {}
|
||||
|
||||
interface Groups extends PermissionDataProvider {
|
||||
interface Groups extends PermissionModule {
|
||||
List<String> getGroups();
|
||||
CompletableFuture<Boolean> hasGroup(@NotNull UUID player, @NotNull String groupName, boolean includeInherited);
|
||||
CompletableFuture<Void> addGroup(@NotNull UUID player, @NotNull String groupName);
|
||||
CompletableFuture<Void> removeGroup(@NotNull UUID player, @NotNull String groupName);
|
||||
}
|
||||
|
||||
interface Permissions extends PermissionDataProvider {
|
||||
interface Permissions extends PermissionModule {
|
||||
CompletableFuture<Boolean> hasPermission(@NotNull UUID player, @NotNull String permission);
|
||||
}
|
||||
|
||||
interface PrefixAndSuffix extends PermissionDataProvider {
|
||||
interface PrefixAndSuffix extends PermissionModule {
|
||||
CompletableFuture<String> getPrefix(@NotNull UUID player);
|
||||
CompletableFuture<String> getSuffix(@NotNull UUID player);
|
||||
}
|
||||
|
||||
interface Meta extends PermissionDataProvider {
|
||||
interface Meta extends PermissionModule {
|
||||
CompletableFuture<String> getMeta(@NotNull UUID player, @NotNull String key);
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
package com.discordsrv.api.module.type;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface PunishmentModule {
|
||||
|
||||
interface Bans extends PunishmentModule {
|
||||
Punishment getBan(@NotNull UUID playerUUID);
|
||||
void addBan(@NotNull UUID playerUUID, @Nullable Instant until, @Nullable String reason);
|
||||
void removeBan(@NotNull UUID playerUUID);
|
||||
}
|
||||
|
||||
interface Mutes extends PunishmentModule {
|
||||
Punishment getMute(@NotNull UUID playerUUID);
|
||||
void addMute(@NotNull UUID playerUUID, @Nullable Instant until, @Nullable String reason);
|
||||
void removeMute(@NotNull UUID playerUUID);
|
||||
}
|
||||
|
||||
class Punishment {
|
||||
|
||||
private final boolean active;
|
||||
private final Instant until;
|
||||
private final String reason;
|
||||
|
||||
public Punishment(boolean active, @Nullable Instant until, @Nullable String reason) {
|
||||
this.active = active;
|
||||
this.until = until;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
public boolean active() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public Instant until() {
|
||||
return until;
|
||||
}
|
||||
|
||||
public String reason() {
|
||||
return reason;
|
||||
}
|
||||
}
|
||||
}
|
@ -23,6 +23,7 @@
|
||||
|
||||
package com.discordsrv.api.player;
|
||||
|
||||
import com.discordsrv.api.component.MinecraftComponent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -55,4 +56,10 @@ public interface DiscordSRVPlayer {
|
||||
@Nullable
|
||||
Locale locale();
|
||||
|
||||
/**
|
||||
* Sends the provided message to the player.
|
||||
* @param component the message
|
||||
*/
|
||||
void sendMessage(@NotNull MinecraftComponent component);
|
||||
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ allprojects {
|
||||
repositories {
|
||||
maven { url 'https://papermc.io/repo/repository/maven-public/' }
|
||||
maven { url 'https://nexus.scarsz.me/content/groups/public/' }
|
||||
maven { url 'https://repo.essentialsx.net/releases/' }
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,6 +78,7 @@ dependencies {
|
||||
compileOnly(libs.mcmmo)
|
||||
compileOnly(libs.townychat)
|
||||
compileOnly(libs.venturechat)
|
||||
compileOnly(libs.essentialsx)
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,147 @@
|
||||
package com.discordsrv.bukkit.integration;
|
||||
|
||||
import com.discordsrv.api.channel.GameChannel;
|
||||
import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.channel.GameChannelLookupEvent;
|
||||
import com.discordsrv.api.event.events.message.receive.game.GameChatMessageReceiveEvent;
|
||||
import com.discordsrv.api.module.type.NicknameModule;
|
||||
import com.discordsrv.api.module.type.PunishmentModule;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.bukkit.BukkitDiscordSRV;
|
||||
import com.discordsrv.bukkit.player.BukkitPlayer;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
import com.discordsrv.common.module.type.PluginIntegration;
|
||||
import com.earth2me.essentials.Essentials;
|
||||
import com.earth2me.essentials.User;
|
||||
import net.essentialsx.api.v2.events.chat.GlobalChatEvent;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitComponentSerializer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
|
||||
public class EssentialsXIntegration
|
||||
extends PluginIntegration<BukkitDiscordSRV>
|
||||
implements Listener, PunishmentModule.Mutes, NicknameModule {
|
||||
|
||||
private final GlobalChannel channel = new GlobalChannel();
|
||||
|
||||
public EssentialsXIntegration(BukkitDiscordSRV discordSRV) {
|
||||
super(discordSRV);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getIntegrationName() {
|
||||
return "Essentials";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
try {
|
||||
Class.forName("net.essentialsx.api.v2.events.chat.GlobalChatEvent");
|
||||
} catch (ClassNotFoundException ignored) {
|
||||
return false;
|
||||
}
|
||||
return super.isEnabled();
|
||||
}
|
||||
|
||||
private Essentials get() {
|
||||
return (Essentials) discordSRV.server().getPluginManager().getPlugin("Essentials");
|
||||
}
|
||||
|
||||
private User getUser(UUID playerUUID) {
|
||||
return get().getUsers().loadUncachedUser(playerUUID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNickname(UUID playerUUID) {
|
||||
User user = getUser(playerUUID);
|
||||
return user.getNickname();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNickname(UUID playerUUID, String nickname) {
|
||||
User user = getUser(playerUUID);
|
||||
user.setNickname(nickname);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Punishment getMute(@NotNull UUID playerUUID) {
|
||||
User user = getUser(playerUUID);
|
||||
if (!user.isMuted()) {
|
||||
return new Punishment(false, null, null);
|
||||
}
|
||||
|
||||
return new Punishment(true, Instant.ofEpochMilli(user.getMuteTimeout()), user.getMuteReason());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMute(@NotNull UUID playerUUID, @Nullable Instant until, @Nullable String reason) {
|
||||
User user = getUser(playerUUID);
|
||||
user.setMuted(true);
|
||||
user.setMuteTimeout(until != null ? until.toEpochMilli() : 0);
|
||||
user.setMuteReason(reason);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMute(@NotNull UUID playerUUID) {
|
||||
User user = getUser(playerUUID);
|
||||
user.setMuted(false);
|
||||
user.setMuteTimeout(0);
|
||||
user.setMuteReason(null);
|
||||
}
|
||||
|
||||
@EventHandler(priority = org.bukkit.event.EventPriority.MONITOR)
|
||||
public void onGlobalChat(GlobalChatEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
MinecraftComponent component = ComponentUtil.toAPI(
|
||||
BukkitComponentSerializer.legacy().deserialize(event.getMessage())
|
||||
);
|
||||
|
||||
BukkitPlayer srvPlayer = discordSRV.playerProvider().player(player);
|
||||
boolean cancelled = event.isCancelled();
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
new GameChatMessageReceiveEvent(event, srvPlayer, component, channel, cancelled)
|
||||
));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameChannelLookup(GameChannelLookupEvent event) {
|
||||
if (checkProcessor(event) || !discordSRV.server().getPluginManager().isPluginEnabled("EssentialsChat")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.isDefault()) {
|
||||
event.process(channel);
|
||||
}
|
||||
}
|
||||
|
||||
private class GlobalChannel implements GameChannel {
|
||||
|
||||
@Override
|
||||
public @NotNull String getOwnerName() {
|
||||
return getIntegrationName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getChannelName() {
|
||||
return GameChannel.DEFAULT_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChat() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Collection<? extends DiscordSRVPlayer> getRecipients() {
|
||||
return discordSRV.playerProvider().allPlayers();
|
||||
}
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@
|
||||
|
||||
package com.discordsrv.bukkit.integration;
|
||||
|
||||
import com.discordsrv.api.module.type.PermissionDataProvider;
|
||||
import com.discordsrv.api.module.type.PermissionModule;
|
||||
import com.discordsrv.bukkit.BukkitDiscordSRV;
|
||||
import com.discordsrv.common.exception.MessageException;
|
||||
import com.discordsrv.common.function.CheckedSupplier;
|
||||
@ -38,7 +38,7 @@ import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class VaultIntegration extends PluginIntegration<BukkitDiscordSRV> implements PermissionDataProvider.Basic {
|
||||
public class VaultIntegration extends PluginIntegration<BukkitDiscordSRV> implements PermissionModule.Basic {
|
||||
|
||||
private Permission permission;
|
||||
private Chat chat;
|
||||
|
@ -23,12 +23,13 @@ import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.channel.GameChannelLookupEvent;
|
||||
import com.discordsrv.api.event.events.message.receive.game.GameChatMessageReceiveEvent;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.bukkit.BukkitDiscordSRV;
|
||||
import com.discordsrv.bukkit.player.BukkitPlayer;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
import com.discordsrv.common.logging.NamedLogger;
|
||||
import com.discordsrv.common.module.type.PluginIntegration;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitComponentSerializer;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.HandlerList;
|
||||
@ -38,6 +39,10 @@ import ru.mrbrikster.chatty.api.ChattyApi;
|
||||
import ru.mrbrikster.chatty.api.chats.Chat;
|
||||
import ru.mrbrikster.chatty.api.events.ChattyMessageEvent;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class ChattyChatIntegration extends PluginIntegration<BukkitDiscordSRV> implements Listener {
|
||||
|
||||
public ChattyChatIntegration(BukkitDiscordSRV discordSRV) {
|
||||
@ -78,14 +83,9 @@ public class ChattyChatIntegration extends PluginIntegration<BukkitDiscordSRV> i
|
||||
BukkitComponentSerializer.legacy().deserialize(event.getMessage())
|
||||
);
|
||||
|
||||
BukkitPlayer srvPlayer = discordSRV.playerProvider().player(player);
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
new GameChatMessageReceiveEvent(
|
||||
event,
|
||||
discordSRV.playerProvider().player(player),
|
||||
component,
|
||||
new ChattyChannel(chat),
|
||||
false
|
||||
)
|
||||
new GameChatMessageReceiveEvent(event, srvPlayer, component, new ChattyChannel(chat), false)
|
||||
));
|
||||
}
|
||||
|
||||
@ -129,11 +129,13 @@ public class ChattyChatIntegration extends PluginIntegration<BukkitDiscordSRV> i
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(@NotNull MinecraftComponent component) {
|
||||
Component comp = ComponentUtil.fromAPI(component);
|
||||
for (Player recipient : chat.getRecipients(null)) {
|
||||
discordSRV.playerProvider().player(recipient).sendMessage(comp);
|
||||
public @NotNull Set<DiscordSRVPlayer> getRecipients() {
|
||||
Collection<? extends Player> players = chat.getRecipients(null);
|
||||
Set<DiscordSRVPlayer> srvPlayers = new HashSet<>(players.size());
|
||||
for (Player player : players) {
|
||||
srvPlayers.add(discordSRV.playerProvider().player(player));
|
||||
}
|
||||
return srvPlayers;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,9 @@ import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.channel.GameChannelLookupEvent;
|
||||
import com.discordsrv.api.event.events.message.receive.game.GameChatMessageReceiveEvent;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.bukkit.BukkitDiscordSRV;
|
||||
import com.discordsrv.bukkit.player.BukkitPlayer;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
import com.discordsrv.common.logging.NamedLogger;
|
||||
import com.discordsrv.common.module.type.PluginIntegration;
|
||||
@ -42,6 +44,10 @@ import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class LunaChatIntegration extends PluginIntegration<BukkitDiscordSRV> implements Listener {
|
||||
|
||||
public LunaChatIntegration(BukkitDiscordSRV discordSRV) {
|
||||
@ -87,14 +93,10 @@ public class LunaChatIntegration extends PluginIntegration<BukkitDiscordSRV> imp
|
||||
BukkitComponentSerializer.legacy().deserialize(event.getNgMaskedMessage())
|
||||
);
|
||||
|
||||
BukkitPlayer srvPlayer = discordSRV.playerProvider().player(player);
|
||||
boolean cancelled = event.isCancelled();
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
new GameChatMessageReceiveEvent(
|
||||
event,
|
||||
discordSRV.playerProvider().player(player),
|
||||
component,
|
||||
new LunaChatChannel(channel),
|
||||
event.isCancelled()
|
||||
)
|
||||
new GameChatMessageReceiveEvent(event, srvPlayer, component, new LunaChatChannel(channel), cancelled)
|
||||
));
|
||||
}
|
||||
|
||||
@ -145,10 +147,29 @@ public class LunaChatIntegration extends PluginIntegration<BukkitDiscordSRV> imp
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Set<DiscordSRVPlayer> getRecipients() {
|
||||
List<ChannelMember> members = channel.getMembers();
|
||||
Set<DiscordSRVPlayer> players = new HashSet<>(members.size());
|
||||
for (ChannelMember member : members) {
|
||||
if (!(member instanceof ChannelMemberPlayer)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Player player = ((ChannelMemberPlayer) member).getPlayer();
|
||||
players.add(discordSRV.playerProvider().player(player));
|
||||
}
|
||||
return players;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(@NotNull MinecraftComponent component) {
|
||||
BaseComponent[] baseComponent = BungeeComponentSerializer.get().serialize(ComponentUtil.fromAPI(component));
|
||||
for (ChannelMember member : channel.getMembers()) {
|
||||
if (member instanceof ChannelMemberPlayer) {
|
||||
continue;
|
||||
}
|
||||
|
||||
member.sendMessage(baseComponent);
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,9 @@ import com.discordsrv.api.event.bus.EventPriority;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.channel.GameChannelLookupEvent;
|
||||
import com.discordsrv.api.event.events.message.receive.game.GameChatMessageReceiveEvent;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.bukkit.BukkitDiscordSRV;
|
||||
import com.discordsrv.bukkit.player.BukkitPlayer;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
import com.discordsrv.common.logging.NamedLogger;
|
||||
import com.discordsrv.common.module.type.PluginIntegration;
|
||||
@ -23,6 +25,9 @@ import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
public class McMMOChatIntegration extends PluginIntegration<BukkitDiscordSRV> implements Listener {
|
||||
|
||||
private final McMMOAdminChannel adminChannel = new McMMOAdminChannel();
|
||||
@ -85,14 +90,10 @@ public class McMMOChatIntegration extends PluginIntegration<BukkitDiscordSRV> im
|
||||
BukkitComponentSerializer.gson().deserialize(json)
|
||||
);
|
||||
|
||||
BukkitPlayer srvPlayer = discordSRV.playerProvider().player(player);
|
||||
boolean cancelled = event.isCancelled();
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
new GameChatMessageReceiveEvent(
|
||||
event,
|
||||
discordSRV.playerProvider().player(player),
|
||||
component,
|
||||
adminChannel,
|
||||
event.isCancelled()
|
||||
)
|
||||
new GameChatMessageReceiveEvent(event, srvPlayer, component, adminChannel, cancelled)
|
||||
));
|
||||
}
|
||||
|
||||
@ -124,6 +125,11 @@ public class McMMOChatIntegration extends PluginIntegration<BukkitDiscordSRV> im
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Set<DiscordSRVPlayer> getRecipients() {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(@NotNull MinecraftComponent component) {
|
||||
mcMMO mcMMO = (mcMMO) discordSRV.server().getPluginManager().getPlugin("mcMMO");
|
||||
|
@ -23,6 +23,7 @@ import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.channel.GameChannelLookupEvent;
|
||||
import com.discordsrv.api.event.events.message.receive.game.GameChatMessageReceiveEvent;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.bukkit.BukkitDiscordSRV;
|
||||
import com.discordsrv.bukkit.player.BukkitPlayer;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
@ -39,6 +40,10 @@ import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class TownyChatIntegration extends PluginIntegration<BukkitDiscordSRV> implements Listener {
|
||||
|
||||
public TownyChatIntegration(BukkitDiscordSRV discordSRV) {
|
||||
@ -79,14 +84,10 @@ public class TownyChatIntegration extends PluginIntegration<BukkitDiscordSRV> im
|
||||
BukkitComponentSerializer.legacy().deserialize(event.getMessage())
|
||||
);
|
||||
|
||||
BukkitPlayer srvPlayer = discordSRV.playerProvider().player(player);
|
||||
boolean cancelled = event.isCancelled();
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
new GameChatMessageReceiveEvent(
|
||||
event,
|
||||
discordSRV.playerProvider().player(player),
|
||||
component,
|
||||
new TownyChatChannel(channel),
|
||||
event.isCancelled()
|
||||
)
|
||||
new GameChatMessageReceiveEvent(event, srvPlayer, component, new TownyChatChannel(channel), cancelled)
|
||||
));
|
||||
}
|
||||
|
||||
@ -138,8 +139,11 @@ public class TownyChatIntegration extends PluginIntegration<BukkitDiscordSRV> im
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(@NotNull MinecraftComponent component) {
|
||||
for (BukkitPlayer player : discordSRV.playerProvider().allPlayers()) {
|
||||
public @NotNull Set<DiscordSRVPlayer> getRecipients() {
|
||||
Collection<BukkitPlayer> players = discordSRV.playerProvider().allPlayers();
|
||||
Set<DiscordSRVPlayer> filteredPlayers = new HashSet<>(players.size());
|
||||
|
||||
for (BukkitPlayer player : players) {
|
||||
if (!channel.isPresent(player.username())) {
|
||||
continue;
|
||||
}
|
||||
@ -149,8 +153,9 @@ public class TownyChatIntegration extends PluginIntegration<BukkitDiscordSRV> im
|
||||
continue;
|
||||
}
|
||||
|
||||
player.sendMessage(ComponentUtil.fromAPI(component));
|
||||
filteredPlayers.add(player);
|
||||
}
|
||||
return filteredPlayers;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,9 @@ import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.channel.GameChannelLookupEvent;
|
||||
import com.discordsrv.api.event.events.message.receive.game.GameChatMessageReceiveEvent;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.bukkit.BukkitDiscordSRV;
|
||||
import com.discordsrv.bukkit.player.BukkitPlayer;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
import com.discordsrv.common.logging.NamedLogger;
|
||||
import com.discordsrv.common.module.type.PluginIntegration;
|
||||
@ -33,7 +35,6 @@ import mineverse.Aust1n46.chat.api.events.VentureChatEvent;
|
||||
import mineverse.Aust1n46.chat.channel.ChatChannel;
|
||||
import mineverse.Aust1n46.chat.utilities.Format;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitComponentSerializer;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -41,6 +42,9 @@ import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class VentureChatIntegration extends PluginIntegration<BukkitDiscordSRV> implements Listener {
|
||||
@ -90,14 +94,9 @@ public class VentureChatIntegration extends PluginIntegration<BukkitDiscordSRV>
|
||||
BukkitComponentSerializer.legacy().deserialize(event.getChat())
|
||||
);
|
||||
|
||||
BukkitPlayer srvPlayer = discordSRV.playerProvider().player(player);
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
new GameChatMessageReceiveEvent(
|
||||
event,
|
||||
discordSRV.playerProvider().player(player),
|
||||
component,
|
||||
new VentureChatChannel(channel),
|
||||
false
|
||||
)
|
||||
new GameChatMessageReceiveEvent(event, srvPlayer, component, new VentureChatChannel(channel), false)
|
||||
));
|
||||
}
|
||||
|
||||
@ -143,13 +142,16 @@ public class VentureChatIntegration extends PluginIntegration<BukkitDiscordSRV>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(@NotNull MinecraftComponent component) {
|
||||
for (MineverseChatPlayer player : MineverseChatAPI.getMineverseChatPlayers()) {
|
||||
if (!player.isListening(channel.getName())) {
|
||||
public @NotNull Set<DiscordSRVPlayer> getRecipients() {
|
||||
Collection<MineverseChatPlayer> chatPlayers = MineverseChatAPI.getMineverseChatPlayers();
|
||||
Set<DiscordSRVPlayer> players = new HashSet<>(chatPlayers.size());
|
||||
|
||||
for (MineverseChatPlayer chatPlayer : chatPlayers) {
|
||||
if (!chatPlayer.isListening(channel.getName())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Player bukkitPlayer = player.getPlayer();
|
||||
Player bukkitPlayer = chatPlayer.getPlayer();
|
||||
if (bukkitPlayer == null) {
|
||||
continue;
|
||||
}
|
||||
@ -158,18 +160,28 @@ public class VentureChatIntegration extends PluginIntegration<BukkitDiscordSRV>
|
||||
continue;
|
||||
}
|
||||
|
||||
Component comp = ComponentUtil.fromAPI(component);
|
||||
if (player.hasFilter() && channel.isFiltered()) {
|
||||
comp = comp.replaceText(
|
||||
TextReplacementConfig.builder()
|
||||
.match(Pattern.compile("[\\w\\W]+"))
|
||||
.replacement(match -> match.content(Format.FilterChat(match.content())))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
discordSRV.playerProvider().player(bukkitPlayer).sendMessage(comp);
|
||||
players.add(discordSRV.playerProvider().player(bukkitPlayer));
|
||||
}
|
||||
return players;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessageToPlayer(@NotNull DiscordSRVPlayer player, @NotNull MinecraftComponent component) {
|
||||
MineverseChatPlayer chatPlayer = MineverseChatAPI.getMineverseChatPlayer(player.uniqueId());
|
||||
|
||||
if (chatPlayer.hasFilter() && channel.isFiltered()) {
|
||||
component = ComponentUtil.toAPI(
|
||||
ComponentUtil.fromAPI(component)
|
||||
.replaceText(
|
||||
TextReplacementConfig.builder()
|
||||
.match(Pattern.compile("[\\w\\W]+"))
|
||||
.replacement(match -> match.content(Format.FilterChat(match.content())))
|
||||
.build()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
player.sendMessage(component);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ import com.discordsrv.api.event.events.lifecycle.DiscordSRVConnectedEvent;
|
||||
import com.discordsrv.api.event.events.lifecycle.DiscordSRVReadyEvent;
|
||||
import com.discordsrv.api.event.events.lifecycle.DiscordSRVReloadedEvent;
|
||||
import com.discordsrv.api.event.events.lifecycle.DiscordSRVShuttingDownEvent;
|
||||
import com.discordsrv.api.module.type.Module;
|
||||
import com.discordsrv.api.module.Module;
|
||||
import com.discordsrv.common.api.util.ApiInstanceUtil;
|
||||
import com.discordsrv.common.bootstrap.IBootstrap;
|
||||
import com.discordsrv.common.channel.ChannelConfigHelper;
|
||||
|
@ -19,7 +19,7 @@
|
||||
package com.discordsrv.common;
|
||||
|
||||
import com.discordsrv.api.DiscordSRVApi;
|
||||
import com.discordsrv.api.module.type.Module;
|
||||
import com.discordsrv.api.module.Module;
|
||||
import com.discordsrv.api.placeholder.PlainPlaceholderFormat;
|
||||
import com.discordsrv.common.bootstrap.IBootstrap;
|
||||
import com.discordsrv.common.channel.ChannelConfigHelper;
|
||||
|
@ -19,13 +19,12 @@
|
||||
package com.discordsrv.common.channel;
|
||||
|
||||
import com.discordsrv.api.channel.GameChannel;
|
||||
import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
import com.discordsrv.common.player.IPlayer;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class GlobalChannel implements GameChannel {
|
||||
|
||||
private final DiscordSRV discordSRV;
|
||||
@ -50,10 +49,7 @@ public class GlobalChannel implements GameChannel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(@NotNull MinecraftComponent minecraftComponent) {
|
||||
Component component = ComponentUtil.fromAPI(minecraftComponent);
|
||||
for (IPlayer player : discordSRV.playerProvider().allPlayers()) {
|
||||
player.sendMessage(component);
|
||||
}
|
||||
public @NotNull Collection<? extends DiscordSRVPlayer> getRecipients() {
|
||||
return discordSRV.playerProvider().allPlayers();
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ import com.discordsrv.api.discord.entity.guild.DiscordRole;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.discord.member.role.DiscordMemberRoleAddEvent;
|
||||
import com.discordsrv.api.event.events.discord.member.role.DiscordMemberRoleRemoveEvent;
|
||||
import com.discordsrv.api.module.type.PermissionDataProvider;
|
||||
import com.discordsrv.api.module.type.PermissionModule;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.config.main.GroupSyncConfig;
|
||||
import com.discordsrv.common.debug.DebugGenerateEvent;
|
||||
@ -157,7 +157,7 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
}
|
||||
}
|
||||
|
||||
PermissionDataProvider.Groups groups = getPermissionProvider();
|
||||
PermissionModule.Groups groups = getPermissionProvider();
|
||||
if (groups != null) {
|
||||
builder.append("\n\nAvailable groups (").append(groups.getClass().getName()).append("):");
|
||||
|
||||
@ -205,13 +205,13 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
|
||||
// Permission data helper methods
|
||||
|
||||
private PermissionDataProvider.Groups getPermissionProvider() {
|
||||
PermissionDataProvider.GroupsContext groupsContext = discordSRV.getModule(PermissionDataProvider.GroupsContext.class);
|
||||
return groupsContext == null ? discordSRV.getModule(PermissionDataProvider.Groups.class) : groupsContext;
|
||||
private PermissionModule.Groups getPermissionProvider() {
|
||||
PermissionModule.GroupsContext groupsContext = discordSRV.getModule(PermissionModule.GroupsContext.class);
|
||||
return groupsContext == null ? discordSRV.getModule(PermissionModule.Groups.class) : groupsContext;
|
||||
}
|
||||
|
||||
public boolean noPermissionProvider() {
|
||||
PermissionDataProvider.Groups groups = getPermissionProvider();
|
||||
PermissionModule.Groups groups = getPermissionProvider();
|
||||
return groups == null || !groups.isEnabled();
|
||||
}
|
||||
|
||||
@ -224,9 +224,9 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
String groupName,
|
||||
@Nullable String serverContext
|
||||
) {
|
||||
PermissionDataProvider.Groups permissionProvider = getPermissionProvider();
|
||||
if (permissionProvider instanceof PermissionDataProvider.GroupsContext) {
|
||||
return ((PermissionDataProvider.GroupsContext) permissionProvider)
|
||||
PermissionModule.Groups permissionProvider = getPermissionProvider();
|
||||
if (permissionProvider instanceof PermissionModule.GroupsContext) {
|
||||
return ((PermissionModule.GroupsContext) permissionProvider)
|
||||
.hasGroup(player, groupName, false, serverContext != null ? Collections.singleton(serverContext) : null);
|
||||
} else {
|
||||
return permissionProvider.hasGroup(player, groupName, false);
|
||||
@ -238,9 +238,9 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
String groupName,
|
||||
@Nullable String serverContext
|
||||
) {
|
||||
PermissionDataProvider.Groups permissionProvider = getPermissionProvider();
|
||||
if (permissionProvider instanceof PermissionDataProvider.GroupsContext) {
|
||||
return ((PermissionDataProvider.GroupsContext) permissionProvider)
|
||||
PermissionModule.Groups permissionProvider = getPermissionProvider();
|
||||
if (permissionProvider instanceof PermissionModule.GroupsContext) {
|
||||
return ((PermissionModule.GroupsContext) permissionProvider)
|
||||
.addGroup(player, groupName, Collections.singleton(serverContext));
|
||||
} else {
|
||||
return permissionProvider.addGroup(player, groupName);
|
||||
@ -252,9 +252,9 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
String groupName,
|
||||
@Nullable String serverContext
|
||||
) {
|
||||
PermissionDataProvider.Groups permissionProvider = getPermissionProvider();
|
||||
if (permissionProvider instanceof PermissionDataProvider.GroupsContext) {
|
||||
return ((PermissionDataProvider.GroupsContext) permissionProvider)
|
||||
PermissionModule.Groups permissionProvider = getPermissionProvider();
|
||||
if (permissionProvider instanceof PermissionModule.GroupsContext) {
|
||||
return ((PermissionModule.GroupsContext) permissionProvider)
|
||||
.removeGroup(player, groupName, Collections.singleton(serverContext));
|
||||
} else {
|
||||
return permissionProvider.removeGroup(player, groupName);
|
||||
@ -472,7 +472,7 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
return;
|
||||
}
|
||||
|
||||
PermissionDataProvider.Groups permissionProvider = getPermissionProvider();
|
||||
PermissionModule.Groups permissionProvider = getPermissionProvider();
|
||||
if (permissionProvider == null) {
|
||||
discordSRV.logger().warning("No supported permission plugin available to perform group sync");
|
||||
return;
|
||||
@ -547,7 +547,7 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
return;
|
||||
}
|
||||
|
||||
PermissionDataProvider.Groups permissionProvider = getPermissionProvider();
|
||||
PermissionModule.Groups permissionProvider = getPermissionProvider();
|
||||
Map<GroupSyncConfig.PairConfig, CompletableFuture<GroupSyncResult>> futures = new LinkedHashMap<>();
|
||||
for (GroupSyncConfig.PairConfig pair : pairs) {
|
||||
GroupSyncDirection direction = pair.direction;
|
||||
@ -559,10 +559,10 @@ public class GroupSyncModule extends AbstractModule<DiscordSRV> {
|
||||
|
||||
// Check if we're in the right context
|
||||
String context = pair.serverContext;
|
||||
if (permissionProvider instanceof PermissionDataProvider.GroupsContext) {
|
||||
if (permissionProvider instanceof PermissionModule.GroupsContext) {
|
||||
if (StringUtils.isEmpty(context)) {
|
||||
// Use the default server context of the server
|
||||
Set<String> defaultValues = ((PermissionDataProvider.GroupsContext) permissionProvider)
|
||||
Set<String> defaultValues = ((PermissionModule.GroupsContext) permissionProvider)
|
||||
.getDefaultServerContext();
|
||||
if (!Objects.equals(serverContext, defaultValues)) {
|
||||
continue;
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
package com.discordsrv.common.integration;
|
||||
|
||||
import com.discordsrv.api.module.type.PermissionDataProvider;
|
||||
import com.discordsrv.api.module.type.PermissionModule;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.exception.MessageException;
|
||||
import com.discordsrv.common.future.util.CompletableFutureUtil;
|
||||
@ -56,7 +56,7 @@ import java.util.function.BiFunction;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class LuckPermsIntegration extends PluginIntegration<DiscordSRV> implements PermissionDataProvider.All {
|
||||
public class LuckPermsIntegration extends PluginIntegration<DiscordSRV> implements PermissionModule.All {
|
||||
|
||||
private LuckPerms luckPerms;
|
||||
private final List<EventSubscription<?>> subscriptions = new ArrayList<>();
|
||||
|
@ -35,6 +35,7 @@ import com.discordsrv.api.event.events.message.forward.discord.DiscordChatMessag
|
||||
import com.discordsrv.api.event.events.message.process.discord.DiscordChatMessageProcessEvent;
|
||||
import com.discordsrv.api.event.events.message.receive.discord.DiscordChatMessageReceiveEvent;
|
||||
import com.discordsrv.api.placeholder.util.Placeholders;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.component.renderer.DiscordSRVMinecraftRenderer;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
@ -226,6 +227,12 @@ public class DiscordChatMessageModule extends AbstractModule<DiscordSRV> {
|
||||
}
|
||||
|
||||
gameChannel.sendMessage(component);
|
||||
|
||||
Collection<? extends DiscordSRVPlayer> players = gameChannel.getRecipients();
|
||||
for (DiscordSRVPlayer player : players) {
|
||||
gameChannel.sendMessageToPlayer(player, component);
|
||||
}
|
||||
|
||||
discordSRV.eventBus().publish(new DiscordChatMessageForwardedEvent(component, gameChannel));
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ import com.discordsrv.api.event.bus.EventPriority;
|
||||
import com.discordsrv.api.event.bus.Subscribe;
|
||||
import com.discordsrv.api.event.events.lifecycle.DiscordSRVReadyEvent;
|
||||
import com.discordsrv.api.event.events.lifecycle.DiscordSRVShuttingDownEvent;
|
||||
import com.discordsrv.api.module.type.Module;
|
||||
import com.discordsrv.api.module.Module;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.command.game.commands.subcommand.reload.ReloadResults;
|
||||
import com.discordsrv.common.debug.DebugGenerateEvent;
|
||||
|
@ -22,7 +22,7 @@ import com.discordsrv.api.discord.connection.details.DiscordCacheFlag;
|
||||
import com.discordsrv.api.discord.connection.details.DiscordGatewayIntent;
|
||||
import com.discordsrv.api.event.events.Cancellable;
|
||||
import com.discordsrv.api.event.events.Processable;
|
||||
import com.discordsrv.api.module.type.Module;
|
||||
import com.discordsrv.api.module.Module;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.event.util.EventUtil;
|
||||
import com.discordsrv.common.logging.Logger;
|
||||
|
@ -22,7 +22,7 @@ import com.discordsrv.api.DiscordSRVApi;
|
||||
import com.discordsrv.api.discord.connection.details.DiscordCacheFlag;
|
||||
import com.discordsrv.api.discord.connection.details.DiscordGatewayIntent;
|
||||
import com.discordsrv.api.discord.connection.details.DiscordMemberCachePolicy;
|
||||
import com.discordsrv.api.module.type.Module;
|
||||
import com.discordsrv.api.module.Module;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.logging.NamedLogger;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
package com.discordsrv.common.permission.util;
|
||||
|
||||
import com.discordsrv.api.module.type.PermissionDataProvider;
|
||||
import com.discordsrv.api.module.type.PermissionModule;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.exception.MessageException;
|
||||
import net.kyori.adventure.text.Component;
|
||||
@ -51,7 +51,7 @@ public final class PermissionUtil {
|
||||
}
|
||||
|
||||
private static Component getMeta(DiscordSRV discordSRV, UUID uuid, String metaKey) {
|
||||
PermissionDataProvider.Meta meta = discordSRV.getModule(PermissionDataProvider.Meta.class);
|
||||
PermissionModule.Meta meta = discordSRV.getModule(PermissionModule.Meta.class);
|
||||
if (meta == null) {
|
||||
return null;
|
||||
}
|
||||
@ -63,9 +63,9 @@ public final class PermissionUtil {
|
||||
private static Component getLegacy(
|
||||
DiscordSRV discordSRV,
|
||||
String what,
|
||||
Function<PermissionDataProvider.PrefixAndSuffix, CompletableFuture<String>> legacy
|
||||
Function<PermissionModule.PrefixAndSuffix, CompletableFuture<String>> legacy
|
||||
) {
|
||||
PermissionDataProvider.PrefixAndSuffix permission = discordSRV.getModule(PermissionDataProvider.PrefixAndSuffix.class);
|
||||
PermissionModule.PrefixAndSuffix permission = discordSRV.getModule(PermissionModule.PrefixAndSuffix.class);
|
||||
if (permission == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -18,11 +18,13 @@
|
||||
|
||||
package com.discordsrv.common.player;
|
||||
|
||||
import com.discordsrv.api.component.MinecraftComponent;
|
||||
import com.discordsrv.api.placeholder.annotation.Placeholder;
|
||||
import com.discordsrv.api.placeholder.annotation.PlaceholderPrefix;
|
||||
import com.discordsrv.api.player.DiscordSRVPlayer;
|
||||
import com.discordsrv.common.DiscordSRV;
|
||||
import com.discordsrv.common.command.game.sender.ICommandSender;
|
||||
import com.discordsrv.common.component.util.ComponentUtil;
|
||||
import com.discordsrv.common.config.main.AvatarProviderConfig;
|
||||
import com.discordsrv.common.permission.util.PermissionUtil;
|
||||
import com.discordsrv.common.profile.Profile;
|
||||
@ -36,6 +38,11 @@ import java.util.UUID;
|
||||
@PlaceholderPrefix("player_")
|
||||
public interface IPlayer extends DiscordSRVPlayer, IOfflinePlayer, ICommandSender {
|
||||
|
||||
@Override
|
||||
default void sendMessage(@NotNull MinecraftComponent component) {
|
||||
sendMessage(ComponentUtil.fromAPI(component));
|
||||
}
|
||||
|
||||
@Override
|
||||
DiscordSRV discordSRV();
|
||||
|
||||
|
@ -111,6 +111,7 @@ dependencyResolutionManagement {
|
||||
library('bungeecord-chat', 'net.md-5', 'bungeecord-chat').version('1.12-SNAPSHOT')
|
||||
library('mcmmo', 'com.gmail.nossr50', 'mcmmo').version('2.1.220')
|
||||
library('griefprevention', 'me.ryanhamshire', 'GriefPrevention').version('16.18.1')
|
||||
library('essentialsx', 'net.essentialsx', 'EssentialsX').version('2.20.1')
|
||||
|
||||
// Logging
|
||||
library('slf4j-api', 'org.slf4j', 'slf4j-api').version('1.7.36')
|
||||
|
Loading…
Reference in New Issue
Block a user